diff --git a/404.html b/404.html index 4d2496d2..bfe0247b 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/2332f431.be9295db.js b/assets/js/2332f431.54f6ecb1.js similarity index 80% rename from assets/js/2332f431.be9295db.js rename to assets/js/2332f431.54f6ecb1.js index 1df83b04..919e5075 100644 --- a/assets/js/2332f431.be9295db.js +++ b/assets/js/2332f431.54f6ecb1.js @@ -1 +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 +"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"},"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/runtime~main.071d3eac.js b/assets/js/runtime~main.649325b8.js similarity index 99% rename from assets/js/runtime~main.071d3eac.js rename to assets/js/runtime~main.649325b8.js index 53446e4c..1a6e7292 100644 --- a/assets/js/runtime~main.071d3eac.js +++ b/assets/js/runtime~main.649325b8.js @@ -1 +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=f)&&Object.keys(r.O).every((e=>r.O[e](d[o])))?d.splice(o--,1):(t=!1,f0&&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:"05af654c",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:"ebf2d838",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{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{"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=f)&&Object.keys(r.O).every((e=>r.O[e](d[o])))?d.splice(o--,1):(t=!1,f0&&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:"54f6ecb1",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:"05af654c",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:"ebf2d838",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{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 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 9cd839a7..c8bf094c 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 5343c385..d188ebe4 100644 --- a/guides/0.3/concepts.html +++ b/guides/0.3/concepts.html @@ -4,7 +4,7 @@ Concepts | Credo - + @@ -12,7 +12,7 @@ - + \ No newline at end of file diff --git a/guides/0.3/concepts/agents.html b/guides/0.3/concepts/agents.html index 4cd296a1..f3bcbb9c 100644 --- a/guides/0.3/concepts/agents.html +++ b/guides/0.3/concepts/agents.html @@ -4,7 +4,7 @@ Agents | Credo - + @@ -36,7 +36,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 93483a02..2611a225 100644 --- a/guides/0.3/concepts/did-and-didcomm.html +++ b/guides/0.3/concepts/did-and-didcomm.html @@ -4,7 +4,7 @@ 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 a649510c..62cc2b55 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 64426c51..62e79edd 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 fb1b8746..27f4bef4 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 a39daaf0..e5889041 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 abbe4cf4..ee20bd3d 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 2cb86861..d52ad944 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 e3bdac63..a3d97b7d 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 3a4876cb..cbcf1a26 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 ce165dc0..8317bd28 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 80fbe855..23cee768 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 4345e89f..a573091e 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 b2d1c159..1dd63183 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 4fec0ad9..30d72e5b 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 25435086..cbd94f22 100644 --- a/guides/0.3/getting-started/installation/nodejs.html +++ b/guides/0.3/getting-started/installation/nodejs.html @@ -4,7 +4,7 @@ NodeJS | Credo - + @@ -12,7 +12,7 @@
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 72ee9abc..50279ecc 100644 --- a/guides/0.3/getting-started/installation/nodejs/apple-arm.html +++ b/guides/0.3/getting-started/installation/nodejs/apple-arm.html @@ -4,7 +4,7 @@ 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 8302c9b3..c56216b3 100644 --- a/guides/0.3/getting-started/installation/nodejs/apple-intel.html +++ b/guides/0.3/getting-started/installation/nodejs/apple-intel.html @@ -4,7 +4,7 @@ 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 4c700e6d..b21416a6 100644 --- a/guides/0.3/getting-started/installation/nodejs/linux.html +++ b/guides/0.3/getting-started/installation/nodejs/linux.html @@ -4,7 +4,7 @@ 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 620de3e7..1371a40e 100644 --- a/guides/0.3/getting-started/installation/nodejs/windows.html +++ b/guides/0.3/getting-started/installation/nodejs/windows.html @@ -4,7 +4,7 @@ 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 3681fa7b..44397d7d 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 84717d99..1ffb5f65 100644 --- a/guides/0.3/getting-started/installation/react-native/android.html +++ b/guides/0.3/getting-started/installation/react-native/android.html @@ -4,7 +4,7 @@ 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 108d0093..1884d71c 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 1771b71f..27e5be76 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 a94426fa..62bbb9b8 100644 --- a/guides/0.3/getting-started/set-up.html +++ b/guides/0.3/getting-started/set-up.html @@ -4,7 +4,7 @@ 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 f870452a..88303cef 100644 --- a/guides/0.3/tutorials.html +++ b/guides/0.3/tutorials.html @@ -4,7 +4,7 @@ Tutorials | Credo - + @@ -12,7 +12,7 @@
- + \ 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 3e3ec13f..fa04feef 100644 --- a/guides/0.3/tutorials/agent-config.html +++ b/guides/0.3/tutorials/agent-config.html @@ -4,7 +4,7 @@ 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 d64b7552..920c08dc 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 f86f6b9a..547104ae 100644 --- a/guides/0.3/tutorials/create-a-connection.html +++ b/guides/0.3/tutorials/create-a-connection.html @@ -4,7 +4,7 @@ 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 e07028af..61790c22 100644 --- a/guides/0.3/tutorials/issue-a-credential.html +++ b/guides/0.3/tutorials/issue-a-credential.html @@ -4,7 +4,7 @@ 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 be496f44..9b6079f4 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 c671ce55..09425711 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 dc1d425f..5a55799b 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 f6c8c94d..505ef48a 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 2ac997c0..867cc14e 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 ebf3c8d3..6f359ad4 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 cc16aa05..3f73895a 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,7 +4,7 @@ Migrating from AFJ 0.1.0 to 0.2.x | Credo - + @@ -12,7 +12,7 @@
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 0938b294..a548359f 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 d4a2ae48..1b03dc50 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?

- + \ No newline at end of file diff --git a/guides/0.5/concepts.html b/guides/0.5/concepts.html index 61fa229a..26c1143f 100644 --- a/guides/0.5/concepts.html +++ b/guides/0.5/concepts.html @@ -4,7 +4,7 @@ Concepts | Credo - + @@ -12,7 +12,7 @@ - + \ No newline at end of file diff --git a/guides/0.5/concepts/agents.html b/guides/0.5/concepts/agents.html index 93f146c1..53fd0ad1 100644 --- a/guides/0.5/concepts/agents.html +++ b/guides/0.5/concepts/agents.html @@ -4,7 +4,7 @@ Agents | Credo - + @@ -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 316b3f36..cf3160ee 100644 --- a/guides/0.5/concepts/did-and-didcomm.html +++ b/guides/0.5/concepts/did-and-didcomm.html @@ -4,7 +4,7 @@ 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 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 b553bf44..b8443d8c 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.

- + \ No newline at end of file diff --git a/guides/0.5/ecosystem.html b/guides/0.5/ecosystem.html index 2abb1c67..1b099e27 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. 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 c87c5706..0eed01c3 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 ee1b50e3..c3e490be 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 @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 5c1950ae..550bb735 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 @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 1ae5d7eb..5e1a1794 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 @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 4cb67267..7056c828 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 @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 index d11b089d..f5d2aeed 100644 --- a/guides/0.5/features.html +++ b/guides/0.5/features.html @@ -4,13 +4,13 @@ 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 index 0ec60fb9..514f4700 100644 --- a/guides/0.5/features/aries.html +++ b/guides/0.5/features/aries.html @@ -4,13 +4,13 @@ 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 index 8c2710be..fd12a808 100644 --- a/guides/0.5/features/credentials.html +++ b/guides/0.5/features/credentials.html @@ -4,13 +4,13 @@ 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 index 0baf1b88..49d6fc7a 100644 --- a/guides/0.5/features/dids.html +++ b/guides/0.5/features/dids.html @@ -4,13 +4,13 @@ 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 index 76ec91c9..1d2d127d 100644 --- a/guides/0.5/features/openid4vc.html +++ b/guides/0.5/features/openid4vc.html @@ -4,13 +4,13 @@ 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 d0e96c53..631d2358 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?

- + \ 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 a25055b7..51c21c02 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.

- + \ 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 a5ab4ae3..48d3125b 100644 --- a/guides/0.5/getting-started/set-up.html +++ b/guides/0.5/getting-started/set-up.html @@ -4,7 +4,7 @@ Agent Setup | Credo - + @@ -20,12 +20,12 @@ field in the configuration does and when to set it.

In order to use the agent in the application we have to configure and initialize it. This following configuration is quite generic and possibly not enough for your specific use cases. Please refer to the -tutorials for a more use-case-specific agent setup.

import type { InitConfig } from '@credo-ts/core'
import { Agent } from '@credo-ts/core'
import { agentDependencies } from '@credo-ts/node'

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

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

Adding a wallet and storage implementation

After creating the 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.

Setting up the transports

Finally, we have to set an outbound transport that +tutorials for a more use-case-specific agent setup.

import type { InitConfig } from '@credo-ts/core'
import { Agent } from '@credo-ts/core'
import { agentDependencies } from '@credo-ts/node'

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

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

Adding a wallet and storage implementation

After creating the 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.

Setting up the transports

Finally, we have to set an outbound transport that will handle traffic from the agent. It is also possible to set an inbound transport in the same way as the outbound transport.

Sets up an WS outbound and HTTP inbound and outbound transport.

import { HttpOutboundTransport, WsOutboundTransport } from '@credo-ts/core'
import { HttpInboundTransport } from '@credo-ts/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/0.5/getting-started/set-up/anoncreds.html b/guides/0.5/getting-started/set-up/anoncreds.html index dad8ada4..ee530c93 100644 --- a/guides/0.5/getting-started/set-up/anoncreds.html +++ b/guides/0.5/getting-started/set-up/anoncreds.html @@ -4,13 +4,13 @@ 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 ae94101b..f0a79d16 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.

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 80ad6d41..50980048 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 @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-vdr.html b/guides/0.5/getting-started/set-up/indy-vdr.html index 195ddfc6..c2680418 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.

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 57a27775..2649e852 100644 --- a/guides/0.5/tutorials.html +++ b/guides/0.5/tutorials.html @@ -4,7 +4,7 @@ Tutorials | Credo - + @@ -12,7 +12,7 @@
- + \ 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 d8b1f57b..e6ffb88b 100644 --- a/guides/0.5/tutorials/agent-config.html +++ b/guides/0.5/tutorials/agent-config.html @@ -4,7 +4,7 @@ Agent Config | Credo - + @@ -32,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 d870db4a..da32b844 100644 --- a/guides/0.5/tutorials/agent-config/logging.html +++ b/guides/0.5/tutorials/agent-config/logging.html @@ -4,13 +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 '@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 16b03e76..298a5fee 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

- + \ 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 ac277777..cc405664 100644 --- a/guides/0.5/tutorials/create-a-connection.html +++ b/guides/0.5/tutorials/create-a-connection.html @@ -4,7 +4,7 @@ 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 '@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/issue-a-credential.html b/guides/0.5/tutorials/issue-a-credential.html index 91e4c549..b8a952df 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,
}),
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 8d781b86..fabceba1 100644 --- a/guides/0.5/tutorials/mediation.html +++ b/guides/0.5/tutorials/mediation.html @@ -4,7 +4,7 @@ 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: `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 f836b92f..689aec89 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 '@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 42413028..ac6937bf 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:

- + \ 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 17aa7c5e..e94622ab 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 '@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 75576532..6eebe1e9 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 @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 a508ad64..7de4ca7b 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,7 +4,7 @@ Migrating from Credo 0.1.0 to 0.2.x | Credo - + @@ -12,7 +12,7 @@
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 39090fd8..438ab764 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"
}
- + \ 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 f9750c8b..b35af27b 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

- + \ No newline at end of file diff --git a/guides/concepts.html b/guides/concepts.html index 298bc062..9234a5dd 100644 --- a/guides/concepts.html +++ b/guides/concepts.html @@ -4,7 +4,7 @@ Concepts | Credo - + @@ -12,7 +12,7 @@ - + \ No newline at end of file diff --git a/guides/concepts/agents.html b/guides/concepts/agents.html index 334426ae..41262159 100644 --- a/guides/concepts/agents.html +++ b/guides/concepts/agents.html @@ -4,7 +4,7 @@ Agents | Credo - + @@ -36,7 +36,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 2a85fbcc..c7007743 100644 --- a/guides/concepts/did-and-didcomm.html +++ b/guides/concepts/did-and-didcomm.html @@ -4,7 +4,7 @@ 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 73bd76df..919524fe 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 ac49d367..24c8c48f 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 541cbf3b..14692784 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 2f17dbef..700ecb32 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 2da97720..c8b64769 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 5bd75ea7..10632313 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 3967ef0b..7c4c55e8 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 7062914f..e12aafaa 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 29c69c5e..6e1d82fd 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 e7eef165..f5eb3699 100644 --- a/guides/getting-started/set-up.html +++ b/guides/getting-started/set-up.html @@ -4,7 +4,7 @@ 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 356b4ed9..7de59f8a 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"
}
}
- + \ 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 935f84f0..babe97be 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 a92d488c..c823cd87 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 2a9c170a..38be2d4d 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,
}),
},
})
- + \ 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 2c421098..093d6a97 100644 --- a/guides/getting-started/set-up/indy-sdk/linux.html +++ b/guides/getting-started/set-up/indy-sdk/linux.html @@ -4,7 +4,7 @@ Linux | Credo - + @@ -14,7 +14,7 @@ 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 9354634e..8f5ce07e 100644 --- a/guides/getting-started/set-up/indy-sdk/macos-arm.html +++ b/guides/getting-started/set-up/indy-sdk/macos-arm.html @@ -4,7 +4,7 @@ macOS (ARM) | Credo - + @@ -12,7 +12,7 @@
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 9f42ef91..68c557aa 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
- + \ 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 8350b3cc..71b6f856 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.

- + \ 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 ea1c7976..a36343c6 100644 --- a/guides/getting-started/set-up/indy-sdk/windows.html +++ b/guides/getting-started/set-up/indy-sdk/windows.html @@ -4,7 +4,7 @@ Windows | Credo - + @@ -12,7 +12,7 @@
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 27af8986..99a852a9 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 d1d73dba..d5313fac 100644 --- a/guides/tutorials.html +++ b/guides/tutorials.html @@ -4,7 +4,7 @@ Tutorials | Credo - + @@ -12,7 +12,7 @@
- + \ No newline at end of file diff --git a/guides/tutorials/agent-config.html b/guides/tutorials/agent-config.html index 85e51704..0662f227 100644 --- a/guides/tutorials/agent-config.html +++ b/guides/tutorials/agent-config.html @@ -4,7 +4,7 @@ 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 f0611d79..e1626ace 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 c0ac5289..f9ac2784 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 f9542104..d8179059 100644 --- a/guides/tutorials/create-a-connection.html +++ b/guides/tutorials/create-a-connection.html @@ -4,7 +4,7 @@ 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 605a5c70..e082d70b 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,
}),
},
})
- + \ 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 4c825329..c401190a 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
- + \ 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 62ac49eb..fb0a13be 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
- + \ 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 894496e7..366859e5 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\\

- + \ No newline at end of file diff --git a/guides/tutorials/issue-a-credential.html b/guides/tutorials/issue-a-credential.html index 312d7ed5..6d817cab 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 1c7a8c22..0c2295a4 100644 --- a/guides/tutorials/mediation.html +++ b/guides/tutorials/mediation.html @@ -4,7 +4,7 @@ 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 e5e43d0b..60f6b428 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 6da35d21..4af6d434 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 fdd29c56..3db61809 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 d07eea3b..d31f5355 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 eed6b081..84e00ae4 100644 --- a/guides/updating/versions/0.1-to-0.2.html +++ b/guides/updating/versions/0.1-to-0.2.html @@ -4,7 +4,7 @@ Migrating from AFJ 0.1.0 to 0.2.x | Credo - + @@ -12,7 +12,7 @@
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 95b71620..0c86e578 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 72e929bc..c645d06b 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 647a5e6c..2923f982 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 389ccace..298cdd12 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 6ab90e97..1e555fa2 100644 --- a/search-index-docs-default-0.3.json +++ b/search-index-docs-default-0.3.json @@ -1 +1 @@ -{"documents":[{"id":1,"pageTitle":"","sectionTitle":"Intro","sectionRoute":"/guides/0.3","type":"docs"},{"id":2,"pageTitle":"","sectionTitle":"Concepts","sectionRoute":"/guides/0.3/concepts","type":"docs"},{"id":3,"pageTitle":"","sectionTitle":"📄️ Agents","sectionRoute":"/guides/0.3/concepts","type":"docs"},{"id":4,"pageTitle":"","sectionTitle":"📄️ DIDs and DIDComm","sectionRoute":"/guides/0.3/concepts","type":"docs"},{"id":5,"pageTitle":"","sectionTitle":"📄️ Platform and Environment","sectionRoute":"/guides/0.3/concepts","type":"docs"},{"id":6,"pageTitle":"","sectionTitle":"Agents","sectionRoute":"/guides/0.3/concepts/agents","type":"docs"},{"id":7,"pageTitle":"","sectionTitle":"Characteristics","sectionRoute":"/guides/0.3/concepts/agents#characteristics","type":"docs"},{"id":8,"pageTitle":"","sectionTitle":"Categories","sectionRoute":"/guides/0.3/concepts/agents#categories","type":"docs"},{"id":9,"pageTitle":"","sectionTitle":"Examples","sectionRoute":"/guides/0.3/concepts/agents#examples","type":"docs"},{"id":10,"pageTitle":"","sectionTitle":"Useful resources","sectionRoute":"/guides/0.3/concepts/agents#useful-resources","type":"docs"},{"id":23,"pageTitle":"","sectionTitle":"DIDs and DIDComm","sectionRoute":"/guides/0.3/concepts/did-and-didcomm","type":"docs"},{"id":24,"pageTitle":"","sectionTitle":"DIDs","sectionRoute":"/guides/0.3/concepts/did-and-didcomm#dids","type":"docs"},{"id":25,"pageTitle":"","sectionTitle":"DID Documents","sectionRoute":"/guides/0.3/concepts/did-and-didcomm#did-documents","type":"docs"},{"id":26,"pageTitle":"","sectionTitle":"DIDComm","sectionRoute":"/guides/0.3/concepts/did-and-didcomm#didcomm","type":"docs"},{"id":27,"pageTitle":"","sectionTitle":"Useful Resources","sectionRoute":"/guides/0.3/concepts/did-and-didcomm#useful-resources","type":"docs"},{"id":11,"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":12,"pageTitle":"","sectionTitle":"Extensions","sectionRoute":"/guides/0.3/extensions","type":"docs"},{"id":13,"pageTitle":"","sectionTitle":"🗃️ REST API","sectionRoute":"/guides/0.3/extensions","type":"docs"},{"id":14,"pageTitle":"","sectionTitle":"🗃️ React Hooks","sectionRoute":"/guides/0.3/extensions","type":"docs"},{"id":15,"pageTitle":"","sectionTitle":"🗃️ Redux Store","sectionRoute":"/guides/0.3/extensions","type":"docs"},{"id":16,"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":30,"pageTitle":"","sectionTitle":"React Hooks","sectionRoute":"/guides/0.3/extensions/react-hooks","type":"docs"},{"id":36,"pageTitle":"","sectionTitle":"Setup","sectionRoute":"/guides/0.3/extensions/react-hooks/setup","type":"docs"},{"id":37,"pageTitle":"","sectionTitle":"Installation","sectionRoute":"/guides/0.3/extensions/react-hooks/setup#installation","type":"docs"},{"id":31,"pageTitle":"","sectionTitle":"Redux Store","sectionRoute":"/guides/0.3/extensions/redux-store","type":"docs"},{"id":43,"pageTitle":"","sectionTitle":"Setup","sectionRoute":"/guides/0.3/extensions/redux-store/setup","type":"docs"},{"id":44,"pageTitle":"","sectionTitle":"Installation","sectionRoute":"/guides/0.3/extensions/redux-store/setup#installation","type":"docs"},{"id":41,"pageTitle":"","sectionTitle":"REST API","sectionRoute":"/guides/0.3/extensions/rest","type":"docs"},{"id":32,"pageTitle":"","sectionTitle":"Setup","sectionRoute":"/guides/0.3/extensions/rest/setup","type":"docs"},{"id":33,"pageTitle":"","sectionTitle":"Quick Setup","sectionRoute":"/guides/0.3/extensions/rest/setup#quick-setup","type":"docs"},{"id":34,"pageTitle":"","sectionTitle":"Directly on computer","sectionRoute":"/guides/0.3/extensions/rest/setup#directly-on-computer","type":"docs"},{"id":35,"pageTitle":"","sectionTitle":"Configuration","sectionRoute":"/guides/0.3/extensions/rest/setup#configuration","type":"docs"},{"id":38,"pageTitle":"","sectionTitle":"Getting started","sectionRoute":"/guides/0.3/getting-started","type":"docs"},{"id":39,"pageTitle":"","sectionTitle":"🗃️ Installation","sectionRoute":"/guides/0.3/getting-started","type":"docs"},{"id":40,"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":61,"pageTitle":"","sectionTitle":"NodeJS","sectionRoute":"/guides/0.3/getting-started/installation/nodejs","type":"docs"},{"id":53,"pageTitle":"","sectionTitle":"Apple (Arm)","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-arm","type":"docs"},{"id":54,"pageTitle":"","sectionTitle":"NodeJS","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-arm#nodejs","type":"docs"},{"id":55,"pageTitle":"","sectionTitle":"npm","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-arm#npm","type":"docs"},{"id":56,"pageTitle":"","sectionTitle":"yarn","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-arm#yarn","type":"docs"},{"id":57,"pageTitle":"","sectionTitle":"Libsodium","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-arm#libsodium","type":"docs"},{"id":58,"pageTitle":"","sectionTitle":"Libzmq","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-arm#libzmq","type":"docs"},{"id":59,"pageTitle":"","sectionTitle":"Indy-sdk","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-arm#indy-sdk","type":"docs"},{"id":60,"pageTitle":"","sectionTitle":"Confirm installation","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-arm#confirm-installation","type":"docs"},{"id":62,"pageTitle":"","sectionTitle":"Apple (Intel)","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-intel","type":"docs"},{"id":63,"pageTitle":"","sectionTitle":"NodeJS","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-intel","type":"docs"},{"id":64,"pageTitle":"","sectionTitle":"npm","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-intel#npm","type":"docs"},{"id":65,"pageTitle":"","sectionTitle":"yarn","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-intel#yarn","type":"docs"},{"id":66,"pageTitle":"","sectionTitle":"Indy-sdk","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-intel#indy-sdk","type":"docs"},{"id":67,"pageTitle":"","sectionTitle":"Confirm installation","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-intel#confirm-installation","type":"docs"},{"id":45,"pageTitle":"","sectionTitle":"Linux","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux","type":"docs"},{"id":46,"pageTitle":"","sectionTitle":"NodeJS","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#nodejs","type":"docs"},{"id":47,"pageTitle":"","sectionTitle":"npm","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#npm","type":"docs"},{"id":48,"pageTitle":"","sectionTitle":"yarn","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#yarn","type":"docs"},{"id":49,"pageTitle":"","sectionTitle":"Libsodium","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#libsodium","type":"docs"},{"id":50,"pageTitle":"","sectionTitle":"Libzmq","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#libzmq","type":"docs"},{"id":51,"pageTitle":"","sectionTitle":"Indy-sdk","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#indy-sdk","type":"docs"},{"id":52,"pageTitle":"","sectionTitle":"Confirm installation","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#confirm-installation","type":"docs"},{"id":71,"pageTitle":"","sectionTitle":"Windows","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/windows","type":"docs"},{"id":72,"pageTitle":"","sectionTitle":"NodeJS","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/windows#nodejs","type":"docs"},{"id":73,"pageTitle":"","sectionTitle":"npm","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/windows#npm","type":"docs"},{"id":74,"pageTitle":"","sectionTitle":"yarn","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/windows#yarn","type":"docs"},{"id":75,"pageTitle":"","sectionTitle":"Indy-sdk","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/windows#indy-sdk","type":"docs"},{"id":76,"pageTitle":"","sectionTitle":"Confirm installation","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/windows#confirm-installation","type":"docs"},{"id":68,"pageTitle":"","sectionTitle":"React Native","sectionRoute":"/guides/0.3/getting-started/installation/react-native","type":"docs"},{"id":69,"pageTitle":"","sectionTitle":"Known Errors","sectionRoute":"/guides/0.3/getting-started/installation/react-native#known-errors","type":"docs"},{"id":70,"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":77,"pageTitle":"","sectionTitle":"Installation","sectionRoute":"/guides/0.3/getting-started/prerequisites","type":"docs"},{"id":126,"pageTitle":"","sectionTitle":"Setup","sectionRoute":"/guides/0.3/getting-started/set-up","type":"docs"},{"id":127,"pageTitle":"","sectionTitle":"Installing the required dependencies","sectionRoute":"/guides/0.3/getting-started/set-up#installing-the-required-dependencies","type":"docs"},{"id":128,"pageTitle":"","sectionTitle":"Additional setup","sectionRoute":"/guides/0.3/getting-started/set-up#additional-setup","type":"docs"},{"id":129,"pageTitle":"","sectionTitle":"Setting up the agent","sectionRoute":"/guides/0.3/getting-started/set-up#setting-up-the-agent","type":"docs"},{"id":130,"pageTitle":"","sectionTitle":"Setting up the transports","sectionRoute":"/guides/0.3/getting-started/set-up#setting-up-the-transports","type":"docs"},{"id":131,"pageTitle":"","sectionTitle":"Initializing the agent","sectionRoute":"/guides/0.3/getting-started/set-up#initializing-the-agent","type":"docs"},{"id":132,"pageTitle":"","sectionTitle":"Full code snippet","sectionRoute":"/guides/0.3/getting-started/set-up#full-code-snippet","type":"docs"},{"id":133,"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":93,"pageTitle":"","sectionTitle":"Agent Config","sectionRoute":"/guides/0.3/tutorials/agent-config","type":"docs"},{"id":94,"pageTitle":"","sectionTitle":"label*","sectionRoute":"/guides/0.3/tutorials/agent-config#label","type":"docs"},{"id":95,"pageTitle":"","sectionTitle":"walletConfig","sectionRoute":"/guides/0.3/tutorials/agent-config#walletconfig","type":"docs"},{"id":96,"pageTitle":"","sectionTitle":"walletConfig.id*","sectionRoute":"/guides/0.3/tutorials/agent-config#walletconfigid","type":"docs"},{"id":97,"pageTitle":"","sectionTitle":"walletConfig.key*","sectionRoute":"/guides/0.3/tutorials/agent-config#walletconfigkey","type":"docs"},{"id":98,"pageTitle":"","sectionTitle":"walletConfig.keyDerivationMethod","sectionRoute":"/guides/0.3/tutorials/agent-config#walletconfigkeyderivationmethod","type":"docs"},{"id":99,"pageTitle":"","sectionTitle":"walletConfig.storage","sectionRoute":"/guides/0.3/tutorials/agent-config#walletconfigstorage","type":"docs"},{"id":100,"pageTitle":"","sectionTitle":"endpoints","sectionRoute":"/guides/0.3/tutorials/agent-config#endpoints","type":"docs"},{"id":101,"pageTitle":"","sectionTitle":"publicDidSeed","sectionRoute":"/guides/0.3/tutorials/agent-config#publicdidseed","type":"docs"},{"id":102,"pageTitle":"","sectionTitle":"indyLedgers","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgers","type":"docs"},{"id":103,"pageTitle":"","sectionTitle":"indyLedgers.id*","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgersid","type":"docs"},{"id":104,"pageTitle":"","sectionTitle":"indyLedgers.indyNamespace","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgersindynamespace","type":"docs"},{"id":105,"pageTitle":"","sectionTitle":"indyLedgers.isProduction*","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgersisproduction","type":"docs"},{"id":106,"pageTitle":"","sectionTitle":"indyLedgers.genesisPath","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgersgenesispath","type":"docs"},{"id":107,"pageTitle":"","sectionTitle":"indyLedgers.genesisTransactions","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgersgenesistransactions","type":"docs"},{"id":108,"pageTitle":"","sectionTitle":"indyLedgers.transactionAuthorAgreement","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgerstransactionauthoragreement","type":"docs"},{"id":109,"pageTitle":"","sectionTitle":"indyLedgers.transactionAuthorAgreement.version","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgerstransactionauthoragreementversion","type":"docs"},{"id":110,"pageTitle":"","sectionTitle":"indyLedgers.transactionAuthorAgreement.acceptanceMechanism","sectionRoute":"/guides/0.3/tutorials/agent-config#indyledgerstransactionauthoragreementacceptancemechanism","type":"docs"},{"id":111,"pageTitle":"","sectionTitle":"connectToIndyLedgerOnStartup","sectionRoute":"/guides/0.3/tutorials/agent-config#connecttoindyledgeronstartup","type":"docs"},{"id":112,"pageTitle":"","sectionTitle":"logger","sectionRoute":"/guides/0.3/tutorials/agent-config#logger","type":"docs"},{"id":113,"pageTitle":"","sectionTitle":"didCommMimeType","sectionRoute":"/guides/0.3/tutorials/agent-config#didcommmimetype","type":"docs"},{"id":114,"pageTitle":"","sectionTitle":"autoAcceptCredentials","sectionRoute":"/guides/0.3/tutorials/agent-config#autoacceptcredentials","type":"docs"},{"id":115,"pageTitle":"","sectionTitle":"autoAcceptProofs","sectionRoute":"/guides/0.3/tutorials/agent-config#autoacceptproofs","type":"docs"},{"id":116,"pageTitle":"","sectionTitle":"autoAcceptMediationRequests","sectionRoute":"/guides/0.3/tutorials/agent-config#autoacceptmediationrequests","type":"docs"},{"id":117,"pageTitle":"","sectionTitle":"mediatorConnectionsInvite","sectionRoute":"/guides/0.3/tutorials/agent-config#mediatorconnectionsinvite","type":"docs"},{"id":118,"pageTitle":"","sectionTitle":"defaultMediatorId","sectionRoute":"/guides/0.3/tutorials/agent-config#defaultmediatorid","type":"docs"},{"id":119,"pageTitle":"","sectionTitle":"clearDefaultMediator","sectionRoute":"/guides/0.3/tutorials/agent-config#cleardefaultmediator","type":"docs"},{"id":120,"pageTitle":"","sectionTitle":"mediatorPollingInterval","sectionRoute":"/guides/0.3/tutorials/agent-config#mediatorpollinginterval","type":"docs"},{"id":121,"pageTitle":"","sectionTitle":"mediatorPickupStratery","sectionRoute":"/guides/0.3/tutorials/agent-config#mediatorpickupstratery","type":"docs"},{"id":122,"pageTitle":"","sectionTitle":"maximumMessagePickup (subject to change)","sectionRoute":"/guides/0.3/tutorials/agent-config#maximummessagepickup-subject-to-change","type":"docs"},{"id":123,"pageTitle":"","sectionTitle":"useLegacyDidSovPrefix","sectionRoute":"/guides/0.3/tutorials/agent-config#uselegacydidsovprefix","type":"docs"},{"id":124,"pageTitle":"","sectionTitle":"connectionImageUrl","sectionRoute":"/guides/0.3/tutorials/agent-config#connectionimageurl","type":"docs"},{"id":125,"pageTitle":"","sectionTitle":"autoUpdateStorageOnStartup","sectionRoute":"/guides/0.3/tutorials/agent-config#autoupdatestorageonstartup","type":"docs"},{"id":89,"pageTitle":"","sectionTitle":"Logging","sectionRoute":"/guides/0.3/tutorials/agent-config/logging","type":"docs"},{"id":90,"pageTitle":"","sectionTitle":"Using the Default ConsoleLogger","sectionRoute":"/guides/0.3/tutorials/agent-config/logging#using-the-default-consolelogger","type":"docs"},{"id":91,"pageTitle":"","sectionTitle":"Creating your own Logger","sectionRoute":"/guides/0.3/tutorials/agent-config/logging#creating-your-own-logger","type":"docs"},{"id":92,"pageTitle":"","sectionTitle":"Indy Logs","sectionRoute":"/guides/0.3/tutorials/agent-config/logging#indy-logs","type":"docs"},{"id":145,"pageTitle":"","sectionTitle":"Create a connection","sectionRoute":"/guides/0.3/tutorials/create-a-connection","type":"docs"},{"id":146,"pageTitle":"","sectionTitle":"1. Setting up the agents","sectionRoute":"/guides/0.3/tutorials/create-a-connection#1-setting-up-the-agents","type":"docs"},{"id":147,"pageTitle":"","sectionTitle":"3. Receiving the invitation","sectionRoute":"/guides/0.3/tutorials/create-a-connection#3-receiving-the-invitation","type":"docs"},{"id":148,"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":149,"pageTitle":"","sectionTitle":"5. Full code snippets","sectionRoute":"/guides/0.3/tutorials/create-a-connection#5-full-code-snippets","type":"docs"},{"id":150,"pageTitle":"","sectionTitle":"Useful resources","sectionRoute":"/guides/0.3/tutorials/create-a-connection#useful-resources","type":"docs"},{"id":181,"pageTitle":"","sectionTitle":"Issue a credential","sectionRoute":"/guides/0.3/tutorials/issue-a-credential","type":"docs"},{"id":182,"pageTitle":"","sectionTitle":"1. Setting up the agents","sectionRoute":"/guides/0.3/tutorials/issue-a-credential#1-setting-up-the-agents","type":"docs"},{"id":183,"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":184,"pageTitle":"","sectionTitle":"3. Listening for incoming credentials","sectionRoute":"/guides/0.3/tutorials/issue-a-credential#3-listening-for-incoming-credentials","type":"docs"},{"id":185,"pageTitle":"","sectionTitle":"4. Issuing a credential","sectionRoute":"/guides/0.3/tutorials/issue-a-credential#4-issuing-a-credential","type":"docs"},{"id":186,"pageTitle":"","sectionTitle":"5. Full code snippets","sectionRoute":"/guides/0.3/tutorials/issue-a-credential#5-full-code-snippets","type":"docs"},{"id":187,"pageTitle":"","sectionTitle":"Useful resources","sectionRoute":"/guides/0.3/tutorials/issue-a-credential#useful-resources","type":"docs"},{"id":188,"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":151,"pageTitle":"","sectionTitle":"Postgres Setup for macOS","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/macos","type":"docs"},{"id":152,"pageTitle":"","sectionTitle":"Prerequisites","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/macos#prerequisites","type":"docs"},{"id":153,"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":154,"pageTitle":"","sectionTitle":"Step 2: Build Postgres plugin","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/macos#step-2-build-postgres-plugin","type":"docs"},{"id":155,"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":156,"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":157,"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":158,"pageTitle":"","sectionTitle":"Postgres Setup for windows","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/windows","type":"docs"},{"id":159,"pageTitle":"","sectionTitle":"Build Environment Prerequisites","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/windows#build-environment-prerequisites","type":"docs"},{"id":160,"pageTitle":"","sectionTitle":"Step 1: Getting dependencies","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/windows#step-1-getting-dependencies","type":"docs"},{"id":161,"pageTitle":"","sectionTitle":"Step 2: Build Postgres plugin","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/windows#step-2-build-postgres-plugin","type":"docs"},{"id":162,"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":163,"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":164,"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":165,"pageTitle":"","sectionTitle":"Updating AFJ","sectionRoute":"/guides/0.3/updating","type":"docs"},{"id":166,"pageTitle":"","sectionTitle":"📄️ Update Assistant","sectionRoute":"/guides/0.3/updating","type":"docs"},{"id":167,"pageTitle":"","sectionTitle":"📄️ Migrating from AFJ 0.1.0 to 0.2.x","sectionRoute":"/guides/0.3/updating","type":"docs"},{"id":168,"pageTitle":"","sectionTitle":"📄️ Migrating from AFJ 0.2.x to 0.3.x","sectionRoute":"/guides/0.3/updating","type":"docs"},{"id":169,"pageTitle":"","sectionTitle":"Versioning","sectionRoute":"/guides/0.3/updating#versioning","type":"docs"},{"id":170,"pageTitle":"","sectionTitle":"Types of breaking changes","sectionRoute":"/guides/0.3/updating#types-of-breaking-changes","type":"docs"},{"id":171,"pageTitle":"","sectionTitle":"Breaking Code Changes","sectionRoute":"/guides/0.3/updating#breaking-code-changes","type":"docs"},{"id":172,"pageTitle":"","sectionTitle":"Breaking Storage Changes","sectionRoute":"/guides/0.3/updating#breaking-storage-changes","type":"docs"},{"id":173,"pageTitle":"","sectionTitle":"Migration Guides","sectionRoute":"/guides/0.3/updating#migration-guides","type":"docs"},{"id":174,"pageTitle":"","sectionTitle":"Update Assistant","sectionRoute":"/guides/0.3/updating/update-assistant","type":"docs"},{"id":175,"pageTitle":"","sectionTitle":"Update Strategies","sectionRoute":"/guides/0.3/updating/update-assistant#update-strategies","type":"docs"},{"id":176,"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":177,"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":178,"pageTitle":"","sectionTitle":"Automatically update on agent startup","sectionRoute":"/guides/0.3/updating/update-assistant#automatically-update-on-agent-startup","type":"docs"},{"id":179,"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":230,"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":231,"pageTitle":"","sectionTitle":"Breaking Code Changes","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#breaking-code-changes","type":"docs"},{"id":232,"pageTitle":"","sectionTitle":"Agent creation","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#agent-creation","type":"docs"},{"id":233,"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":234,"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":235,"pageTitle":"","sectionTitle":"Discover Features Module","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#discover-features-module","type":"docs"},{"id":236,"pageTitle":"","sectionTitle":"Ledger Module","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#ledger-module","type":"docs"},{"id":237,"pageTitle":"","sectionTitle":"Proofs Module","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#proofs-module","type":"docs"},{"id":238,"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":239,"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":240,"pageTitle":"","sectionTitle":"Breaking Storage Changes","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#breaking-storage-changes","type":"docs"},{"id":241,"pageTitle":"","sectionTitle":"Migrate Proof Record Properties","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#migrate-proof-record-properties","type":"docs"},{"id":242,"pageTitle":"","sectionTitle":"Migrate Connection Record properties","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#migrate-connection-record-properties","type":"docs"},{"id":243,"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.056,4,5.09,5,2.31,6,1.498,7,2.662,8,2.001,9,2.461,10,2.662,11,2.005,12,2.968,13,2.662,14,2.968,15,4.666,16,2.968,17,1.375,18,1.93,19,1.533,20,3.287,21,4.666,22,2.304,23,2.968,24,3.287,25,2.657,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.863,36,4.782,37,2.31,38,4.256,39,2.662,40,2.09,41,1.571,42,4.782,43,1.498,44,2.461,45,2.968,46,2.31,47,2.31,48,2.968,49,2.662,50,1.375,51,2.662,52,2.662,53,1.228,54,2.968,55,0.542,56,2.968,57,2.968,58,0.938,59,1.653,60,4.666,61,4.666,62,2.119,63,2.461,64,2.968,65,2.461,66,1.61,67,2.532,68,1.61,69,1.533,70,0.996,71,1.042,72,2.461,73,1.804,74,2.968,75,2.662,76,2.968,77,1.804,78,2.005,79,2.662,80,2.662,81,2.005,82,2.968,83,4.186,84,1.699,85,2.968,86,1.61,87,0.549,88,2.662,89,1.571,90,2.461,91,1.699,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.31,102,0.682]],["sidebarParentCategories/1",[]],["title/2",[86,3.537]],["content/2",[2,1.87,3,2.774,8,2.12,22,1.974,24,3.482,25,2.543,29,2.913,31,1.078,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.103,106,3.79,107,4.943,108,2.753,109,4.943,110,3.339,111,2.753,112,2.553,113,4.596,114,2.83,115,3.03,116,5.297,117,2.495,118,3.103,119,3.004]],["sidebarParentCategories/2",[]],["title/3",[31,1.162,55,0.973]],["content/3",[2,1.949,8,3.385,111,4.397,112,4.078]],["sidebarParentCategories/3",[]],["title/4",[55,0.822,113,3.042,114,2.579]],["content/4",[113,5.6]],["sidebarParentCategories/4",[]],["title/5",[55,0.822,66,2.444,115,2.005]],["content/5",[2,1.701,3,2.851,22,2.521,24,4.445,25,2.99,29,3.72,58,1.301,67,3.425,68,3.425,69,4.131,70,2.684,71,2.808,106,3.516,115,2.81,116,6.226,117,3.185,118,3.963,119,3.835]],["sidebarParentCategories/5",[]],["title/6",[31,1.422]],["content/6",[2,1.846,8,3.09,31,1.572,111,4.014,112,3.722,120,4.867,121,4.379,122,4.97,123,4.021,124,6.463]],["sidebarParentCategories/6",[86,3.267]],["title/7",[125,5.846]],["content/7",[2,1.697,3,1.574,11,2.982,29,2.602,30,1.624,31,1.84,34,1.439,46,3.437,58,0.718,106,2.459,112,3.247,114,3.599,121,2.683,125,3.96,126,3.66,127,3.96,128,5.639,129,4.414,130,6.286,131,4.247,132,3.96,133,4.894,134,4.414,135,3.437,136,4.414,137,4.414,138,3.437,139,3.437,140,6.286,141,2.045,142,4.894,143,4.414,144,4.414,145,3.66,146,2.972,147,1.705,148,4.428,149,2.459,150,2.854,151,1.624,152,2.396,153,1.893,154,2.772,155,3.96,156,3.437,157,3.437,158,3.66,159,4.414,160,2.871,161,3.96,162,4.414,163,3.437,164,2.683]],["sidebarParentCategories/7",[86,3.267]],["title/8",[165,5.846]],["content/8",[2,1.723,3,1.905,31,2.134,34,1.741,35,4.504,106,2.976,165,7.264,166,4.159,167,7.264,168,3.943,169,4.394,170,6.434,171,4.504,172,2.827,173,2.475,174,3.246,175,4.792,176,5.342,177,5.342,178,5.342,179,6.434,180,3.246,181,3.706,182,5.342]],["sidebarParentCategories/8",[86,3.267]],["title/9",[96,2.398]],["content/9",[2,1.39,11,4.415,30,1.716,31,1.426,33,2.834,34,1.52,44,3.867,53,1.929,55,0.852,58,1.063,70,1.565,71,1.637,96,2.404,108,2.598,132,4.183,133,3.631,135,3.631,138,3.631,139,3.631,147,1.801,151,1.716,152,2.531,153,2,154,2.928,156,3.631,163,3.631,169,4.094,173,3.027,181,2.409,183,2.67,184,3.867,185,4.664,186,4.664,187,4.664,188,4.664,189,4.664,190,2.749,191,2.749,192,5.316,193,4.664,194,4.664,195,4.664,196,6.535,197,4.183,198,3.867,199,3.033,200,4.664,201,2,202,4.183,203,2.928,204,4.183]],["sidebarParentCategories/9",[86,3.267]],["title/10",[40,3.752,58,0.866]],["content/10",[2,1.621,31,1.663,42,6.319,102,1.75,124,6.836,205,5.368,206,6.836,207,2.101]],["sidebarParentCategories/10",[86,3.267]],["title/23",[113,3.598,114,3.05]],["content/23",[]],["sidebarParentCategories/23",[86,3.267]],["title/24",[113,4.403]],["content/24",[11,5.502,29,3.829,43,3.279,113,5.502,145,5.387,154,4.079,197,5.828,204,5.828,208,5.828,209,8.145,210,6.012,211,1.972,212,4.389,213,4.577,214,5.828,215,6.497,216,6.497,217,5.387,218,6.497]],["sidebarParentCategories/24",[86,3.267]],["title/25",[32,3.019]],["content/25",[20,4.403,32,3.682,59,4.428,141,2.896,149,3.482,152,3.392,153,2.681,191,3.684,192,4.065,219,4.614,220,4.867,221,4.065,222,4.614,223,5.184,224,5.608,225,3.684,226,3.392,227,4.403,228,5.599,229,4.551,230,4.403,231,4.065,232,5.184]],["sidebarParentCategories/25",[86,3.267]],["title/26",[114,3.732]],["content/26",[2,1.101,3,1.845,8,3.011,46,4.029,47,4.029,49,4.642,103,2.397,104,3.645,105,3.249,106,2.883,114,4.562,121,3.145,147,1.999,149,2.883,152,3.81,153,3.011,154,3.249,156,6.203,183,2.963,228,3.645,229,2.963,233,3.249,234,4.029,235,5.175,236,3.145,237,5.175,238,3.05,239,2.304,240,3.496,241,4.642,242,3.365,243,4.291,244,3.249,245,5.175,246,3.819,247,5.175,248,3.145,249,3.365,250,3.496,251,4.642,252,4.029,253,1.966]],["sidebarParentCategories/26",[86,3.267]],["title/27",[40,3.752,58,0.866]],["content/27",[114,4.63,254,8.333]],["sidebarParentCategories/27",[86,3.267]],["title/11",[66,2.89,115,2.372]],["content/11",[2,1.701,3,2.851,22,2.521,24,4.445,25,2.99,29,3.72,58,1.301,67,3.425,68,3.425,69,4.131,70,2.684,71,2.808,106,3.516,115,2.81,116,6.226,117,3.185,118,3.963,119,3.835]],["sidebarParentCategories/11",[86,3.267]],["title/17",[2,0.958,3,1.606,106,2.509]],["content/17",[2,1.469,3,2.462,59,3.846,92,4.664,93,3.567,103,3.198,106,3.846,160,4.49,203,4.335,255,3.953,256,6.904,257,8.458,258,6.904,259,5.375,260,4.863,261,4.335]],["sidebarParentCategories/17",[]],["title/18",[93,3.367]],["content/18",[2,1.998,3,3.201,25,3.083,31,1.446,70,2.224,71,2.327,93,3.424,126,5.495,169,3.596,262,3.795,263,6.627,264,3.596,265,4.028,266,3.07,267,5.16]],["sidebarParentCategories/18",[]],["title/19",[32,3.019]],["content/19",[2,1.954,3,3.035,25,3.182,31,1.522,32,3.232,38,5.15,70,2.341,71,2.45,169,3.786,239,3.107,266,3.232,267,5.432]],["sidebarParentCategories/19",[]],["title/20",[2,0.958,3,1.606,25,1.684]],["content/20",[2,1.799,3,3.016,25,2.581,43,3.485,92,4.664,106,3.846,147,2.667,153,2.961,164,4.196,201,2.961,253,2.623,268,2.838,269,5.096,270,5.096]],["sidebarParentCategories/20",[]],["title/21",[2,0.83,106,2.173,271,3.235,272,3.235]],["content/21",[2,1.918,8,2.871,25,2.503,67,3.633,167,6.005,262,3.833,267,5.212,272,5.551,273,5.212,274,6.694,275,6.694,276,9.428,277,6.694,278,4.716,279,6.694]],["sidebarParentCategories/21",[]],["title/22",[67,2.89,271,4.417]],["content/22",[2,1.247,43,2.959,67,3.182,75,5.259,91,4.368,150,2.662,233,3.681,267,4.565,268,2.56,271,7.031,273,4.565,280,5.153,281,7.628,282,7.628,283,5.259,284,5.863,285,2.059,286,5.863,287,5.863,288,5.863,289,4.862,290,5.863,291,4.862,292,5.863,293,4.327,294,5.863,295,4.13]],["sidebarParentCategories/22",[]],["title/12",[266,3.019]],["content/12",[2,1.917,3,2.819,7,3.374,25,2.956,31,1.221,53,2.314,55,1.351,58,0.612,70,2.242,79,3.374,91,2.154,93,2.89,96,1.384,112,1.943,122,3.825,123,2.592,155,3.374,192,2.446,229,2.154,248,2.286,255,2.154,261,2.362,262,2.154,266,3.427,268,1.877,269,2.776,296,3.119,297,3.4,298,3.374,299,2.776,300,3.761,301,3.761,302,3.761,303,2.645,304,4.81,305,5.992,306,1.341,307,3.119,308,3.374,309,3.638,310,3.119,311,2.154,312,2.776,313,3.374,314,4.705,315,3.941,316,1.708,317,3.498,318,4.014]],["sidebarParentCategories/12",[]],["title/13",[55,0.822,122,2.579,123,2.086]],["content/13",[317,3.871,318,4.443]],["sidebarParentCategories/13",[]],["title/14",[55,0.822,70,1.511,304,2.929]],["content/14",[317,3.871,318,4.443]],["sidebarParentCategories/14",[]],["title/15",[53,1.863,55,0.822,309,2.929]],["content/15",[317,3.871,318,4.443]],["sidebarParentCategories/15",[]],["title/16",[55,0.822,314,3.172,315,3.172]],["content/16",[317,3.871,318,4.443]],["sidebarParentCategories/16",[]],["title/28",[314,3.752,315,3.752]],["content/28",[6,3.414,31,1.476,43,3.414,58,1.1,120,4.569,181,3.494,268,2.27,303,3.198,314,6.382,315,6.382,316,3.071,319,3.767,320,6.763,321,6.763,322,6.763]],["sidebarParentCategories/28",[266,2.789]],["title/29",[323,2.696]],["content/29",[2,1.804,3,2.091,25,2.192,58,0.954,91,3.357,93,3.029,102,1.346,103,2.716,207,1.617,268,1.968,285,2.059,303,3.607,313,6.843,314,6.325,315,5.373,316,2.662,324,2.342,325,2.562,326,4.13,327,2.716,328,3.765,329,3.85,330,3.85]],["sidebarParentCategories/29",[266,1.782,314,2.709,315,2.709]],["title/30",[70,1.788,304,3.464]],["content/30",[6,3.155,31,1.364,43,3.155,58,1.017,70,2.933,78,4.223,112,3.229,181,4.107,190,4.685,192,4.065,268,2.098,303,2.956,304,5.684,331,4.614,332,4.867,333,7.131,334,4.065,335,5.184,336,6.251,337,4.403]],["sidebarParentCategories/30",[266,2.789]],["title/36",[323,2.696]],["content/36",[2,1.469,3,2.462,25,2.581,58,1.123,70,2.317,93,3.567,102,1.585,103,3.198,207,1.904,268,2.317,285,2.424,303,3.265,304,4.49,324,2.758,325,3.017,326,4.863,327,3.198]],["sidebarParentCategories/36",[70,1.291,266,1.782,304,2.501]],["title/37",[338,1.046]],["content/37",[2,1.743,70,2.202,91,3.757,199,4.267,303,3.103,304,5.812,311,4.693,323,2.714,328,4.045,329,4.137,330,4.137,339,2.621,340,4.622,341,4.267,342,3.472]],["sidebarParentCategories/37",[70,1.291,266,1.782,304,2.501]],["title/31",[53,2.203,309,3.464]],["content/31",[22,2.205,24,3.889,25,2.064,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,151,2.031,181,3.788,190,3.254,226,2.996,268,2.461,309,4.768,333,6.577,343,6.178,344,4.321,345,4.577,346,2.168,347,4.298,348,2.852,349,5.52,350,5.52,351,3.729]],["sidebarParentCategories/31",[266,2.789]],["title/43",[323,2.696]],["content/43",[2,1.469,3,2.462,25,2.581,53,2.856,58,1.123,93,3.567,102,1.585,103,3.198,207,1.904,268,2.317,285,2.424,303,3.265,309,4.49,324,2.758,325,3.017,326,4.863,327,3.198]],["sidebarParentCategories/43",[53,1.591,266,1.782,309,2.501]],["title/44",[338,1.046]],["content/44",[2,1.743,53,3.697,91,3.757,199,4.267,303,3.103,308,7.352,309,4.267,323,2.714,328,4.045,329,4.137,330,4.137,339,2.621,340,4.622,341,4.267,342,3.472]],["sidebarParentCategories/44",[53,1.591,266,1.782,309,2.501]],["title/41",[122,3.05,123,2.467]],["content/41",[2,1.363,3,1.617,4,3.531,6,2.289,9,3.761,10,4.069,11,3.064,17,2.101,18,2.95,24,4.514,25,1.696,30,1.669,31,1.762,34,1.478,43,3.234,46,3.531,55,1.357,67,2.461,102,1.042,111,2.527,112,3.31,122,4.877,123,3.442,150,2.06,151,1.669,181,3.31,226,2.461,229,4.254,248,2.756,249,2.95,261,4.024,268,2.494,325,1.982,334,2.95,341,2.95,352,2.343,353,4.536,354,4.536,355,4.536,356,2.145,357,3.761,358,2.673,359,3.761,360,4.536,361,2.597,362,4.069]],["sidebarParentCategories/41",[266,2.789]],["title/32",[323,2.696]],["content/32",[25,2.636,66,3.827,69,3.643,91,4.037,102,1.619,103,3.267,207,1.944,231,4.586,323,2.917,327,3.267,338,1.132,363,3.674,364,3.732,365,2.438]],["sidebarParentCategories/32",[122,2.202,123,1.782,266,1.782]],["title/33",[323,2.203,366,5.327]],["content/33",[6,3.803,58,1.225,102,1.73,120,5.089,122,4.314,123,3.49,359,6.247,367,6.247,368,7.534]],["sidebarParentCategories/33",[122,2.202,123,1.782,266,1.782]],["title/34",[120,3.598,369,4.147]],["content/34",[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,141,2.223,172,2.54,173,3.088,174,2.916,229,4.386,242,4.335,248,4.051,268,2.237,310,3.979,332,3.736,338,1.07,341,3.121,342,2.54,370,3.542,371,3.736,372,3.38,373,3.38,374,2.604,375,2.318,376,4.305,377,4.799,378,4.799,379,4.799,380,3.121,381,3.736,382,3.121,383,3.38,384,4.305,385,4.799,386,3.121,387,4.799,388,4.799]],["sidebarParentCategories/34",[122,2.202,123,1.782,266,1.782]],["title/35",[356,3.082]],["content/35",[2,1.382,33,4.95,38,4.795,102,1.492,122,3.72,250,5.502,264,3.526,268,2.18,310,5.387,342,3.438,356,3.072,359,6.754,372,4.577,373,4.577,389,4.664,390,3.619,391,6.497,392,4.577,393,4.389]],["sidebarParentCategories/35",[122,2.202,123,1.782,266,1.782]],["title/38",[102,1.223,207,1.469]],["content/38",[2,0.992,3,1.663,8,2,25,1.743,29,2.749,34,1.52,50,2.16,55,1.193,58,0.759,62,2.118,70,2.193,71,2.294,89,2.468,102,1.071,103,2.16,110,3.151,118,2.928,119,2.834,169,2.531,174,2.834,190,3.851,199,3.033,233,2.928,259,3.631,260,3.285,261,2.928,318,2.531,323,2.703,324,1.863,338,1.382,351,3.151,363,3.506,364,2.468,365,2.26,394,2.928,395,4.664,396,2.16,397,1.983,398,3.225,399,3.442,400,6.535,401,2.834,402,3.867,403,1.589,404,3.285,405,4.664,406,2.928]],["sidebarParentCategories/38",[]],["title/39",[55,0.973,338,0.855]],["content/39",[318,4.443,406,5.14]],["sidebarParentCategories/39",[]],["title/40",[55,0.973,323,2.203]],["content/40",[233,4.898,338,1.252,363,3.902,364,4.128,365,2.697]],["sidebarParentCategories/40",[]],["title/42",[338,1.046]],["content/42",[2,1.028,3,1.724,8,2.873,18,3.144,22,2.677,34,1.575,62,2.195,70,1.622,71,1.697,73,2.938,106,3.732,115,2.153,169,2.623,174,2.938,221,3.144,285,2.352,291,4.008,323,2.771,325,2.927,327,2.239,338,1.235,341,3.144,351,3.266,363,3.74,365,2.871,396,2.239,397,1.467,399,3.568,402,5.556,404,3.405,407,4.336,408,4.336,409,3.568,410,3.568,411,3.764,412,3.035,413,4.336,414,2.849,415,3.568,416,4.008,417,3.836]],["sidebarParentCategories/42",[102,1.078,207,1.294]],["title/61",[397,1.978]],["content/61",[2,1.127,3,1.889,8,2.273,25,1.981,62,3.239,66,2.876,102,1.217,198,4.394,239,2.36,260,3.733,261,3.327,280,3.58,324,2.117,325,2.315,329,2.675,330,2.675,338,1.446,363,2.273,365,1.832,397,1.608,403,2.43,418,4.126,419,5.299,420,5.299,421,4.126,422,4.394,423,4.753,424,3.327,425,3.58,426,5.025,427,4.126,428,4.753,429,3.911,430,5.299,431,5.299,432,3.446,433,3.911,434,1.461,435,1.861]],["sidebarParentCategories/61",[102,0.883,207,1.06,338,0.617]],["title/53",[426,3.752,428,4.778]],["content/53",[58,1.007,62,2.812,103,2.869,104,4.362,121,3.763,338,1.472,364,3.277,369,4.821,390,3.45,403,2.109,426,4.362,436,6.193,437,5.555,438,8.702,439,6.193,440,6.193,441,3.888,442,4.027,443,5.555,444,5.555,445,4.571,446,5.135,447,5.555]],["sidebarParentCategories/53",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/54",[397,1.978]],["content/54",[3,2.541,115,3.174,174,4.332,338,1.144,342,3.772,397,2.617,441,4.475,448,5.261,449,5.549,450,5.549,451,5.549,452,5.549,453,5.261]],["sidebarParentCategories/54",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/55",[329,3.29]],["content/55",[303,3.562,338,1.21,340,5.307,344,4.44,397,2.286,429,5.56,454,4.899,455,5.307,456,5.56]],["sidebarParentCategories/55",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/56",[330,3.29]],["content/56",[58,1.198,66,3.997,253,2.799,329,4.439,330,4.439,338,1.412,457,4.217,458,5.437]],["sidebarParentCategories/56",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/57",[432,4.238]],["content/57",[58,1.198,232,6.108,338,1.183,432,5.72,434,2.031,435,2.586,441,4.625,459,6.607,460,6.607,461,6.108]],["sidebarParentCategories/57",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/58",[433,4.81]],["content/58",[58,1.212,153,3.194,338,1.196,433,5.498,434,2.054,435,2.615,441,4.677,462,6.682,463,6.682,464,6.176]],["sidebarParentCategories/58",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/59",[434,1.469,435,1.87]],["content/59",[2,0.958,3,1.606,22,1.8,25,1.684,58,0.733,110,3.043,112,2.327,147,1.74,158,3.735,160,2.93,164,2.738,171,2.828,239,2.006,244,2.828,250,3.043,270,3.325,297,5.163,328,2.223,339,1.8,347,3.507,365,1.558,390,2.509,396,2.954,411,3.507,424,2.828,434,2.041,435,2.599,442,4.147,461,3.735,465,3.325,466,2.384,467,3.325,468,4.147,469,3.507,470,3.735,471,4.648,472,4.041,473,3.325,474,3.173,475,3.507,476,4.308,477,4.505,478,4.505,479,3.325,480,3.173,481,2.579,482,3.325,483,2.828,484,3.325,485,1.74,486,3.325,487,3.325,488,4.505,489,4.505]],["sidebarParentCategories/59",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/60",[338,0.855,370,3.931]],["content/60",[2,1.484,19,3.604,327,3.232,338,1.367,342,3.692,365,2.413,372,4.915,373,4.915,390,3.887,434,2.347,435,2.45,468,4.537,490,3.995,491,5.432]],["sidebarParentCategories/60",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/62",[426,3.752,427,4.147]],["content/62",[62,2.979,103,3.04,104,4.622,121,3.988,338,1.503,364,3.472,369,5.108,390,3.655,403,2.235,426,4.622,427,5.108,441,4.12,442,4.267,443,5.886,444,5.886,445,4.843,446,5.441,447,5.886,492,6.562]],["sidebarParentCategories/62",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/63",[397,1.978]],["content/63",[3,2.541,115,3.174,174,4.332,338,1.144,342,3.772,397,2.617,441,4.475,448,5.261,449,5.549,450,5.549,451,5.549,452,5.549,453,5.261]],["sidebarParentCategories/63",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/64",[329,3.29]],["content/64",[303,3.562,338,1.21,340,5.307,344,4.44,397,2.286,429,5.56,454,4.899,455,5.307,456,5.56]],["sidebarParentCategories/64",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/65",[330,3.29]],["content/65",[58,1.198,66,3.997,253,2.799,329,4.439,330,4.439,338,1.412,457,4.217,458,5.437]],["sidebarParentCategories/65",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/66",[434,1.469,435,1.87]],["content/66",[2,1.305,3,2.188,25,2.294,58,0.998,110,4.145,112,3.169,147,2.37,164,3.729,244,3.852,253,2.331,270,4.528,338,1.261,371,4.776,403,2.09,434,2.166,435,2.758,441,4.932,465,4.528,466,3.247,467,4.528,468,3.99,469,4.776,493,3.99,494,6.135,495,6.135]],["sidebarParentCategories/66",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/67",[338,0.855,370,3.931]],["content/67",[2,1.484,19,3.604,327,3.232,338,1.367,342,3.692,365,2.413,372,4.915,373,4.915,390,3.887,434,2.347,435,2.45,468,4.537,490,3.995,491,5.432]],["sidebarParentCategories/67",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/45",[424,4.092]],["content/45",[62,3.421,103,3.49,104,5.307,147,2.91,338,1.21,403,2.566,424,4.73,448,5.56,467,5.56]],["sidebarParentCategories/45",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/46",[397,1.978]],["content/46",[3,2.036,55,1.369,115,2.543,174,3.471,329,2.883,338,1.204,342,3.022,397,2.697,424,3.586,445,5.534,446,4.736,448,4.215,449,4.446,450,4.446,451,4.446,452,4.446,453,4.215,496,4.736,497,4.446,498,4.736,499,4.736,500,4.446,501,4.736,502,5.711,503,7.498,504,4.023,505,5.711,506,5.711,507,5.711,508,4.736]],["sidebarParentCategories/46",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/47",[329,3.29]],["content/47",[303,3.562,338,1.21,340,5.307,344,4.44,397,2.286,429,5.56,454,4.899,455,5.307,456,5.56]],["sidebarParentCategories/47",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/48",[330,3.29]],["content/48",[58,1.198,66,3.997,253,2.799,329,4.439,330,4.439,338,1.412,457,4.217,458,5.437]],["sidebarParentCategories/48",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/49",[432,4.238]],["content/49",[58,1.036,232,5.283,338,1.292,424,4.001,432,6.212,434,1.757,435,2.237,459,5.716,460,5.716,461,5.283,496,5.283,497,4.961,498,5.283,499,5.283,500,4.961,501,5.283,504,4.488,508,5.283,509,5.283,510,5.716]],["sidebarParentCategories/49",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/50",[433,4.81]],["content/50",[58,1.046,153,2.759,338,1.3,424,4.04,432,4.184,433,4.749,434,1.774,435,2.259,462,5.771,463,5.771,464,6.712,496,5.335,497,5.009,498,5.335,499,5.335,500,5.009,501,5.335,504,4.532,508,5.335,509,5.335,510,5.771,511,5.771]],["sidebarParentCategories/50",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/51",[434,1.469,435,1.87]],["content/51",[2,0.848,3,1.422,18,2.594,22,3.04,25,1.491,55,0.728,58,0.649,93,2.06,110,2.694,112,2.06,147,1.54,149,2.222,158,3.307,164,2.424,166,3.105,171,2.504,234,3.105,239,1.776,244,2.504,248,2.424,253,1.515,260,2.809,270,2.944,297,3.55,338,0.938,339,1.593,365,1.379,390,2.222,396,1.848,414,2.351,434,2.098,435,2.672,445,2.944,465,2.944,466,2.111,467,4.312,468,2.594,471,2.504,473,4.312,481,2.284,482,4.312,484,4.312,486,2.944,487,2.944,512,3.988,513,2.351,514,3.988,515,6.31,516,3.578,517,3.988,518,3.988,519,3.988,520,3.988,521,3.988,522,3.988,523,1.776,524,3.668,525,3.988,526,2.694,527,2.944,528,3.988,529,2.944,530,3.988,531,3.578,532,2.504,533,2.424,534,3.988,535,3.988]],["sidebarParentCategories/51",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/52",[338,0.855,370,3.931]],["content/52",[2,1.484,19,3.604,327,3.232,338,1.367,342,3.692,365,2.413,372,4.915,373,4.915,390,3.887,434,2.347,435,2.45,468,4.537,490,3.995,491,5.432]],["sidebarParentCategories/52",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/71",[425,4.403]],["content/71",[]],["sidebarParentCategories/71",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/72",[397,1.978]],["content/72",[3,2.569,115,3.209,174,4.379,239,3.209,342,3.813,397,2.186,448,5.318,449,5.609,450,5.609,451,5.609,452,5.609,453,5.318,471,4.524]],["sidebarParentCategories/72",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/73",[329,3.29]],["content/73",[303,3.562,338,1.21,340,5.307,344,4.44,397,2.286,429,5.56,454,4.899,455,5.307,456,5.56]],["sidebarParentCategories/73",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/74",[330,3.29]],["content/74",[58,1.198,66,3.997,253,2.799,329,4.439,330,4.439,338,1.412,457,4.217,458,5.437]],["sidebarParentCategories/74",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/75",[434,1.469,435,1.87]],["content/75",[2,1.215,3,2.036,25,2.135,58,0.929,110,3.858,112,2.95,115,2.543,147,2.206,164,3.471,171,3.586,239,2.543,244,3.586,260,4.023,270,4.215,297,4.557,411,4.446,422,6.218,434,1.575,435,2.005,465,4.215,466,3.022,470,4.736,471,3.586,536,5.123,537,4.419,538,5.711,539,5.123,540,6.726,541,2.135,542,3.586,543,5.711,544,2.95,545,3.858]],["sidebarParentCategories/75",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/76",[338,0.855,370,3.931]],["content/76",[2,1.484,19,3.604,327,3.232,338,1.367,342,3.692,365,2.413,372,4.915,373,4.915,390,3.887,434,2.347,435,2.45,468,4.537,490,3.995,491,5.432]],["sidebarParentCategories/76",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/68",[70,1.788,71,1.87]],["content/68",[22,2.758,66,3.747,69,3.567,70,2.317,71,2.424,296,5.725,323,2.856,338,1.109,403,2.352,434,1.904,435,2.424,546,4.196,547,4.863,548,5.714,549,6.585]],["sidebarParentCategories/68",[102,0.883,207,1.06,338,0.617]],["title/69",[490,3.05,550,5.327]],["content/69",[]],["sidebarParentCategories/69",[102,0.883,207,1.06,338,0.617]],["title/70",[201,1.32,323,1.273,328,1.519,548,2.079,551,3.077,552,2.76]],["content/70",[6,2.05,38,2.998,55,1.813,58,0.963,91,2.326,95,2.098,150,1.844,153,1.742,223,3.368,225,2.394,297,2.468,303,1.921,352,2.098,365,2.047,417,2.326,483,2.55,490,2.326,544,2.098,545,4.719,552,5.311,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,4.062,563,2.394,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,4.062,574,5.311,575,2.744,576,3.162,577,3.644,578,3.162,579,3.644,580,2.998,581,3.644,582,3.644,583,4.062,584,4.062,585,1.921,586,4.062,587,4.062,588,2.861,589,3.644,590,2.05,591,3.644,592,3.644,593,3.644,594,3.644]],["sidebarParentCategories/70",[102,0.883,207,1.06,338,0.617]],["title/79",[548,4.403]],["content/79",[70,2.472,71,2.586,117,3.718,184,6.108,285,2.586,325,3.218,339,2.942,365,2.547,414,4.341,548,4.976,595,6.108]],["sidebarParentCategories/79",[70,0.948,71,0.992,102,0.649,207,0.779,338,0.454]],["title/80",[285,1.37,306,1.391,435,1.37,596,3.499]],["content/80",[55,1.832,105,4.246,283,6.066,306,2.411,328,3.338,435,2.374,596,6.066,597,7.491,598,8.351,599,6.763,600,6.763]],["sidebarParentCategories/80",[70,0.948,71,0.992,102,0.649,207,0.779,338,0.454]],["title/81",[93,2.015,328,1.925,601,3.499,602,3.499]],["content/81",[55,1.809,93,4.01,105,3.782,171,3.782,225,3.55,328,2.973,365,2.083,482,4.446,597,6.963,601,5.403,602,7.705,603,4.874,604,3.661,605,6.023,606,3.112,607,6.023,608,5.403,609,6.023,610,6.023]],["sidebarParentCategories/81",[70,0.948,71,0.992,102,0.649,207,0.779,338,0.454]],["title/82",[297,2.371,403,1.329,606,2.015,611,3.235]],["content/82",[4,5.32,55,1.734,71,2.399,73,4.152,111,3.806,221,4.444,297,4.152,403,2.327,434,1.884,435,2.399,606,3.53,611,5.666,612,6.833,613,6.129,614,6.833]],["sidebarParentCategories/82",[70,0.948,71,0.992,102,0.649,207,0.779,338,0.454]],["title/83",[434,0.949,435,1.208,548,2.324,606,1.777,615,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,147,0.73,150,0.858,157,1.471,171,2.023,212,1.277,221,1.229,225,1.114,253,1.224,297,2.559,306,0.674,327,0.876,328,1.59,339,0.755,346,1.954,363,0.811,365,1.114,390,1.053,394,1.187,403,0.644,434,1.161,435,1.479,445,5.044,466,1,468,1.229,471,1.187,482,3.108,484,2.378,485,0.73,487,5.044,516,1.695,548,4.617,574,1.695,575,1.277,576,1.471,577,1.695,578,1.471,579,1.695,580,1.395,581,1.695,582,1.695,588,1.331,589,1.695,590,1.626,591,1.695,592,1.695,593,1.695,594,1.695,611,1.567,613,1.695,616,1.89,617,1.695,618,1.89,619,5.583,620,1.89,621,1.695,622,1.89,623,4.211,624,4.211,625,4.211,626,4.211,627,1.89,628,1.89,629,1.89,630,3.222,631,1.89,632,3.672,633,4.211,634,4.975,635,1.89,636,1.89,637,6.835,638,3.222,639,1.89,640,4.211,641,1.89,642,1.89,643,5.583,644,1.89,645,4.211,646,1.89,647,1.89,648,2.89,649,1.89,650,4.211,651,1.89,652,1.89,653,4.975,654,4.975,655,4.975,656,4.211,657,4.975,658,4.975,659,6.835,660,1.89,661,4.211,662,1.89,663,4.211,664,1.89,665,4.211,666,1.89,667,1.695,668,3.222,669,1.89,670,1.89,671,1.89,672,1.89,673,1.89,674,1.89,675,1.89,676,4.463,677,1.695,678,1.395,679,1.695,680,0.782,681,1.89,682,1.695,683,1.695,684,1.89,685,1.89,686,1.89,687,1.89,688,1.89,689,1.695]],["sidebarParentCategories/83",[70,0.948,71,0.992,102,0.649,207,0.779,338,0.454]],["title/78",[549,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,190,2.861,212,4.024,240,3.28,253,1.845,262,1.788,285,1.096,295,2.199,297,1.897,306,1.731,324,1.247,328,2.396,338,0.956,356,1.476,365,1.679,398,2.396,403,1.063,434,1.339,435,1.705,467,2.304,473,5.373,485,1.206,527,2.304,529,2.304,541,1.167,545,2.109,547,3.42,549,5.232,590,3.007,621,4.355,676,6.914,677,2.8,679,2.8,680,2.464,682,2.8,683,2.8,689,2.8,690,2.8,691,3.122,692,4.855,693,1.541,694,3.122,695,2.109,696,2.43,697,3.122,698,3.122,699,5.957,700,0.69,701,3.122,702,2.8,703,3.122,704,3.122,705,3.122,706,2.304,707,1.84,708,3.122,709,2.8,710,3.122,711,4.026,712,2.199,713,2.589,714,4.855,715,3.122,716,2.704,717,2.589,718,3.122,719,1.84,720,2.199,721,4.855,722,4.855]],["sidebarParentCategories/78",[70,0.948,71,0.992,102,0.649,207,0.779,338,0.454]],["title/77",[338,1.046]],["content/77",[2,1.35,3,1.595,8,2.722,18,2.91,22,2.535,34,1.458,62,2.032,70,1.501,71,1.571,73,2.719,106,3.535,115,1.992,169,2.428,174,2.719,221,2.91,285,2.228,291,3.71,303,2.116,323,2.625,324,1.787,325,2.773,327,2.073,338,1.361,341,2.91,351,3.023,363,3.775,365,2.93,396,2.073,397,2.238,399,3.302,402,5.262,404,3.152,407,4.013,408,4.013,409,3.302,410,3.302,411,3.483,412,2.809,413,4.013,414,2.637,415,3.302,416,3.71,417,3.634,723,4.474,724,3.023]],["sidebarParentCategories/77",[]],["title/126",[323,2.696]],["content/126",[66,3.868,69,3.682,70,2.392,71,2.502,91,4.081,103,3.302,231,4.635,233,4.475,323,2.948,338,1.144,363,3.698,364,3.772,365,2.465]],["sidebarParentCategories/126",[102,1.078,207,1.294]],["title/127",[253,1.711,338,0.723,403,1.534]],["content/127",[2,1.969,58,0.937,69,2.976,70,2.993,71,2.952,106,3.209,253,2.189,311,3.299,328,3.722,330,3.806,338,0.925,396,2.669,403,1.962,434,1.588,435,2.023,544,2.976,725,4.777,726,5.168,727,6.765,728,5.168,729,5.168,730,5.761,731,5.168,732,5.761]],["sidebarParentCategories/127",[102,1.078,207,1.294]],["title/128",[323,2.203,513,3.139]],["content/128",[8,2.023,17,2.185,34,1.537,36,2.494,55,1.696,58,1.071,68,3.574,69,1.554,70,2.21,71,2.665,91,1.722,93,1.554,111,1.676,190,2.78,223,3.911,253,1.143,255,1.722,266,2.185,272,2.494,293,2.22,323,1.951,324,2.324,328,2.328,329,2.936,330,2.936,346,1.181,389,2.7,403,1.607,409,2.22,410,2.22,412,2.961,457,1.722,476,2.032,483,1.889,484,4.861,513,2.78,544,1.554,546,1.828,578,2.342,617,4.231,693,1.485,720,2.119,731,2.698,733,3.008,734,3.008,735,3.008,736,3.008,737,3.008,738,1.394,739,5.818,740,3.008,741,1.828,742,3.008,743,3.008,744,3.008,745,1.223,746,2.7,747,3.008,748,2.342,749,2.698,750,3.008,751,3.008,752,3.008,753,5.818,754,3.008,755,2.698,756,2.032,757,3.008,758,4.716,759,4.231,760,4.716,761,3.008,762,5.818,763,3.008,764,3.008,765,4.716,766,3.008,767,3.008,768,2.494,769,3.008]],["sidebarParentCategories/128",[102,1.078,207,1.294]],["title/129",[31,0.983,285,1.581,325,1.968]],["content/129",[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.687,141,2.371,147,1.291,173,2.371,190,1.97,211,1.553,213,2.355,221,2.174,239,1.489,252,2.603,285,1.174,311,1.914,323,1.383,346,2.01,356,3.295,364,1.769,365,1.156,374,2.777,375,3.365,397,1.014,403,1.743,442,2.174,541,1.913,745,2.832,770,2.999,771,1.914,772,3.343,773,3.343,774,4.375,775,5.143,776,3.781,777,2.999,778,3.214,779,4.244,780,2.195,781,3.343,782,2.999]],["sidebarParentCategories/129",[102,1.078,207,1.294]],["title/130",[242,2.929,285,1.581,325,1.968]],["content/130",[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,147,1.74,169,2.444,242,5.525,248,2.738,249,2.93,253,2.423,260,3.173,285,2.599,298,4.041,312,3.325,325,1.968,346,2.505,348,3.294,361,2.579,380,2.93,381,3.507,382,4.814,383,4.492,457,2.579,474,3.173,770,4.041,775,3.325,783,4.505,784,5.214,785,4.492,786,4.492,787,4.505,788,4.041,789,3.735,790,4.505,791,4.505]],["sidebarParentCategories/130",[102,1.078,207,1.294]],["title/131",[31,1.162,50,2.467]],["content/131",[31,1.857,50,3.232,55,1.791,403,2.377,541,2.608,745,2.836,780,2.992,792,6.977,793,3.995,794,3.443,795,6.259]],["sidebarParentCategories/131",[102,1.078,207,1.294]],["title/132",[95,2.327,392,3.172,796,3.324]],["content/132",[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,141,2.233,164,2.929,173,2.233,211,1.462,253,1.831,311,1.771,319,2.685,346,1.893,374,2.615,375,3.229,380,2.011,381,2.408,382,3.134,397,0.938,403,1.642,541,1.802,724,2.089,745,2.717,774,4.198,775,4.935,776,3.628,778,3.026,779,3.996,782,2.774,784,3.395,785,3.395,786,3.395,788,2.774,793,2.76,794,2.379,795,4.323,797,4.82,798,4.82,799,3.093,800,4.82,801,3.093,802,3.093]],["sidebarParentCategories/132",[102,1.078,207,1.294]],["title/133",[40,3.752,58,0.866]],["content/133",[2,1.679,31,1.722,42,6.545,205,5.56,206,7.081]],["sidebarParentCategories/133",[102,1.078,207,1.294]],["title/84",[87,1.205]],["content/84",[2,1.56,29,3.254,30,2.697,31,1.796,34,2.389,55,1.602,58,1.193,103,3.396,150,3.329,151,2.697,202,4.952,226,2.996,236,3.355,255,3.161,285,1.938,317,2.61,318,4.467,325,2.412,364,2.921,365,1.909,706,4.074,745,2.244,803,4.298,804,4.298,805,1.748,806,2.283,807,4.298]],["sidebarParentCategories/84",[]],["title/85",[31,0.983,55,0.822,745,1.83]],["content/85",[317,3.871,318,4.443]],["sidebarParentCategories/85",[]],["title/86",[34,1.468,55,0.822,151,1.657]],["content/86",[103,3.701,318,4.335,364,4.228,365,2.763]],["sidebarParentCategories/86",[]],["title/87",[30,1.657,55,0.822,150,2.045]],["content/87",[58,1.332,804,6.374]],["sidebarParentCategories/87",[]],["title/88",[55,0.822,805,1.426,806,1.863]],["content/88",[318,4.443,807,6.374]],["sidebarParentCategories/88",[]],["title/93",[31,1.162,745,2.165]],["content/93",[2,1.859,3,2.597,25,2.723,31,1.59,43,3.677,208,6.534,266,3.375,307,6.04,356,3.444,389,4.171,415,5.377]],["sidebarParentCategories/93",[87,1.114]],["title/94",[374,3.537]],["content/94",[31,1.491,34,2.227,35,4.29,58,1.111,78,5.677,96,2.514,116,5.32,151,2.514,211,2.073,285,2.399,325,2.985,374,4.56,585,3.231,808,5.666,809,6.129,810,4.813]],["sidebarParentCategories/94",[87,1.114]],["title/95",[778,4.092]],["content/95",[2,1.075,17,2.342,31,1.718,50,3.92,55,1.741,96,1.86,117,2.552,141,2.342,148,3.561,173,3.92,190,2.98,201,2.964,211,2.389,253,1.921,255,2.895,265,3.073,323,2.091,346,1.986,356,3.268,375,2.442,403,1.722,778,4.339,789,4.192,811,3.561,812,4.192,813,6.199,814,2.744,815,5.056,816,5.056,817,4.535,818,4.535]],["sidebarParentCategories/95",[87,1.114]],["title/96",[819,5.846]],["content/96",[58,1.198,160,4.79,173,3.412,210,5.437,211,2.235,239,3.28,476,4.976,541,2.754,544,3.805,585,4.159]],["sidebarParentCategories/96",[87,1.114]],["title/97",[820,4.81]],["content/97",[141,3.451,173,3.451,211,2.26,544,3.848,585,3.522,821,7.449,822,7.449,823,7.449,824,7.449,825,5.799]],["sidebarParentCategories/97",[87,1.114]],["title/98",[826,6.518]],["content/98",[58,1.471,62,2.211,84,3.856,111,2.713,121,2.959,141,4.05,156,5.243,211,1.478,239,2.169,253,1.85,352,3.479,389,2.788,680,2.014,712,4.744,813,4.368,817,6.041,820,3.594,827,6.734,828,6.734,829,4.87,830,4.87,831,6.734,832,4.87,833,4.368,834,4.038,835,4.87,836,4.87,837,4.368,838,4.87,839,6.734,840,3.791,841,3.594,842,4.87,843,4.87,844,4.87,845,4.87,846,4.87,847,3.791,848,4.87]],["sidebarParentCategories/98",[87,1.114]],["title/99",[849,6.518]],["content/99",[58,1.341,63,5.495,173,3.07,201,3.537,211,2.011,213,4.668,442,4.31,474,4.668,680,3.411,695,4.477,805,2.098,806,3.713,850,5.495,851,7.397,852,3.201]],["sidebarParentCategories/99",[87,1.114]],["title/100",[229,3.732]],["content/100",[31,1.377,55,1.46,58,1.301,96,2.942,173,2.924,211,1.915,229,4.579,251,5.661,296,6.631,380,4.104,386,4.104,393,4.263,475,4.913,585,2.984,853,4.34,854,4.913,855,6.311,856,6.311,857,3.425,858,6.311]],["sidebarParentCategories/100",[87,1.114]],["title/101",[859,5.074]],["content/101",[31,1.432,50,3.04,58,1.067,84,3.757,96,2.414,211,1.991,225,3.867,319,3.655,434,1.809,466,3.472,544,3.39,585,3.103,789,5.441,859,5.108,860,6.562,861,6.796,862,5.886,863,6.562,864,6.562,865,5.886,866,6.562]],["sidebarParentCategories/101",[87,1.114]],["title/102",[867,4.591]],["content/102",[30,1.805,55,1.696,58,0.798,96,2.49,151,1.805,154,3.08,183,2.809,191,2.891,211,1.489,239,2.185,255,2.809,306,1.749,317,2.32,319,2.733,346,1.927,365,1.696,375,2.369,386,3.19,393,4.573,396,2.273,434,1.353,466,4.101,680,2.029,716,2.733,852,2.369,867,3.456,868,4.068,869,6.769,870,5.613,871,2.733,872,3.819,873,4.906,874,6.769,875,5.27,876,4.068,877,3.819,878,4.068,879,4.906,880,4.906,881,4.401,882,4.906,883,4.401]],["sidebarParentCategories/102",[87,1.114]],["title/103",[884,6.518]],["content/103",[78,5.089,142,6.94,210,5.56,211,2.286,421,5.865,466,3.987,585,3.562,865,6.758]],["sidebarParentCategories/103",[87,1.114]],["title/104",[885,6.518]],["content/104",[151,2.71,210,5.437,211,2.235,327,3.412,434,2.031,542,5.522,585,3.483,886,6.108,887,7.366,888,7.366]],["sidebarParentCategories/104",[87,1.114]],["title/105",[889,6.518]],["content/105",[19,3.722,58,1.172,80,6.463,211,2.186,325,3.148,421,5.609,466,4.93,890,4.867,891,6.757,892,7.205]],["sidebarParentCategories/105",[87,1.114]],["title/106",[893,6.518]],["content/106",[171,4.677,211,2.26,545,5.032,585,3.522,748,5.799,852,3.597,894,7.449,895,7.449,896,6.176,897,6.682]],["sidebarParentCategories/106",[87,1.114]],["title/107",[897,5.846]],["content/107",[211,2.367,585,3.688,748,6.073,852,3.767,896,6.468,898,7.8]],["sidebarParentCategories/107",[87,1.114]],["title/108",[899,6.518]],["content/108",[81,3.996,142,4.605,145,4.905,147,2.285,211,1.795,213,4.167,227,6.347,306,3.036,318,3.21,374,3.21,393,3.996,434,1.631,454,3.847,695,3.996,748,4.605,857,4.889,881,5.306,896,4.905,900,5.306,901,5.916,902,7.061,903,4.366,904,5.306]],["sidebarParentCategories/108",[87,1.114]],["title/109",[905,6.518]],["content/109",[172,3.813,211,2.186,227,5.075,306,3.095,317,3.407,585,4.104,857,3.91,900,6.463,902,5.975,906,5.075,907,7.205]],["sidebarParentCategories/109",[87,1.114]],["title/110",[908,6.518]],["content/110",[59,3.887,141,3.232,172,3.692,211,2.117,227,5.996,250,4.713,374,3.786,544,3.604,585,3.299,857,4.619,883,6.259,902,5.785,909,6.977,910,6.977]],["sidebarParentCategories/110",[87,1.114]],["title/111",[911,6.518]],["content/111",[17,3.07,19,3.424,96,2.438,112,3.424,151,2.438,211,2.011,365,2.292,434,1.827,465,4.891,466,4.364,590,3.345,680,2.741,716,3.692,890,4.477,912,5.571,913,5.16,914,6.627,915,6.627,916,6.627]],["sidebarParentCategories/111",[87,1.114]],["title/112",[917,4.591]],["content/112",[2,1.604,3,2.054,25,2.154,33,3.501,34,1.877,55,1.377,58,0.937,96,2.12,111,3.209,147,2.225,211,1.748,327,2.669,331,4.252,334,3.746,337,4.058,346,2.263,361,4.318,541,2.154,814,3.126,903,4.252,917,6.521,918,5.761,919,5.761,920,6.253,921,5.566,922,4.777,923,5.168]],["sidebarParentCategories/112",[87,1.114]],["title/113",[924,5.846]],["content/113",[2,1.194,31,1.225,55,1.354,58,1.206,62,2.549,96,2.066,147,2.168,152,3.047,153,2.408,211,2.25,244,3.525,346,2.205,680,2.322,814,3.047,840,4.371,841,4.144,847,4.371,924,7.447,925,5.614,926,3.412,927,5.614,928,5.614,929,5.614,930,5.614,931,5.036,932,8.301,933,5.614,934,5.614,935,5.614,936,5.614,937,5.614,938,5.614]],["sidebarParentCategories/113",[87,1.114]],["title/114",[939,4.81]],["content/114",[2,0.945,19,2.296,22,1.775,26,3.685,30,3.231,31,1.378,55,1.153,58,0.723,59,2.476,62,2.018,96,1.635,121,2.701,147,1.717,181,2.296,190,2.619,211,1.349,220,3.46,231,2.89,253,1.689,324,1.775,332,3.46,339,2.523,346,1.745,365,1.537,401,2.701,474,3.13,485,1.717,680,1.838,693,2.193,741,2.701,814,2.412,841,3.28,857,4.766,872,3.46,891,3.46,939,5.423,940,6.093,941,5.906,942,3.28,943,5.666,944,3.28,945,3.986,946,4.917,947,6.316,948,5.237,949,3.685]],["sidebarParentCategories/114",[87,1.114]],["title/115",[950,5.846]],["content/115",[2,0.939,19,2.281,22,1.763,26,3.66,30,1.624,31,1.372,55,1.148,58,0.718,59,2.459,62,2.005,96,1.624,121,2.683,147,1.705,181,2.281,190,2.602,211,1.34,220,3.437,226,4.575,231,2.871,253,1.677,324,1.763,332,3.437,339,2.511,346,1.734,358,2.602,365,1.527,401,2.683,474,3.11,485,1.705,680,1.826,693,2.179,741,2.683,814,2.396,841,3.258,857,4.755,872,3.437,891,3.437,940,6.07,941,5.888,942,3.258,944,3.258,945,3.96,946,4.894,949,3.66,950,6.567,951,4.414,952,6.286,953,6.286,954,4.414]],["sidebarParentCategories/115",[87,1.114]],["title/116",[955,5.846]],["content/116",[19,3.494,96,2.488,121,4.11,211,2.052,348,4.314,358,4.922,590,3.414,680,2.797,711,5.608,716,3.767,719,3.986,741,4.11,857,4.532,890,4.569,955,6.066,956,6.763]],["sidebarParentCategories/116",[87,1.114]],["title/117",[957,5.074]],["content/117",[31,1.377,34,2.057,53,2.61,58,1.027,96,2.322,151,3.23,211,1.915,348,4.535,358,3.72,585,2.984,680,3.308,695,4.263,853,3.425,957,4.913,958,3.048,959,5.233,960,4.913,961,4.913,962,6.311,963,6.311,964,6.311]],["sidebarParentCategories/117",[87,1.114]],["title/118",[960,5.074]],["content/118",[58,1.078,96,2.438,211,2.011,348,4.638,375,3.201,578,5.16,585,3.134,680,3.411,957,5.16,958,3.201,959,5.495,960,5.16,961,5.16,965,6.627,966,6.627,967,6.627,968,6.627,969,6.627]],["sidebarParentCategories/118",[87,1.114]],["title/119",[961,5.074]],["content/119",[19,3.643,96,2.594,211,2.14,348,3.643,590,3.559,680,3.544,716,3.928,890,4.764,957,5.49,958,3.405,959,5.847,960,5.49,961,5.49,970,7.051]],["sidebarParentCategories/119",[87,1.114]],["title/120",[971,5.846]],["content/120",[96,2.651,211,2.186,285,2.53,348,3.722,384,6.463,680,3.59,906,5.075,971,6.463,972,7.205,973,7.205,974,7.205,975,7.205]],["sidebarParentCategories/120",[87,1.114]],["title/121",[976,6.518]],["content/121",[2,1.37,31,0.997,55,1.176,58,1.047,96,1.68,146,3.045,153,3.473,170,4.097,205,4.536,211,1.386,236,3.913,249,2.97,262,2.615,325,2.813,326,4.536,346,1.794,348,4.412,421,5.013,472,4.097,476,3.085,680,1.889,695,3.085,696,5.013,814,2.478,840,3.556,841,3.371,926,2.775,942,5.505,977,7.458,978,4.567,979,3.787,980,7.458,981,4.567,982,4.567,983,4.567,984,6.439,985,5.776,986,3.085,987,4.567,988,4.567,989,4.567]],["sidebarParentCategories/121",[87,1.114]],["title/122",[214,4.04,485,1.739,990,4.04]],["content/122",[58,1.159,96,2.622,166,5.549,198,5.91,211,2.163,348,3.682,680,2.948,906,5.021,985,6.394,990,6.394,991,7.128,992,7.128,993,7.128,994,7.128]],["sidebarParentCategories/122",[87,1.114]],["title/123",[995,5.846]],["content/123",[19,3.567,58,1.123,96,2.54,114,3.953,211,2.095,541,2.581,590,3.485,680,2.856,716,3.846,756,4.664,890,4.664,995,6.193,996,6.904,997,7.013,998,6.904,999,6.904]],["sidebarParentCategories/123",[87,1.114]],["title/124",[1000,5.846]],["content/124",[31,1.491,35,4.29,58,1.367,78,4.616,96,2.514,199,4.444,211,2.073,240,4.616,325,2.985,374,3.708,585,3.231,603,4.29,809,6.129,1000,6.129,1001,6.833,1002,6.129,1003,6.833]],["sidebarParentCategories/124",[87,1.114]],["title/125",[1004,5.404]],["content/125",[2,1.469,3,2.462,19,3.567,25,2.581,58,1.123,96,2.54,201,2.961,211,2.095,306,2.462,590,3.485,680,2.856,700,1.526,716,3.846,741,4.196,890,4.664,1004,5.725,1005,5.096]],["sidebarParentCategories/125",[87,1.114]],["title/89",[921,4.81]],["content/89",[]],["sidebarParentCategories/89",[31,0.839,87,0.711,745,1.563]],["title/90",[58,0.733,680,1.863,920,3.734]],["content/90",[2,1.568,25,2.756,31,1.215,55,1.818,105,3.495,211,1.689,212,3.761,334,3.62,346,3.247,541,2.081,745,2.997,774,4.629,780,2.387,814,4.001,917,5.193,920,6.114,921,4.109,922,4.616,923,4.994,958,2.688,1006,4.334,1007,4.616]],["sidebarParentCategories/90",[31,0.839,87,0.711,745,1.563]],["title/91",[34,1.736,917,3.752]],["content/91",[2,0.761,55,1.823,58,0.582,89,1.894,96,1.316,111,3.002,147,1.382,192,6.191,225,5.239,327,1.658,337,2.52,346,1.405,414,2.109,575,2.417,580,6.23,585,3.991,814,1.942,837,3.21,917,4.567,922,6.418,1008,3.578,1009,3.578,1010,3.578,1011,3.578,1012,3.578,1013,8.441,1014,8.441,1015,3.578,1016,3.578,1017,3.578,1018,3.578,1019,3.578,1020,3.578]],["sidebarParentCategories/91",[31,0.839,87,0.711,745,1.563]],["title/92",[434,1.469,921,3.931]],["content/92",[2,1.259,6,2.05,8,1.742,25,1.518,55,1.556,69,2.098,71,1.426,110,3.999,111,2.263,115,1.809,147,1.569,153,2.539,212,2.744,220,3.162,239,1.809,268,1.363,285,2.453,305,3.644,311,2.326,327,1.882,346,2.325,351,2.744,352,2.098,367,3.368,371,3.162,398,2.005,403,1.384,434,1.926,435,1.426,483,3.717,485,1.569,515,3.368,540,3.644,547,4.17,563,3.489,690,5.311,695,2.744,724,2.744,776,3.213,808,3.368,917,2.861,921,5.156,958,1.962,1021,4.062,1022,5.92,1023,5.92,1024,4.062,1025,4.909,1026,4.062,1027,4.062,1028,5.92,1029,4.062,1030,4.062,1031,4.37,1032,4.062,1033,4.062,1034,3.368,1035,4.062,1036,4.062]],["sidebarParentCategories/92",[31,0.839,87,0.711,745,1.563]],["title/145",[34,1.736,151,1.96]],["content/145",[29,2.935,30,1.832,31,1.492,34,2.229,50,2.307,67,2.702,87,1.265,102,1.144,103,2.307,108,3.81,115,2.218,150,2.261,151,2.516,152,3.711,153,2.136,154,3.127,163,3.877,226,2.702,231,3.238,246,5.765,252,3.877,253,2.598,261,3.127,280,3.364,285,1.748,318,2.702,325,2.176,356,2.355,364,2.635,365,2.365,398,2.458,725,4.129,745,2.024,771,2.851,853,3.711,854,3.877,857,2.702,871,2.774,1037,5.324,1038,6.135,1039,4.129]],["sidebarParentCategories/145",[87,1.114]],["title/146",[31,0.851,285,1.37,317,1.844,325,1.704]],["content/146",[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,141,1.413,146,1.443,151,0.652,169,0.962,173,2.209,229,1.015,239,1.359,242,4.088,246,3.966,248,2.44,249,1.984,253,0.674,264,0.962,285,1.41,319,2.994,323,1.973,324,1.219,326,2.149,334,4.088,348,1.576,352,2.464,356,2.255,361,1.747,374,2.588,375,1.473,380,1.153,382,3.818,383,2.149,396,0.822,398,1.506,403,1.368,406,1.114,523,0.79,541,2.009,547,1.249,590,1.54,603,1.114,745,1.938,756,2.713,771,1.747,774,1.916,776,1.656,778,1.916,780,3.088,784,2.149,785,2.149,786,1.249,793,2.731,794,2.354,810,2.149,853,3.186,1037,5.167,1038,2.737,1040,1.591,1041,1.591,1042,1.591,1043,1.591,1044,2.252,1045,3.713,1046,2.061,1047,2.524,1048,1.591,1049,1.591,1050,1.591,1051,1.381,1052,1.381,1053,1.381,1054,1.591,1055,1.078,1056,1.471,1057,1.471,1058,1.984,1059,1.471,1060,1.249,1061,1.381,1062,2.252,1063,2.53,1064,1.471,1065,1.471,1066,1.471,1067,1.471]],["sidebarParentCategories/146",[87,1.114]],["title/147",[807,3.506,853,2.444,926,2.737]],["content/147",[31,1.76,34,1.727,52,4.753,55,1.731,88,4.753,89,2.804,95,3.686,105,3.327,119,4.336,151,1.95,152,2.876,246,5.266,285,1.861,398,2.615,585,2.506,590,2.675,603,3.327,780,3.059,793,3.034,794,2.615,853,2.876,1039,4.394,1044,3.911,1047,2.804,1058,4.639,1060,3.733,1068,5.299,1069,5.299,1070,7.134,1071,5.299,1072,4.126,1073,4.394]],["sidebarParentCategories/147",[87,1.114]],["title/148",[151,1.132,513,1.814,941,2.271,1074,2.76,1075,2.168,1076,2.552]],["content/148",[6,1.846,29,2.156,30,1.346,31,1.592,34,1.192,55,1.795,58,0.891,89,1.935,96,1.346,101,2.847,102,0.84,108,2.037,117,1.846,127,3.281,146,1.729,150,1.661,151,2.684,152,1.985,153,1.568,160,2.378,192,2.378,199,2.378,226,1.985,239,1.629,255,2.094,264,1.985,352,1.889,358,2.156,375,1.766,415,2.699,417,2.094,418,2.847,474,4.627,523,1.629,580,2.699,693,1.805,780,1.568,853,2.973,871,2.037,926,3.329,946,4.265,1037,2.847,1047,1.935,1055,2.223,1058,3.563,1075,2.576,1076,3.033,1077,3.657,1078,5.893,1079,2.576,1080,3.657,1081,3.033,1082,4.543,1083,3.033,1084,3.033,1085,2.576,1086,3.033,1087,4.265,1088,3.033,1089,2.847,1090,2.699,1091,2.847,1092,3.033,1093,2.847,1094,2.847,1095,2.847,1096,3.033,1097,2.847]],["sidebarParentCategories/148",[87,1.114]],["title/149",[95,2.015,392,2.748,796,2.879,1098,3.499]],["content/149",[2,0.54,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.119,108,1.902,115,0.64,117,0.726,141,1.177,146,0.68,151,1.517,152,0.78,153,0.617,169,0.78,173,1.581,199,0.935,229,0.823,239,1.52,242,3.062,246,2.52,248,2.075,249,1.652,253,0.546,255,0.823,264,0.78,280,0.971,285,1.199,319,2.623,334,3.656,342,1.345,346,0.565,348,0.743,356,1.949,361,1.455,365,0.497,374,2.237,375,1.649,380,0.935,382,2.681,383,1.013,398,0.71,403,0.866,414,0.847,485,0.981,523,1.132,541,1.541,580,1.061,585,0.68,590,1.283,603,0.903,680,0.595,693,0.71,745,1.675,771,1.455,774,2.144,775,1.061,776,1.853,777,1.29,778,1.595,780,3.106,784,2.405,785,2.405,786,1.79,793,2.978,794,3.109,796,1.061,810,1.79,820,1.061,825,1.119,853,2.237,871,0.801,913,1.119,1037,2.658,1041,2.279,1042,1.29,1043,1.29,1044,1.875,1045,3.209,1046,1.717,1047,2.752,1048,2.279,1049,1.29,1050,1.29,1051,1.119,1052,1.119,1053,1.119,1055,0.874,1057,1.192,1058,3.891,1059,1.192,1060,2.405,1061,1.119,1062,1.875,1063,2.107,1065,1.192,1066,1.192,1067,1.192,1072,1.119,1073,1.192,1081,1.192,1082,2.107,1083,1.192,1084,1.192,1085,1.013,1086,1.192,1087,1.978,1088,1.192,1089,1.119,1090,1.061,1091,1.119,1092,1.192,1093,1.119,1094,1.119,1095,1.119,1096,1.192,1097,1.119,1099,1.192,1100,1.29,1101,1.192,1102,1.29,1103,1.29,1104,1.119,1105,2.279,1106,1.29,1107,2.279,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,1119,1.438]],["sidebarParentCategories/149",[87,1.114]],["title/150",[40,3.752,58,0.866]],["content/150",[146,4.243,151,2.804,264,4.135,1054,6.836,1055,4.631,1056,6.319,1064,6.319]],["sidebarParentCategories/150",[87,1.114]],["title/181",[30,1.96,150,2.419]],["content/181",[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.673,115,2.137,118,4.81,119,5.03,146,3.152,150,3.478,151,1.766,152,2.604,173,2.223,183,2.748,231,3.121,238,2.828,252,3.736,253,2.533,261,3.013,285,1.685,318,2.604,325,2.097,356,2.269,364,2.54,365,2.305,386,3.121,398,2.369,706,3.542,725,3.979,741,2.916,745,1.95,771,2.748,804,3.736,857,2.604,986,3.242]],["sidebarParentCategories/181",[87,1.114]],["title/182",[31,0.851,285,1.37,317,1.844,325,1.704]],["content/182",[2,0.292,8,0.588,17,0.636,30,0.505,31,1.789,34,0.794,50,1.524,55,1.745,58,0.891,67,1.323,68,0.745,69,1.699,70,0.46,71,0.856,87,0.608,96,0.505,105,0.862,108,1.832,115,2.033,118,3.866,119,3.327,121,0.834,133,1.068,141,1.524,169,2.163,173,1.846,181,0.709,183,0.786,212,0.927,221,0.892,225,2.691,228,1.717,229,2.282,239,1.465,242,3.56,248,4.064,249,1.585,253,0.521,261,0.862,285,1.155,311,0.786,319,3.05,323,1.361,324,0.974,328,1.623,329,1.23,330,1.23,331,2.428,334,3.797,338,0.391,346,0.957,348,1.699,356,1.884,361,1.396,365,1.137,374,2.163,375,1.925,380,3.287,381,1.068,382,2.969,383,1.717,390,0.764,393,0.927,394,0.862,396,0.636,398,0.677,403,1.12,414,0.809,415,1.799,417,1.396,457,1.396,458,1.799,466,0.726,541,1.49,546,0.834,547,0.967,548,0.927,549,1.068,590,1.23,603,0.862,604,0.834,680,1.008,712,1.717,716,1.358,745,1.855,746,0.786,771,1.883,774,1.531,776,1.785,778,1.531,780,2.504,784,1.717,785,1.717,786,2.317,793,1.396,794,1.967,810,3.216,853,0.745,854,1.898,857,0.745,859,1.898,862,2.187,867,1.717,870,2.021,875,2.561,876,2.021,877,1.898,878,2.021,939,1.799,948,2.021,1040,1.231,1044,1.799,1045,3.103,1046,1.647,1047,1.29,1051,1.068,1052,1.898,1053,1.068,1120,1.231,1121,3.575,1122,2.187,1123,1.231,1124,2.951,1125,2.187,1126,1.231,1127,1.231,1128,1.231,1129,1.372,1130,1.231,1131,2.438,1132,1.138,1133,2.438,1134,5.475,1135,1.231,1136,1.372,1137,1.068,1138,1.231,1139,1.231,1140,1.231]],["sidebarParentCategories/182",[87,1.114]],["title/183",[30,1.266,183,1.97,319,1.916,386,2.237,406,2.16]],["content/183",[11,3.314,17,2.273,29,2.891,30,3.074,31,1.477,34,1.599,55,1.655,62,3.074,118,5.246,150,3.074,183,2.809,306,1.749,358,2.891,386,5.434,396,2.273,417,3.876,542,4.25,680,2.029,716,2.733,746,2.809,780,2.903,793,3.876,1128,6.072,1141,4.906,1142,4.401,1143,4.401,1144,4.401,1145,3.621,1146,3.819,1147,4.068,1148,4.401,1149,4.401,1150,4.401,1151,4.068]],["sidebarParentCategories/183",[87,1.114]],["title/184",[30,1.435,807,3.037,941,2.879,1075,2.748]],["content/184",[30,3.246,31,0.983,55,1.796,78,4.308,89,3.375,96,1.657,112,2.327,119,3.875,190,2.655,239,2.84,312,3.325,337,3.173,375,2.175,417,2.579,544,2.327,693,2.223,780,1.932,793,2.579,794,2.223,810,3.173,857,3.461,926,2.738,941,3.325,1002,4.041,1075,3.173,1085,3.173,1093,3.507,1095,3.507,1097,3.507,1132,3.735,1152,4.041,1153,3.735,1154,4.505,1155,4.041,1156,4.041,1157,4.041,1158,4.041,1159,4.041,1160,4.041,1161,4.041,1162,3.735,1163,5.72,1164,4.041,1165,4.041,1166,4.041]],["sidebarParentCategories/184",[87,1.114]],["title/185",[30,1.657,150,2.045,1074,4.04]],["content/185",[30,1.728,31,1.025,34,1.531,55,1.809,59,2.616,96,1.728,118,4.755,119,2.854,151,2.786,213,3.308,238,2.768,323,1.943,363,2.014,364,2.486,394,2.949,398,2.318,399,3.467,434,1.295,442,3.054,523,2.924,542,4.755,544,3.393,585,3.105,780,2.014,793,2.689,1145,3.467,1146,3.657,1153,3.895,1167,3.308,1168,5.334,1169,4.213,1170,4.847,1171,4.213,1172,3.054,1173,3.895,1174,4.213,1175,4.213,1176,4.213]],["sidebarParentCategories/185",[87,1.114]],["title/186",[95,2.015,392,2.748,796,2.879,1098,3.499]],["content/186",[2,0.385,11,0.666,30,1.332,31,1.677,34,0.589,35,0.619,50,0.837,55,1.852,58,0.294,89,1.325,95,0.934,96,0.363,101,0.767,108,1.395,115,0.439,117,0.497,118,3.414,119,2.476,141,0.837,146,0.466,150,0.448,151,0.921,152,0.535,153,0.423,169,0.535,173,1.16,183,0.564,199,0.641,229,1.035,238,0.581,239,1.612,242,2.649,248,1.885,249,1.176,253,0.374,255,0.564,264,0.535,280,0.666,285,0.879,306,0.351,319,2.269,334,3.141,342,0.957,346,0.387,348,0.509,356,1.467,361,1.035,374,1.683,375,1.967,380,1.176,382,2.017,383,1.273,386,2.91,398,0.486,403,0.616,414,0.581,434,0.498,454,1.176,485,0.381,523,0.439,541,1.16,542,2.273,544,0.934,563,0.581,585,1.712,590,0.912,603,1.135,680,0.408,693,0.892,716,1.395,745,1.261,749,0.884,756,0.666,771,1.035,774,1.572,775,0.727,776,1.359,778,1.135,780,3.112,784,1.764,785,1.764,786,1.764,793,3.397,794,3.382,796,0.727,810,2.55,820,0.727,825,0.767,853,0.535,857,0.535,859,0.767,867,1.273,870,1.499,871,0.549,875,1.407,876,1.499,877,1.407,878,1.499,913,0.767,939,1.848,948,1.499,1044,1.334,1045,2.415,1046,1.221,1047,2.156,1051,0.767,1052,1.407,1053,0.767,1055,0.599,1057,0.817,1058,3.141,1060,1.764,1061,0.767,1062,0.727,1063,0.817,1072,0.767,1075,0.694,1076,0.817,1081,0.817,1082,0.817,1083,0.817,1085,1.273,1086,0.817,1087,1.407,1088,0.817,1089,0.767,1090,0.727,1091,0.767,1092,0.817,1093,1.407,1094,0.767,1095,0.767,1096,0.817,1097,0.767,1099,0.817,1100,0.884,1101,0.817,1102,0.884,1103,0.884,1104,0.767,1105,1.622,1106,0.884,1107,2.782,1120,1.622,1121,2.782,1122,1.622,1123,0.884,1124,1.622,1125,1.622,1126,0.884,1127,0.884,1132,0.817,1138,1.622,1139,0.884,1140,0.884,1143,0.884,1144,0.884,1145,1.334,1146,1.407,1147,0.817,1148,0.884,1149,0.884,1150,0.884,1151,0.817,1155,0.884,1156,0.884,1157,0.884,1158,0.884,1159,0.884,1160,0.884,1161,0.884,1162,0.817,1163,1.622,1164,0.884,1165,0.884,1166,0.884,1168,1.764,1169,0.884,1170,1.334,1171,0.884,1172,0.641,1173,0.817,1174,0.884,1175,0.884,1176,0.884,1177,0.986,1178,0.986,1179,0.986,1180,0.986,1181,0.986,1182,1.808,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,0.986,1195,1.808,1196,0.986,1197,0.884,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,1208,0.986]],["sidebarParentCategories/186",[87,1.114]],["title/187",[40,3.752,58,0.866]],["content/187",[30,3.279,146,4.215,150,4.048,238,4.44,804,5.865,986,5.089]],["sidebarParentCategories/187",[87,1.114]],["title/188",[399,3.931,604,3.237]],["content/188",[30,3.133,53,2.124,77,3.12,89,3.696,173,3.235,183,4.544,268,2.344,306,1.831,317,2.428,319,4.744,364,3.696,406,3.224,423,4.606,466,4.507,490,2.94,541,1.919,811,3.617,1047,3.696,1209,5.135,1210,4.606,1211,7.119,1212,5.437,1213,3.997,1214,3.617,1215,5.135,1216,5.135,1217,5.135,1218,4.606,1219,5.135,1220,4.606,1221,5.135]],["sidebarParentCategories/188",[87,1.114]],["title/134",[58,0.634,69,2.015,806,1.613,1222,3.499]],["content/134",[32,2.475,36,5.948,58,1.317,77,3.246,115,3.194,135,4.159,147,2.063,169,2.899,174,3.246,180,3.246,181,2.76,201,3.712,268,1.793,316,3.257,324,2.134,338,0.858,356,2.526,417,3.059,418,4.159,434,1.978,435,2.518,680,2.21,707,3.148,805,1.691,806,2.21,851,6.434,1135,4.792,1222,6.434,1223,5.342,1224,5.342,1225,5.342,1226,3.763,1227,5.342]],["sidebarParentCategories/134",[87,1.114]],["title/135",[316,2.045,338,0.723,805,1.426]],["content/135",[62,3.345,66,3.997,213,5.188,316,3.345,338,1.183,363,3.159,424,4.625,425,4.976,442,4.79,469,5.734,805,2.332]],["sidebarParentCategories/135",[87,1.114]],["title/136",[58,0.634,268,1.309,316,1.771,805,1.235]],["content/136",[2,1.185,30,1.376,31,1.721,50,1.733,55,1.833,141,1.733,173,1.733,201,2.389,211,1.135,240,3.763,253,1.421,316,3.023,337,2.635,346,2.188,356,2.634,374,2.03,375,1.806,376,3.355,403,1.274,541,1.398,603,2.348,606,1.932,667,3.355,724,2.527,745,2.264,774,3.498,776,3.023,778,2.348,779,3.101,780,2.855,805,2.712,814,2.03,818,3.355,819,3.355,820,2.76,825,2.912,944,2.76,1007,4.619,1228,6.657,1229,3.74,1230,3.74,1231,5.571,1232,3.74,1233,3.74,1234,3.74,1235,2.348,1236,3.74,1237,3.74,1238,3.74,1239,3.74,1240,3.101]],["sidebarParentCategories/136",[87,1.114]],["title/137",[323,1.863,424,2.828,805,1.426]],["content/137",[]],["sidebarParentCategories/137",[87,0.711,805,1.218,806,1.591]],["title/138",[404,4.591]],["content/138",[22,2.702,154,4.246,303,3.198,316,3.071,344,3.986,422,5.608,471,4.246,473,4.992,480,4.764,500,5.265,504,4.764,524,4.246,526,4.569,532,4.246,805,2.141,1241,4.992,1242,6.066,1243,6.066,1244,5.608]],["sidebarParentCategories/138",[87,0.711,805,1.218,806,1.591]],["title/139",[58,0.501,317,1.455,338,0.494,339,1.229,403,1.048,504,2.168]],["content/139",[]],["sidebarParentCategories/139",[87,0.711,805,1.218,806,1.591]],["title/140",[35,1.748,154,1.748,497,2.167,1245,2.783,1246,2.783,1247,2.783,1248,2.783]],["content/140",[338,1.21,432,4.899,486,5.56,504,5.307,509,7.872,511,6.758,1249,7.534]],["sidebarParentCategories/140",[87,0.711,805,1.218,806,1.591]],["title/141",[22,1.374,316,1.562,339,1.374,406,2.16,805,1.089]],["content/141",[22,3.08,316,3.501,434,2.126,435,2.707,532,4.841,805,2.441,1241,5.69]],["sidebarParentCategories/141",[87,0.711,805,1.218,806,1.591]],["title/142",[339,1.374,434,0.949,435,1.208,524,2.16,1250,2.853]],["content/142",[434,2.126,524,4.841,526,5.208,527,5.69,529,5.69,1251,6.393,1252,5.43]],["sidebarParentCategories/142",[87,0.711,805,1.218,806,1.591]],["title/143",[22,1.374,316,1.562,339,1.374,805,1.089,1253,2.853]],["content/143",[22,2.451,43,3.097,55,1.12,67,3.329,108,3.418,253,2.331,303,4.319,317,2.901,338,1.261,339,3.138,344,3.616,363,2.631,364,3.247,403,2.09,434,1.692,490,3.513,532,3.852,533,3.729,632,4.528,1214,4.322,1252,4.322,1254,7.046,1255,4.776]],["sidebarParentCategories/143",[87,0.711,805,1.218,806,1.591]],["title/144",[339,1.558,481,2.233,483,2.449,1256,3.235]],["content/144",[55,1.376,434,2.077,486,5.56,487,5.56,632,5.56,1252,5.307,1255,5.865,1257,7.534,1258,7.534]],["sidebarParentCategories/144",[87,0.711,805,1.218,806,1.591]],["title/151",[323,1.863,469,3.506,805,1.426]],["content/151",[22,3.08,398,3.805,426,5.43,427,6.002,437,6.915,588,5.43,604,4.685]],["sidebarParentCategories/151",[87,0.711,805,1.218,806,1.591]],["title/152",[404,4.591]],["content/152",[22,2.847,316,3.236,471,4.475,473,5.261,480,5.021,524,4.475,526,4.815,532,4.475,805,2.257,1241,5.261,1242,6.394,1243,6.394,1244,5.91,1259,7.128]],["sidebarParentCategories/152",[87,0.711,805,1.218,806,1.591]],["title/153",[58,0.501,317,1.455,338,0.494,339,1.229,403,1.048,441,1.932]],["content/153",[338,1.283,432,5.195,441,5.016,464,6.624]],["sidebarParentCategories/153",[87,0.711,805,1.218,806,1.591]],["title/154",[22,1.374,316,1.562,339,1.374,406,2.16,805,1.089]],["content/154",[22,3.08,316,3.501,434,2.126,435,2.707,532,4.841,805,2.441,1241,5.69]],["sidebarParentCategories/154",[87,0.711,805,1.218,806,1.591]],["title/155",[339,1.374,434,0.949,435,1.208,524,2.16,1250,2.853]],["content/155",[434,2.126,524,4.841,526,5.208,527,5.69,529,5.69,1251,6.393,1252,5.43]],["sidebarParentCategories/155",[87,0.711,805,1.218,806,1.591]],["title/156",[22,1.374,316,1.562,339,1.374,805,1.089,1253,2.853]],["content/156",[22,2.451,43,3.097,55,1.12,67,3.329,108,3.418,253,2.331,303,4.319,317,2.901,338,1.261,339,3.138,344,3.616,363,2.631,364,3.247,403,2.09,434,1.692,490,3.513,532,3.852,533,3.729,632,4.528,1214,4.322,1252,4.322,1254,7.046,1255,4.776]],["sidebarParentCategories/156",[87,0.711,805,1.218,806,1.591]],["title/157",[339,1.558,481,2.233,483,2.449,1256,3.235]],["content/157",[55,1.376,434,2.077,486,5.56,487,5.56,632,5.56,1252,5.307,1255,5.865,1260,7.534,1261,7.534]],["sidebarParentCategories/157",[87,0.711,805,1.218,806,1.591]],["title/158",[323,1.863,425,3.042,805,1.426]],["content/158",[]],["sidebarParentCategories/158",[87,0.711,805,1.218,806,1.591]],["title/159",[22,1.799,115,2.005,404,3.172]],["content/159",[4,5.16,17,3.07,239,3.672,323,2.741,338,1.324,371,5.16,425,6.065,471,5.178,515,5.495,526,4.477,746,3.795,1099,5.495,1212,5.16,1262,6.627,1263,6.627,1264,6.627]],["sidebarParentCategories/159",[87,0.711,805,1.218,806,1.591]],["title/160",[207,1.076,317,1.844,339,1.558,403,1.329]],["content/160",[58,0.921,115,2.521,163,4.408,239,2.521,285,3.319,403,1.929,435,3.383,470,4.695,471,3.555,484,4.179,537,3.337,545,3.825,1265,5.662,1266,5.662,1267,9.452,1268,5.662,1269,5.662,1270,5.662,1271,5.662,1272,5.662,1273,5.662,1274,5.662]],["sidebarParentCategories/160",[87,0.711,805,1.218,806,1.591]],["title/161",[22,1.374,316,1.562,339,1.374,406,2.16,805,1.089]],["content/161",[22,3.08,316,3.501,434,2.126,435,2.707,532,4.841,805,2.441,1241,5.69]],["sidebarParentCategories/161",[87,0.711,805,1.218,806,1.591]],["title/162",[339,1.374,434,0.949,435,1.208,524,2.16,1250,2.853]],["content/162",[434,2.126,524,4.841,526,5.208,527,5.69,529,5.69,1251,6.393,1275,7.709]],["sidebarParentCategories/162",[87,0.711,805,1.218,806,1.591]],["title/163",[22,1.374,316,1.562,339,1.374,805,1.089,1253,2.853]],["content/163",[22,2.497,43,3.155,115,2.784,171,3.925,253,2.375,297,3.799,317,2.956,339,3.175,363,2.681,403,2.129,425,5.37,434,1.724,483,3.925,490,3.579,532,3.925,533,3.799,547,4.403,648,5.608,1214,4.403,1276,7.131,1277,6.251,1278,5.608,1279,6.251,1280,5.608]],["sidebarParentCategories/163",[87,0.711,805,1.218,806,1.591]],["title/164",[285,1.208,339,1.374,483,2.16,545,2.324,1256,2.853]],["content/164",[285,2.586,425,4.976,483,4.625,1276,6.607,1278,6.607,1280,6.607,1281,7.366,1282,7.366,1283,7.366,1284,7.366,1285,7.366]],["sidebarParentCategories/164",[87,0.711,805,1.218,806,1.591]],["title/165",[268,1.788,700,1.177]],["content/165",[2,0.848,3,1.422,6,2.013,8,2.505,17,2.706,25,1.491,32,3.202,33,2.424,41,3.658,55,1.262,103,1.848,147,1.54,201,1.71,268,3.07,278,4.115,306,2.083,324,2.761,344,2.351,363,2.505,394,4.34,396,2.706,412,3.668,546,2.424,700,2.083,707,4.074,719,2.351,746,3.345,852,1.926,871,3.851,1005,4.312,1226,2.809,1286,3.578,1287,2.944,1288,2.694,1289,2.46,1290,2.949,1291,3.148,1292,4.115,1293,3.091]],["sidebarParentCategories/165",[]],["title/166",[41,2.383,55,0.822,700,0.995]],["content/166",[6,3.345,32,3.07,33,4.028,41,4.364,147,2.56,201,2.842,268,2.224,306,2.363,344,3.906,546,4.028,700,1.984,707,3.906,719,3.906,852,3.201,1005,4.891,1226,4.668,1287,4.891,1288,4.477]],["sidebarParentCategories/166",[]],["title/167",[55,0.628,268,1.155,1289,1.449,1290,1.737,1291,1.423]],["content/167",[8,2.842,17,3.07,32,3.07,268,3.013,278,4.668,324,2.647,363,2.842,394,4.161,396,3.07,412,4.161,700,1.984,707,3.906,746,3.795,871,3.692,1290,3.345,1291,2.741,1292,4.668]],["sidebarParentCategories/167",[]],["title/168",[55,0.628,268,1.155,1289,1.449,1291,1.423,1293,1.821]],["content/168",[8,2.842,17,3.07,32,3.07,268,3.013,278,4.668,324,2.647,363,2.842,394,4.161,396,3.07,412,4.161,700,1.984,707,3.906,746,3.795,871,3.692,1291,2.741,1292,4.668,1293,3.507]],["sidebarParentCategories/168",[]],["title/169",[306,2.324]],["content/169",[2,0.828,3,1.389,25,2.146,39,3.493,58,0.633,67,2.113,77,2.367,78,2.631,147,1.504,149,3.798,150,1.768,211,1.182,236,2.367,268,1.307,273,3.032,306,3.297,324,1.556,362,5.149,365,1.347,401,2.367,414,2.295,455,2.743,480,2.743,485,3.665,523,2.556,531,3.493,606,2.012,700,1.507,811,2.743,854,3.032,904,3.493,906,4.043,1212,3.032,1240,4.76,1244,3.229,1290,3.441,1294,3.894,1295,7.523,1296,2.833,1297,6.115,1298,3.894,1299,3.894,1300,5.74,1301,6.817,1302,3.894,1303,3.032,1304,3.894,1305,3.229,1306,3.493,1307,3.493,1308,3.493]],["sidebarParentCategories/169",[]],["title/170",[211,1.367,485,1.739,1296,2.223]],["content/170",[5,4.689,8,2.583,17,2.79,25,2.902,95,3.112,168,4.446,201,2.583,236,4.717,268,2.605,347,4.689,485,3.504,541,2.902,700,1.716,713,6.437,759,5.403,1296,4.477,1309,6.023,1310,4.995,1311,6.023]],["sidebarParentCategories/170",[]],["title/171",[95,2.327,485,1.739,1296,2.223]],["content/171",[2,1.051,3,1.762,34,1.611,77,3.004,81,4.596,93,2.553,95,2.553,112,2.553,120,3.339,149,2.753,150,2.244,160,3.214,164,3.004,234,3.848,236,3.004,255,2.83,259,3.848,268,1.659,293,3.648,306,1.762,324,1.974,345,4.098,352,2.553,363,2.12,442,3.214,457,2.83,476,3.339,481,2.83,485,3.395,541,2.543,576,3.848,588,3.482,678,3.648,700,1.092,707,2.913,738,2.29,850,4.098,871,2.753,1286,4.434,1289,2.865,1296,3.84,1310,4.098,1312,3.848,1313,4.943,1314,4.943,1315,4.098]],["sidebarParentCategories/171",[]],["title/172",[201,1.931,485,1.739,1296,2.223]],["content/172",[13,4.368,18,3.167,31,1.063,32,2.256,41,4.408,58,1.095,95,3.479,117,2.458,147,1.881,179,4.368,184,4.038,201,3.749,234,3.791,253,1.85,306,2.401,324,1.945,327,2.256,361,2.788,363,2.088,485,3.217,493,4.38,696,3.791,700,2.049,852,2.352,903,3.594,1031,3.594,1289,2.836,1296,3.81,1305,4.038,1308,4.368,1316,4.87,1317,3.791,1318,4.87,1319,4.87]],["sidebarParentCategories/172",[]],["title/173",[363,2.284,1289,2.243]],["content/173",[250,4.867,262,4.126,268,2.913,363,3.09,365,2.492,1289,3.923,1290,3.637,1291,3.59,1293,3.813]],["sidebarParentCategories/173",[]],["title/174",[41,2.819,700,1.177]],["content/174",[6,2.81,31,1.92,32,2.579,33,3.383,41,4.375,53,2.303,147,2.15,201,3.545,268,1.868,306,2.629,344,3.281,546,3.383,700,2.079,707,3.281,719,3.281,741,3.383,852,2.688,912,4.981,1005,4.109,1167,3.921,1226,3.921,1287,4.109,1288,3.761,1320,5.567,1321,4.334,1322,4.616]],["sidebarParentCategories/174",[700,1.331]],["title/175",[700,1.177,942,3.931]],["content/175",[31,2.09,41,4.284,53,2.661,126,5.335,201,3.472,306,2.294,389,3.684,700,1.958,719,3.792,741,3.91,912,5.984,1167,4.532,1226,4.532,1321,5.009]],["sidebarParentCategories/175",[700,1.331]],["title/176",[31,0.671,41,1.628,700,0.68,719,1.814,912,2.079,1167,2.168]],["content/176",[2,1.29,19,1.66,31,1.921,34,1.047,37,2.501,41,3.611,50,3.612,53,2.053,55,1.797,71,1.128,105,2.017,138,2.501,149,1.79,173,2.3,201,2.927,230,4.273,259,2.501,261,2.017,262,1.84,299,2.371,306,1.77,311,1.84,324,1.983,325,2.169,346,1.95,392,2.263,396,1.488,403,1.094,541,1.856,563,2.926,700,1.797,719,1.894,724,2.171,745,2.018,776,2.694,780,2.129,794,3.641,814,1.744,912,2.171,1031,2.371,1046,2.171,1094,2.501,1218,2.882,1288,2.171,1292,2.263,1323,3.664,1324,2.501,1325,4.116,1326,2.882,1327,2.664,1328,2.664,1329,2.882,1330,3.213,1331,3.213,1332,2.882,1333,3.213,1334,2.882,1335,2.882,1336,2.882]],["sidebarParentCategories/176",[700,1.331]],["title/177",[31,0.968,53,1.151,201,1.902,306,0.992,1321,2.167]],["content/177",[2,1.074,31,1.808,34,0.793,37,3.097,41,2.105,50,3.198,53,2.855,55,1.772,71,0.854,89,1.287,135,1.894,148,1.714,149,1.355,169,1.32,172,1.287,173,1.843,201,3.124,230,1.714,233,1.527,250,1.643,262,2.278,295,1.714,299,4.746,306,2.955,311,1.393,317,1.15,324,1.589,325,1.063,346,1.982,352,2.055,396,1.127,401,2.418,403,0.829,406,1.527,457,1.393,533,1.478,536,2.182,539,2.182,541,1.887,563,3.79,604,1.478,700,1.116,719,1.434,724,1.643,745,0.989,776,2.159,780,1.706,794,2.878,814,1.32,912,3.41,942,1.795,944,2.936,1031,1.795,1046,1.643,1079,1.714,1167,2.802,1226,1.714,1288,1.643,1321,1.894,1323,1.795,1324,3.097,1325,6.303,1326,2.182,1327,2.017,1328,2.017,1332,3.569,1334,2.182,1335,2.182,1336,2.182,1337,2.182,1338,2.182,1339,2.433,1340,3.978,1341,2.433,1342,5.048,1343,2.433,1344,2.182,1345,2.182,1346,2.433,1347,3.978,1348,2.182,1349,2.433,1350,2.433,1351,2.433,1352,1.894]],["sidebarParentCategories/177",[700,1.331]],["title/178",[31,0.851,700,0.862,741,2.371,912,2.635]],["content/178",[2,1.513,6,2.115,31,1.879,34,1.366,38,3.093,41,2.218,50,1.941,55,1.739,58,0.682,71,1.471,149,2.334,172,2.218,201,2.597,285,1.471,306,1.494,311,2.399,346,2.378,356,1.982,363,1.797,367,3.475,389,3.467,396,1.941,403,1.427,541,1.567,563,3.569,590,3.057,680,2.505,700,1.903,724,2.831,726,3.759,745,2.89,776,3.286,780,1.797,794,2.068,814,2.274,1004,5.021,1046,2.831,1130,3.759,1289,1.765,1323,3.093,1325,3.475,1344,3.759,1353,4.191,1354,3.759,1355,3.759,1356,3.759,1357,4.191]],["sidebarParentCategories/178",[700,1.331]],["title/179",[1322,5.404]],["content/179",[17,2.13,34,1.499,35,2.888,41,3.424,58,0.748,84,3.705,102,1.486,160,2.991,171,2.888,173,2.998,191,2.71,210,3.394,255,2.633,262,2.633,365,1.59,418,5.038,490,3.705,493,2.991,542,2.888,545,4.371,700,1.795,713,3.813,741,2.795,852,2.221,872,3.58,906,3.239,944,3.394,1025,3.813,1047,2.434,1214,3.239,1289,3.153,1322,8.045,1358,4.599,1359,6.471,1360,4.599,1361,4.599,1362,4.599,1363,6.471,1364,3.813,1365,4.599,1366,4.599]],["sidebarParentCategories/179",[700,1.331]],["title/210",[268,1.309,1289,1.643,1290,1.969,1291,1.613]],["content/210",[2,1.911,8,1.721,17,2.718,32,1.859,55,1.071,70,2.328,71,1.409,266,1.859,268,2.561,278,2.826,295,2.826,303,1.897,306,2.092,311,3.36,324,2.771,325,1.753,328,2.896,329,3.501,330,2.962,338,0.942,363,1.721,390,2.235,394,2.519,396,2.718,403,1.367,412,2.519,434,1.618,435,2.06,454,2.609,700,1.936,707,2.365,719,2.365,746,3.36,871,2.235,1290,2.025,1291,2.427,1292,2.826,1323,2.962,1367,3.327,1368,3.599,1369,3.599,1370,7.632,1371,7.632,1372,3.599,1373,5.868]],["sidebarParentCategories/210",[700,1.331]],["title/211",[95,2.327,485,1.739,1296,2.223]],["content/211",[17,2.342,20,3.561,32,3.647,103,2.342,117,2.552,123,3.201,147,1.953,153,2.964,172,2.676,211,1.534,225,2.98,239,3.506,268,1.697,293,3.732,306,1.803,327,2.342,393,3.416,409,3.732,410,3.732,476,3.416,485,3.269,493,3.288,541,1.89,588,3.561,678,3.732,693,3.411,700,1.117,706,3.732,738,2.342,746,2.895,852,2.442,1235,3.175,1290,2.552,1296,4.176,1315,4.192,1374,3.175,1375,3.561,1376,4.535,1377,3.561]],["sidebarParentCategories/211",[700,1.331]],["title/212",[30,1.96,738,2.467]],["content/212",[8,0.735,17,0.794,19,0.48,30,2.774,33,0.565,43,0.469,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.421,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.981,120,0.628,123,1.104,131,1.158,139,0.724,141,1.372,146,2.353,148,0.655,149,0.955,150,0.778,151,0.342,152,0.505,153,2.991,157,0.724,160,0.605,164,0.565,172,0.907,180,0.565,181,0.48,183,0.981,191,1.405,192,3.592,203,1.076,205,2.087,211,0.52,219,0.686,222,0.686,224,0.834,230,1.207,236,0.565,238,2.747,243,0.771,253,0.353,265,0.565,268,0.575,295,0.655,299,1.265,306,1.056,331,0.686,339,0.372,346,0.365,347,0.724,351,0.628,352,2.408,358,1.405,361,0.533,365,0.322,375,1.431,386,1.115,392,0.655,396,0.431,398,0.459,401,0.565,434,1.648,457,0.533,479,0.686,481,0.533,485,1.34,493,0.605,513,1.405,523,1.319,533,0.565,537,1.405,541,1.463,542,1.86,544,3.374,563,0.548,575,0.628,606,1.232,700,0.865,707,1.746,738,1.996,771,0.533,780,2.932,793,0.533,794,2.456,808,0.771,811,0.655,834,0.771,852,1.431,857,1.608,926,1.801,931,0.834,939,1.265,940,0.771,943,1.538,949,1.421,958,1.431,986,3.148,997,1.977,1006,1.856,1047,1.835,1079,1.207,1085,1.207,1137,0.724,1145,4.077,1153,4.127,1168,1.207,1170,3.44,1172,1.115,1173,0.771,1235,0.584,1287,0.686,1288,0.628,1290,1.203,1291,0.986,1296,0.459,1303,0.724,1306,0.834,1307,0.834,1317,1.334,1324,0.724,1352,0.724,1374,0.584,1375,1.679,1377,0.655,1378,0.93,1379,2.138,1380,2.756,1381,0.93,1382,0.771,1383,0.834,1384,1.265,1385,3.864,1386,1.714,1387,2.658,1388,0.93,1389,1.421,1390,1.714,1391,1.714,1392,0.93,1393,0.93,1394,2.559,1395,1.158,1396,1.679,1397,1.977,1398,0.93,1399,0.93,1400,0.771,1401,1.538,1402,0.834,1403,0.93,1404,1.714,1405,0.771,1406,0.93,1407,0.93,1408,1.714,1409,1.714,1410,2.963,1411,0.93,1412,0.834,1413,0.93,1414,0.93,1415,0.93,1416,0.93,1417,0.93,1418,0.93,1419,0.93,1420,0.93,1421,1.714,1422,1.714,1423,1.714,1424,1.714,1425,2.963,1426,0.834,1427,2.307,1428,2.138,1429,1.679,1430,2.138,1431,0.834,1432,1.714,1433,0.93,1434,0.834,1435,0.834,1436,1.714,1437,0.93,1438,0.93,1439,0.93,1440,0.93,1441,0.93,1442,0.93,1443,0.93,1444,0.93,1445,0.834,1446,0.834,1447,0.771,1448,1.538,1449,0.724]],["sidebarParentCategories/212",[700,1.331]],["title/213",[151,1.96,738,2.467]],["content/213",[34,1.6,55,1.758,58,1.024,62,0.595,63,1.086,65,1.939,68,2.09,73,1.421,89,1.238,117,0.661,120,1.58,131,0.885,133,1.02,146,2.322,151,3.132,180,1.421,181,0.677,191,0.772,203,0.822,205,2.713,239,0.583,264,4.273,265,0.796,268,1.063,306,0.467,312,0.967,324,0.523,343,3.117,346,0.514,352,2.286,358,0.772,365,0.453,369,1.02,375,1.53,398,1.154,401,1.926,412,0.822,417,0.75,453,0.967,475,1.02,481,1.339,485,1.488,493,0.852,523,1.041,541,0.874,544,1.208,603,1.468,604,0.796,606,0.677,608,1.175,700,0.289,717,3.194,738,2.05,745,1.996,755,1.175,756,2.989,768,1.086,780,2.992,794,2.968,847,1.821,853,4.759,926,3.655,946,2.467,958,0.632,1025,1.086,1047,1.677,1055,4.785,1058,1.521,1060,2.713,1062,1.726,1064,2.627,1065,1.086,1066,1.086,1067,1.939,1072,1.02,1073,1.086,1075,1.647,1078,3.969,1079,1.647,1084,1.086,1087,1.821,1089,1.02,1091,1.02,1104,2.467,1137,1.02,1220,1.175,1240,1.086,1290,1.18,1291,0.967,1303,1.02,1312,1.02,1352,1.02,1364,1.086,1374,0.822,1377,2.232,1394,2.917,1395,0.885,1396,1.647,1400,1.086,1450,1.31,1451,1.31,1452,1.31,1453,1.175,1454,1.31,1455,1.31,1456,2.098,1457,1.31,1458,1.31,1459,1.31,1460,0.923,1461,3.969,1462,1.31,1463,1.31,1464,1.31,1465,1.31,1466,1.31,1467,1.086,1468,2.339,1469,1.31,1470,2.339,1471,2.339,1472,1.31,1473,1.31,1474,1.31,1475,1.31,1476,1.31,1477,1.175,1478,1.31,1479,2.842,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,1489,1.31]],["sidebarParentCategories/213",[700,1.331]],["title/214",[153,1.902,211,0.845,541,1.041,693,1.374,700,0.615,852,1.344]],["content/214",[2,1.014,6,1.539,25,1.14,33,1.853,34,0.994,37,2.374,55,1.755,58,0.775,68,2.587,102,0.7,123,1.413,153,3.273,172,1.614,175,4.276,180,1.853,211,2.633,225,4.244,231,3.1,268,1.023,306,1.7,312,2.251,324,1.218,346,2.606,352,1.576,479,2.251,485,1.841,523,2.123,546,1.853,575,4.483,576,3.712,606,1.576,693,1.505,712,2.148,738,1.413,814,2.587,852,2.834,926,1.853,1056,2.529,1147,2.529,1167,2.148,1235,1.915,1290,1.539,1291,1.262,1296,1.505,1297,2.736,1317,2.374,1345,5.265,1374,1.915,1375,2.148,1490,2.736,1491,2.736,1492,4.767,1493,3.05,1494,5.869,1495,3.05,1496,6.636,1497,4.276,1498,3.05,1499,5.953,1500,3.05,1501,2.736,1502,4.767,1503,4.767,1504,3.05,1505,3.05,1506,3.05,1507,2.736,1508,3.05,1509,3.05,1510,3.05]],["sidebarParentCategories/214",[700,1.331]],["title/215",[201,1.931,485,1.739,1296,2.223]],["content/215",[5,3.304,20,4.305,25,1.587,32,1.966,41,4.147,43,3.085,47,3.304,55,1.431,58,0.994,59,2.364,77,2.579,96,1.562,117,2.142,123,1.966,141,2.831,166,3.304,201,2.621,244,2.665,324,1.696,327,1.966,346,1.667,363,1.82,365,1.468,414,2.502,456,3.133,485,3.34,533,4.353,595,3.519,700,1.732,745,1.725,803,3.304,811,2.99,812,3.519,871,2.364,891,3.304,903,3.133,1101,3.519,1289,2.574,1290,2.142,1296,3.535,1327,3.519,1328,5.068,1374,3.838,1380,2.99,1383,3.807,1394,1.966,1402,3.807,1511,4.244,1512,4.244,1513,3.807,1514,3.807]],["sidebarParentCategories/215",[700,1.331]],["title/216",[30,1.96,222,3.931]],["content/216",[30,2.635,53,1.756,55,1.666,73,2.579,84,2.43,123,1.966,141,1.966,148,2.99,181,2.193,183,3.499,191,2.502,201,1.82,222,5.286,375,2.952,389,2.43,398,2.095,455,2.99,480,2.99,481,2.43,523,1.89,544,4.468,546,2.579,606,2.193,693,2.095,780,1.82,852,2.05,958,4.01,1079,2.99,1170,5.286,1197,3.807,1290,3.085,1291,1.756,1382,3.519,1394,1.966,1397,7.171,1412,3.807,1515,7.835,1516,3.807,1517,4.244,1518,4.244,1519,4.244,1520,4.244,1521,4.244,1522,4.244]],["sidebarParentCategories/216",[700,1.331]],["title/217",[30,1.435,958,1.884,1289,1.643,1394,1.807]],["content/217",[30,3.207,53,1.496,55,1.81,58,0.884,68,2.949,114,2.071,146,2.569,150,2.467,153,2.33,191,2.132,203,2.271,238,3.202,262,2.071,264,1.963,265,2.198,306,1.937,401,2.198,434,1.799,481,3.111,513,3.202,523,1.611,537,2.132,546,2.198,720,2.548,852,1.747,868,4.505,986,2.444,1031,2.67,1162,4.505,1172,2.352,1235,2.271,1289,1.523,1290,1.826,1291,1.496,1374,2.271,1380,2.548,1394,3.023,1427,4.23,1428,4.874,1429,3.827,1430,4.874,1523,4.874,1524,2.444,1525,5.434,1526,6.526,1527,5.434,1528,5.434,1529,5.434,1530,5.434,1531,5.434]],["sidebarParentCategories/217",[700,1.331]],["title/218",[348,2.327,1394,2.086,1460,3.172]],["content/218",[17,1.467,19,1.636,31,1.071,43,1.598,58,0.515,59,1.764,89,2.598,117,1.598,128,4.404,149,2.735,150,1.438,172,1.676,229,3.442,230,2.231,285,3.013,289,2.626,342,1.676,348,4.612,356,3.202,389,3.442,398,3.342,401,2.983,485,1.223,490,2.811,606,1.636,680,1.31,700,0.7,712,2.231,746,1.813,768,2.626,850,2.626,906,2.231,913,2.465,1034,2.626,1047,1.676,1214,2.231,1288,2.139,1329,4.404,1348,4.404,1356,2.841,1394,2.785,1405,2.626,1460,6.47,1507,4.404,1532,6.011,1533,8.581,1534,3.167,1535,3.167,1536,3.167,1537,4.909,1538,4.909,1539,2.841,1540,3.167,1541,4.909,1542,4.909,1543,3.167,1544,3.167,1545,3.167,1546,3.167,1547,3.167,1548,2.841,1549,4.909,1550,4.909]],["sidebarParentCategories/218",[700,1.331]],["title/219",[32,2.086,93,2.327,537,2.654]],["content/219",[32,4.091,53,2.772,55,1.355,58,0.615,59,2.107,62,1.718,81,2.556,84,3.217,93,1.954,113,3.795,148,2.665,151,2.916,201,2.409,219,2.792,222,2.792,227,2.665,240,2.556,254,3.393,269,2.792,306,1.349,352,1.954,398,1.867,434,1.043,435,1.328,482,2.792,537,2.23,606,1.954,700,1.242,756,3.795,771,2.166,958,1.827,1090,2.792,1235,2.375,1287,2.792,1289,2.366,1290,1.909,1291,1.565,1367,4.659,1374,2.375,1394,3.671,1395,2.556,1449,2.945,1524,2.556,1551,3.783,1552,5.618,1553,5.618,1554,5.618,1555,3.783,1556,6.702,1557,3.783,1558,5.618,1559,3.393,1560,3.393,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,1570,3.783]],["sidebarParentCategories/219",[700,1.331]],["title/220",[264,2.117,1055,2.371,1289,1.643,1394,1.807]],["content/220",[34,2.362,35,3.026,53,1.279,55,1.402,58,1.179,65,5.544,84,1.771,90,2.564,146,2.279,149,1.723,151,3.134,153,1.326,180,1.879,181,1.598,191,1.823,192,2.011,211,0.938,228,3.395,264,3.628,265,1.879,285,1.086,343,2.178,358,2.841,374,1.678,375,1.494,401,1.879,513,3.49,523,1.377,537,1.823,541,2.214,590,1.561,606,1.598,716,1.723,717,2.564,738,1.433,771,1.771,853,4.958,875,2.408,926,1.879,1055,4.063,1058,3.134,1213,2.408,1289,1.302,1290,1.561,1291,1.279,1352,2.408,1394,3.557,1395,2.089,1449,2.408,1456,2.774,1467,2.564,1524,2.089,1560,2.774,1571,5.922,1572,3.093,1573,3.093,1574,4.82,1575,3.093,1576,3.093,1577,4.82,1578,3.093,1579,4.82,1580,4.82,1581,4.82,1582,4.82,1583,4.82,1584,3.093,1585,3.093,1586,3.093,1587,3.093]],["sidebarParentCategories/220",[700,1.331]],["title/221",[151,1.435,343,2.748,1460,2.748,1588,3.499]],["content/221",[8,1.972,18,2.991,55,1.484,77,2.795,92,3.107,146,3.54,151,3.15,168,3.394,343,6.031,357,3.813,513,2.71,523,2.048,544,4.197,606,2.376,700,1.016,840,5.038,853,4.063,958,2.221,1047,2.434,1104,5.038,1289,1.936,1290,2.321,1355,4.125,1374,2.888,1394,3.764,1396,4.558,1400,3.813,1453,4.125,1460,6.031,1479,4.125,1524,3.107,1589,4.599,1590,6.471,1591,4.599,1592,4.599,1593,4.599]],["sidebarParentCategories/221",[700,1.331]],["title/230",[268,1.309,1289,1.643,1291,1.613,1293,2.064]],["content/230",[2,1.911,8,1.721,17,2.718,32,1.859,55,1.071,70,2.328,71,1.409,266,1.859,268,2.561,278,2.826,295,2.826,303,1.897,306,2.092,311,3.36,324,2.771,325,1.753,328,2.896,329,3.501,330,2.962,338,0.942,363,1.721,390,2.235,394,2.519,396,2.718,403,1.367,412,2.519,434,1.618,435,2.06,454,2.609,700,1.936,707,2.365,719,2.365,727,6.846,728,5.263,729,6.846,746,3.36,871,2.235,1291,1.66,1292,2.826,1293,3.105,1323,2.962,1367,3.327,1368,3.599,1369,3.599,1372,3.599]],["sidebarParentCategories/230",[700,1.331]],["title/231",[95,2.327,485,1.739,1296,2.223]],["content/231",[17,2.379,20,3.617,32,3.676,103,2.379,117,2.592,123,3.676,147,1.983,172,2.717,225,3.026,239,3.534,268,1.723,293,3.79,306,1.831,316,2.331,327,2.379,393,3.469,409,3.79,410,3.79,476,3.469,485,3.29,493,3.339,588,3.617,678,3.79,693,3.447,700,1.135,706,3.79,738,3.235,746,2.94,1235,3.224,1291,2.124,1296,4.203,1315,4.258,1375,3.617,1376,4.606,1377,3.617,1594,3.997]],["sidebarParentCategories/231",[700,1.331]],["title/232",[31,1.162,1595,4.778]],["content/232",[18,2.852,31,1.908,50,2.031,55,1.332,62,1.991,66,2.38,87,0.811,131,2.962,141,2.898,191,3.687,240,2.962,262,2.511,285,1.54,341,2.852,356,3.449,389,2.511,403,2.864,416,3.636,466,2.321,541,2.339,604,2.665,693,2.164,700,0.969,738,3.379,745,3.418,771,2.511,774,2.753,776,3.958,780,2.683,803,3.414,852,3.021,867,3.089,877,3.414,958,2.118,1007,3.636,1289,1.847,1291,1.814,1293,2.321,1377,3.089,1596,3.636,1597,6.256,1598,4.385,1599,3.934,1600,4.385,1601,4.385]],["sidebarParentCategories/232",[700,1.331]],["title/233",[146,2.129,1090,3.324,1602,4.04]],["content/233",[2,1.051,31,1.698,58,1.107,77,3.004,102,1.135,112,2.553,141,2.29,146,2.337,150,2.244,172,2.616,180,3.004,205,3.482,212,4.596,233,3.103,268,1.659,285,2.389,326,3.482,356,2.337,523,2.201,563,2.913,680,2.044,696,3.848,700,1.092,711,4.098,716,2.753,833,6.103,834,4.098,861,4.098,1005,3.648,1142,4.434,1210,4.434,1305,4.098,1364,4.098,1380,3.482,1384,5.022,1395,3.339,1548,4.434,1602,6.103,1603,4.943,1604,6.804,1605,4.943,1606,4.943,1607,4.943,1608,4.943,1609,4.943,1610,4.943]],["sidebarParentCategories/233",[700,1.331]],["title/234",[269,3.324,537,2.654,738,2.086]],["content/234",[2,1.494,31,1.37,55,1.836,58,0.552,73,2.063,123,1.572,168,2.505,265,2.063,269,2.505,273,2.643,303,1.605,328,1.675,345,2.815,346,2.034,361,1.944,365,1.174,389,1.944,403,1.156,417,3.595,481,2.965,523,1.512,533,2.063,537,2.001,541,2.347,563,2.001,693,2.556,702,6.3,709,4.645,738,3.503,745,2.105,776,1.842,780,1.456,794,3.466,886,2.815,1291,1.404,1293,1.796,1596,2.815,1611,3.394,1612,5.178,1613,5.178,1614,5.178,1615,5.178,1616,5.178,1617,3.045,1618,5.178,1619,5.178,1620,3.394,1621,5.178,1622,5.178,1623,5.178,1624,7.024,1625,3.394,1626,3.394,1627,3.394]],["sidebarParentCategories/234",[700,1.331]],["title/235",[236,2.737,738,2.086,979,3.734]],["content/235",[8,1.163,31,0.592,34,0.884,55,1.592,58,0.707,68,3.372,84,2.488,111,1.511,131,2.935,142,2.111,146,3.745,147,1.678,180,2.64,203,1.703,217,2.249,219,2.002,236,4.41,238,3.203,253,1.03,285,0.952,306,0.967,317,1.282,319,1.511,324,1.083,335,6.319,341,1.764,352,2.244,357,2.249,389,1.553,398,1.338,480,1.91,523,1.208,541,1.624,590,1.369,604,1.648,678,2.002,693,1.338,695,1.832,720,3.06,738,2.879,771,2.488,780,2.331,794,3.067,852,3.001,857,1.472,868,2.249,890,1.832,958,1.31,979,4.507,986,1.832,1047,2.299,1137,2.111,1168,3.828,1172,2.825,1291,1.797,1293,2.299,1338,2.433,1380,1.91,1384,2.002,1389,3.602,1405,5.153,1467,2.249,1539,3.897,1588,2.433,1628,2.712,1629,4.344,1630,2.433,1631,4.344,1632,5.435,1633,2.712,1634,4.344,1635,4.344,1636,2.712,1637,2.712,1638,2.712,1639,4.344,1640,4.344,1641,2.712,1642,2.712,1643,2.712,1644,2.712,1645,2.712,1646,2.712,1647,2.712,1648,2.433,1649,2.712,1650,2.712,1651,2.712,1652,2.433,1653,2.433]],["sidebarParentCategories/235",[700,1.331]],["title/236",[466,2.819,738,2.467]],["content/236",[30,2.567,173,3.232,183,3.995,319,3.887,356,3.299,466,3.692,485,2.695,604,4.24,867,4.915,1211,6.259,1212,5.432,1213,5.432,1654,6.259,1655,6.977,1656,6.977,1657,6.977]],["sidebarParentCategories/236",[700,1.331]],["title/237",[226,2.89,738,2.467]],["content/237",[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.095,77,1.095,95,0.931,108,1.004,114,1.771,123,0.835,131,2.09,141,1.433,146,2.801,150,0.818,153,3.207,154,1.132,157,1.403,164,1.095,172,0.954,180,1.095,191,1.062,203,1.132,211,0.547,226,3.792,230,1.27,238,3.491,243,1.495,244,1.132,265,1.095,268,0.605,306,1.449,324,0.72,331,1.33,339,0.72,351,1.218,352,2.491,358,1.062,361,1.032,365,0.623,434,1.121,457,1.032,479,1.33,481,1.032,485,1.195,513,1.062,523,2.417,533,1.095,537,1.824,541,1.52,542,3.027,544,2.491,575,1.218,606,0.931,700,0.898,738,2.514,780,2.868,794,3.128,852,2.86,958,0.87,986,4.001,997,3.37,1006,3.164,1047,0.954,1079,1.27,1145,3.558,1146,2.409,1168,2.179,1170,2.284,1172,2.012,1235,1.132,1291,1.28,1293,1.637,1303,1.403,1374,1.132,1375,2.863,1377,1.27,1384,2.284,1385,2.775,1387,2.775,1389,2.565,1394,2.233,1395,1.218,1396,2.179,1426,1.617,1427,3.753,1429,2.863,1431,1.617,1434,1.617,1435,1.617,1445,1.617,1446,1.617,1447,1.495,1448,2.775,1658,4.821,1659,1.403,1660,1.802,1661,1.802,1662,1.802,1663,1.802,1664,3.094,1665,1.802,1666,3.094,1667,1.802,1668,1.802,1669,4.821,1670,1.802,1671,3.094,1672,3.094,1673,3.094,1674,1.617,1675,1.617,1676,3.646,1677,3.094,1678,1.802,1679,2.775,1680,3.094,1681,1.802,1682,1.802,1683,1.802,1684,1.802,1685,1.802,1686,1.802]],["sidebarParentCategories/237",[700,1.331]],["title/238",[30,1.435,226,2.117,264,2.117,1055,2.371]],["content/238",[5,1.944,6,2.051,20,1.759,34,1.93,55,1.818,58,0.963,89,1.321,96,0.919,138,1.944,147,0.964,151,2.825,152,1.355,153,3.654,168,1.843,181,1.29,203,1.568,226,2.205,228,1.759,233,1.568,238,1.472,264,3.214,285,0.877,327,1.157,339,0.997,352,2.099,358,2.395,396,1.157,417,2.327,434,0.688,513,1.472,523,2.289,541,1.519,542,2.552,563,1.472,590,1.26,716,1.391,720,1.759,738,1.883,756,1.687,780,2.796,794,2.923,847,4.001,853,2.789,1039,2.07,1055,3.599,1058,1.624,1059,2.07,1060,2.863,1061,1.944,1062,3,1172,1.624,1291,1.033,1293,1.321,1310,2.07,1354,2.24,1379,2.24,1396,2.863,1397,3.37,1429,1.759,1477,2.24,1595,5.313,1675,2.24,1679,3.645,1687,4.064,1688,4.064,1689,4.064,1690,4.064,1691,4.064,1692,2.24,1693,2.497,1694,4.064,1695,4.064,1696,4.064,1697,4.064,1698,4.064,1699,2.497,1700,2.497,1701,2.497,1702,2.497,1703,2.497,1704,2.497,1705,2.497,1706,2.497]],["sidebarParentCategories/238",[700,1.331]],["title/239",[123,1.425,316,1.397,541,1.15,693,1.519,700,0.68,738,1.425]],["content/239",[2,0.754,6,0.483,17,0.443,25,0.358,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.858,84,0.548,92,1.189,93,1.83,111,1.973,123,2.198,139,0.745,146,1.433,147,0.68,149,0.533,151,0.352,152,0.519,153,2.507,161,1.578,172,0.931,180,1.069,211,0.92,217,0.794,221,1.144,225,3.445,227,1.24,228,2.495,233,0.601,236,1.484,241,2.719,255,0.548,262,0.548,268,0.321,280,0.647,289,0.794,299,0.706,307,0.794,316,0.799,319,1.688,324,0.703,328,2.166,337,0.674,343,0.674,346,1.391,352,1.566,361,1.399,365,0.331,375,0.462,382,0.622,389,1.008,396,0.815,403,0.599,417,1.008,475,0.745,479,0.706,485,0.68,493,0.622,523,1.577,541,2.472,563,2.088,575,3.42,604,0.582,693,1.206,700,0.54,712,0.674,720,0.674,738,2.9,745,0.715,776,0.519,780,2.405,793,2.286,794,2.341,814,1.922,852,0.85,861,0.794,886,0.794,926,0.582,1006,2.359,1034,0.794,1047,1.604,1085,1.24,1152,0.858,1168,2.135,1213,0.745,1235,0.601,1291,1.01,1293,1.293,1296,0.472,1312,2.359,1317,0.745,1324,0.745,1337,2.719,1375,1.24,1382,0.794,1394,2.985,1429,1.24,1447,1.459,1449,1.37,1460,0.674,1461,0.858,1490,0.858,1491,0.858,1497,1.578,1499,0.858,1501,0.858,1516,0.858,1594,0.745,1596,2.025,1599,0.858,1617,3.178,1648,1.578,1652,0.858,1653,2.191,1659,0.745,1674,1.578,1692,0.858,1707,0.957,1708,0.957,1709,4.389,1710,2.443,1711,0.957,1712,0.957,1713,0.957,1714,0.957,1715,0.957,1716,0.957,1717,3.031,1718,0.957,1719,1.76,1720,1.76,1721,1.76,1722,0.957,1723,0.957,1724,5.845,1725,0.957,1726,0.957,1727,0.957,1728,0.957,1729,0.957,1730,2.443,1731,0.957,1732,0.957,1733,0.957,1734,1.76,1735,3.992,1736,3.031,1737,3.992,1738,1.76,1739,3.031,1740,1.76,1741,0.957,1742,0.957,1743,1.76,1744,1.76,1745,1.76,1746,0.957,1747,1.76,1748,1.76,1749,0.957,1750,0.957,1751,0.957,1752,0.957,1753,0.957,1754,0.957,1755,3.031,1756,0.957,1757,3.992,1758,0.957,1759,1.76,1760,0.957,1761,0.957,1762,0.957,1763,0.957,1764,0.957,1765,0.957,1766,0.957,1767,0.957,1768,1.76,1769,0.957,1770,0.957,1771,0.957,1772,0.957,1773,3.992,1774,2.443,1775,3.542,1776,3.542,1777,0.957,1778,0.957,1779,0.957,1780,0.957,1781,1.76,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,1792,0.957]],["sidebarParentCategories/239",[700,1.331]],["title/240",[201,1.931,485,1.739,1296,2.223]],["content/240",[32,2.324,41,4.464,43,3.47,47,3.906,58,0.816,92,3.39,96,1.846,117,2.533,141,3.185,201,2.948,226,2.723,244,3.151,327,2.324,346,1.971,363,2.152,414,2.957,485,3.258,533,3.049,595,4.161,700,1.864,745,2.039,803,3.906,811,3.534,812,4.161,871,2.795,903,3.703,1289,2.895,1291,2.075,1293,2.655,1296,3.393,1380,3.534,1384,3.703,1394,2.324,1396,3.534,1513,4.501,1514,4.501,1594,3.906,1659,3.906,1793,5.018]],["sidebarParentCategories/240",[700,1.331]],["title/241",[226,2.117,958,1.884,1289,1.643,1394,1.807]],["content/241",[53,2.091,55,1.83,58,0.822,68,2.744,114,2.895,146,3.268,153,2.964,226,3.75,238,4.073,264,2.744,265,3.073,306,2.464,481,3.957,513,2.98,523,2.251,537,2.98,546,3.073,1172,3.288,1289,2.129,1291,2.091,1293,2.676,1394,3.647,1427,5.38,1429,4.868,1523,6.199,1524,3.416,1594,3.936,1676,6.199]],["sidebarParentCategories/241",[700,1.331]],["title/242",[151,1.435,958,1.884,1289,1.643,1394,1.807]],["content/242",[58,0.898,59,3.075,131,3.729,147,2.132,151,3.227,172,2.921,211,2.225,240,3.729,250,3.729,285,1.938,328,2.725,335,4.577,348,2.852,523,2.458,958,2.666,1151,6.08,1289,2.325,1312,4.298,1394,2.557,1401,4.952,1524,3.729,1559,4.952,1630,6.577,1654,4.952,1659,4.298,1794,5.52,1795,8.232,1796,5.52,1797,5.52,1798,5.52,1799,5.52,1800,5.52,1801,5.52]],["sidebarParentCategories/242",[700,1.331]],["title/243",[958,2.175,1289,1.896,1394,2.086]],["content/243",[9,4.777,34,1.877,53,2.383,55,1.629,84,3.299,151,2.12,181,2.976,203,3.617,219,4.252,265,3.501,280,3.892,375,4.307,457,3.299,523,2.565,541,2.154,606,2.976,958,4.06,1289,2.426,1291,2.383,1293,3.049,1394,3.493,1395,3.892,1524,3.892,1802,5.761,1803,7.541,1804,5.761]],["sidebarParentCategories/243",[700,1.331]]],"invertedIndex":[["",{"_index":55,"title":{"3":{},"4":{},"5":{},"13":{},"14":{},"15":{},"16":{},"39":{},"40":{},"85":{},"86":{},"87":{},"88":{},"166":{},"167":{},"168":{}},"content":{"1":{},"2":{},"9":{},"12":{},"31":{},"34":{},"38":{},"41":{},"46":{},"51":{},"70":{},"78":{},"80":{},"81":{},"82":{},"83":{},"84":{},"90":{},"91":{},"92":{},"95":{},"100":{},"102":{},"112":{},"113":{},"114":{},"115":{},"121":{},"128":{},"129":{},"130":{},"131":{},"132":{},"136":{},"143":{},"144":{},"146":{},"147":{},"148":{},"149":{},"156":{},"157":{},"165":{},"176":{},"177":{},"178":{},"182":{},"183":{},"184":{},"185":{},"186":{},"210":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"230":{},"232":{},"234":{},"235":{},"237":{},"238":{},"239":{},"241":{},"243":{}},"sidebarParentCategories":{}}],["0.0.1",{"_index":1301,"title":{},"content":{"169":{}},"sidebarParentCategories":{}}],["0.1",{"_index":1344,"title":{},"content":{"177":{},"178":{}},"sidebarParentCategories":{}}],["0.1.0",{"_index":1290,"title":{"167":{},"210":{}},"content":{"165":{},"167":{},"169":{},"173":{},"210":{},"211":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{}},"sidebarParentCategories":{}}],["0.2",{"_index":1356,"title":{},"content":{"178":{},"218":{}},"sidebarParentCategories":{}}],["0.2.0",{"_index":1374,"title":{},"content":{"211":{},"212":{},"213":{},"214":{},"215":{},"217":{},"219":{},"221":{},"237":{}},"sidebarParentCategories":{}}],["0.2.5",{"_index":1604,"title":{},"content":{"233":{}},"sidebarParentCategories":{}}],["0.2.x",{"_index":1291,"title":{"167":{},"168":{},"210":{},"230":{}},"content":{"165":{},"167":{},"168":{},"173":{},"210":{},"212":{},"213":{},"214":{},"216":{},"217":{},"219":{},"220":{},"230":{},"231":{},"232":{},"234":{},"235":{},"237":{},"238":{},"239":{},"240":{},"241":{},"243":{}},"sidebarParentCategories":{}}],["0.3.0",{"_index":1594,"title":{},"content":{"231":{},"239":{},"240":{},"241":{}},"sidebarParentCategories":{}}],["0.3.x",{"_index":1293,"title":{"168":{},"230":{}},"content":{"165":{},"168":{},"173":{},"230":{},"232":{},"234":{},"235":{},"237":{},"238":{},"239":{},"240":{},"241":{},"243":{}},"sidebarParentCategories":{}}],["0.61.5",{"_index":688,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["0.62.0",{"_index":681,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["0.64.0",{"_index":714,"title":{},"content":{"78":{}},"sidebarParentCategories":{}}],["0.69.5",{"_index":682,"title":{},"content":{"78":{},"83":{}},"sidebarParentCategories":{}}],["0.70.0",{"_index":679,"title":{},"content":{"78":{},"83":{}},"sidebarParentCategories":{}}],["0023",{"_index":1480,"title":{},"content":{"213":{}},"sidebarParentCategories":{}}],["004",{"_index":206,"title":{},"content":{"10":{},"133":{}},"sidebarParentCategories":{}}],["01",{"_index":554,"title":{},"content":{"70":{}},"sidebarParentCategories":{}}],["0160",{"_index":1064,"title":{},"content":{"146":{},"150":{},"213":{}},"sidebarParentCategories":{}}],["0212",{"_index":984,"title":{},"content":{"121":{}},"sidebarParentCategories":{}}],["0360",{"_index":1603,"title":{},"content":{"233":{}},"sidebarParentCategories":{}}],["040e96c3c539",{"_index":1531,"title":{},"content":{"217":{}},"sidebarParentCategories":{}}],["0434",{"_index":1054,"title":{},"content":{"146":{},"150":{}},"sidebarParentCategories":{}}],["04a2c382",{"_index":1579,"title":{},"content":{"220":{}},"sidebarParentCategories":{}}],["0592",{"_index":1425,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["09e46da9",{"_index":1527,"title":{},"content":{"217":{}},"sidebarParentCategories":{}}],["1",{"_index":317,"title":{"139":{},"146":{},"153":{},"160":{},"182":{}},"content":{"12":{},"13":{},"14":{},"15":{},"16":{},"84":{},"85":{},"102":{},"109":{},"143":{},"156":{},"163":{},"177":{},"188":{},"235":{}},"sidebarParentCategories":{}}],["1.0",{"_index":1147,"title":{},"content":{"183":{},"186":{},"214":{}},"sidebarParentCategories":{}}],["1.0.0",{"_index":1295,"title":{},"content":{"169":{}},"sidebarParentCategories":{}}],["1.1",{"_index":1056,"title":{},"content":{"146":{},"150":{},"214":{}},"sidebarParentCategories":{}}],["1.4",{"_index":907,"title":{},"content":{"109":{}},"sidebarParentCategories":{}}],["10",{"_index":993,"title":{},"content":{"122":{}},"sidebarParentCategories":{}}],["10000",{"_index":975,"title":{},"content":{"120":{}},"sidebarParentCategories":{}}],["10044/com.usereactnativeindysdk",{"_index":558,"title":{},"content":{"70":{}},"sidebarParentCategories":{}}],["13",{"_index":567,"title":{},"content":{"70":{}},"sidebarParentCategories":{}}],["16:25:02.300",{"_index":556,"title":{},"content":{"70":{}},"sidebarParentCategories":{}}],["2",{"_index":406,"title":{"141":{},"154":{},"161":{},"183":{}},"content":{"38":{},"39":{},"146":{},"177":{},"188":{}},"sidebarParentCategories":{}}],["2.1",{"_index":1250,"title":{"142":{},"155":{},"162":{}},"content":{},"sidebarParentCategories":{}}],["2.2",{"_index":1253,"title":{"143":{},"156":{},"163":{}},"content":{},"sidebarParentCategories":{}}],["2.3",{"_index":1256,"title":{"144":{},"157":{},"164":{}},"content":{},"sidebarParentCategories":{}}],["20",{"_index":994,"title":{},"content":{"122":{}},"sidebarParentCategories":{}}],["2020",{"_index":553,"title":{},"content":{"70":{}},"sidebarParentCategories":{}}],["2022",{"_index":1264,"title":{},"content":{"159":{}},"sidebarParentCategories":{}}],["21",{"_index":598,"title":{},"content":{"80":{}},"sidebarParentCategories":{}}],["23",{"_index":1176,"title":{},"content":{"185":{},"186":{}},"sidebarParentCategories":{}}],["27",{"_index":555,"title":{},"content":{"70":{}},"sidebarParentCategories":{}}],["3",{"_index":807,"title":{"147":{},"184":{}},"content":{"84":{},"88":{}},"sidebarParentCategories":{}}],["3000",{"_index":381,"title":{},"content":{"34":{},"130":{},"132":{},"182":{}},"sidebarParentCategories":{}}],["3001",{"_index":1053,"title":{},"content":{"146":{},"149":{},"182":{},"186":{}},"sidebarParentCategories":{}}],["3002",{"_index":1127,"title":{},"content":{"182":{},"186":{}},"sidebarParentCategories":{}}],["32",{"_index":863,"title":{},"content":{"101":{}},"sidebarParentCategories":{}}],["3b6f131af5e",{"_index":969,"title":{},"content":{"118":{}},"sidebarParentCategories":{}}],["4",{"_index":1074,"title":{"148":{},"185":{}},"content":{},"sidebarParentCategories":{}}],["40c4",{"_index":967,"title":{},"content":{"118":{}},"sidebarParentCategories":{}}],["4909",{"_index":1529,"title":{},"content":{"217":{}},"sidebarParentCategories":{}}],["4baf",{"_index":966,"title":{},"content":{"118":{}},"sidebarParentCategories":{}}],["4de9",{"_index":1581,"title":{},"content":{"220":{}},"sidebarParentCategories":{}}],["5",{"_index":1098,"title":{"149":{},"186":{}},"content":{},"sidebarParentCategories":{}}],["50",{"_index":1673,"title":{},"content":{"237":{}},"sidebarParentCategories":{}}],["5000",{"_index":384,"title":{},"content":{"34":{},"120":{}},"sidebarParentCategories":{}}],["64.jar",{"_index":665,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["7000",{"_index":1646,"title":{},"content":{"235":{}},"sidebarParentCategories":{}}],["9955",{"_index":557,"title":{},"content":{"70":{}},"sidebarParentCategories":{}}],["999e",{"_index":1580,"title":{},"content":{"220":{}},"sidebarParentCategories":{}}],["9dec0b2fa5e4",{"_index":1583,"title":{},"content":{"220":{}},"sidebarParentCategories":{}}],["_before_",{"_index":1330,"title":{},"content":{"176":{}},"sidebarParentCategories":{}}],["_internal/indycredenti",{"_index":1518,"title":{},"content":{"216":{}},"sidebarParentCategories":{}}],["_internal/indyrequest",{"_index":1517,"title":{},"content":{"216":{}},"sidebarParentCategories":{}}],["a1d2",{"_index":1582,"title":{},"content":{"220":{}},"sidebarParentCategories":{}}],["a575",{"_index":1528,"title":{},"content":{"217":{}},"sidebarParentCategories":{}}],["aarch64.jar",{"_index":656,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["abov",{"_index":340,"title":{},"content":{"37":{},"44":{},"47":{},"55":{},"64":{},"73":{}},"sidebarParentCategories":{}}],["accept",{"_index":857,"title":{},"content":{"100":{},"108":{},"109":{},"110":{},"114":{},"115":{},"116":{},"145":{},"181":{},"182":{},"184":{},"186":{},"212":{},"235":{}},"sidebarParentCategories":{}}],["acceptancemechan",{"_index":882,"title":{},"content":{"102":{}},"sidebarParentCategories":{}}],["acceptpresent",{"_index":1663,"title":{},"content":{"237":{}},"sidebarParentCategories":{}}],["acceptpropos",{"_index":1661,"title":{},"content":{"237":{}},"sidebarParentCategories":{}}],["acceptxxx",{"_index":1403,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["acces",{"_index":1731,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["access",{"_index":73,"title":{},"content":{"1":{},"42":{},"77":{},"82":{},"212":{},"213":{},"216":{},"234":{},"237":{},"239":{}},"sidebarParentCategories":{}}],["access/jna/raw/5.5.0/lib/native/android",{"_index":655,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["accord",{"_index":326,"title":{},"content":{"29":{},"36":{},"43":{},"121":{},"146":{},"233":{}},"sidebarParentCategories":{}}],["accordingli",{"_index":1152,"title":{},"content":{"184":{},"239":{}},"sidebarParentCategories":{}}],["account",{"_index":1235,"title":{},"content":{"136":{},"211":{},"212":{},"214":{},"217":{},"219":{},"231":{},"237":{},"239":{}},"sidebarParentCategories":{}}],["acm",{"_index":1037,"title":{},"content":{"145":{},"146":{},"148":{},"149":{}},"sidebarParentCategories":{}}],["acmeag",{"_index":1109,"title":{},"content":{"149":{}},"sidebarParentCategories":{}}],["act",{"_index":128,"title":{},"content":{"7":{},"218":{}},"sidebarParentCategories":{}}],["action",{"_index":289,"title":{},"content":{"22":{},"218":{},"239":{}},"sidebarParentCategories":{}}],["actionmenu",{"_index":1612,"title":{},"content":{"234":{}},"sidebarParentCategories":{}}],["actionmenumodul",{"_index":1618,"title":{},"content":{"234":{}},"sidebarParentCategories":{}}],["activ",{"_index":1115,"title":{},"content":{"149":{}},"sidebarParentCategories":{}}],["actual",{"_index":1507,"title":{},"content":{"214":{},"218":{}},"sidebarParentCategories":{}}],["ad",{"_index":606,"title":{"82":{},"83":{}},"content":{"81":{},"82":{},"136":{},"169":{},"212":{},"213":{},"214":{},"216":{},"218":{},"219":{},"220":{},"221":{},"237":{},"243":{}},"sidebarParentCategories":{}}],["adapt",{"_index":759,"title":{},"content":{"128":{},"170":{}},"sidebarParentCategories":{}}],["add",{"_index":328,"title":{"70":{},"81":{}},"content":{"29":{},"37":{},"44":{},"59":{},"78":{},"80":{},"81":{},"83":{},"127":{},"128":{},"182":{},"210":{},"230":{},"234":{},"239":{},"242":{}},"sidebarParentCategories":{}}],["addit",{"_index":513,"title":{"128":{},"148":{}},"content":{"51":{},"128":{},"212":{},"217":{},"220":{},"221":{},"237":{},"238":{},"241":{}},"sidebarParentCategories":{}}],["adjust",{"_index":683,"title":{},"content":{"78":{},"83":{}},"sidebarParentCategories":{}}],["admin",{"_index":379,"title":{},"content":{"34":{}},"sidebarParentCategories":{}}],["admin_account",{"_index":1236,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["admin_password",{"_index":1237,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["advanc",{"_index":837,"title":{},"content":{"91":{},"98":{}},"sidebarParentCategories":{}}],["advantag",{"_index":1324,"title":{},"content":{"176":{},"177":{},"212":{},"239":{}},"sidebarParentCategories":{}}],["afj",{"_index":268,"title":{"136":{},"165":{},"167":{},"168":{},"210":{},"230":{}},"content":{"12":{},"20":{},"22":{},"28":{},"29":{},"30":{},"31":{},"34":{},"35":{},"36":{},"41":{},"43":{},"92":{},"134":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"173":{},"174":{},"188":{},"210":{},"211":{},"212":{},"213":{},"214":{},"230":{},"231":{},"233":{},"237":{},"239":{}},"sidebarParentCategories":{}}],["afj'",{"_index":740,"title":{},"content":{"128":{}},"sidebarParentCategories":{}}],["aforement",{"_index":1655,"title":{},"content":{"236":{}},"sidebarParentCategories":{}}],["afterward",{"_index":536,"title":{},"content":{"75":{},"177":{}},"sidebarParentCategories":{}}],["ag",{"_index":1146,"title":{},"content":{"183":{},"185":{},"186":{},"237":{}},"sidebarParentCategories":{}}],["again",{"_index":1351,"title":{},"content":{"177":{}},"sidebarParentCategories":{}}],["agent",{"_index":31,"title":{"3":{},"6":{},"85":{},"93":{},"129":{},"131":{},"146":{},"176":{},"177":{},"178":{},"182":{},"232":{}},"content":{"1":{},"2":{},"6":{},"7":{},"8":{},"9":{},"10":{},"12":{},"18":{},"19":{},"28":{},"30":{},"31":{},"41":{},"84":{},"90":{},"93":{},"94":{},"95":{},"100":{},"101":{},"113":{},"114":{},"115":{},"117":{},"121":{},"124":{},"129":{},"130":{},"131":{},"132":{},"133":{},"136":{},"145":{},"146":{},"147":{},"148":{},"149":{},"172":{},"174":{},"175":{},"176":{},"177":{},"178":{},"181":{},"182":{},"183":{},"184":{},"185":{},"186":{},"218":{},"232":{},"233":{},"234":{},"235":{},"239":{}},"sidebarParentCategories":{"89":{},"90":{},"91":{},"92":{}}}],["agent'",{"_index":1599,"title":{},"content":{"232":{},"239":{}},"sidebarParentCategories":{}}],["agent(agentconfig",{"_index":1598,"title":{},"content":{"232":{}},"sidebarParentCategories":{}}],["agent.config.filesystem.basepath}/afj/migration/backup/${backupidentifi",{"_index":1363,"title":{},"content":{"179":{}},"sidebarParentCategories":{}}],["agent.connections.createinvit",{"_index":1455,"title":{},"content":{"213":{}},"sidebarParentCategories":{}}],["agent.connections.findallbyoutofbandid(id",{"_index":1080,"title":{},"content":{"148":{}},"sidebarParentCategories":{}}],["agent.connections.findallbyoutofbandid(outofbandrecord.id",{"_index":1465,"title":{},"content":{"213":{}},"sidebarParentCategories":{}}],["agent.connections.receiveinvitation(parsedinvit",{"_index":1473,"title":{},"content":{"213":{}},"sidebarParentCategories":{}}],["agent.connections.receiveinvitationfromurl(invitationurl",{"_index":1469,"title":{},"content":{"213":{}},"sidebarParentCategories":{}}],["agent.credentials.findcredentialmessage('credentialrecordid",{"_index":1444,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["agent.credentials.findoffermessage('credentialrecordid",{"_index":1442,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["agent.credentials.findproposalmessage('credentialrecordid",{"_index":1441,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["agent.credentials.findrequestmessage('credentialrecordid",{"_index":1443,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["agent.credentials.getbyid('credentialrecordid",{"_index":1436,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["agent.credentials.getformatdata(credentialrecord.id",{"_index":1417,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["agent.credentials.offercredenti",{"_index":1393,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["agent.credentials.offercredential('connectionid",{"_index":1388,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["agent.discovery.isprotocolsupported(connectionid",{"_index":1641,"title":{},"content":{"235":{}},"sidebarParentCategories":{}}],["agent.discovery.queryfeatur",{"_index":1635,"title":{},"content":{"235":{}},"sidebarParentCategories":{}}],["agent.discovery.queryfeatures(connectionid",{"_index":1633,"title":{},"content":{"235":{}},"sidebarParentCategories":{}}],["agent.events.on(connectioneventtypes.connectionstatechang",{"_index":1084,"title":{},"content":{"148":{},"149":{},"213":{}},"sidebarParentCategories":{}}],["agent.events.on(credentialeventtypes.credentialstatechang",{"_index":1156,"title":{},"content":{"184":{},"186":{}},"sidebarParentCategories":{}}],["holder.oob.receiveinvitationfromurl(invitationurl",{"_index":1191,"title":{},"content":{"186":{}},"sidebarParentCategories":{}}],["homebrew",{"_index":1259,"title":{},"content":{"152":{}},"sidebarParentCategories":{}}],["hood",{"_index":1357,"title":{},"content":{"178":{}},"sidebarParentCategories":{}}],["hook",{"_index":304,"title":{"14":{},"30":{}},"content":{"12":{},"30":{},"36":{},"37":{}},"sidebarParentCategories":{"36":{},"37":{}}}],["host",{"_index":296,"title":{},"content":{"12":{},"68":{},"100":{}},"sidebarParentCategories":{}}],["hous",{"_index":436,"title":{},"content":{"53":{}},"sidebarParentCategories":{}}],["http",{"_index":248,"title":{},"content":{"12":{},"26":{},"34":{},"41":{},"51":{},"130":{},"146":{},"149":{},"182":{},"186":{}},"sidebarParentCategories":{}}],["http://localhost:3000/doc",{"_index":388,"title":{},"content":{"34":{}},"sidebarParentCategories":{}}],["http://localhost:3001",{"_index":1051,"title":{},"content":{"146":{},"149":{},"182":{},"186":{}},"sidebarParentCategories":{}}],["http://localhost:3002",{"_index":1126,"title":{},"content":{"182":{},"186":{}},"sidebarParentCategories":{}}],["http://localhost:5000",{"_index":378,"title":{},"content":{"34":{}},"sidebarParentCategories":{}}],["httpinboundtransport",{"_index":786,"title":{},"content":{"130":{},"132":{},"146":{},"149":{},"182":{},"186":{}},"sidebarParentCategories":{}}],["httpoutboundtransport",{"_index":784,"title":{},"content":{"130":{},"132":{},"146":{},"149":{},"182":{},"186":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())agent.registerinboundtransport(new",{"_index":788,"title":{},"content":{"130":{},"132":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())agent.registeroutboundtransport(new",{"_index":802,"title":{},"content":{"132":{}},"sidebarParentCategories":{}}],["https://afj.com",{"_index":1704,"title":{},"content":{"238":{}},"sidebarParentCategories":{}}],["https://cdn.cocoapods.org",{"_index":697,"title":{},"content":{"78":{}},"sidebarParentCategories":{}}],["https://crates.io/crates/env_logg",{"_index":1036,"title":{},"content":{"92":{}},"sidebarParentCategories":{}}],["https://deb.nodesource.com/setup_18.x",{"_index":502,"title":{},"content":{"46":{}},"sidebarParentCategories":{}}],["https://didcomm.agent.community.animo.id?c_i=ey....(mani",{"_index":962,"title":{},"content":{"117":{}},"sidebarParentCategories":{}}],["https://didcomm.org",{"_index":999,"title":{},"content":{"123":{}},"sidebarParentCategories":{}}],["https://didcomm.org/connections/1.0/invit",{"_index":1578,"title":{},"content":{"220":{}},"sidebarParentCategories":{}}],["https://didcomm.org/messagepickup/2.0",{"_index":1634,"title":{},"content":{"235":{}},"sidebarParentCategories":{}}],["https://didcomm.org/mi",{"_index":1501,"title":{},"content":{"214":{},"239":{}},"sidebarParentCategories":{}}],["https://example.com",{"_index":1456,"title":{},"content":{"213":{},"220":{}},"sidebarParentCategories":{}}],["https://example.com?c_i=eyxxx",{"_index":1468,"title":{},"content":{"213":{}},"sidebarParentCategories":{}}],["https://example.org",{"_index":1063,"title":{},"content":{"146":{},"149":{},"186":{}},"sidebarParentCategories":{}}],["https://example.org:3000",{"_index":858,"title":{},"content":{"100":{}},"sidebarParentCategories":{}}],["https://github.com/hyperledger/indi",{"_index":527,"title":{},"content":{"51":{},"78":{},"142":{},"155":{},"162":{}},"sidebarParentCategories":{}}],["https://github.com/java",{"_index":654,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["https://google.com",{"_index":1702,"title":{},"content":{"238":{}},"sidebarParentCategories":{}}],["https://picsum.photos/200",{"_index":1003,"title":{},"content":{"124":{}},"sidebarParentCategories":{}}],["https://raw.githubusercontent.com/homebrew/install/head/install.sh",{"_index":447,"title":{},"content":{"53":{},"62":{}},"sidebarParentCategories":{}}],["https://repo.sovrin.org/android/libindy/stable/1.16.0/libindy_android_arm64_1.16.0.zip",{"_index":631,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["https://repo.sovrin.org/android/libindy/stable/1.16.0/libindy_android_armv7_1.16.0.zip",{"_index":639,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["https://repo.sovrin.org/android/libindy/stable/1.16.0/libindy_android_x86_1.16.0.zip",{"_index":644,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["https://repo.sovrin.org/android/libindy/stable/1.16.0/libindy_android_x86_64_1.16.0.zip",{"_index":649,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["https://repo.sovrin.org/repository/maven",{"_index":610,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["https://rpm.nodesource.com/setup_18.x",{"_index":507,"title":{},"content":{"46":{}},"sidebarParentCategories":{}}],["https://sh.rustup.r",{"_index":520,"title":{},"content":{"51":{}},"sidebarParentCategories":{}}],["hub",{"_index":196,"title":{},"content":{"9":{}},"sidebarParentCategories":{}}],["hyperledg",{"_index":42,"title":{},"content":{"1":{},"10":{},"133":{}},"sidebarParentCategories":{}}],["i.",{"_index":1665,"title":{},"content":{"237":{}},"sidebarParentCategories":{}}],["id",{"_index":375,"title":{},"content":{"34":{},"95":{},"102":{},"118":{},"129":{},"132":{},"136":{},"146":{},"148":{},"149":{},"182":{},"184":{},"186":{},"212":{},"213":{},"216":{},"220":{},"239":{},"243":{}},"sidebarParentCategories":{}}],["ident",{"_index":11,"title":{},"content":{"1":{},"7":{},"9":{},"24":{},"41":{},"183":{},"186":{}},"sidebarParentCategories":{}}],["identifi",{"_index":210,"title":{},"content":{"24":{},"96":{},"103":{},"104":{},"179":{}},"sidebarParentCategories":{}}],["ignor",{"_index":1187,"title":{},"content":{"186":{}},"sidebarParentCategories":{}}],["imag",{"_index":1001,"title":{},"content":{"124":{}},"sidebarParentCategories":{}}],["implement",{"_index":111,"title":{},"content":{"2":{},"3":{},"6":{},"31":{},"41":{},"82":{},"91":{},"92":{},"98":{},"112":{},"128":{},"235":{},"239":{}},"sidebarParentCategories":{}}],["impli",{"_index":1221,"title":{},"content":{"188":{}},"sidebarParentCategories":{}}],["implicit",{"_index":694,"title":{},"content":{"78":{}},"sidebarParentCategories":{}}],["implicitli",{"_index":988,"title":{},"content":{"121":{}},"sidebarParentCategories":{}}],["import",{"_index":346,"title":{},"content":{"31":{},"83":{},"90":{},"91":{},"92":{},"95":{},"102":{},"112":{},"113":{},"114":{},"115":{},"121":{},"128":{},"129":{},"130":{},"132":{},"136":{},"149":{},"176":{},"177":{},"178":{},"182":{},"186":{},"212":{},"213":{},"214":{},"215":{},"234":{},"239":{},"240":{}},"sidebarParentCategories":{}}],["improv",{"_index":713,"title":{},"content":{"78":{},"170":{},"179":{}},"sidebarParentCategories":{}}],["inbound",{"_index":383,"title":{},"content":{"34":{},"130":{},"146":{},"149":{},"182":{},"186":{}},"sidebarParentCategories":{}}],["inboundtransport",{"_index":1131,"title":{},"content":{"182":{}},"sidebarParentCategories":{}}],["includ",{"_index":255,"title":{},"content":{"12":{},"17":{},"84":{},"95":{},"102":{},"128":{},"148":{},"149":{},"171":{},"179":{},"186":{},"239":{}},"sidebarParentCategories":{}}],["incom",{"_index":941,"title":{"148":{},"184":{}},"content":{"114":{},"115":{},"184":{}},"sidebarParentCategories":{}}],["independ",{"_index":512,"title":{},"content":{"51":{}},"sidebarParentCategories":{}}],["index.(js|ts|jsx|tsx",{"_index":736,"title":{},"content":{"128":{}},"sidebarParentCategories":{}}],["index.tsx",{"_index":737,"title":{},"content":{"128":{}},"sidebarParentCategories":{}}],["indi",{"_index":434,"title":{"51":{},"59":{},"66":{},"75":{},"83":{},"92":{},"142":{},"155":{},"162":{}},"content":{"49":{},"50":{},"51":{},"52":{},"57":{},"58":{},"59":{},"60":{},"61":{},"66":{},"67":{},"68":{},"75":{},"76":{},"78":{},"82":{},"83":{},"92":{},"101":{},"102":{},"104":{},"108":{},"111":{},"127":{},"134":{},"141":{},"142":{},"143":{},"144":{},"154":{},"155":{},"156":{},"157":{},"161":{},"162":{},"163":{},"185":{},"186":{},"210":{},"212":{},"217":{},"219":{},"230":{},"237":{},"238":{}},"sidebarParentCategories":{}}],["indic",{"_index":1303,"title":{},"content":{"169":{},"212":{},"213":{},"237":{}},"sidebarParentCategories":{}}],["indicio",{"_index":874,"title":{},"content":{"102":{}},"sidebarParentCategories":{}}],["indy_crypto_prebuilt_deps_dir=c:\\users\\{windows_user}\\downloads\\indi",{"_index":1268,"title":{},"content":{"160":{}},"sidebarParentCategories":{}}],["indy_generate_wallet_key",{"_index":831,"title":{},"content":{"98":{}},"sidebarParentCategories":{}}],["indy_prebuilt_deps_dir=c:\\users\\{windows_user}\\downloads\\indi",{"_index":1266,"title":{},"content":{"160":{}},"sidebarParentCategories":{}}],["indy_set_default_logg",{"_index":1032,"title":{},"content":{"92":{}},"sidebarParentCategories":{}}],["indy_set_logg",{"_index":1033,"title":{},"content":{"92":{}},"sidebarParentCategories":{}}],["indycredenti",{"_index":1520,"title":{},"content":{"216":{}},"sidebarParentCategories":{}}],["indycredential?.credentialdefinitionid",{"_index":1521,"title":{},"content":{"216":{}},"sidebarParentCategories":{}}],["indycredential?.schemaid",{"_index":1522,"title":{},"content":{"216":{}},"sidebarParentCategories":{}}],["indycredentialmetadata",{"_index":1411,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["indycredentialmetadata?.credentialdefinitionid",{"_index":1413,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["indycredentialmetadata?.schemaid",{"_index":1414,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["indyledg",{"_index":867,"title":{"102":{}},"content":{"102":{},"182":{},"186":{},"232":{},"236":{}},"sidebarParentCategories":{}}],["indyledgers.genesispath",{"_index":893,"title":{"106":{}},"content":{},"sidebarParentCategories":{}}],["indyledgers.genesistransact",{"_index":897,"title":{"107":{}},"content":{"106":{}},"sidebarParentCategories":{}}],["indyledgers.id",{"_index":884,"title":{"103":{}},"content":{},"sidebarParentCategories":{}}],["indyledgers.indynamespac",{"_index":885,"title":{"104":{}},"content":{},"sidebarParentCategories":{}}],["indyledgers.isproduct",{"_index":889,"title":{"105":{}},"content":{},"sidebarParentCategories":{}}],["indyledgers.transactionauthoragr",{"_index":899,"title":{"108":{}},"content":{},"sidebarParentCategories":{}}],["indyledgers.transactionauthoragreement.acceptancemechan",{"_index":908,"title":{"110":{}},"content":{},"sidebarParentCategories":{}}],["indyledgers.transactionauthoragreement.vers",{"_index":905,"title":{"109":{}},"content":{},"sidebarParentCategories":{}}],["indynamespac",{"_index":877,"title":{},"content":{"102":{},"182":{},"186":{},"232":{}},"sidebarParentCategories":{}}],["indypoolconfig",{"_index":873,"title":{},"content":{"102":{}},"sidebarParentCategories":{}}],["indypostgresstorageconfig",{"_index":1228,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["indysdk",{"_index":1227,"title":{},"content":{"134":{}},"sidebarParentCategories":{}}],["indystrgpostgres.dl",{"_index":1278,"title":{},"content":{"163":{},"164":{}},"sidebarParentCategories":{}}],["infer",{"_index":981,"title":{},"content":{"121":{}},"sidebarParentCategories":{}}],["info",{"_index":678,"title":{},"content":{"83":{},"171":{},"211":{},"231":{},"235":{}},"sidebarParentCategories":{}}],["info(messag",{"_index":1017,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["inform",{"_index":220,"title":{},"content":{"25":{},"92":{},"114":{},"115":{}},"sidebarParentCategories":{}}],["initconfig",{"_index":774,"title":{},"content":{"90":{},"129":{},"132":{},"136":{},"146":{},"149":{},"182":{},"186":{},"232":{}},"sidebarParentCategories":{}}],["initi",{"_index":50,"title":{"131":{}},"content":{"1":{},"38":{},"95":{},"101":{},"129":{},"131":{},"132":{},"136":{},"145":{},"146":{},"149":{},"176":{},"177":{},"178":{},"181":{},"182":{},"186":{},"212":{},"232":{},"237":{}},"sidebarParentCategories":{}}],["initializeacmeag",{"_index":1048,"title":{},"content":{"146":{},"149":{}},"sidebarParentCategories":{}}],["initializebobag",{"_index":1041,"title":{},"content":{"146":{},"149":{}},"sidebarParentCategories":{}}],["initializeholderag",{"_index":1120,"title":{},"content":{"182":{},"186":{}},"sidebarParentCategories":{}}],["initializeissuerag",{"_index":1138,"title":{},"content":{"182":{},"186":{}},"sidebarParentCategories":{}}],["inject",{"_index":1617,"title":{},"content":{"234":{},"239":{}},"sidebarParentCategories":{}}],["insid",{"_index":105,"title":{},"content":{"2":{},"26":{},"80":{},"81":{},"83":{},"90":{},"147":{},"176":{},"182":{}},"sidebarParentCategories":{}}],["insight",{"_index":431,"title":{},"content":{"61":{}},"sidebarParentCategories":{}}],["instal",{"_index":338,"title":{"37":{},"39":{},"42":{},"44":{},"52":{},"60":{},"67":{},"76":{},"77":{},"127":{},"135":{},"139":{},"153":{}},"content":{"32":{},"34":{},"38":{},"40":{},"42":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"73":{},"74":{},"76":{},"77":{},"78":{},"126":{},"127":{},"134":{},"135":{},"140":{},"143":{},"153":{},"156":{},"159":{},"182":{},"210":{},"230":{}},"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":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{}}}],["instanc",{"_index":361,"title":{},"content":{"41":{},"112":{},"130":{},"146":{},"149":{},"172":{},"182":{},"186":{},"212":{},"234":{},"237":{},"239":{}},"sidebarParentCategories":{}}],["instanceconst",{"_index":798,"title":{},"content":{"132":{}},"sidebarParentCategories":{}}],["instanceof",{"_index":1448,"title":{},"content":{"212":{},"237":{}},"sidebarParentCategories":{}}],["instanti",{"_index":1167,"title":{"176":{}},"content":{"174":{},"175":{},"177":{},"185":{},"214":{}},"sidebarParentCategories":{}}],["instantli",{"_index":355,"title":{},"content":{"41":{}},"sidebarParentCategories":{}}],["instead",{"_index":180,"title":{},"content":{"8":{},"134":{},"212":{},"213":{},"214":{},"220":{},"233":{},"235":{},"237":{},"239":{}},"sidebarParentCategories":{}}],["instruct",{"_index":1308,"title":{},"content":{"169":{},"172":{}},"sidebarParentCategories":{}}],["integ",{"_index":846,"title":{},"content":{"98":{}},"sidebarParentCategories":{}}],["integr",{"_index":345,"title":{},"content":{"31":{},"171":{},"234":{}},"sidebarParentCategories":{}}],["intel",{"_index":427,"title":{"62":{}},"content":{"61":{},"62":{},"151":{}},"sidebarParentCategories":{}}],["intend",{"_index":1512,"title":{},"content":{"215":{}},"sidebarParentCategories":{}}],["intent",{"_index":1217,"title":{},"content":{"188":{}},"sidebarParentCategories":{}}],["interact",{"_index":112,"title":{},"content":{"2":{},"3":{},"6":{},"7":{},"12":{},"30":{},"31":{},"41":{},"51":{},"59":{},"66":{},"75":{},"111":{},"171":{},"184":{},"233":{}},"sidebarParentCategories":{}}],["interfac",{"_index":337,"title":{},"content":{"30":{},"91":{},"112":{},"136":{},"184":{},"239":{}},"sidebarParentCategories":{}}],["intern",{"_index":1377,"title":{},"content":{"211":{},"212":{},"213":{},"231":{},"232":{},"237":{}},"sidebarParentCategories":{}}],["internet",{"_index":354,"title":{},"content":{"41":{}},"sidebarParentCategories":{}}],["interoper",{"_index":46,"title":{},"content":{"1":{},"7":{},"26":{},"41":{}},"sidebarParentCategories":{}}],["interv",{"_index":972,"title":{},"content":{"120":{}},"sidebarParentCategories":{}}],["intro",{"_index":0,"title":{"1":{}},"content":{},"sidebarParentCategories":{}}],["introduc",{"_index":1659,"title":{},"content":{"237":{},"239":{},"240":{},"242":{}},"sidebarParentCategories":{}}],["invit",{"_index":853,"title":{"147":{}},"content":{"100":{},"117":{},"145":{},"146":{},"147":{},"148":{},"149":{},"182":{},"186":{},"213":{},"220":{},"221":{},"238":{}},"sidebarParentCategories":{}}],["invitation.tourl",{"_index":1067,"title":{},"content":{"146":{},"149":{},"213":{}},"sidebarParentCategories":{}}],["invitationdid",{"_index":1571,"title":{},"content":{"220":{}},"sidebarParentCategories":{}}],["invitationurl",{"_index":1060,"title":{},"content":{"146":{},"147":{},"149":{},"186":{},"213":{},"238":{}},"sidebarParentCategories":{}}],["invitationurl)}export",{"_index":1118,"title":{},"content":{"149":{}},"sidebarParentCategories":{}}],["invitationurl)}void",{"_index":1208,"title":{},"content":{"186":{}},"sidebarParentCategories":{}}],["invite",{"_index":1459,"title":{},"content":{"213":{}},"sidebarParentCategories":{}}],["io",{"_index":549,"title":{"78":{}},"content":{"68":{},"78":{},"182":{}},"sidebarParentCategories":{}}],["ios/podfil",{"_index":692,"title":{},"content":{"78":{}},"sidebarParentCategories":{}}],["iot",{"_index":134,"title":{},"content":{"7":{}},"sidebarParentCategories":{}}],["isn't",{"_index":1491,"title":{},"content":{"214":{},"239":{}},"sidebarParentCategories":{}}],["ispickupv2support",{"_index":1640,"title":{},"content":{"235":{}},"sidebarParentCategories":{}}],["isproduct",{"_index":878,"title":{},"content":{"102":{},"182":{},"186":{}},"sidebarParentCategories":{}}],["isprotocolsupport",{"_index":1636,"title":{},"content":{"235":{}},"sidebarParentCategories":{}}],["issu",{"_index":150,"title":{"87":{},"181":{},"185":{}},"content":{"7":{},"22":{},"41":{},"70":{},"83":{},"84":{},"145":{},"148":{},"169":{},"171":{},"181":{},"183":{},"186":{},"187":{},"212":{},"217":{},"218":{},"233":{},"237":{}},"sidebarParentCategories":{}}],["issuecredenti",{"_index":1169,"title":{},"content":{"185":{},"186":{}},"sidebarParentCategories":{}}],["issuecredential(issu",{"_index":1200,"title":{},"content":{"186":{}},"sidebarParentCategories":{}}],["issuer",{"_index":118,"title":{},"content":{"2":{},"5":{},"11":{},"38":{},"181":{},"182":{},"183":{},"185":{},"186":{}},"sidebarParentCategories":{}}],["issuer.credentials.offercredenti",{"_index":1171,"title":{},"content":{"185":{},"186":{}},"sidebarParentCategories":{}}],["issuer.events.on(connectioneventtypes.connectionstatechang",{"_index":1193,"title":{},"content":{"186":{}},"sidebarParentCategories":{}}],["issuer.ledger.registercredentialdefinit",{"_index":1149,"title":{},"content":{"183":{},"186":{}},"sidebarParentCategories":{}}],["issuer.ledger.registerschema",{"_index":1144,"title":{},"content":{"183":{},"186":{}},"sidebarParentCategories":{}}],["issuer.oob.createinvit",{"_index":1190,"title":{},"content":{"186":{}},"sidebarParentCategories":{}}],["isvalidmessagetyp",{"_index":1503,"title":{},"content":{"214":{}},"sidebarParentCategories":{}}],["isvalidmessagetype(mymessage.typ",{"_index":1504,"title":{},"content":{"214":{}},"sidebarParentCategories":{}}],["it'",{"_index":1034,"title":{},"content":{"92":{},"218":{},"239":{}},"sidebarParentCategories":{}}],["item",{"_index":318,"title":{},"content":{"12":{},"13":{},"14":{},"15":{},"16":{},"38":{},"39":{},"84":{},"85":{},"86":{},"88":{},"108":{},"145":{},"181":{}},"sidebarParentCategories":{}}],["itself",{"_index":219,"title":{},"content":{"25":{},"212":{},"219":{},"235":{},"243":{}},"sidebarParentCategories":{}}],["jane",{"_index":1174,"title":{},"content":{"185":{},"186":{}},"sidebarParentCategories":{}}],["jar",{"_index":657,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["java",{"_index":612,"title":{},"content":{"82":{}},"sidebarParentCategories":{}}],["java.io.fil",{"_index":672,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["javascript",{"_index":3,"title":{"17":{},"20":{}},"content":{"1":{},"2":{},"5":{},"7":{},"8":{},"11":{},"12":{},"17":{},"18":{},"19":{},"20":{},"26":{},"29":{},"36":{},"38":{},"41":{},"42":{},"43":{},"46":{},"51":{},"54":{},"59":{},"61":{},"63":{},"66":{},"72":{},"75":{},"77":{},"93":{},"112":{},"125":{},"165":{},"169":{},"171":{}},"sidebarParentCategories":{}}],["jna",{"_index":611,"title":{"82":{}},"content":{"82":{},"83":{}},"sidebarParentCategories":{}}],["jnilib",{"_index":618,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["js",{"_index":272,"title":{"21":{}},"content":{"21":{},"128":{}},"sidebarParentCategories":{}}],["json",{"_index":748,"title":{},"content":{"106":{},"107":{},"108":{},"128":{}},"sidebarParentCategories":{}}],["kali",{"_index":1247,"title":{"140":{}},"content":{},"sidebarParentCategories":{}}],["keep",{"_index":77,"title":{},"content":{"1":{},"134":{},"169":{},"171":{},"188":{},"212":{},"215":{},"221":{},"233":{},"237":{}},"sidebarParentCategories":{}}],["kept",{"_index":822,"title":{},"content":{"97":{}},"sidebarParentCategories":{}}],["key",{"_index":141,"title":{},"content":{"7":{},"25":{},"34":{},"95":{},"97":{},"98":{},"110":{},"129":{},"132":{},"136":{},"146":{},"149":{},"182":{},"186":{},"212":{},"215":{},"216":{},"232":{},"233":{},"237":{},"240":{}},"sidebarParentCategories":{}}],["keyderivationmethod",{"_index":813,"title":{},"content":{"95":{},"98":{}},"sidebarParentCategories":{}}],["keyderivationmethod.argon2imod",{"_index":817,"title":{},"content":{"95":{},"98":{}},"sidebarParentCategories":{}}],["keyderivationmethod.argon2int",{"_index":845,"title":{},"content":{"98":{}},"sidebarParentCategories":{}}],["keyderivationmethod.raw",{"_index":828,"title":{},"content":{"98":{}},"sidebarParentCategories":{}}],["kind",{"_index":568,"title":{},"content":{"70":{}},"sidebarParentCategories":{}}],["kit",{"_index":48,"title":{},"content":{"1":{}},"sidebarParentCategories":{}}],["know",{"_index":871,"title":{},"content":{"102":{},"145":{},"148":{},"149":{},"165":{},"167":{},"168":{},"171":{},"186":{},"210":{},"215":{},"230":{},"240":{}},"sidebarParentCategories":{}}],["knowledg",{"_index":252,"title":{},"content":{"26":{},"129":{},"145":{},"181":{}},"sidebarParentCategories":{}}],["known",{"_index":550,"title":{"69":{}},"content":{},"sidebarParentCategories":{}}],["label",{"_index":374,"title":{"94":{}},"content":{"34":{},"94":{},"108":{},"110":{},"124":{},"129":{},"132":{},"136":{},"146":{},"149":{},"182":{},"186":{},"220":{}},"sidebarParentCategories":{}}],["lack",{"_index":237,"title":{},"content":{"26":{}},"sidebarParentCategories":{}}],["larg",{"_index":408,"title":{},"content":{"42":{},"77":{}},"sidebarParentCategories":{}}],["lastli",{"_index":158,"title":{},"content":{"7":{},"51":{},"59":{}},"sidebarParentCategories":{}}],["later",{"_index":148,"title":{},"content":{"7":{},"95":{},"177":{},"212":{},"216":{},"219":{}},"sidebarParentCategories":{}}],["latest",{"_index":295,"title":{},"content":{"22":{},"78":{},"177":{},"210":{},"212":{},"230":{}},"sidebarParentCategories":{}}],["launch",{"_index":1336,"title":{},"content":{"176":{},"177":{}},"sidebarParentCategories":{}}],["ld_library_path",{"_index":543,"title":{},"content":{"75":{}},"sidebarParentCategories":{}}],["lead",{"_index":913,"title":{},"content":{"111":{},"149":{},"186":{},"218":{}},"sidebarParentCategories":{}}],["ledger",{"_index":466,"title":{"236":{}},"content":{"51":{},"59":{},"66":{},"75":{},"83":{},"101":{},"102":{},"103":{},"105":{},"111":{},"182":{},"188":{},"232":{},"236":{}},"sidebarParentCategories":{}}],["legaci",{"_index":756,"title":{},"content":{"123":{},"128":{},"146":{},"186":{},"213":{},"219":{},"238":{}},"sidebarParentCategories":{}}],["legacydiddoc",{"_index":1567,"title":{},"content":{"219":{}},"sidebarParentCategories":{}}],["legacytheirdiddoc",{"_index":1568,"title":{},"content":{"219":{}},"sidebarParentCategories":{}}],["less",{"_index":847,"title":{},"content":{"98":{},"113":{},"213":{},"238":{}},"sidebarParentCategories":{}}],["level",{"_index":110,"title":{},"content":{"2":{},"38":{},"51":{},"59":{},"66":{},"75":{},"92":{}},"sidebarParentCategories":{}}],["leverag",{"_index":1226,"title":{},"content":{"134":{},"165":{},"166":{},"174":{},"175":{},"177":{}},"sidebarParentCategories":{}}],["lib_indy_strg_postgres=c:\\users\\{windows_user}\\downloads\\indi",{"_index":1281,"title":{},"content":{"164":{}},"sidebarParentCategories":{}}],["libari",{"_index":615,"title":{"83":{}},"content":{},"sidebarParentCategories":{}}],["libcore/result.rs:945",{"_index":571,"title":{},"content":{"70":{}},"sidebarParentCategories":{}}],["libindi",{"_index":371,"title":{},"content":{"34":{},"66":{},"92":{},"159":{}},"sidebarParentCategories":{}}],["libindy_arm64/lib/libindy.so",{"_index":635,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["libindy_armv7/lib/libindy.so",{"_index":641,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["libindy_x86/lib/libindy.so",{"_index":646,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["libindy_x86_64/lib/libindy.so",{"_index":651,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["libjnidispatch.so",{"_index":659,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["librari",{"_index":297,"title":{"82":{}},"content":{"12":{},"51":{},"59":{},"70":{},"75":{},"78":{},"82":{},"83":{},"163":{}},"sidebarParentCategories":{}}],["libsodium",{"_index":432,"title":{"49":{},"57":{}},"content":{"49":{},"50":{},"57":{},"61":{},"140":{},"153":{}},"sidebarParentCategories":{}}],["libssl",{"_index":1249,"title":{},"content":{"140":{}},"sidebarParentCategories":{}}],["libzmq",{"_index":433,"title":{"50":{},"58":{}},"content":{"50":{},"58":{},"61":{}},"sidebarParentCategories":{}}],["libzmq3",{"_index":511,"title":{},"content":{"50":{},"140":{}},"sidebarParentCategories":{}}],["libzmq_prefix=c:\\users\\{windows_user}\\downloads\\indi",{"_index":1270,"title":{},"content":{"160":{}},"sidebarParentCategories":{}}],["licens",{"_index":195,"title":{},"content":{"9":{}},"sidebarParentCategories":{}}],["lightweight",{"_index":462,"title":{},"content":{"50":{},"58":{}},"sidebarParentCategories":{}}],["line",{"_index":690,"title":{},"content":{"78":{},"92":{}},"sidebarParentCategories":{}}],["link",{"_index":475,"title":{},"content":{"59":{},"100":{},"213":{},"239":{}},"sidebarParentCategories":{}}],["linux",{"_index":424,"title":{"45":{},"137":{}},"content":{"45":{},"46":{},"49":{},"50":{},"59":{},"61":{},"135":{}},"sidebarParentCategories":{}}],["list",{"_index":393,"title":{},"content":{"35":{},"100":{},"102":{},"108":{},"182":{},"211":{},"231":{}},"sidebarParentCategories":{}}],["listen",{"_index":1075,"title":{"148":{},"184":{}},"content":{"148":{},"184":{},"186":{},"213":{}},"sidebarParentCategories":{}}],["lo",{"_index":653,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["load",{"_index":667,"title":{},"content":{"83":{},"136":{}},"sidebarParentCategories":{}}],["loadpostgresplugin",{"_index":1229,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["loadpostgresplugin(storageconfig.config",{"_index":1238,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["local",{"_index":1135,"title":{},"content":{"134":{},"182":{}},"sidebarParentCategories":{}}],["localhost:5432",{"_index":1232,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["locat",{"_index":171,"title":{},"content":{"8":{},"51":{},"59":{},"75":{},"81":{},"83":{},"106":{},"163":{},"179":{}},"sidebarParentCategories":{}}],["log",{"_index":921,"title":{"89":{},"92":{}},"content":{"90":{},"92":{},"112":{}},"sidebarParentCategories":{}}],["logger",{"_index":917,"title":{"91":{},"112":{}},"content":{"90":{},"91":{},"92":{},"112":{}},"sidebarParentCategories":{}}],["logic",{"_index":1093,"title":{},"content":{"148":{},"149":{},"184":{},"186":{}},"sidebarParentCategories":{}}],["loglevel",{"_index":922,"title":{},"content":{"90":{},"91":{},"112":{}},"sidebarParentCategories":{}}],["loglevel.off",{"_index":1010,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["long",{"_index":865,"title":{},"content":{"101":{},"103":{}},"sidebarParentCategories":{}}],["look",{"_index":291,"title":{},"content":{"22":{},"42":{},"77":{}},"sidebarParentCategories":{}}],["loos",{"_index":185,"title":{},"content":{"9":{}},"sidebarParentCategories":{}}],["lot",{"_index":20,"title":{},"content":{"1":{},"25":{},"211":{},"215":{},"231":{},"238":{}},"sidebarParentCategories":{}}],["lower",{"_index":465,"title":{},"content":{"51":{},"59":{},"66":{},"75":{},"111":{}},"sidebarParentCategories":{}}],["luckili",{"_index":13,"title":{},"content":{"1":{},"172":{}},"sidebarParentCategories":{}}],["m1",{"_index":438,"title":{},"content":{"53":{}},"sidebarParentCategories":{}}],["machin",{"_index":368,"title":{},"content":{"33":{}},"sidebarParentCategories":{}}],["maco",{"_index":469,"title":{"151":{}},"content":{"59":{},"66":{},"135":{}},"sidebarParentCategories":{}}],["made",{"_index":493,"title":{},"content":{"66":{},"172":{},"179":{},"211":{},"212":{},"213":{},"231":{},"239":{}},"sidebarParentCategories":{}}],["main",{"_index":15,"title":{},"content":{"1":{}},"sidebarParentCategories":{}}],["mainacm",{"_index":1049,"title":{},"content":{"146":{},"149":{}},"sidebarParentCategories":{}}],["mainact",{"_index":574,"title":{},"content":{"70":{},"83":{}},"sidebarParentCategories":{}}],["mainactivity.java",{"_index":668,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["mainbob",{"_index":1042,"title":{},"content":{"146":{},"149":{}},"sidebarParentCategories":{}}],["mainli",{"_index":1793,"title":{},"content":{"240":{}},"sidebarParentCategories":{}}],["maintain",{"_index":75,"title":{},"content":{"1":{},"22":{}},"sidebarParentCategories":{}}],["major",{"_index":362,"title":{},"content":{"41":{},"169":{}},"sidebarParentCategories":{}}],["make",{"_index":17,"title":{},"content":{"1":{},"41":{},"95":{},"111":{},"128":{},"159":{},"165":{},"167":{},"168":{},"170":{},"179":{},"182":{},"183":{},"210":{},"211":{},"212":{},"218":{},"230":{},"231":{},"237":{},"239":{}},"sidebarParentCategories":{}}],["manag",{"_index":344,"title":{},"content":{"31":{},"47":{},"55":{},"64":{},"73":{},"138":{},"143":{},"156":{},"165":{},"166":{},"174":{}},"sidebarParentCategories":{}}],["mani",{"_index":166,"title":{},"content":{"8":{},"51":{},"122":{},"215":{}},"sidebarParentCategories":{}}],["manual",{"_index":719,"title":{"176":{}},"content":{"78":{},"116":{},"165":{},"166":{},"174":{},"175":{},"176":{},"177":{},"210":{},"230":{}},"sidebarParentCategories":{}}],["mark",{"_index":1716,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["match",{"_index":1405,"title":{},"content":{"212":{},"218":{},"235":{}},"sidebarParentCategories":{}}],["maven",{"_index":602,"title":{"81":{}},"content":{"81":{}},"sidebarParentCategories":{}}],["max",{"_index":440,"title":{},"content":{"53":{}},"sidebarParentCategories":{}}],["maximummessagepickup",{"_index":990,"title":{"122":{}},"content":{"122":{}},"sidebarParentCategories":{}}],["mean",{"_index":149,"title":{},"content":{"7":{},"25":{},"26":{},"51":{},"169":{},"171":{},"176":{},"177":{},"178":{},"212":{},"218":{},"220":{},"239":{}},"sidebarParentCategories":{}}],["mechan",{"_index":227,"title":{},"content":{"25":{},"108":{},"109":{},"110":{},"219":{},"239":{}},"sidebarParentCategories":{}}],["mediat",{"_index":348,"title":{"218":{}},"content":{"31":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"130":{},"146":{},"149":{},"182":{},"186":{},"218":{},"242":{}},"sidebarParentCategories":{}}],["mediationrole.medi",{"_index":1532,"title":{},"content":{"218":{}},"sidebarParentCategories":{}}],["mediationrole.recipi",{"_index":1542,"title":{},"content":{"218":{}},"sidebarParentCategories":{}}],["mediationroleupdatestrategi",{"_index":1328,"title":{},"content":{"176":{},"177":{},"215":{}},"sidebarParentCategories":{}}],["mediatorconnectionsinvit",{"_index":957,"title":{"117":{}},"content":{"117":{},"118":{},"119":{}},"sidebarParentCategories":{}}],["mediatormodul",{"_index":956,"title":{},"content":{"116":{}},"sidebarParentCategories":{}}],["mediatorpickupstrategi",{"_index":980,"title":{},"content":{"121":{}},"sidebarParentCategories":{}}],["mediatorpickupstrategy.implicit",{"_index":987,"title":{},"content":{"121":{}},"sidebarParentCategories":{}}],["mediatorpickupstrategy.pickupv1",{"_index":983,"title":{},"content":{"121":{}},"sidebarParentCategories":{}}],["mediatorpickupstrategy.pickupv2",{"_index":985,"title":{},"content":{"121":{},"122":{}},"sidebarParentCategories":{}}],["mediatorpickupstrateri",{"_index":976,"title":{"121":{}},"content":{},"sidebarParentCategories":{}}],["mediatorpollinginterv",{"_index":971,"title":{"120":{}},"content":{"120":{}},"sidebarParentCategories":{}}],["meet",{"_index":276,"title":{},"content":{"21":{}},"sidebarParentCategories":{}}],["member",{"_index":841,"title":{},"content":{"98":{},"113":{},"114":{},"115":{},"121":{}},"sidebarParentCategories":{}}],["mention",{"_index":234,"title":{},"content":{"26":{},"51":{},"171":{},"172":{}},"sidebarParentCategories":{}}],["menu",{"_index":1614,"title":{},"content":{"234":{}},"sidebarParentCategories":{}}],["mere",{"_index":1452,"title":{},"content":{"213":{}},"sidebarParentCategories":{}}],["messag",{"_index":153,"title":{"214":{}},"content":{"7":{},"9":{},"20":{},"25":{},"26":{},"50":{},"58":{},"70":{},"92":{},"113":{},"121":{},"145":{},"148":{},"149":{},"186":{},"211":{},"212":{},"214":{},"217":{},"220":{},"237":{},"238":{},"239":{},"241":{}},"sidebarParentCategories":{}}],["message.id",{"_index":1740,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["messagecontext",{"_index":1730,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["messagecontext.agentcontext",{"_index":1732,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["messagecontext.message.id",{"_index":1747,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["messagecontext.message.thread?.parentthreadid",{"_index":1748,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["messagehandl",{"_index":1710,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["messagehandlerinboundmessag",{"_index":1713,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["messagehandlerinboundmessage(agentcontext",{"_index":1752,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["this.loglevel",{"_index":1011,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["this.messagesend",{"_index":1777,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["this.messagesender.sendmessage(outboundmessag",{"_index":1766,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["this.messagesender.sendmessage(outboundmessagecontext",{"_index":1770,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["this.myrecordrepository.save(agentcontext",{"_index":1751,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["this.myrecordrepository.save(record",{"_index":1741,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["this.myrepository.save(messagecontext.agentcontext",{"_index":1754,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["this.myrepository.save(record",{"_index":1749,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["this.myservic",{"_index":1778,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["this.registerhandlers(messagehandlerregistri",{"_index":1780,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["those",{"_index":1589,"title":{},"content":{"221":{}},"sidebarParentCategories":{}}],["though",{"_index":1478,"title":{},"content":{"213":{}},"sidebarParentCategories":{}}],["thread",{"_index":560,"title":{},"content":{"70":{}},"sidebarParentCategories":{}}],["threadid",{"_index":1739,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["three",{"_index":126,"title":{},"content":{"7":{},"18":{},"175":{}},"sidebarParentCategories":{}}],["threshold",{"_index":1672,"title":{},"content":{"237":{}},"sidebarParentCategories":{}}],["through",{"_index":351,"title":{},"content":{"31":{},"38":{},"42":{},"77":{},"92":{},"212":{},"237":{}},"sidebarParentCategories":{}}],["throughout",{"_index":1434,"title":{},"content":{"212":{},"237":{}},"sidebarParentCategories":{}}],["throw",{"_index":1214,"title":{},"content":{"143":{},"156":{},"163":{},"179":{},"188":{},"218":{}},"sidebarParentCategories":{}}],["thrown",{"_index":1761,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["thu",{"_index":767,"title":{},"content":{"128":{}},"sidebarParentCategories":{}}],["ti",{"_index":1690,"title":{},"content":{"238":{}},"sidebarParentCategories":{}}],["time",{"_index":1706,"title":{},"content":{"238":{}},"sidebarParentCategories":{}}],["timestamp",{"_index":1362,"title":{},"content":{"179":{}},"sidebarParentCategories":{}}],["tlsv1.2",{"_index":518,"title":{},"content":{"51":{}},"sidebarParentCategories":{}}],["todo",{"_index":474,"title":{},"content":{"59":{},"99":{},"114":{},"115":{},"130":{},"148":{}},"sidebarParentCategories":{}}],["togeth",{"_index":100,"title":{},"content":{"1":{}},"sidebarParentCategories":{}}],["token",{"_index":322,"title":{},"content":{"28":{}},"sidebarParentCategories":{}}],["tool",{"_index":47,"title":{},"content":{"1":{},"26":{},"215":{},"240":{}},"sidebarParentCategories":{}}],["toolkit",{"_index":155,"title":{},"content":{"7":{},"12":{}},"sidebarParentCategories":{}}],["top",{"_index":79,"title":{},"content":{"1":{},"12":{}},"sidebarParentCategories":{}}],["trace(messag",{"_index":1015,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["traffic",{"_index":783,"title":{},"content":{"130":{}},"sidebarParentCategories":{}}],["transact",{"_index":896,"title":{},"content":{"106":{},"107":{},"108":{}},"sidebarParentCategories":{}}],["transactionauthoragr",{"_index":881,"title":{},"content":{"102":{},"108":{}},"sidebarParentCategories":{}}],["transform",{"_index":1453,"title":{},"content":{"213":{},"221":{}},"sidebarParentCategories":{}}],["transmit",{"_index":52,"title":{},"content":{"1":{},"147":{}},"sidebarParentCategories":{}}],["transport",{"_index":242,"title":{"130":{}},"content":{"26":{},"34":{},"130":{},"146":{},"149":{},"182":{},"186":{}},"sidebarParentCategories":{}}],["transportagent.registeroutboundtransport(new",{"_index":801,"title":{},"content":{"132":{}},"sidebarParentCategories":{}}],["transportsagent.registeroutboundtransport(new",{"_index":799,"title":{},"content":{"132":{}},"sidebarParentCategories":{}}],["tri",{"_index":588,"title":{},"content":{"70":{},"83":{},"151":{},"171":{},"211":{},"231":{}},"sidebarParentCategories":{}}],["trick",{"_index":769,"title":{},"content":{"128":{}},"sidebarParentCategories":{}}],["true",{"_index":590,"title":{},"content":{"70":{},"78":{},"83":{},"111":{},"116":{},"119":{},"123":{},"125":{},"146":{},"147":{},"149":{},"178":{},"182":{},"186":{},"220":{},"235":{},"238":{}},"sidebarParentCategories":{}}],["ts",{"_index":749,"title":{},"content":{"128":{},"186":{}},"sidebarParentCategories":{}}],["tsx",{"_index":750,"title":{},"content":{"128":{}},"sidebarParentCategories":{}}],["tunnel",{"_index":1133,"title":{},"content":{"182":{}},"sidebarParentCategories":{}}],["tutori",{"_index":87,"title":{"84":{}},"content":{"1":{},"129":{},"145":{},"146":{},"149":{},"181":{},"182":{},"232":{}},"sidebarParentCategories":{"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":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"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":{},"181":{},"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{}}}],["two",{"_index":168,"title":{},"content":{"8":{},"170":{},"221":{},"234":{},"238":{}},"sidebarParentCategories":{}}],["type",{"_index":211,"title":{"170":{},"214":{}},"content":{"24":{},"90":{},"94":{},"95":{},"96":{},"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":{},"129":{},"132":{},"136":{},"169":{},"211":{},"212":{},"214":{},"220":{},"237":{},"239":{},"242":{}},"sidebarParentCategories":{}}],["typescript",{"_index":61,"title":{},"content":{"1":{}},"sidebarParentCategories":{}}],["ubuntu",{"_index":1245,"title":{"140":{}},"content":{},"sidebarParentCategories":{}}],["ui",{"_index":350,"title":{},"content":{"31":{}},"sidebarParentCategories":{}}],["under",{"_index":1130,"title":{},"content":{"178":{},"182":{}},"sidebarParentCategories":{}}],["underli",{"_index":1021,"title":{},"content":{"92":{}},"sidebarParentCategories":{}}],["understand",{"_index":107,"title":{},"content":{"2":{}},"sidebarParentCategories":{}}],["unifi",{"_index":1588,"title":{"221":{}},"content":{"235":{}},"sidebarParentCategories":{}}],["unimodul",{"_index":757,"title":{},"content":{"128":{}},"sidebarParentCategories":{}}],["unimodules/cor",{"_index":760,"title":{},"content":{"128":{}},"sidebarParentCategories":{}}],["unimodules/react",{"_index":758,"title":{},"content":{"128":{}},"sidebarParentCategories":{}}],["uniqu",{"_index":142,"title":{},"content":{"7":{},"103":{},"108":{},"235":{}},"sidebarParentCategories":{}}],["unless",{"_index":1606,"title":{},"content":{"233":{}},"sidebarParentCategories":{}}],["unlock",{"_index":821,"title":{},"content":{"97":{}},"sidebarParentCategories":{}}],["unnam",{"_index":561,"title":{},"content":{"70":{}},"sidebarParentCategories":{}}],["unqualifi",{"_index":1555,"title":{},"content":{"219":{}},"sidebarParentCategories":{}}],["unrel",{"_index":1514,"title":{},"content":{"215":{},"240":{}},"sidebarParentCategories":{}}],["until",{"_index":1352,"title":{},"content":{"177":{},"212":{},"213":{},"220":{}},"sidebarParentCategories":{}}],["unzip",{"_index":634,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["up",{"_index":325,"title":{"129":{},"130":{},"146":{},"182":{}},"content":{"29":{},"36":{},"41":{},"42":{},"43":{},"61":{},"77":{},"79":{},"84":{},"94":{},"105":{},"121":{},"124":{},"130":{},"145":{},"176":{},"177":{},"181":{},"210":{},"230":{}},"sidebarParentCategories":{}}],["updat",{"_index":700,"title":{"165":{},"166":{},"174":{},"175":{},"176":{},"178":{},"214":{},"239":{}},"content":{"78":{},"125":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"210":{},"211":{},"212":{},"213":{},"215":{},"218":{},"219":{},"221":{},"230":{},"231":{},"232":{},"233":{},"237":{},"239":{},"240":{}},"sidebarParentCategories":{"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"210":{},"211":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{}}}],["updateassist",{"_index":1325,"title":{},"content":{"176":{},"177":{},"178":{}},"sidebarParentCategories":{}}],["updateassistant(ag",{"_index":1326,"title":{},"content":{"176":{},"177":{}},"sidebarParentCategories":{}}],["updateassistant.frameworkstoragevers",{"_index":1347,"title":{},"content":{"177":{}},"sidebarParentCategories":{}}],["updateassistant.getcurrentagentstoragevers",{"_index":1339,"title":{},"content":{"177":{}},"sidebarParentCategories":{}}],["updateassistant.initi",{"_index":1332,"title":{},"content":{"176":{},"177":{}},"sidebarParentCategories":{}}],["updateassistant.isuptod",{"_index":1333,"title":{},"content":{"176":{}},"sidebarParentCategories":{}}],["updateassistant.upd",{"_index":1334,"title":{},"content":{"176":{},"177":{}},"sidebarParentCategories":{}}],["upgrad",{"_index":1707,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["uppcj5apts7ot5wx25943f",{"_index":1564,"title":{},"content":{"219":{}},"sidebarParentCategories":{}}],["uri",{"_index":1508,"title":{},"content":{"214":{}},"sidebarParentCategories":{}}],["url",{"_index":603,"title":{},"content":{"81":{},"124":{},"136":{},"146":{},"147":{},"149":{},"182":{},"186":{},"213":{}},"sidebarParentCategories":{}}],["us",{"_index":58,"title":{"10":{},"27":{},"90":{},"133":{},"134":{},"136":{},"139":{},"150":{},"153":{},"187":{}},"content":{"1":{},"2":{},"5":{},"7":{},"9":{},"11":{},"12":{},"28":{},"29":{},"30":{},"31":{},"33":{},"34":{},"36":{},"38":{},"43":{},"48":{},"49":{},"50":{},"51":{},"53":{},"56":{},"57":{},"58":{},"59":{},"65":{},"66":{},"70":{},"74":{},"75":{},"83":{},"84":{},"87":{},"91":{},"94":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"105":{},"112":{},"113":{},"114":{},"115":{},"117":{},"118":{},"121":{},"122":{},"123":{},"124":{},"125":{},"127":{},"128":{},"129":{},"134":{},"146":{},"148":{},"149":{},"160":{},"169":{},"172":{},"178":{},"179":{},"181":{},"182":{},"186":{},"212":{},"213":{},"214":{},"215":{},"217":{},"218":{},"219":{},"220":{},"233":{},"234":{},"235":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{}},"sidebarParentCategories":{}}],["usag",{"_index":1090,"title":{"233":{}},"content":{"148":{},"149":{},"186":{},"219":{}},"sidebarParentCategories":{}}],["usedidkeyinprotocol",{"_index":1605,"title":{},"content":{"233":{}},"sidebarParentCategories":{}}],["uselegacydidsovprefix",{"_index":995,"title":{"123":{}},"content":{"123":{}},"sidebarParentCategories":{}}],["user",{"_index":78,"title":{},"content":{"1":{},"30":{},"94":{},"103":{},"124":{},"169":{},"184":{}},"sidebarParentCategories":{}}],["usr/lib/libindy.so",{"_index":535,"title":{},"content":{"51":{}},"sidebarParentCategories":{}}],["usr/local/lib",{"_index":489,"title":{},"content":{"59":{}},"sidebarParentCategories":{}}],["usr/local/lib/libindystrgpostgres.dylib",{"_index":1261,"title":{},"content":{"157":{}},"sidebarParentCategories":{}}],["usr/local/lib/libindystrgpostgres.so",{"_index":1258,"title":{},"content":{"144":{}},"sidebarParentCategories":{}}],["util",{"_index":1495,"title":{},"content":{"214":{}},"sidebarParentCategories":{}}],["uuid",{"_index":1803,"title":{},"content":{"243":{}},"sidebarParentCategories":{}}],["v0.3.0",{"_index":1209,"title":{},"content":{"188":{}},"sidebarParentCategories":{}}],["v0_1tov0_2",{"_index":1327,"title":{},"content":{"176":{},"177":{},"215":{}},"sidebarParentCategories":{}}],["v0_1tov0_2.mediationroleupdatestrategi",{"_index":1540,"title":{},"content":{"218":{}},"sidebarParentCategories":{}}],["v1",{"_index":238,"title":{},"content":{"26":{},"181":{},"185":{},"186":{},"187":{},"212":{},"217":{},"235":{},"237":{},"238":{},"241":{}},"sidebarParentCategories":{}}],["v1proposecredentialmessag",{"_index":1432,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["v1requestpresentationmessag",{"_index":1677,"title":{},"content":{"237":{}},"sidebarParentCategories":{}}],["v1xxxmessag",{"_index":1445,"title":{},"content":{"212":{},"237":{}},"sidebarParentCategories":{}}],["v2",{"_index":986,"title":{},"content":{"121":{},"181":{},"187":{},"212":{},"217":{},"235":{},"237":{}},"sidebarParentCategories":{}}],["v2proposecredentialmessag",{"_index":1433,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["v2requestpresentationmessag",{"_index":1678,"title":{},"content":{"237":{}},"sidebarParentCategories":{}}],["v2xxxmessag",{"_index":1446,"title":{},"content":{"212":{},"237":{}},"sidebarParentCategories":{}}],["v7a",{"_index":626,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["v7a/libindy.so",{"_index":642,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["v7a/libjnidispatch.so",{"_index":662,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["v8a",{"_index":624,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["v8a/libindy.so",{"_index":636,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["v8a/libjnidispatch.so",{"_index":660,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["valid",{"_index":231,"title":{},"content":{"25":{},"32":{},"114":{},"115":{},"126":{},"145":{},"181":{},"214":{}},"sidebarParentCategories":{}}],["validrespons",{"_index":1623,"title":{},"content":{"234":{}},"sidebarParentCategories":{}}],["valu",{"_index":544,"title":{},"content":{"70":{},"75":{},"96":{},"97":{},"101":{},"110":{},"127":{},"128":{},"184":{},"185":{},"186":{},"212":{},"213":{},"216":{},"221":{},"237":{}},"sidebarParentCategories":{}}],["vari",{"_index":1040,"title":{},"content":{"146":{},"182":{}},"sidebarParentCategories":{}}],["variabl",{"_index":540,"title":{},"content":{"75":{},"92":{}},"sidebarParentCategories":{}}],["variables:set",{"_index":1265,"title":{},"content":{"160":{}},"sidebarParentCategories":{}}],["variant",{"_index":1136,"title":{},"content":{"182":{}},"sidebarParentCategories":{}}],["variou",{"_index":256,"title":{},"content":{"17":{}},"sidebarParentCategories":{}}],["veri",{"_index":415,"title":{},"content":{"42":{},"77":{},"93":{},"148":{},"182":{}},"sidebarParentCategories":{}}],["verifi",{"_index":29,"title":{},"content":{"1":{},"2":{},"5":{},"7":{},"11":{},"24":{},"38":{},"84":{},"145":{},"148":{},"183":{}},"sidebarParentCategories":{}}],["verkey",{"_index":1565,"title":{},"content":{"219":{}},"sidebarParentCategories":{}}],["version",{"_index":306,"title":{"80":{},"169":{},"177":{}},"content":{"12":{},"78":{},"80":{},"83":{},"102":{},"108":{},"109":{},"125":{},"165":{},"166":{},"169":{},"171":{},"172":{},"174":{},"175":{},"176":{},"177":{},"178":{},"183":{},"186":{},"188":{},"210":{},"211":{},"212":{},"213":{},"214":{},"217":{},"219":{},"230":{},"231":{},"235":{},"237":{},"241":{}},"sidebarParentCategories":{}}],["versionstr",{"_index":1343,"title":{},"content":{"177":{}},"sidebarParentCategories":{}}],["via",{"_index":121,"title":{},"content":{"6":{},"7":{},"26":{},"53":{},"62":{},"98":{},"114":{},"115":{},"116":{},"182":{}},"sidebarParentCategories":{}}],["view",{"_index":72,"title":{},"content":{"1":{},"34":{},"212":{}},"sidebarParentCategories":{}}],["visual",{"_index":1262,"title":{},"content":{"159":{}},"sidebarParentCategories":{}}],["void",{"_index":580,"title":{},"content":{"70":{},"83":{},"91":{},"148":{},"149":{}},"sidebarParentCategories":{}}],["walk",{"_index":405,"title":{},"content":{"38":{}},"sidebarParentCategories":{}}],["wallet",{"_index":173,"title":{},"content":{"8":{},"9":{},"34":{},"95":{},"96":{},"97":{},"99":{},"100":{},"129":{},"132":{},"136":{},"146":{},"149":{},"176":{},"177":{},"179":{},"181":{},"182":{},"186":{},"188":{},"236":{}},"sidebarParentCategories":{}}],["wallet_schem",{"_index":1233,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["walletconfig",{"_index":778,"title":{"95":{}},"content":{"95":{},"129":{},"132":{},"136":{},"146":{},"149":{},"182":{},"186":{}},"sidebarParentCategories":{}}],["walletconfig.id",{"_index":819,"title":{"96":{}},"content":{"136":{}},"sidebarParentCategories":{}}],["walletconfig.key",{"_index":820,"title":{"97":{}},"content":{"98":{},"136":{},"149":{},"186":{}},"sidebarParentCategories":{}}],["walletconfig.keyderivationmethod",{"_index":826,"title":{"98":{}},"content":{},"sidebarParentCategories":{}}],["walletconfig.storag",{"_index":849,"title":{"99":{}},"content":{},"sidebarParentCategories":{}}],["walletid",{"_index":376,"title":{},"content":{"34":{},"136":{}},"sidebarParentCategories":{}}],["walletkey",{"_index":377,"title":{},"content":{"34":{}},"sidebarParentCategories":{}}],["walletschem",{"_index":1230,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["walletscheme.databaseperwallet",{"_index":1234,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["want",{"_index":417,"title":{},"content":{"42":{},"70":{},"77":{},"134":{},"148":{},"182":{},"183":{},"184":{},"213":{},"234":{},"238":{},"239":{}},"sidebarParentCategories":{}}],["warn",{"_index":1030,"title":{},"content":{"92":{}},"sidebarParentCategories":{}}],["warn(messag",{"_index":1018,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["way",{"_index":6,"title":{},"content":{"1":{},"28":{},"30":{},"33":{},"41":{},"70":{},"92":{},"130":{},"148":{},"165":{},"166":{},"174":{},"178":{},"214":{},"237":{},"238":{},"239":{}},"sidebarParentCategories":{}}],["we'll",{"_index":259,"title":{},"content":{"17":{},"38":{},"171":{},"176":{}},"sidebarParentCategories":{}}],["we'v",{"_index":1317,"title":{},"content":{"172":{},"212":{},"214":{},"239":{}},"sidebarParentCategories":{}}],["websit",{"_index":855,"title":{},"content":{"100":{}},"sidebarParentCategories":{}}],["websocket",{"_index":249,"title":{},"content":{"26":{},"41":{},"121":{},"130":{},"146":{},"149":{},"182":{},"186":{}},"sidebarParentCategories":{}}],["weekli",{"_index":275,"title":{},"content":{"21":{}},"sidebarParentCategories":{}}],["welcom",{"_index":1,"title":{},"content":{"1":{}},"sidebarParentCategories":{}}],["well",{"_index":63,"title":{},"content":{"1":{},"99":{},"213":{}},"sidebarParentCategories":{}}],["whether",{"_index":19,"title":{},"content":{"1":{},"52":{},"60":{},"67":{},"76":{},"105":{},"111":{},"114":{},"115":{},"116":{},"119":{},"123":{},"125":{},"176":{},"212":{},"218":{}},"sidebarParentCategories":{}}],["whose",{"_index":1631,"title":{},"content":{"235":{}},"sidebarParentCategories":{}}],["window",{"_index":425,"title":{"71":{},"158":{}},"content":{"61":{},"135":{},"159":{},"163":{},"164":{}},"sidebarParentCategories":{}}],["wire",{"_index":934,"title":{},"content":{"113":{}},"sidebarParentCategories":{}}],["without",{"_index":811,"title":{},"content":{"95":{},"169":{},"188":{},"212":{},"215":{},"240":{}},"sidebarParentCategories":{}}],["won't",{"_index":1025,"title":{},"content":{"92":{},"179":{},"213":{}},"sidebarParentCategories":{}}],["work",{"_index":8,"title":{},"content":{"1":{},"2":{},"3":{},"6":{},"21":{},"26":{},"38":{},"42":{},"61":{},"77":{},"83":{},"92":{},"128":{},"146":{},"165":{},"167":{},"168":{},"170":{},"182":{},"210":{},"212":{},"221":{},"230":{},"235":{},"237":{}},"sidebarParentCategories":{}}],["workflow",{"_index":1218,"title":{},"content":{"176":{},"188":{}},"sidebarParentCategories":{}}],["world",{"_index":189,"title":{},"content":{"9":{}},"sidebarParentCategories":{}}],["worri",{"_index":1407,"title":{},"content":{"212":{}},"sidebarParentCategories":{}}],["worth",{"_index":1725,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["wrapper",{"_index":305,"title":{},"content":{"12":{},"92":{}},"sidebarParentCategories":{}}],["written",{"_index":60,"title":{},"content":{"1":{}},"sidebarParentCategories":{}}],["wrong",{"_index":1536,"title":{},"content":{"218":{}},"sidebarParentCategories":{}}],["wsoutboundtransport",{"_index":785,"title":{},"content":{"130":{},"132":{},"146":{},"149":{},"182":{},"186":{}},"sidebarParentCategories":{}}],["wsoutboundtransport())agent.registeroutboundtransport(new",{"_index":791,"title":{},"content":{"130":{}},"sidebarParentCategories":{}}],["x86",{"_index":643,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["x86.jar",{"_index":663,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["x86.zip",{"_index":645,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["x86_64",{"_index":648,"title":{},"content":{"83":{},"163":{}},"sidebarParentCategories":{}}],["x86_64.zip",{"_index":650,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["xf",{"_index":658,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["y",{"_index":505,"title":{},"content":{"46":{}},"sidebarParentCategories":{}}],["yarn",{"_index":330,"title":{"48":{},"56":{},"65":{},"74":{}},"content":{"29":{},"37":{},"44":{},"48":{},"56":{},"61":{},"65":{},"74":{},"127":{},"128":{},"182":{},"210":{},"230":{}},"sidebarParentCategories":{}}],["ye",{"_index":702,"title":{},"content":{"78":{},"234":{}},"sidebarParentCategories":{}}],["you'll",{"_index":83,"title":{},"content":{"1":{},"239":{}},"sidebarParentCategories":{}}],["you'r",{"_index":412,"title":{},"content":{"42":{},"77":{},"128":{},"165":{},"167":{},"168":{},"210":{},"213":{},"230":{}},"sidebarParentCategories":{}}],["yourself",{"_index":37,"title":{},"content":{"1":{},"176":{},"177":{},"214":{}},"sidebarParentCategories":{}}],["yum",{"_index":508,"title":{},"content":{"46":{},"49":{},"50":{}},"sidebarParentCategories":{}}],["zeromq",{"_index":464,"title":{},"content":{"50":{},"58":{},"153":{}},"sidebarParentCategories":{}}],["zip",{"_index":1242,"title":{},"content":{"138":{},"152":{}},"sidebarParentCategories":{}}]],"pipeline":["stemmer"]}} \ No newline at end of file +{"documents":[{"id":1,"pageTitle":"","sectionTitle":"Intro","sectionRoute":"/guides/0.3","type":"docs"},{"id":2,"pageTitle":"","sectionTitle":"Concepts","sectionRoute":"/guides/0.3/concepts","type":"docs"},{"id":3,"pageTitle":"","sectionTitle":"📄️ Agents","sectionRoute":"/guides/0.3/concepts","type":"docs"},{"id":4,"pageTitle":"","sectionTitle":"📄️ DIDs and DIDComm","sectionRoute":"/guides/0.3/concepts","type":"docs"},{"id":5,"pageTitle":"","sectionTitle":"📄️ Platform and Environment","sectionRoute":"/guides/0.3/concepts","type":"docs"},{"id":6,"pageTitle":"","sectionTitle":"Agents","sectionRoute":"/guides/0.3/concepts/agents","type":"docs"},{"id":7,"pageTitle":"","sectionTitle":"Characteristics","sectionRoute":"/guides/0.3/concepts/agents#characteristics","type":"docs"},{"id":8,"pageTitle":"","sectionTitle":"Categories","sectionRoute":"/guides/0.3/concepts/agents#categories","type":"docs"},{"id":9,"pageTitle":"","sectionTitle":"Examples","sectionRoute":"/guides/0.3/concepts/agents#examples","type":"docs"},{"id":10,"pageTitle":"","sectionTitle":"Useful resources","sectionRoute":"/guides/0.3/concepts/agents#useful-resources","type":"docs"},{"id":11,"pageTitle":"","sectionTitle":"DIDs and DIDComm","sectionRoute":"/guides/0.3/concepts/did-and-didcomm","type":"docs"},{"id":12,"pageTitle":"","sectionTitle":"DIDs","sectionRoute":"/guides/0.3/concepts/did-and-didcomm#dids","type":"docs"},{"id":13,"pageTitle":"","sectionTitle":"DID Documents","sectionRoute":"/guides/0.3/concepts/did-and-didcomm#did-documents","type":"docs"},{"id":14,"pageTitle":"","sectionTitle":"DIDComm","sectionRoute":"/guides/0.3/concepts/did-and-didcomm#didcomm","type":"docs"},{"id":15,"pageTitle":"","sectionTitle":"Useful Resources","sectionRoute":"/guides/0.3/concepts/did-and-didcomm#useful-resources","type":"docs"},{"id":22,"pageTitle":"","sectionTitle":"Platform and Environment","sectionRoute":"/guides/0.3/concepts/platform-and-environment","type":"docs"},{"id":16,"pageTitle":"","sectionTitle":"The Aries JavaScript Ecosystem","sectionRoute":"/guides/0.3/ecosystem","type":"docs"},{"id":17,"pageTitle":"","sectionTitle":"Repositories","sectionRoute":"/guides/0.3/ecosystem#repositories","type":"docs"},{"id":18,"pageTitle":"","sectionTitle":"Documentation","sectionRoute":"/guides/0.3/ecosystem#documentation","type":"docs"},{"id":19,"pageTitle":"","sectionTitle":"Aries Framework JavaScript","sectionRoute":"/guides/0.3/ecosystem#aries-framework-javascript","type":"docs"},{"id":20,"pageTitle":"","sectionTitle":"Contributing in the Aries JS Ecosystem","sectionRoute":"/guides/0.3/ecosystem#contributing-in-the-aries-js-ecosystem","type":"docs"},{"id":21,"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":33,"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":34,"pageTitle":"","sectionTitle":"Setup","sectionRoute":"/guides/0.3/extensions/redux-store/setup","type":"docs"},{"id":35,"pageTitle":"","sectionTitle":"Installation","sectionRoute":"/guides/0.3/extensions/redux-store/setup#installation","type":"docs"},{"id":40,"pageTitle":"","sectionTitle":"REST API","sectionRoute":"/guides/0.3/extensions/rest","type":"docs"},{"id":36,"pageTitle":"","sectionTitle":"Setup","sectionRoute":"/guides/0.3/extensions/rest/setup","type":"docs"},{"id":37,"pageTitle":"","sectionTitle":"Quick Setup","sectionRoute":"/guides/0.3/extensions/rest/setup#quick-setup","type":"docs"},{"id":38,"pageTitle":"","sectionTitle":"Directly on computer","sectionRoute":"/guides/0.3/extensions/rest/setup#directly-on-computer","type":"docs"},{"id":39,"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":68,"pageTitle":"","sectionTitle":"Apple (Intel)","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-intel","type":"docs"},{"id":69,"pageTitle":"","sectionTitle":"NodeJS","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-intel","type":"docs"},{"id":70,"pageTitle":"","sectionTitle":"npm","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-intel#npm","type":"docs"},{"id":71,"pageTitle":"","sectionTitle":"yarn","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-intel#yarn","type":"docs"},{"id":72,"pageTitle":"","sectionTitle":"Indy-sdk","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-intel#indy-sdk","type":"docs"},{"id":73,"pageTitle":"","sectionTitle":"Confirm installation","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/apple-intel#confirm-installation","type":"docs"},{"id":54,"pageTitle":"","sectionTitle":"Linux","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux","type":"docs"},{"id":55,"pageTitle":"","sectionTitle":"NodeJS","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#nodejs","type":"docs"},{"id":56,"pageTitle":"","sectionTitle":"npm","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#npm","type":"docs"},{"id":57,"pageTitle":"","sectionTitle":"yarn","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#yarn","type":"docs"},{"id":58,"pageTitle":"","sectionTitle":"Libsodium","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#libsodium","type":"docs"},{"id":59,"pageTitle":"","sectionTitle":"Libzmq","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#libzmq","type":"docs"},{"id":60,"pageTitle":"","sectionTitle":"Indy-sdk","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#indy-sdk","type":"docs"},{"id":61,"pageTitle":"","sectionTitle":"Confirm installation","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/linux#confirm-installation","type":"docs"},{"id":62,"pageTitle":"","sectionTitle":"Windows","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/windows","type":"docs"},{"id":63,"pageTitle":"","sectionTitle":"NodeJS","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/windows#nodejs","type":"docs"},{"id":64,"pageTitle":"","sectionTitle":"npm","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/windows#npm","type":"docs"},{"id":65,"pageTitle":"","sectionTitle":"yarn","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/windows#yarn","type":"docs"},{"id":66,"pageTitle":"","sectionTitle":"Indy-sdk","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/windows#indy-sdk","type":"docs"},{"id":67,"pageTitle":"","sectionTitle":"Confirm installation","sectionRoute":"/guides/0.3/getting-started/installation/nodejs/windows#confirm-installation","type":"docs"},{"id":74,"pageTitle":"","sectionTitle":"React Native","sectionRoute":"/guides/0.3/getting-started/installation/react-native","type":"docs"},{"id":75,"pageTitle":"","sectionTitle":"Known Errors","sectionRoute":"/guides/0.3/getting-started/installation/react-native#known-errors","type":"docs"},{"id":76,"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":77,"pageTitle":"","sectionTitle":"Android","sectionRoute":"/guides/0.3/getting-started/installation/react-native/android","type":"docs"},{"id":78,"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":79,"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":80,"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":81,"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":83,"pageTitle":"","sectionTitle":"iOS","sectionRoute":"/guides/0.3/getting-started/installation/react-native/ios","type":"docs"},{"id":82,"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":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":174,"pageTitle":"","sectionTitle":"Create a connection","sectionRoute":"/guides/0.3/tutorials/create-a-connection","type":"docs"},{"id":175,"pageTitle":"","sectionTitle":"1. Setting up the agents","sectionRoute":"/guides/0.3/tutorials/create-a-connection#1-setting-up-the-agents","type":"docs"},{"id":176,"pageTitle":"","sectionTitle":"3. Receiving the invitation","sectionRoute":"/guides/0.3/tutorials/create-a-connection#3-receiving-the-invitation","type":"docs"},{"id":177,"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":178,"pageTitle":"","sectionTitle":"5. Full code snippets","sectionRoute":"/guides/0.3/tutorials/create-a-connection#5-full-code-snippets","type":"docs"},{"id":179,"pageTitle":"","sectionTitle":"Useful resources","sectionRoute":"/guides/0.3/tutorials/create-a-connection#useful-resources","type":"docs"},{"id":181,"pageTitle":"","sectionTitle":"Issue a credential","sectionRoute":"/guides/0.3/tutorials/issue-a-credential","type":"docs"},{"id":182,"pageTitle":"","sectionTitle":"1. Setting up the agents","sectionRoute":"/guides/0.3/tutorials/issue-a-credential#1-setting-up-the-agents","type":"docs"},{"id":183,"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":184,"pageTitle":"","sectionTitle":"3. Listening for incoming credentials","sectionRoute":"/guides/0.3/tutorials/issue-a-credential#3-listening-for-incoming-credentials","type":"docs"},{"id":185,"pageTitle":"","sectionTitle":"4. Issuing a credential","sectionRoute":"/guides/0.3/tutorials/issue-a-credential#4-issuing-a-credential","type":"docs"},{"id":186,"pageTitle":"","sectionTitle":"5. Full code snippets","sectionRoute":"/guides/0.3/tutorials/issue-a-credential#5-full-code-snippets","type":"docs"},{"id":187,"pageTitle":"","sectionTitle":"Useful resources","sectionRoute":"/guides/0.3/tutorials/issue-a-credential#useful-resources","type":"docs"},{"id":188,"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":144,"pageTitle":"","sectionTitle":"Postgres Setup for Linux","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/linux","type":"docs"},{"id":145,"pageTitle":"","sectionTitle":"Prerequisites","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/linux#prerequisites","type":"docs"},{"id":146,"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":147,"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":148,"pageTitle":"","sectionTitle":"Step 2: Build Postgres plugin","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/linux#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/linux#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/linux#step-22-building-postgres-plugin","type":"docs"},{"id":151,"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":137,"pageTitle":"","sectionTitle":"Postgres Setup for macOS","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/macos","type":"docs"},{"id":138,"pageTitle":"","sectionTitle":"Prerequisites","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/macos#prerequisites","type":"docs"},{"id":139,"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":140,"pageTitle":"","sectionTitle":"Step 2: Build Postgres plugin","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/macos#step-2-build-postgres-plugin","type":"docs"},{"id":141,"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":142,"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":143,"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":152,"pageTitle":"","sectionTitle":"Postgres Setup for windows","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/windows","type":"docs"},{"id":153,"pageTitle":"","sectionTitle":"Build Environment Prerequisites","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/windows#build-environment-prerequisites","type":"docs"},{"id":154,"pageTitle":"","sectionTitle":"Step 1: Getting dependencies","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/windows#step-1-getting-dependencies","type":"docs"},{"id":155,"pageTitle":"","sectionTitle":"Step 2: Build Postgres plugin","sectionRoute":"/guides/0.3/tutorials/postgres-database-nodejs/windows#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/windows#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/windows#step-22-building-postgres-plugin","type":"docs"},{"id":158,"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":168,"pageTitle":"","sectionTitle":"Update Assistant","sectionRoute":"/guides/0.3/updating/update-assistant","type":"docs"},{"id":169,"pageTitle":"","sectionTitle":"Update Strategies","sectionRoute":"/guides/0.3/updating/update-assistant#update-strategies","type":"docs"},{"id":170,"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":171,"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":172,"pageTitle":"","sectionTitle":"Automatically update on agent startup","sectionRoute":"/guides/0.3/updating/update-assistant#automatically-update-on-agent-startup","type":"docs"},{"id":173,"pageTitle":"","sectionTitle":"Backups","sectionRoute":"/guides/0.3/updating/update-assistant#backups","type":"docs"},{"id":198,"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":199,"pageTitle":"","sectionTitle":"Breaking Code Changes","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#breaking-code-changes","type":"docs"},{"id":200,"pageTitle":"","sectionTitle":"Credentials Module","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#credentials-module","type":"docs"},{"id":201,"pageTitle":"","sectionTitle":"Connections Module","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#connections-module","type":"docs"},{"id":202,"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":203,"pageTitle":"","sectionTitle":"Breaking Storage Changes","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#breaking-storage-changes","type":"docs"},{"id":204,"pageTitle":"","sectionTitle":"Credential Metadata","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#credential-metadata","type":"docs"},{"id":205,"pageTitle":"","sectionTitle":"Migrate Credential Record Properties","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#migrate-credential-record-properties","type":"docs"},{"id":206,"pageTitle":"","sectionTitle":"Mediation Record Role","sectionRoute":"/guides/0.3/updating/versions/0.1-to-0.2#mediation-record-role","type":"docs"},{"id":207,"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":208,"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":209,"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":231,"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":232,"pageTitle":"","sectionTitle":"Breaking Code Changes","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#breaking-code-changes","type":"docs"},{"id":233,"pageTitle":"","sectionTitle":"Agent creation","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#agent-creation","type":"docs"},{"id":234,"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":235,"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":236,"pageTitle":"","sectionTitle":"Discover Features Module","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#discover-features-module","type":"docs"},{"id":237,"pageTitle":"","sectionTitle":"Ledger Module","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#ledger-module","type":"docs"},{"id":238,"pageTitle":"","sectionTitle":"Proofs Module","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#proofs-module","type":"docs"},{"id":239,"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":240,"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":241,"pageTitle":"","sectionTitle":"Breaking Storage Changes","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#breaking-storage-changes","type":"docs"},{"id":242,"pageTitle":"","sectionTitle":"Migrate Proof Record Properties","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#migrate-proof-record-properties","type":"docs"},{"id":243,"pageTitle":"","sectionTitle":"Migrate Connection Record properties","sectionRoute":"/guides/0.3/updating/versions/0.2-to-0.3#migrate-connection-record-properties","type":"docs"},{"id":244,"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.056,4,5.09,5,2.31,6,1.498,7,2.662,8,2.001,9,2.461,10,2.662,11,2.005,12,2.968,13,2.662,14,2.968,15,4.666,16,2.968,17,1.375,18,1.93,19,1.533,20,3.287,21,4.666,22,2.304,23,2.968,24,3.287,25,2.657,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.863,36,4.782,37,2.31,38,4.256,39,2.662,40,2.09,41,1.571,42,4.782,43,1.498,44,2.461,45,2.968,46,2.31,47,2.31,48,2.968,49,2.662,50,1.375,51,2.662,52,2.662,53,1.228,54,2.968,55,0.542,56,2.968,57,2.968,58,0.938,59,1.653,60,4.666,61,4.666,62,2.119,63,2.461,64,2.968,65,2.461,66,1.61,67,2.532,68,1.61,69,1.533,70,0.996,71,1.042,72,2.461,73,1.804,74,2.968,75,2.662,76,2.968,77,1.804,78,2.005,79,2.662,80,2.662,81,2.005,82,2.968,83,4.186,84,1.699,85,2.968,86,1.61,87,0.549,88,2.662,89,1.571,90,2.461,91,1.699,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.31,102,0.682]],["sidebarParentCategories/1",[]],["title/2",[86,3.537]],["content/2",[2,1.87,3,2.774,8,2.12,22,1.974,24,3.482,25,2.543,29,2.913,31,1.078,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.103,106,3.79,107,4.943,108,2.753,109,4.943,110,3.339,111,2.753,112,2.553,113,4.596,114,2.83,115,3.03,116,5.297,117,2.495,118,3.103,119,3.004]],["sidebarParentCategories/2",[]],["title/3",[31,1.162,55,0.973]],["content/3",[2,1.949,8,3.385,111,4.397,112,4.078]],["sidebarParentCategories/3",[]],["title/4",[55,0.822,113,3.042,114,2.579]],["content/4",[113,5.6]],["sidebarParentCategories/4",[]],["title/5",[55,0.822,66,2.444,115,2.005]],["content/5",[2,1.701,3,2.851,22,2.521,24,4.445,25,2.99,29,3.72,58,1.301,67,3.425,68,3.425,69,4.131,70,2.684,71,2.808,106,3.516,115,2.81,116,6.226,117,3.185,118,3.963,119,3.835]],["sidebarParentCategories/5",[]],["title/6",[31,1.422]],["content/6",[2,1.846,8,3.09,31,1.572,111,4.014,112,3.722,120,4.867,121,4.379,122,4.97,123,4.021,124,6.463]],["sidebarParentCategories/6",[86,3.267]],["title/7",[125,5.846]],["content/7",[2,1.697,3,1.574,11,2.982,29,2.602,30,1.624,31,1.84,34,1.439,46,3.437,58,0.718,106,2.459,112,3.247,114,3.599,121,2.683,125,3.96,126,3.66,127,3.96,128,5.639,129,4.414,130,6.286,131,4.247,132,3.96,133,4.894,134,4.414,135,3.437,136,4.414,137,4.414,138,3.437,139,3.437,140,6.286,141,2.045,142,4.894,143,4.414,144,4.414,145,3.66,146,2.972,147,1.705,148,4.428,149,2.459,150,2.854,151,1.624,152,2.396,153,1.893,154,2.772,155,3.96,156,3.437,157,3.437,158,3.66,159,4.414,160,2.871,161,3.96,162,4.414,163,3.437,164,2.683]],["sidebarParentCategories/7",[86,3.267]],["title/8",[165,5.846]],["content/8",[2,1.723,3,1.905,31,2.134,34,1.741,35,4.504,106,2.976,165,7.264,166,4.159,167,7.264,168,3.943,169,4.394,170,6.434,171,4.504,172,2.827,173,2.475,174,3.246,175,4.792,176,5.342,177,5.342,178,5.342,179,6.434,180,3.246,181,3.706,182,5.342]],["sidebarParentCategories/8",[86,3.267]],["title/9",[96,2.398]],["content/9",[2,1.39,11,4.415,30,1.716,31,1.426,33,2.834,34,1.52,44,3.867,53,1.929,55,0.852,58,1.063,70,1.565,71,1.637,96,2.404,108,2.598,132,4.183,133,3.631,135,3.631,138,3.631,139,3.631,147,1.801,151,1.716,152,2.531,153,2,154,2.928,156,3.631,163,3.631,169,4.094,173,3.027,181,2.409,183,2.67,184,3.867,185,4.664,186,4.664,187,4.664,188,4.664,189,4.664,190,2.749,191,2.749,192,5.316,193,4.664,194,4.664,195,4.664,196,6.535,197,4.183,198,3.867,199,3.033,200,4.664,201,2,202,4.183,203,2.928,204,4.183]],["sidebarParentCategories/9",[86,3.267]],["title/10",[40,3.752,58,0.866]],["content/10",[2,1.621,31,1.663,42,6.319,102,1.75,124,6.836,205,5.368,206,6.836,207,2.101]],["sidebarParentCategories/10",[86,3.267]],["title/11",[113,3.598,114,3.05]],["content/11",[]],["sidebarParentCategories/11",[86,3.267]],["title/12",[113,4.403]],["content/12",[11,5.502,29,3.829,43,3.279,113,5.502,145,5.387,154,4.079,197,5.828,204,5.828,208,5.828,209,8.145,210,6.012,211,1.972,212,4.389,213,4.577,214,5.828,215,6.497,216,6.497,217,5.387,218,6.497]],["sidebarParentCategories/12",[86,3.267]],["title/13",[32,3.019]],["content/13",[20,4.403,32,3.682,59,4.428,141,2.896,149,3.482,152,3.392,153,2.681,191,3.684,192,4.065,219,4.614,220,4.867,221,4.065,222,4.614,223,5.184,224,5.608,225,3.684,226,3.392,227,4.403,228,5.599,229,4.551,230,4.403,231,4.065,232,5.184]],["sidebarParentCategories/13",[86,3.267]],["title/14",[114,3.732]],["content/14",[2,1.101,3,1.845,8,3.011,46,4.029,47,4.029,49,4.642,103,2.397,104,3.645,105,3.249,106,2.883,114,4.562,121,3.145,147,1.999,149,2.883,152,3.81,153,3.011,154,3.249,156,6.203,183,2.963,228,3.645,229,2.963,233,3.249,234,4.029,235,5.175,236,3.145,237,5.175,238,3.05,239,2.304,240,3.496,241,4.642,242,3.365,243,4.291,244,3.249,245,5.175,246,3.819,247,5.175,248,3.145,249,3.365,250,3.496,251,4.642,252,4.029,253,1.966]],["sidebarParentCategories/14",[86,3.267]],["title/15",[40,3.752,58,0.866]],["content/15",[114,4.63,254,8.333]],["sidebarParentCategories/15",[86,3.267]],["title/22",[66,2.89,115,2.372]],["content/22",[2,1.701,3,2.851,22,2.521,24,4.445,25,2.99,29,3.72,58,1.301,67,3.425,68,3.425,69,4.131,70,2.684,71,2.808,106,3.516,115,2.81,116,6.226,117,3.185,118,3.963,119,3.835]],["sidebarParentCategories/22",[86,3.267]],["title/16",[2,0.958,3,1.606,106,2.509]],["content/16",[2,1.469,3,2.462,59,3.846,92,4.664,93,3.567,103,3.198,106,3.846,160,4.49,203,4.335,255,3.953,256,6.904,257,8.458,258,6.904,259,5.375,260,4.863,261,4.335]],["sidebarParentCategories/16",[]],["title/17",[93,3.367]],["content/17",[2,1.998,3,3.201,25,3.083,31,1.446,70,2.224,71,2.327,93,3.424,126,5.495,169,3.596,262,3.795,263,6.627,264,3.596,265,4.028,266,3.07,267,5.16]],["sidebarParentCategories/17",[]],["title/18",[32,3.019]],["content/18",[2,1.954,3,3.035,25,3.182,31,1.522,32,3.232,38,5.15,70,2.341,71,2.45,169,3.786,239,3.107,266,3.232,267,5.432]],["sidebarParentCategories/18",[]],["title/19",[2,0.958,3,1.606,25,1.684]],["content/19",[2,1.799,3,3.016,25,2.581,43,3.485,92,4.664,106,3.846,147,2.667,153,2.961,164,4.196,201,2.961,253,2.623,268,2.838,269,5.096,270,5.096]],["sidebarParentCategories/19",[]],["title/20",[2,0.83,106,2.173,271,3.235,272,3.235]],["content/20",[2,1.918,8,2.871,25,2.503,67,3.633,167,6.005,262,3.833,267,5.212,272,5.551,273,5.212,274,6.694,275,6.694,276,9.428,277,6.694,278,4.716,279,6.694]],["sidebarParentCategories/20",[]],["title/21",[67,2.89,271,4.417]],["content/21",[2,1.247,43,2.959,67,3.182,75,5.259,91,4.368,150,2.662,233,3.681,267,4.565,268,2.56,271,7.031,273,4.565,280,5.153,281,7.628,282,7.628,283,5.259,284,5.863,285,2.059,286,5.863,287,5.863,288,5.863,289,4.862,290,5.863,291,4.862,292,5.863,293,4.327,294,5.863,295,4.13]],["sidebarParentCategories/21",[]],["title/23",[266,3.019]],["content/23",[2,1.917,3,2.819,7,3.374,25,2.956,31,1.221,53,2.314,55,1.351,58,0.612,70,2.242,79,3.374,91,2.154,93,2.89,96,1.384,112,1.943,122,3.825,123,2.592,155,3.374,192,2.446,229,2.154,248,2.286,255,2.154,261,2.362,262,2.154,266,3.427,268,1.877,269,2.776,296,3.119,297,3.4,298,3.374,299,2.776,300,3.761,301,3.761,302,3.761,303,2.645,304,4.81,305,5.992,306,1.341,307,3.119,308,3.374,309,3.638,310,3.119,311,2.154,312,2.776,313,3.374,314,4.705,315,3.941,316,1.708,317,3.498,318,4.014]],["sidebarParentCategories/23",[]],["title/24",[55,0.822,122,2.579,123,2.086]],["content/24",[317,3.871,318,4.443]],["sidebarParentCategories/24",[]],["title/25",[55,0.822,70,1.511,304,2.929]],["content/25",[317,3.871,318,4.443]],["sidebarParentCategories/25",[]],["title/26",[53,1.863,55,0.822,309,2.929]],["content/26",[317,3.871,318,4.443]],["sidebarParentCategories/26",[]],["title/27",[55,0.822,314,3.172,315,3.172]],["content/27",[317,3.871,318,4.443]],["sidebarParentCategories/27",[]],["title/28",[314,3.752,315,3.752]],["content/28",[6,3.414,31,1.476,43,3.414,58,1.1,120,4.569,181,3.494,268,2.27,303,3.198,314,6.382,315,6.382,316,3.071,319,3.767,320,6.763,321,6.763,322,6.763]],["sidebarParentCategories/28",[266,2.789]],["title/29",[323,2.696]],["content/29",[2,1.804,3,2.091,25,2.192,58,0.954,91,3.357,93,3.029,102,1.346,103,2.716,207,1.617,268,1.968,285,2.059,303,3.607,313,6.843,314,6.325,315,5.373,316,2.662,324,2.342,325,2.562,326,4.13,327,2.716,328,3.765,329,3.85,330,3.85]],["sidebarParentCategories/29",[266,1.782,314,2.709,315,2.709]],["title/33",[70,1.788,304,3.464]],["content/33",[6,3.155,31,1.364,43,3.155,58,1.017,70,2.933,78,4.223,112,3.229,181,4.107,190,4.685,192,4.065,268,2.098,303,2.956,304,5.684,331,4.614,332,4.867,333,7.131,334,4.065,335,5.184,336,6.251,337,4.403]],["sidebarParentCategories/33",[266,2.789]],["title/30",[323,2.696]],["content/30",[2,1.469,3,2.462,25,2.581,58,1.123,70,2.317,93,3.567,102,1.585,103,3.198,207,1.904,268,2.317,285,2.424,303,3.265,304,4.49,324,2.758,325,3.017,326,4.863,327,3.198]],["sidebarParentCategories/30",[70,1.291,266,1.782,304,2.501]],["title/31",[338,1.046]],["content/31",[2,1.743,70,2.202,91,3.757,199,4.267,303,3.103,304,5.812,311,4.693,323,2.714,328,4.045,329,4.137,330,4.137,339,2.621,340,4.622,341,4.267,342,3.472]],["sidebarParentCategories/31",[70,1.291,266,1.782,304,2.501]],["title/32",[53,2.203,309,3.464]],["content/32",[22,2.205,24,3.889,25,2.064,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,151,2.031,181,3.788,190,3.254,226,2.996,268,2.461,309,4.768,333,6.577,343,6.178,344,4.321,345,4.577,346,2.168,347,4.298,348,2.852,349,5.52,350,5.52,351,3.729]],["sidebarParentCategories/32",[266,2.789]],["title/34",[323,2.696]],["content/34",[2,1.469,3,2.462,25,2.581,53,2.856,58,1.123,93,3.567,102,1.585,103,3.198,207,1.904,268,2.317,285,2.424,303,3.265,309,4.49,324,2.758,325,3.017,326,4.863,327,3.198]],["sidebarParentCategories/34",[53,1.591,266,1.782,309,2.501]],["title/35",[338,1.046]],["content/35",[2,1.743,53,3.697,91,3.757,199,4.267,303,3.103,308,7.352,309,4.267,323,2.714,328,4.045,329,4.137,330,4.137,339,2.621,340,4.622,341,4.267,342,3.472]],["sidebarParentCategories/35",[53,1.591,266,1.782,309,2.501]],["title/40",[122,3.05,123,2.467]],["content/40",[2,1.363,3,1.617,4,3.531,6,2.289,9,3.761,10,4.069,11,3.064,17,2.101,18,2.95,24,4.514,25,1.696,30,1.669,31,1.762,34,1.478,43,3.234,46,3.531,55,1.357,67,2.461,102,1.042,111,2.527,112,3.31,122,4.877,123,3.442,150,2.06,151,1.669,181,3.31,226,2.461,229,4.254,248,2.756,249,2.95,261,4.024,268,2.494,325,1.982,334,2.95,341,2.95,352,2.343,353,4.536,354,4.536,355,4.536,356,2.145,357,3.761,358,2.673,359,3.761,360,4.536,361,2.597,362,4.069]],["sidebarParentCategories/40",[266,2.789]],["title/36",[323,2.696]],["content/36",[25,2.636,66,3.827,69,3.643,91,4.037,102,1.619,103,3.267,207,1.944,231,4.586,323,2.917,327,3.267,338,1.132,363,3.674,364,3.732,365,2.438]],["sidebarParentCategories/36",[122,2.202,123,1.782,266,1.782]],["title/37",[323,2.203,366,5.327]],["content/37",[6,3.803,58,1.225,102,1.73,120,5.089,122,4.314,123,3.49,359,6.247,367,6.247,368,7.534]],["sidebarParentCategories/37",[122,2.202,123,1.782,266,1.782]],["title/38",[120,3.598,369,4.147]],["content/38",[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,141,2.223,172,2.54,173,3.088,174,2.916,229,4.386,242,4.335,248,4.051,268,2.237,310,3.979,332,3.736,338,1.07,341,3.121,342,2.54,370,3.542,371,3.736,372,3.38,373,3.38,374,2.604,375,2.318,376,4.305,377,4.799,378,4.799,379,4.799,380,3.121,381,3.736,382,3.121,383,3.38,384,4.305,385,4.799,386,3.121,387,4.799,388,4.799]],["sidebarParentCategories/38",[122,2.202,123,1.782,266,1.782]],["title/39",[356,3.082]],["content/39",[2,1.382,33,4.95,38,4.795,102,1.492,122,3.72,250,5.502,264,3.526,268,2.18,310,5.387,342,3.438,356,3.072,359,6.754,372,4.577,373,4.577,389,4.664,390,3.619,391,6.497,392,4.577,393,4.389]],["sidebarParentCategories/39",[122,2.202,123,1.782,266,1.782]],["title/41",[102,1.223,207,1.469]],["content/41",[2,0.992,3,1.663,8,2,25,1.743,29,2.749,34,1.52,50,2.16,55,1.193,58,0.759,62,2.118,70,2.193,71,2.294,89,2.468,102,1.071,103,2.16,110,3.151,118,2.928,119,2.834,169,2.531,174,2.834,190,3.851,199,3.033,233,2.928,259,3.631,260,3.285,261,2.928,318,2.531,323,2.703,324,1.863,338,1.382,351,3.151,363,3.506,364,2.468,365,2.26,394,2.928,395,4.664,396,2.16,397,1.983,398,3.225,399,3.442,400,6.535,401,2.834,402,3.867,403,1.589,404,3.285,405,4.664,406,2.928]],["sidebarParentCategories/41",[]],["title/42",[55,0.973,338,0.855]],["content/42",[318,4.443,406,5.14]],["sidebarParentCategories/42",[]],["title/43",[55,0.973,323,2.203]],["content/43",[233,4.898,338,1.252,363,3.902,364,4.128,365,2.697]],["sidebarParentCategories/43",[]],["title/44",[338,1.046]],["content/44",[2,1.028,3,1.724,8,2.873,18,3.144,22,2.677,34,1.575,62,2.195,70,1.622,71,1.697,73,2.938,106,3.732,115,2.153,169,2.623,174,2.938,221,3.144,285,2.352,291,4.008,323,2.771,325,2.927,327,2.239,338,1.235,341,3.144,351,3.266,363,3.74,365,2.871,396,2.239,397,1.467,399,3.568,402,5.556,404,3.405,407,4.336,408,4.336,409,3.568,410,3.568,411,3.764,412,3.035,413,4.336,414,2.849,415,3.568,416,4.008,417,3.836]],["sidebarParentCategories/44",[102,1.078,207,1.294]],["title/45",[397,1.978]],["content/45",[2,1.127,3,1.889,8,2.273,25,1.981,62,3.239,66,2.876,102,1.217,198,4.394,239,2.36,260,3.733,261,3.327,280,3.58,324,2.117,325,2.315,329,2.675,330,2.675,338,1.446,363,2.273,365,1.832,397,1.608,403,2.43,418,4.126,419,5.299,420,5.299,421,4.126,422,4.394,423,4.753,424,3.327,425,3.58,426,5.025,427,4.126,428,4.753,429,3.911,430,5.299,431,5.299,432,3.446,433,3.911,434,1.461,435,1.861]],["sidebarParentCategories/45",[102,0.883,207,1.06,338,0.617]],["title/46",[426,3.752,428,4.778]],["content/46",[58,1.007,62,2.812,103,2.869,104,4.362,121,3.763,338,1.472,364,3.277,369,4.821,390,3.45,403,2.109,426,4.362,436,6.193,437,5.555,438,8.702,439,6.193,440,6.193,441,3.888,442,4.027,443,5.555,444,5.555,445,4.571,446,5.135,447,5.555]],["sidebarParentCategories/46",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/47",[397,1.978]],["content/47",[3,2.541,115,3.174,174,4.332,338,1.144,342,3.772,397,2.617,441,4.475,448,5.261,449,5.549,450,5.549,451,5.549,452,5.549,453,5.261]],["sidebarParentCategories/47",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/48",[329,3.29]],["content/48",[303,3.562,338,1.21,340,5.307,344,4.44,397,2.286,429,5.56,454,4.899,455,5.307,456,5.56]],["sidebarParentCategories/48",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/49",[330,3.29]],["content/49",[58,1.198,66,3.997,253,2.799,329,4.439,330,4.439,338,1.412,457,4.217,458,5.437]],["sidebarParentCategories/49",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/50",[432,4.238]],["content/50",[58,1.198,232,6.108,338,1.183,432,5.72,434,2.031,435,2.586,441,4.625,459,6.607,460,6.607,461,6.108]],["sidebarParentCategories/50",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/51",[433,4.81]],["content/51",[58,1.212,153,3.194,338,1.196,433,5.498,434,2.054,435,2.615,441,4.677,462,6.682,463,6.682,464,6.176]],["sidebarParentCategories/51",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/52",[434,1.469,435,1.87]],["content/52",[2,0.958,3,1.606,22,1.8,25,1.684,58,0.733,110,3.043,112,2.327,147,1.74,158,3.735,160,2.93,164,2.738,171,2.828,239,2.006,244,2.828,250,3.043,270,3.325,297,5.163,328,2.223,339,1.8,347,3.507,365,1.558,390,2.509,396,2.954,411,3.507,424,2.828,434,2.041,435,2.599,442,4.147,461,3.735,465,3.325,466,2.384,467,3.325,468,4.147,469,3.507,470,3.735,471,4.648,472,4.041,473,3.325,474,3.173,475,3.507,476,4.308,477,4.505,478,4.505,479,3.325,480,3.173,481,2.579,482,3.325,483,2.828,484,3.325,485,1.74,486,3.325,487,3.325,488,4.505,489,4.505]],["sidebarParentCategories/52",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/53",[338,0.855,370,3.931]],["content/53",[2,1.484,19,3.604,327,3.232,338,1.367,342,3.692,365,2.413,372,4.915,373,4.915,390,3.887,434,2.347,435,2.45,468,4.537,490,3.995,491,5.432]],["sidebarParentCategories/53",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/68",[426,3.752,427,4.147]],["content/68",[62,2.979,103,3.04,104,4.622,121,3.988,338,1.503,364,3.472,369,5.108,390,3.655,403,2.235,426,4.622,427,5.108,441,4.12,442,4.267,443,5.886,444,5.886,445,4.843,446,5.441,447,5.886,492,6.562]],["sidebarParentCategories/68",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/69",[397,1.978]],["content/69",[3,2.541,115,3.174,174,4.332,338,1.144,342,3.772,397,2.617,441,4.475,448,5.261,449,5.549,450,5.549,451,5.549,452,5.549,453,5.261]],["sidebarParentCategories/69",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/70",[329,3.29]],["content/70",[303,3.562,338,1.21,340,5.307,344,4.44,397,2.286,429,5.56,454,4.899,455,5.307,456,5.56]],["sidebarParentCategories/70",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/71",[330,3.29]],["content/71",[58,1.198,66,3.997,253,2.799,329,4.439,330,4.439,338,1.412,457,4.217,458,5.437]],["sidebarParentCategories/71",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/72",[434,1.469,435,1.87]],["content/72",[2,1.305,3,2.188,25,2.294,58,0.998,110,4.145,112,3.169,147,2.37,164,3.729,244,3.852,253,2.331,270,4.528,338,1.261,371,4.776,403,2.09,434,2.166,435,2.758,441,4.932,465,4.528,466,3.247,467,4.528,468,3.99,469,4.776,493,3.99,494,6.135,495,6.135]],["sidebarParentCategories/72",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/73",[338,0.855,370,3.931]],["content/73",[2,1.484,19,3.604,327,3.232,338,1.367,342,3.692,365,2.413,372,4.915,373,4.915,390,3.887,434,2.347,435,2.45,468,4.537,490,3.995,491,5.432]],["sidebarParentCategories/73",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/54",[424,4.092]],["content/54",[62,3.421,103,3.49,104,5.307,147,2.91,338,1.21,403,2.566,424,4.73,448,5.56,467,5.56]],["sidebarParentCategories/54",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/55",[397,1.978]],["content/55",[3,2.036,55,1.369,115,2.543,174,3.471,329,2.883,338,1.204,342,3.022,397,2.697,424,3.586,445,5.534,446,4.736,448,4.215,449,4.446,450,4.446,451,4.446,452,4.446,453,4.215,496,4.736,497,4.446,498,4.736,499,4.736,500,4.446,501,4.736,502,5.711,503,7.498,504,4.023,505,5.711,506,5.711,507,5.711,508,4.736]],["sidebarParentCategories/55",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/56",[329,3.29]],["content/56",[303,3.562,338,1.21,340,5.307,344,4.44,397,2.286,429,5.56,454,4.899,455,5.307,456,5.56]],["sidebarParentCategories/56",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/57",[330,3.29]],["content/57",[58,1.198,66,3.997,253,2.799,329,4.439,330,4.439,338,1.412,457,4.217,458,5.437]],["sidebarParentCategories/57",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/58",[432,4.238]],["content/58",[58,1.036,232,5.283,338,1.292,424,4.001,432,6.212,434,1.757,435,2.237,459,5.716,460,5.716,461,5.283,496,5.283,497,4.961,498,5.283,499,5.283,500,4.961,501,5.283,504,4.488,508,5.283,509,5.283,510,5.716]],["sidebarParentCategories/58",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/59",[433,4.81]],["content/59",[58,1.046,153,2.759,338,1.3,424,4.04,432,4.184,433,4.749,434,1.774,435,2.259,462,5.771,463,5.771,464,6.712,496,5.335,497,5.009,498,5.335,499,5.335,500,5.009,501,5.335,504,4.532,508,5.335,509,5.335,510,5.771,511,5.771]],["sidebarParentCategories/59",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/60",[434,1.469,435,1.87]],["content/60",[2,0.848,3,1.422,18,2.594,22,3.04,25,1.491,55,0.728,58,0.649,93,2.06,110,2.694,112,2.06,147,1.54,149,2.222,158,3.307,164,2.424,166,3.105,171,2.504,234,3.105,239,1.776,244,2.504,248,2.424,253,1.515,260,2.809,270,2.944,297,3.55,338,0.938,339,1.593,365,1.379,390,2.222,396,1.848,414,2.351,434,2.098,435,2.672,445,2.944,465,2.944,466,2.111,467,4.312,468,2.594,471,2.504,473,4.312,481,2.284,482,4.312,484,4.312,486,2.944,487,2.944,512,3.988,513,2.351,514,3.988,515,6.31,516,3.578,517,3.988,518,3.988,519,3.988,520,3.988,521,3.988,522,3.988,523,1.776,524,3.668,525,3.988,526,2.694,527,2.944,528,3.988,529,2.944,530,3.988,531,3.578,532,2.504,533,2.424,534,3.988,535,3.988]],["sidebarParentCategories/60",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/61",[338,0.855,370,3.931]],["content/61",[2,1.484,19,3.604,327,3.232,338,1.367,342,3.692,365,2.413,372,4.915,373,4.915,390,3.887,434,2.347,435,2.45,468,4.537,490,3.995,491,5.432]],["sidebarParentCategories/61",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/62",[425,4.403]],["content/62",[]],["sidebarParentCategories/62",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/63",[397,1.978]],["content/63",[3,2.569,115,3.209,174,4.379,239,3.209,342,3.813,397,2.186,448,5.318,449,5.609,450,5.609,451,5.609,452,5.609,453,5.318,471,4.524]],["sidebarParentCategories/63",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/64",[329,3.29]],["content/64",[303,3.562,338,1.21,340,5.307,344,4.44,397,2.286,429,5.56,454,4.899,455,5.307,456,5.56]],["sidebarParentCategories/64",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/65",[330,3.29]],["content/65",[58,1.198,66,3.997,253,2.799,329,4.439,330,4.439,338,1.412,457,4.217,458,5.437]],["sidebarParentCategories/65",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/66",[434,1.469,435,1.87]],["content/66",[2,1.215,3,2.036,25,2.135,58,0.929,110,3.858,112,2.95,115,2.543,147,2.206,164,3.471,171,3.586,239,2.543,244,3.586,260,4.023,270,4.215,297,4.557,411,4.446,422,6.218,434,1.575,435,2.005,465,4.215,466,3.022,470,4.736,471,3.586,536,5.123,537,4.419,538,5.711,539,5.123,540,6.726,541,2.135,542,3.586,543,5.711,544,2.95,545,3.858]],["sidebarParentCategories/66",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/67",[338,0.855,370,3.931]],["content/67",[2,1.484,19,3.604,327,3.232,338,1.367,342,3.692,365,2.413,372,4.915,373,4.915,390,3.887,434,2.347,435,2.45,468,4.537,490,3.995,491,5.432]],["sidebarParentCategories/67",[102,0.748,207,0.898,338,0.523,397,0.988]],["title/74",[70,1.788,71,1.87]],["content/74",[22,2.758,66,3.747,69,3.567,70,2.317,71,2.424,296,5.725,323,2.856,338,1.109,403,2.352,434,1.904,435,2.424,546,4.196,547,4.863,548,5.714,549,6.585]],["sidebarParentCategories/74",[102,0.883,207,1.06,338,0.617]],["title/75",[490,3.05,550,5.327]],["content/75",[]],["sidebarParentCategories/75",[102,0.883,207,1.06,338,0.617]],["title/76",[201,1.32,323,1.273,328,1.519,548,2.079,551,3.077,552,2.76]],["content/76",[6,2.05,38,2.998,55,1.813,58,0.963,91,2.326,95,2.098,150,1.844,153,1.742,223,3.368,225,2.394,297,2.468,303,1.921,352,2.098,365,2.047,417,2.326,483,2.55,490,2.326,544,2.098,545,4.719,552,5.311,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,4.062,563,2.394,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,4.062,574,5.311,575,2.744,576,3.162,577,3.644,578,3.162,579,3.644,580,2.998,581,3.644,582,3.644,583,4.062,584,4.062,585,1.921,586,4.062,587,4.062,588,2.861,589,3.644,590,2.05,591,3.644,592,3.644,593,3.644,594,3.644]],["sidebarParentCategories/76",[102,0.883,207,1.06,338,0.617]],["title/77",[548,4.403]],["content/77",[70,2.472,71,2.586,117,3.718,184,6.108,285,2.586,325,3.218,339,2.942,365,2.547,414,4.341,548,4.976,595,6.108]],["sidebarParentCategories/77",[70,0.948,71,0.992,102,0.649,207,0.779,338,0.454]],["title/78",[285,1.37,306,1.391,435,1.37,596,3.499]],["content/78",[55,1.832,105,4.246,283,6.066,306,2.411,328,3.338,435,2.374,596,6.066,597,7.491,598,8.351,599,6.763,600,6.763]],["sidebarParentCategories/78",[70,0.948,71,0.992,102,0.649,207,0.779,338,0.454]],["title/79",[93,2.015,328,1.925,601,3.499,602,3.499]],["content/79",[55,1.809,93,4.01,105,3.782,171,3.782,225,3.55,328,2.973,365,2.083,482,4.446,597,6.963,601,5.403,602,7.705,603,4.874,604,3.661,605,6.023,606,3.112,607,6.023,608,5.403,609,6.023,610,6.023]],["sidebarParentCategories/79",[70,0.948,71,0.992,102,0.649,207,0.779,338,0.454]],["title/80",[297,2.371,403,1.329,606,2.015,611,3.235]],["content/80",[4,5.32,55,1.734,71,2.399,73,4.152,111,3.806,221,4.444,297,4.152,403,2.327,434,1.884,435,2.399,606,3.53,611,5.666,612,6.833,613,6.129,614,6.833]],["sidebarParentCategories/80",[70,0.948,71,0.992,102,0.649,207,0.779,338,0.454]],["title/81",[434,0.949,435,1.208,548,2.324,606,1.777,615,3.44]],["content/81",[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,147,0.73,150,0.858,157,1.471,171,2.023,212,1.277,221,1.229,225,1.114,253,1.224,297,2.559,306,0.674,327,0.876,328,1.59,339,0.755,346,1.954,363,0.811,365,1.114,390,1.053,394,1.187,403,0.644,434,1.161,435,1.479,445,5.044,466,1,468,1.229,471,1.187,482,3.108,484,2.378,485,0.73,487,5.044,516,1.695,548,4.617,574,1.695,575,1.277,576,1.471,577,1.695,578,1.471,579,1.695,580,1.395,581,1.695,582,1.695,588,1.331,589,1.695,590,1.626,591,1.695,592,1.695,593,1.695,594,1.695,611,1.567,613,1.695,616,1.89,617,1.695,618,1.89,619,5.583,620,1.89,621,1.695,622,1.89,623,4.211,624,4.211,625,4.211,626,4.211,627,1.89,628,1.89,629,1.89,630,3.222,631,1.89,632,3.672,633,4.211,634,4.975,635,1.89,636,1.89,637,6.835,638,3.222,639,1.89,640,4.211,641,1.89,642,1.89,643,5.583,644,1.89,645,4.211,646,1.89,647,1.89,648,2.89,649,1.89,650,4.211,651,1.89,652,1.89,653,4.975,654,4.975,655,4.975,656,4.211,657,4.975,658,4.975,659,6.835,660,1.89,661,4.211,662,1.89,663,4.211,664,1.89,665,4.211,666,1.89,667,1.695,668,3.222,669,1.89,670,1.89,671,1.89,672,1.89,673,1.89,674,1.89,675,1.89,676,4.463,677,1.695,678,1.395,679,1.695,680,0.782,681,1.89,682,1.695,683,1.695,684,1.89,685,1.89,686,1.89,687,1.89,688,1.89,689,1.695]],["sidebarParentCategories/81",[70,0.948,71,0.992,102,0.649,207,0.779,338,0.454]],["title/83",[549,5.074]],["content/83",[22,1.247,55,1.595,68,1.694,70,2.443,71,2.556,91,2.78,102,0.717,190,2.861,212,4.024,240,3.28,253,1.845,262,1.788,285,1.096,295,2.199,297,1.897,306,1.731,324,1.247,328,2.396,338,0.956,356,1.476,365,1.679,398,2.396,403,1.063,434,1.339,435,1.705,467,2.304,473,5.373,485,1.206,527,2.304,529,2.304,541,1.167,545,2.109,547,3.42,549,5.232,590,3.007,621,4.355,676,6.914,677,2.8,679,2.8,680,2.464,682,2.8,683,2.8,689,2.8,690,2.8,691,3.122,692,4.855,693,1.541,694,3.122,695,2.109,696,2.43,697,3.122,698,3.122,699,5.957,700,0.69,701,3.122,702,2.8,703,3.122,704,3.122,705,3.122,706,2.304,707,1.84,708,3.122,709,2.8,710,3.122,711,4.026,712,2.199,713,2.589,714,4.855,715,3.122,716,2.704,717,2.589,718,3.122,719,1.84,720,2.199,721,4.855,722,4.855]],["sidebarParentCategories/83",[70,0.948,71,0.992,102,0.649,207,0.779,338,0.454]],["title/82",[338,1.046]],["content/82",[2,1.35,3,1.595,8,2.722,18,2.91,22,2.535,34,1.458,62,2.032,70,1.501,71,1.571,73,2.719,106,3.535,115,1.992,169,2.428,174,2.719,221,2.91,285,2.228,291,3.71,303,2.116,323,2.625,324,1.787,325,2.773,327,2.073,338,1.361,341,2.91,351,3.023,363,3.775,365,2.93,396,2.073,397,2.238,399,3.302,402,5.262,404,3.152,407,4.013,408,4.013,409,3.302,410,3.302,411,3.483,412,2.809,413,4.013,414,2.637,415,3.302,416,3.71,417,3.634,723,4.474,724,3.023]],["sidebarParentCategories/82",[]],["title/89",[323,2.696]],["content/89",[66,3.868,69,3.682,70,2.392,71,2.502,91,4.081,103,3.302,231,4.635,233,4.475,323,2.948,338,1.144,363,3.698,364,3.772,365,2.465]],["sidebarParentCategories/89",[102,1.078,207,1.294]],["title/90",[253,1.711,338,0.723,403,1.534]],["content/90",[2,1.969,58,0.937,69,2.976,70,2.993,71,2.952,106,3.209,253,2.189,311,3.299,328,3.722,330,3.806,338,0.925,396,2.669,403,1.962,434,1.588,435,2.023,544,2.976,725,4.777,726,5.168,727,6.765,728,5.168,729,5.168,730,5.761,731,5.168,732,5.761]],["sidebarParentCategories/90",[102,1.078,207,1.294]],["title/91",[323,2.203,513,3.139]],["content/91",[8,2.023,17,2.185,34,1.537,36,2.494,55,1.696,58,1.071,68,3.574,69,1.554,70,2.21,71,2.665,91,1.722,93,1.554,111,1.676,190,2.78,223,3.911,253,1.143,255,1.722,266,2.185,272,2.494,293,2.22,323,1.951,324,2.324,328,2.328,329,2.936,330,2.936,346,1.181,389,2.7,403,1.607,409,2.22,410,2.22,412,2.961,457,1.722,476,2.032,483,1.889,484,4.861,513,2.78,544,1.554,546,1.828,578,2.342,617,4.231,693,1.485,720,2.119,731,2.698,733,3.008,734,3.008,735,3.008,736,3.008,737,3.008,738,1.394,739,5.818,740,3.008,741,1.828,742,3.008,743,3.008,744,3.008,745,1.223,746,2.7,747,3.008,748,2.342,749,2.698,750,3.008,751,3.008,752,3.008,753,5.818,754,3.008,755,2.698,756,2.032,757,3.008,758,4.716,759,4.231,760,4.716,761,3.008,762,5.818,763,3.008,764,3.008,765,4.716,766,3.008,767,3.008,768,2.494,769,3.008]],["sidebarParentCategories/91",[102,1.078,207,1.294]],["title/92",[31,0.983,285,1.581,325,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.687,141,2.371,147,1.291,173,2.371,190,1.97,211,1.553,213,2.355,221,2.174,239,1.489,252,2.603,285,1.174,311,1.914,323,1.383,346,2.01,356,3.295,364,1.769,365,1.156,374,2.777,375,3.365,397,1.014,403,1.743,442,2.174,541,1.913,745,2.832,770,2.999,771,1.914,772,3.343,773,3.343,774,4.375,775,5.143,776,3.781,777,2.999,778,3.214,779,4.244,780,2.195,781,3.343,782,2.999]],["sidebarParentCategories/92",[102,1.078,207,1.294]],["title/93",[242,2.929,285,1.581,325,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,147,1.74,169,2.444,242,5.525,248,2.738,249,2.93,253,2.423,260,3.173,285,2.599,298,4.041,312,3.325,325,1.968,346,2.505,348,3.294,361,2.579,380,2.93,381,3.507,382,4.814,383,4.492,457,2.579,474,3.173,770,4.041,775,3.325,783,4.505,784,5.214,785,4.492,786,4.492,787,4.505,788,4.041,789,3.735,790,4.505,791,4.505]],["sidebarParentCategories/93",[102,1.078,207,1.294]],["title/94",[31,1.162,50,2.467]],["content/94",[31,1.857,50,3.232,55,1.791,403,2.377,541,2.608,745,2.836,780,2.992,792,6.977,793,3.995,794,3.443,795,6.259]],["sidebarParentCategories/94",[102,1.078,207,1.294]],["title/95",[95,2.327,392,3.172,796,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,141,2.233,164,2.929,173,2.233,211,1.462,253,1.831,311,1.771,319,2.685,346,1.893,374,2.615,375,3.229,380,2.011,381,2.408,382,3.134,397,0.938,403,1.642,541,1.802,724,2.089,745,2.717,774,4.198,775,4.935,776,3.628,778,3.026,779,3.996,782,2.774,784,3.395,785,3.395,786,3.395,788,2.774,793,2.76,794,2.379,795,4.323,797,4.82,798,4.82,799,3.093,800,4.82,801,3.093,802,3.093]],["sidebarParentCategories/95",[102,1.078,207,1.294]],["title/96",[40,3.752,58,0.866]],["content/96",[2,1.679,31,1.722,42,6.545,205,5.56,206,7.081]],["sidebarParentCategories/96",[102,1.078,207,1.294]],["title/84",[87,1.205]],["content/84",[2,1.56,29,3.254,30,2.697,31,1.796,34,2.389,55,1.602,58,1.193,103,3.396,150,3.329,151,2.697,202,4.952,226,2.996,236,3.355,255,3.161,285,1.938,317,2.61,318,4.467,325,2.412,364,2.921,365,1.909,706,4.074,745,2.244,803,4.298,804,4.298,805,1.748,806,2.283,807,4.298]],["sidebarParentCategories/84",[]],["title/85",[31,0.983,55,0.822,745,1.83]],["content/85",[317,3.871,318,4.443]],["sidebarParentCategories/85",[]],["title/86",[34,1.468,55,0.822,151,1.657]],["content/86",[103,3.701,318,4.335,364,4.228,365,2.763]],["sidebarParentCategories/86",[]],["title/87",[30,1.657,55,0.822,150,2.045]],["content/87",[58,1.332,804,6.374]],["sidebarParentCategories/87",[]],["title/88",[55,0.822,805,1.426,806,1.863]],["content/88",[318,4.443,807,6.374]],["sidebarParentCategories/88",[]],["title/97",[31,1.162,745,2.165]],["content/97",[2,1.859,3,2.597,25,2.723,31,1.59,43,3.677,208,6.534,266,3.375,307,6.04,356,3.444,389,4.171,415,5.377]],["sidebarParentCategories/97",[87,1.114]],["title/98",[374,3.537]],["content/98",[31,1.491,34,2.227,35,4.29,58,1.111,78,5.677,96,2.514,116,5.32,151,2.514,211,2.073,285,2.399,325,2.985,374,4.56,585,3.231,808,5.666,809,6.129,810,4.813]],["sidebarParentCategories/98",[87,1.114]],["title/99",[778,4.092]],["content/99",[2,1.075,17,2.342,31,1.718,50,3.92,55,1.741,96,1.86,117,2.552,141,2.342,148,3.561,173,3.92,190,2.98,201,2.964,211,2.389,253,1.921,255,2.895,265,3.073,323,2.091,346,1.986,356,3.268,375,2.442,403,1.722,778,4.339,789,4.192,811,3.561,812,4.192,813,6.199,814,2.744,815,5.056,816,5.056,817,4.535,818,4.535]],["sidebarParentCategories/99",[87,1.114]],["title/100",[819,5.846]],["content/100",[58,1.198,160,4.79,173,3.412,210,5.437,211,2.235,239,3.28,476,4.976,541,2.754,544,3.805,585,4.159]],["sidebarParentCategories/100",[87,1.114]],["title/101",[820,4.81]],["content/101",[141,3.451,173,3.451,211,2.26,544,3.848,585,3.522,821,7.449,822,7.449,823,7.449,824,7.449,825,5.799]],["sidebarParentCategories/101",[87,1.114]],["title/102",[826,6.518]],["content/102",[58,1.471,62,2.211,84,3.856,111,2.713,121,2.959,141,4.05,156,5.243,211,1.478,239,2.169,253,1.85,352,3.479,389,2.788,680,2.014,712,4.744,813,4.368,817,6.041,820,3.594,827,6.734,828,6.734,829,4.87,830,4.87,831,6.734,832,4.87,833,4.368,834,4.038,835,4.87,836,4.87,837,4.368,838,4.87,839,6.734,840,3.791,841,3.594,842,4.87,843,4.87,844,4.87,845,4.87,846,4.87,847,3.791,848,4.87]],["sidebarParentCategories/102",[87,1.114]],["title/103",[849,6.518]],["content/103",[58,1.341,63,5.495,173,3.07,201,3.537,211,2.011,213,4.668,442,4.31,474,4.668,680,3.411,695,4.477,805,2.098,806,3.713,850,5.495,851,7.397,852,3.201]],["sidebarParentCategories/103",[87,1.114]],["title/104",[229,3.732]],["content/104",[31,1.377,55,1.46,58,1.301,96,2.942,173,2.924,211,1.915,229,4.579,251,5.661,296,6.631,380,4.104,386,4.104,393,4.263,475,4.913,585,2.984,853,4.34,854,4.913,855,6.311,856,6.311,857,3.425,858,6.311]],["sidebarParentCategories/104",[87,1.114]],["title/105",[859,5.074]],["content/105",[31,1.432,50,3.04,58,1.067,84,3.757,96,2.414,211,1.991,225,3.867,319,3.655,434,1.809,466,3.472,544,3.39,585,3.103,789,5.441,859,5.108,860,6.562,861,6.796,862,5.886,863,6.562,864,6.562,865,5.886,866,6.562]],["sidebarParentCategories/105",[87,1.114]],["title/106",[867,4.591]],["content/106",[30,1.805,55,1.696,58,0.798,96,2.49,151,1.805,154,3.08,183,2.809,191,2.891,211,1.489,239,2.185,255,2.809,306,1.749,317,2.32,319,2.733,346,1.927,365,1.696,375,2.369,386,3.19,393,4.573,396,2.273,434,1.353,466,4.101,680,2.029,716,2.733,852,2.369,867,3.456,868,4.068,869,6.769,870,5.613,871,2.733,872,3.819,873,4.906,874,6.769,875,5.27,876,4.068,877,3.819,878,4.068,879,4.906,880,4.906,881,4.401,882,4.906,883,4.401]],["sidebarParentCategories/106",[87,1.114]],["title/107",[884,6.518]],["content/107",[78,5.089,142,6.94,210,5.56,211,2.286,421,5.865,466,3.987,585,3.562,865,6.758]],["sidebarParentCategories/107",[87,1.114]],["title/108",[885,6.518]],["content/108",[151,2.71,210,5.437,211,2.235,327,3.412,434,2.031,542,5.522,585,3.483,886,6.108,887,7.366,888,7.366]],["sidebarParentCategories/108",[87,1.114]],["title/109",[889,6.518]],["content/109",[19,3.722,58,1.172,80,6.463,211,2.186,325,3.148,421,5.609,466,4.93,890,4.867,891,6.757,892,7.205]],["sidebarParentCategories/109",[87,1.114]],["title/110",[893,6.518]],["content/110",[171,4.677,211,2.26,545,5.032,585,3.522,748,5.799,852,3.597,894,7.449,895,7.449,896,6.176,897,6.682]],["sidebarParentCategories/110",[87,1.114]],["title/111",[897,5.846]],["content/111",[211,2.367,585,3.688,748,6.073,852,3.767,896,6.468,898,7.8]],["sidebarParentCategories/111",[87,1.114]],["title/112",[899,6.518]],["content/112",[81,3.996,142,4.605,145,4.905,147,2.285,211,1.795,213,4.167,227,6.347,306,3.036,318,3.21,374,3.21,393,3.996,434,1.631,454,3.847,695,3.996,748,4.605,857,4.889,881,5.306,896,4.905,900,5.306,901,5.916,902,7.061,903,4.366,904,5.306]],["sidebarParentCategories/112",[87,1.114]],["title/113",[905,6.518]],["content/113",[172,3.813,211,2.186,227,5.075,306,3.095,317,3.407,585,4.104,857,3.91,900,6.463,902,5.975,906,5.075,907,7.205]],["sidebarParentCategories/113",[87,1.114]],["title/114",[908,6.518]],["content/114",[59,3.887,141,3.232,172,3.692,211,2.117,227,5.996,250,4.713,374,3.786,544,3.604,585,3.299,857,4.619,883,6.259,902,5.785,909,6.977,910,6.977]],["sidebarParentCategories/114",[87,1.114]],["title/115",[911,6.518]],["content/115",[17,3.07,19,3.424,96,2.438,112,3.424,151,2.438,211,2.011,365,2.292,434,1.827,465,4.891,466,4.364,590,3.345,680,2.741,716,3.692,890,4.477,912,5.571,913,5.16,914,6.627,915,6.627,916,6.627]],["sidebarParentCategories/115",[87,1.114]],["title/116",[917,4.591]],["content/116",[2,1.604,3,2.054,25,2.154,33,3.501,34,1.877,55,1.377,58,0.937,96,2.12,111,3.209,147,2.225,211,1.748,327,2.669,331,4.252,334,3.746,337,4.058,346,2.263,361,4.318,541,2.154,814,3.126,903,4.252,917,6.521,918,5.761,919,5.761,920,6.253,921,5.566,922,4.777,923,5.168]],["sidebarParentCategories/116",[87,1.114]],["title/117",[924,5.846]],["content/117",[2,1.194,31,1.225,55,1.354,58,1.206,62,2.549,96,2.066,147,2.168,152,3.047,153,2.408,211,2.25,244,3.525,346,2.205,680,2.322,814,3.047,840,4.371,841,4.144,847,4.371,924,7.447,925,5.614,926,3.412,927,5.614,928,5.614,929,5.614,930,5.614,931,5.036,932,8.301,933,5.614,934,5.614,935,5.614,936,5.614,937,5.614,938,5.614]],["sidebarParentCategories/117",[87,1.114]],["title/118",[939,4.81]],["content/118",[2,0.945,19,2.296,22,1.775,26,3.685,30,3.231,31,1.378,55,1.153,58,0.723,59,2.476,62,2.018,96,1.635,121,2.701,147,1.717,181,2.296,190,2.619,211,1.349,220,3.46,231,2.89,253,1.689,324,1.775,332,3.46,339,2.523,346,1.745,365,1.537,401,2.701,474,3.13,485,1.717,680,1.838,693,2.193,741,2.701,814,2.412,841,3.28,857,4.766,872,3.46,891,3.46,939,5.423,940,6.093,941,5.906,942,3.28,943,5.666,944,3.28,945,3.986,946,4.917,947,6.316,948,5.237,949,3.685]],["sidebarParentCategories/118",[87,1.114]],["title/119",[950,5.846]],["content/119",[2,0.939,19,2.281,22,1.763,26,3.66,30,1.624,31,1.372,55,1.148,58,0.718,59,2.459,62,2.005,96,1.624,121,2.683,147,1.705,181,2.281,190,2.602,211,1.34,220,3.437,226,4.575,231,2.871,253,1.677,324,1.763,332,3.437,339,2.511,346,1.734,358,2.602,365,1.527,401,2.683,474,3.11,485,1.705,680,1.826,693,2.179,741,2.683,814,2.396,841,3.258,857,4.755,872,3.437,891,3.437,940,6.07,941,5.888,942,3.258,944,3.258,945,3.96,946,4.894,949,3.66,950,6.567,951,4.414,952,6.286,953,6.286,954,4.414]],["sidebarParentCategories/119",[87,1.114]],["title/120",[955,5.846]],["content/120",[19,3.494,96,2.488,121,4.11,211,2.052,348,4.314,358,4.922,590,3.414,680,2.797,711,5.608,716,3.767,719,3.986,741,4.11,857,4.532,890,4.569,955,6.066,956,6.763]],["sidebarParentCategories/120",[87,1.114]],["title/121",[957,5.074]],["content/121",[31,1.377,34,2.057,53,2.61,58,1.027,96,2.322,151,3.23,211,1.915,348,4.535,358,3.72,585,2.984,680,3.308,695,4.263,853,3.425,957,4.913,958,3.048,959,5.233,960,4.913,961,4.913,962,6.311,963,6.311,964,6.311]],["sidebarParentCategories/121",[87,1.114]],["title/122",[960,5.074]],["content/122",[58,1.078,96,2.438,211,2.011,348,4.638,375,3.201,578,5.16,585,3.134,680,3.411,957,5.16,958,3.201,959,5.495,960,5.16,961,5.16,965,6.627,966,6.627,967,6.627,968,6.627,969,6.627]],["sidebarParentCategories/122",[87,1.114]],["title/123",[961,5.074]],["content/123",[19,3.643,96,2.594,211,2.14,348,3.643,590,3.559,680,3.544,716,3.928,890,4.764,957,5.49,958,3.405,959,5.847,960,5.49,961,5.49,970,7.051]],["sidebarParentCategories/123",[87,1.114]],["title/124",[971,5.846]],["content/124",[96,2.651,211,2.186,285,2.53,348,3.722,384,6.463,680,3.59,906,5.075,971,6.463,972,7.205,973,7.205,974,7.205,975,7.205]],["sidebarParentCategories/124",[87,1.114]],["title/125",[976,6.518]],["content/125",[2,1.37,31,0.997,55,1.176,58,1.047,96,1.68,146,3.045,153,3.473,170,4.097,205,4.536,211,1.386,236,3.913,249,2.97,262,2.615,325,2.813,326,4.536,346,1.794,348,4.412,421,5.013,472,4.097,476,3.085,680,1.889,695,3.085,696,5.013,814,2.478,840,3.556,841,3.371,926,2.775,942,5.505,977,7.458,978,4.567,979,3.787,980,7.458,981,4.567,982,4.567,983,4.567,984,6.439,985,5.776,986,3.085,987,4.567,988,4.567,989,4.567]],["sidebarParentCategories/125",[87,1.114]],["title/126",[214,4.04,485,1.739,990,4.04]],["content/126",[58,1.159,96,2.622,166,5.549,198,5.91,211,2.163,348,3.682,680,2.948,906,5.021,985,6.394,990,6.394,991,7.128,992,7.128,993,7.128,994,7.128]],["sidebarParentCategories/126",[87,1.114]],["title/127",[995,5.846]],["content/127",[19,3.567,58,1.123,96,2.54,114,3.953,211,2.095,541,2.581,590,3.485,680,2.856,716,3.846,756,4.664,890,4.664,995,6.193,996,6.904,997,7.013,998,6.904,999,6.904]],["sidebarParentCategories/127",[87,1.114]],["title/128",[1000,5.846]],["content/128",[31,1.491,35,4.29,58,1.367,78,4.616,96,2.514,199,4.444,211,2.073,240,4.616,325,2.985,374,3.708,585,3.231,603,4.29,809,6.129,1000,6.129,1001,6.833,1002,6.129,1003,6.833]],["sidebarParentCategories/128",[87,1.114]],["title/129",[1004,5.404]],["content/129",[2,1.469,3,2.462,19,3.567,25,2.581,58,1.123,96,2.54,201,2.961,211,2.095,306,2.462,590,3.485,680,2.856,700,1.526,716,3.846,741,4.196,890,4.664,1004,5.725,1005,5.096]],["sidebarParentCategories/129",[87,1.114]],["title/130",[921,4.81]],["content/130",[]],["sidebarParentCategories/130",[31,0.839,87,0.711,745,1.563]],["title/131",[58,0.733,680,1.863,920,3.734]],["content/131",[2,1.568,25,2.756,31,1.215,55,1.818,105,3.495,211,1.689,212,3.761,334,3.62,346,3.247,541,2.081,745,2.997,774,4.629,780,2.387,814,4.001,917,5.193,920,6.114,921,4.109,922,4.616,923,4.994,958,2.688,1006,4.334,1007,4.616]],["sidebarParentCategories/131",[31,0.839,87,0.711,745,1.563]],["title/132",[34,1.736,917,3.752]],["content/132",[2,0.761,55,1.823,58,0.582,89,1.894,96,1.316,111,3.002,147,1.382,192,6.191,225,5.239,327,1.658,337,2.52,346,1.405,414,2.109,575,2.417,580,6.23,585,3.991,814,1.942,837,3.21,917,4.567,922,6.418,1008,3.578,1009,3.578,1010,3.578,1011,3.578,1012,3.578,1013,8.441,1014,8.441,1015,3.578,1016,3.578,1017,3.578,1018,3.578,1019,3.578,1020,3.578]],["sidebarParentCategories/132",[31,0.839,87,0.711,745,1.563]],["title/133",[434,1.469,921,3.931]],["content/133",[2,1.259,6,2.05,8,1.742,25,1.518,55,1.556,69,2.098,71,1.426,110,3.999,111,2.263,115,1.809,147,1.569,153,2.539,212,2.744,220,3.162,239,1.809,268,1.363,285,2.453,305,3.644,311,2.326,327,1.882,346,2.325,351,2.744,352,2.098,367,3.368,371,3.162,398,2.005,403,1.384,434,1.926,435,1.426,483,3.717,485,1.569,515,3.368,540,3.644,547,4.17,563,3.489,690,5.311,695,2.744,724,2.744,776,3.213,808,3.368,917,2.861,921,5.156,958,1.962,1021,4.062,1022,5.92,1023,5.92,1024,4.062,1025,4.909,1026,4.062,1027,4.062,1028,5.92,1029,4.062,1030,4.062,1031,4.37,1032,4.062,1033,4.062,1034,3.368,1035,4.062,1036,4.062]],["sidebarParentCategories/133",[31,0.839,87,0.711,745,1.563]],["title/174",[34,1.736,151,1.96]],["content/174",[29,2.935,30,1.832,31,1.492,34,2.229,50,2.307,67,2.702,87,1.265,102,1.144,103,2.307,108,3.81,115,2.218,150,2.261,151,2.516,152,3.711,153,2.136,154,3.127,163,3.877,226,2.702,231,3.238,246,5.765,252,3.877,253,2.598,261,3.127,280,3.364,285,1.748,318,2.702,325,2.176,356,2.355,364,2.635,365,2.365,398,2.458,725,4.129,745,2.024,771,2.851,853,3.711,854,3.877,857,2.702,871,2.774,1037,5.324,1038,6.135,1039,4.129]],["sidebarParentCategories/174",[87,1.114]],["title/175",[31,0.851,285,1.37,317,1.844,325,1.704]],["content/175",[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,141,1.413,146,1.443,151,0.652,169,0.962,173,2.209,229,1.015,239,1.359,242,4.088,246,3.966,248,2.44,249,1.984,253,0.674,264,0.962,285,1.41,319,2.994,323,1.973,324,1.219,326,2.149,334,4.088,348,1.576,352,2.464,356,2.255,361,1.747,374,2.588,375,1.473,380,1.153,382,3.818,383,2.149,396,0.822,398,1.506,403,1.368,406,1.114,523,0.79,541,2.009,547,1.249,590,1.54,603,1.114,745,1.938,756,2.713,771,1.747,774,1.916,776,1.656,778,1.916,780,3.088,784,2.149,785,2.149,786,1.249,793,2.731,794,2.354,810,2.149,853,3.186,1037,5.167,1038,2.737,1040,1.591,1041,1.591,1042,1.591,1043,1.591,1044,2.252,1045,3.713,1046,2.061,1047,2.524,1048,1.591,1049,1.591,1050,1.591,1051,1.381,1052,1.381,1053,1.381,1054,1.591,1055,1.078,1056,1.471,1057,1.471,1058,1.984,1059,1.471,1060,1.249,1061,1.381,1062,2.252,1063,2.53,1064,1.471,1065,1.471,1066,1.471,1067,1.471]],["sidebarParentCategories/175",[87,1.114]],["title/176",[807,3.506,853,2.444,926,2.737]],["content/176",[31,1.76,34,1.727,52,4.753,55,1.731,88,4.753,89,2.804,95,3.686,105,3.327,119,4.336,151,1.95,152,2.876,246,5.266,285,1.861,398,2.615,585,2.506,590,2.675,603,3.327,780,3.059,793,3.034,794,2.615,853,2.876,1039,4.394,1044,3.911,1047,2.804,1058,4.639,1060,3.733,1068,5.299,1069,5.299,1070,7.134,1071,5.299,1072,4.126,1073,4.394]],["sidebarParentCategories/176",[87,1.114]],["title/177",[151,1.132,513,1.814,941,2.271,1074,2.76,1075,2.168,1076,2.552]],["content/177",[6,1.846,29,2.156,30,1.346,31,1.592,34,1.192,55,1.795,58,0.891,89,1.935,96,1.346,101,2.847,102,0.84,108,2.037,117,1.846,127,3.281,146,1.729,150,1.661,151,2.684,152,1.985,153,1.568,160,2.378,192,2.378,199,2.378,226,1.985,239,1.629,255,2.094,264,1.985,352,1.889,358,2.156,375,1.766,415,2.699,417,2.094,418,2.847,474,4.627,523,1.629,580,2.699,693,1.805,780,1.568,853,2.973,871,2.037,926,3.329,946,4.265,1037,2.847,1047,1.935,1055,2.223,1058,3.563,1075,2.576,1076,3.033,1077,3.657,1078,5.893,1079,2.576,1080,3.657,1081,3.033,1082,4.543,1083,3.033,1084,3.033,1085,2.576,1086,3.033,1087,4.265,1088,3.033,1089,2.847,1090,2.699,1091,2.847,1092,3.033,1093,2.847,1094,2.847,1095,2.847,1096,3.033,1097,2.847]],["sidebarParentCategories/177",[87,1.114]],["title/178",[95,2.015,392,2.748,796,2.879,1098,3.499]],["content/178",[2,0.54,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.119,108,1.902,115,0.64,117,0.726,141,1.177,146,0.68,151,1.517,152,0.78,153,0.617,169,0.78,173,1.581,199,0.935,229,0.823,239,1.52,242,3.062,246,2.52,248,2.075,249,1.652,253,0.546,255,0.823,264,0.78,280,0.971,285,1.199,319,2.623,334,3.656,342,1.345,346,0.565,348,0.743,356,1.949,361,1.455,365,0.497,374,2.237,375,1.649,380,0.935,382,2.681,383,1.013,398,0.71,403,0.866,414,0.847,485,0.981,523,1.132,541,1.541,580,1.061,585,0.68,590,1.283,603,0.903,680,0.595,693,0.71,745,1.675,771,1.455,774,2.144,775,1.061,776,1.853,777,1.29,778,1.595,780,3.106,784,2.405,785,2.405,786,1.79,793,2.978,794,3.109,796,1.061,810,1.79,820,1.061,825,1.119,853,2.237,871,0.801,913,1.119,1037,2.658,1041,2.279,1042,1.29,1043,1.29,1044,1.875,1045,3.209,1046,1.717,1047,2.752,1048,2.279,1049,1.29,1050,1.29,1051,1.119,1052,1.119,1053,1.119,1055,0.874,1057,1.192,1058,3.891,1059,1.192,1060,2.405,1061,1.119,1062,1.875,1063,2.107,1065,1.192,1066,1.192,1067,1.192,1072,1.119,1073,1.192,1081,1.192,1082,2.107,1083,1.192,1084,1.192,1085,1.013,1086,1.192,1087,1.978,1088,1.192,1089,1.119,1090,1.061,1091,1.119,1092,1.192,1093,1.119,1094,1.119,1095,1.119,1096,1.192,1097,1.119,1099,1.192,1100,1.29,1101,1.192,1102,1.29,1103,1.29,1104,1.119,1105,2.279,1106,1.29,1107,2.279,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,1119,1.438]],["sidebarParentCategories/178",[87,1.114]],["title/179",[40,3.752,58,0.866]],["content/179",[146,4.243,151,2.804,264,4.135,1054,6.836,1055,4.631,1056,6.319,1064,6.319]],["sidebarParentCategories/179",[87,1.114]],["title/181",[30,1.96,150,2.419]],["content/181",[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.673,115,2.137,118,4.81,119,5.03,146,3.152,150,3.478,151,1.766,152,2.604,173,2.223,183,2.748,231,3.121,238,2.828,252,3.736,253,2.533,261,3.013,285,1.685,318,2.604,325,2.097,356,2.269,364,2.54,365,2.305,386,3.121,398,2.369,706,3.542,725,3.979,741,2.916,745,1.95,771,2.748,804,3.736,857,2.604,986,3.242]],["sidebarParentCategories/181",[87,1.114]],["title/182",[31,0.851,285,1.37,317,1.844,325,1.704]],["content/182",[2,0.292,8,0.588,17,0.636,30,0.505,31,1.789,34,0.794,50,1.524,55,1.745,58,0.891,67,1.323,68,0.745,69,1.699,70,0.46,71,0.856,87,0.608,96,0.505,105,0.862,108,1.832,115,2.033,118,3.866,119,3.327,121,0.834,133,1.068,141,1.524,169,2.163,173,1.846,181,0.709,183,0.786,212,0.927,221,0.892,225,2.691,228,1.717,229,2.282,239,1.465,242,3.56,248,4.064,249,1.585,253,0.521,261,0.862,285,1.155,311,0.786,319,3.05,323,1.361,324,0.974,328,1.623,329,1.23,330,1.23,331,2.428,334,3.797,338,0.391,346,0.957,348,1.699,356,1.884,361,1.396,365,1.137,374,2.163,375,1.925,380,3.287,381,1.068,382,2.969,383,1.717,390,0.764,393,0.927,394,0.862,396,0.636,398,0.677,403,1.12,414,0.809,415,1.799,417,1.396,457,1.396,458,1.799,466,0.726,541,1.49,546,0.834,547,0.967,548,0.927,549,1.068,590,1.23,603,0.862,604,0.834,680,1.008,712,1.717,716,1.358,745,1.855,746,0.786,771,1.883,774,1.531,776,1.785,778,1.531,780,2.504,784,1.717,785,1.717,786,2.317,793,1.396,794,1.967,810,3.216,853,0.745,854,1.898,857,0.745,859,1.898,862,2.187,867,1.717,870,2.021,875,2.561,876,2.021,877,1.898,878,2.021,939,1.799,948,2.021,1040,1.231,1044,1.799,1045,3.103,1046,1.647,1047,1.29,1051,1.068,1052,1.898,1053,1.068,1120,1.231,1121,3.575,1122,2.187,1123,1.231,1124,2.951,1125,2.187,1126,1.231,1127,1.231,1128,1.231,1129,1.372,1130,1.231,1131,2.438,1132,1.138,1133,2.438,1134,5.475,1135,1.231,1136,1.372,1137,1.068,1138,1.231,1139,1.231,1140,1.231]],["sidebarParentCategories/182",[87,1.114]],["title/183",[30,1.266,183,1.97,319,1.916,386,2.237,406,2.16]],["content/183",[11,3.314,17,2.273,29,2.891,30,3.074,31,1.477,34,1.599,55,1.655,62,3.074,118,5.246,150,3.074,183,2.809,306,1.749,358,2.891,386,5.434,396,2.273,417,3.876,542,4.25,680,2.029,716,2.733,746,2.809,780,2.903,793,3.876,1128,6.072,1141,4.906,1142,4.401,1143,4.401,1144,4.401,1145,3.621,1146,3.819,1147,4.068,1148,4.401,1149,4.401,1150,4.401,1151,4.068]],["sidebarParentCategories/183",[87,1.114]],["title/184",[30,1.435,807,3.037,941,2.879,1075,2.748]],["content/184",[30,3.246,31,0.983,55,1.796,78,4.308,89,3.375,96,1.657,112,2.327,119,3.875,190,2.655,239,2.84,312,3.325,337,3.173,375,2.175,417,2.579,544,2.327,693,2.223,780,1.932,793,2.579,794,2.223,810,3.173,857,3.461,926,2.738,941,3.325,1002,4.041,1075,3.173,1085,3.173,1093,3.507,1095,3.507,1097,3.507,1132,3.735,1152,4.041,1153,3.735,1154,4.505,1155,4.041,1156,4.041,1157,4.041,1158,4.041,1159,4.041,1160,4.041,1161,4.041,1162,3.735,1163,5.72,1164,4.041,1165,4.041,1166,4.041]],["sidebarParentCategories/184",[87,1.114]],["title/185",[30,1.657,150,2.045,1074,4.04]],["content/185",[30,1.728,31,1.025,34,1.531,55,1.809,59,2.616,96,1.728,118,4.755,119,2.854,151,2.786,213,3.308,238,2.768,323,1.943,363,2.014,364,2.486,394,2.949,398,2.318,399,3.467,434,1.295,442,3.054,523,2.924,542,4.755,544,3.393,585,3.105,780,2.014,793,2.689,1145,3.467,1146,3.657,1153,3.895,1167,3.308,1168,5.334,1169,4.213,1170,4.847,1171,4.213,1172,3.054,1173,3.895,1174,4.213,1175,4.213,1176,4.213]],["sidebarParentCategories/185",[87,1.114]],["title/186",[95,2.015,392,2.748,796,2.879,1098,3.499]],["content/186",[2,0.385,11,0.666,30,1.332,31,1.677,34,0.589,35,0.619,50,0.837,55,1.852,58,0.294,89,1.325,95,0.934,96,0.363,101,0.767,108,1.395,115,0.439,117,0.497,118,3.414,119,2.476,141,0.837,146,0.466,150,0.448,151,0.921,152,0.535,153,0.423,169,0.535,173,1.16,183,0.564,199,0.641,229,1.035,238,0.581,239,1.612,242,2.649,248,1.885,249,1.176,253,0.374,255,0.564,264,0.535,280,0.666,285,0.879,306,0.351,319,2.269,334,3.141,342,0.957,346,0.387,348,0.509,356,1.467,361,1.035,374,1.683,375,1.967,380,1.176,382,2.017,383,1.273,386,2.91,398,0.486,403,0.616,414,0.581,434,0.498,454,1.176,485,0.381,523,0.439,541,1.16,542,2.273,544,0.934,563,0.581,585,1.712,590,0.912,603,1.135,680,0.408,693,0.892,716,1.395,745,1.261,749,0.884,756,0.666,771,1.035,774,1.572,775,0.727,776,1.359,778,1.135,780,3.112,784,1.764,785,1.764,786,1.764,793,3.397,794,3.382,796,0.727,810,2.55,820,0.727,825,0.767,853,0.535,857,0.535,859,0.767,867,1.273,870,1.499,871,0.549,875,1.407,876,1.499,877,1.407,878,1.499,913,0.767,939,1.848,948,1.499,1044,1.334,1045,2.415,1046,1.221,1047,2.156,1051,0.767,1052,1.407,1053,0.767,1055,0.599,1057,0.817,1058,3.141,1060,1.764,1061,0.767,1062,0.727,1063,0.817,1072,0.767,1075,0.694,1076,0.817,1081,0.817,1082,0.817,1083,0.817,1085,1.273,1086,0.817,1087,1.407,1088,0.817,1089,0.767,1090,0.727,1091,0.767,1092,0.817,1093,1.407,1094,0.767,1095,0.767,1096,0.817,1097,0.767,1099,0.817,1100,0.884,1101,0.817,1102,0.884,1103,0.884,1104,0.767,1105,1.622,1106,0.884,1107,2.782,1120,1.622,1121,2.782,1122,1.622,1123,0.884,1124,1.622,1125,1.622,1126,0.884,1127,0.884,1132,0.817,1138,1.622,1139,0.884,1140,0.884,1143,0.884,1144,0.884,1145,1.334,1146,1.407,1147,0.817,1148,0.884,1149,0.884,1150,0.884,1151,0.817,1155,0.884,1156,0.884,1157,0.884,1158,0.884,1159,0.884,1160,0.884,1161,0.884,1162,0.817,1163,1.622,1164,0.884,1165,0.884,1166,0.884,1168,1.764,1169,0.884,1170,1.334,1171,0.884,1172,0.641,1173,0.817,1174,0.884,1175,0.884,1176,0.884,1177,0.986,1178,0.986,1179,0.986,1180,0.986,1181,0.986,1182,1.808,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,0.986,1195,1.808,1196,0.986,1197,0.884,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,1208,0.986]],["sidebarParentCategories/186",[87,1.114]],["title/187",[40,3.752,58,0.866]],["content/187",[30,3.279,146,4.215,150,4.048,238,4.44,804,5.865,986,5.089]],["sidebarParentCategories/187",[87,1.114]],["title/188",[399,3.931,604,3.237]],["content/188",[30,3.133,53,2.124,77,3.12,89,3.696,173,3.235,183,4.544,268,2.344,306,1.831,317,2.428,319,4.744,364,3.696,406,3.224,423,4.606,466,4.507,490,2.94,541,1.919,811,3.617,1047,3.696,1209,5.135,1210,4.606,1211,7.119,1212,5.437,1213,3.997,1214,3.617,1215,5.135,1216,5.135,1217,5.135,1218,4.606,1219,5.135,1220,4.606,1221,5.135]],["sidebarParentCategories/188",[87,1.114]],["title/134",[58,0.634,69,2.015,806,1.613,1222,3.499]],["content/134",[32,2.475,36,5.948,58,1.317,77,3.246,115,3.194,135,4.159,147,2.063,169,2.899,174,3.246,180,3.246,181,2.76,201,3.712,268,1.793,316,3.257,324,2.134,338,0.858,356,2.526,417,3.059,418,4.159,434,1.978,435,2.518,680,2.21,707,3.148,805,1.691,806,2.21,851,6.434,1135,4.792,1222,6.434,1223,5.342,1224,5.342,1225,5.342,1226,3.763,1227,5.342]],["sidebarParentCategories/134",[87,1.114]],["title/135",[316,2.045,338,0.723,805,1.426]],["content/135",[62,3.345,66,3.997,213,5.188,316,3.345,338,1.183,363,3.159,424,4.625,425,4.976,442,4.79,469,5.734,805,2.332]],["sidebarParentCategories/135",[87,1.114]],["title/136",[58,0.634,268,1.309,316,1.771,805,1.235]],["content/136",[2,1.185,30,1.376,31,1.721,50,1.733,55,1.833,141,1.733,173,1.733,201,2.389,211,1.135,240,3.763,253,1.421,316,3.023,337,2.635,346,2.188,356,2.634,374,2.03,375,1.806,376,3.355,403,1.274,541,1.398,603,2.348,606,1.932,667,3.355,724,2.527,745,2.264,774,3.498,776,3.023,778,2.348,779,3.101,780,2.855,805,2.712,814,2.03,818,3.355,819,3.355,820,2.76,825,2.912,944,2.76,1007,4.619,1228,6.657,1229,3.74,1230,3.74,1231,5.571,1232,3.74,1233,3.74,1234,3.74,1235,2.348,1236,3.74,1237,3.74,1238,3.74,1239,3.74,1240,3.101]],["sidebarParentCategories/136",[87,1.114]],["title/144",[323,1.863,424,2.828,805,1.426]],["content/144",[]],["sidebarParentCategories/144",[87,0.711,805,1.218,806,1.591]],["title/145",[404,4.591]],["content/145",[22,2.702,154,4.246,303,3.198,316,3.071,344,3.986,422,5.608,471,4.246,473,4.992,480,4.764,500,5.265,504,4.764,524,4.246,526,4.569,532,4.246,805,2.141,1241,4.992,1242,6.066,1243,6.066,1244,5.608]],["sidebarParentCategories/145",[87,0.711,805,1.218,806,1.591]],["title/146",[58,0.501,317,1.455,338,0.494,339,1.229,403,1.048,504,2.168]],["content/146",[]],["sidebarParentCategories/146",[87,0.711,805,1.218,806,1.591]],["title/147",[35,1.748,154,1.748,497,2.167,1245,2.783,1246,2.783,1247,2.783,1248,2.783]],["content/147",[338,1.21,432,4.899,486,5.56,504,5.307,509,7.872,511,6.758,1249,7.534]],["sidebarParentCategories/147",[87,0.711,805,1.218,806,1.591]],["title/148",[22,1.374,316,1.562,339,1.374,406,2.16,805,1.089]],["content/148",[22,3.08,316,3.501,434,2.126,435,2.707,532,4.841,805,2.441,1241,5.69]],["sidebarParentCategories/148",[87,0.711,805,1.218,806,1.591]],["title/149",[339,1.374,434,0.949,435,1.208,524,2.16,1250,2.853]],["content/149",[434,2.126,524,4.841,526,5.208,527,5.69,529,5.69,1251,6.393,1252,5.43]],["sidebarParentCategories/149",[87,0.711,805,1.218,806,1.591]],["title/150",[22,1.374,316,1.562,339,1.374,805,1.089,1253,2.853]],["content/150",[22,2.451,43,3.097,55,1.12,67,3.329,108,3.418,253,2.331,303,4.319,317,2.901,338,1.261,339,3.138,344,3.616,363,2.631,364,3.247,403,2.09,434,1.692,490,3.513,532,3.852,533,3.729,632,4.528,1214,4.322,1252,4.322,1254,7.046,1255,4.776]],["sidebarParentCategories/150",[87,0.711,805,1.218,806,1.591]],["title/151",[339,1.558,481,2.233,483,2.449,1256,3.235]],["content/151",[55,1.376,434,2.077,486,5.56,487,5.56,632,5.56,1252,5.307,1255,5.865,1257,7.534,1258,7.534]],["sidebarParentCategories/151",[87,0.711,805,1.218,806,1.591]],["title/137",[323,1.863,469,3.506,805,1.426]],["content/137",[22,3.08,398,3.805,426,5.43,427,6.002,437,6.915,588,5.43,604,4.685]],["sidebarParentCategories/137",[87,0.711,805,1.218,806,1.591]],["title/138",[404,4.591]],["content/138",[22,2.847,316,3.236,471,4.475,473,5.261,480,5.021,524,4.475,526,4.815,532,4.475,805,2.257,1241,5.261,1242,6.394,1243,6.394,1244,5.91,1259,7.128]],["sidebarParentCategories/138",[87,0.711,805,1.218,806,1.591]],["title/139",[58,0.501,317,1.455,338,0.494,339,1.229,403,1.048,441,1.932]],["content/139",[338,1.283,432,5.195,441,5.016,464,6.624]],["sidebarParentCategories/139",[87,0.711,805,1.218,806,1.591]],["title/140",[22,1.374,316,1.562,339,1.374,406,2.16,805,1.089]],["content/140",[22,3.08,316,3.501,434,2.126,435,2.707,532,4.841,805,2.441,1241,5.69]],["sidebarParentCategories/140",[87,0.711,805,1.218,806,1.591]],["title/141",[339,1.374,434,0.949,435,1.208,524,2.16,1250,2.853]],["content/141",[434,2.126,524,4.841,526,5.208,527,5.69,529,5.69,1251,6.393,1252,5.43]],["sidebarParentCategories/141",[87,0.711,805,1.218,806,1.591]],["title/142",[22,1.374,316,1.562,339,1.374,805,1.089,1253,2.853]],["content/142",[22,2.451,43,3.097,55,1.12,67,3.329,108,3.418,253,2.331,303,4.319,317,2.901,338,1.261,339,3.138,344,3.616,363,2.631,364,3.247,403,2.09,434,1.692,490,3.513,532,3.852,533,3.729,632,4.528,1214,4.322,1252,4.322,1254,7.046,1255,4.776]],["sidebarParentCategories/142",[87,0.711,805,1.218,806,1.591]],["title/143",[339,1.558,481,2.233,483,2.449,1256,3.235]],["content/143",[55,1.376,434,2.077,486,5.56,487,5.56,632,5.56,1252,5.307,1255,5.865,1260,7.534,1261,7.534]],["sidebarParentCategories/143",[87,0.711,805,1.218,806,1.591]],["title/152",[323,1.863,425,3.042,805,1.426]],["content/152",[]],["sidebarParentCategories/152",[87,0.711,805,1.218,806,1.591]],["title/153",[22,1.799,115,2.005,404,3.172]],["content/153",[4,5.16,17,3.07,239,3.672,323,2.741,338,1.324,371,5.16,425,6.065,471,5.178,515,5.495,526,4.477,746,3.795,1099,5.495,1212,5.16,1262,6.627,1263,6.627,1264,6.627]],["sidebarParentCategories/153",[87,0.711,805,1.218,806,1.591]],["title/154",[207,1.076,317,1.844,339,1.558,403,1.329]],["content/154",[58,0.921,115,2.521,163,4.408,239,2.521,285,3.319,403,1.929,435,3.383,470,4.695,471,3.555,484,4.179,537,3.337,545,3.825,1265,5.662,1266,5.662,1267,9.452,1268,5.662,1269,5.662,1270,5.662,1271,5.662,1272,5.662,1273,5.662,1274,5.662]],["sidebarParentCategories/154",[87,0.711,805,1.218,806,1.591]],["title/155",[22,1.374,316,1.562,339,1.374,406,2.16,805,1.089]],["content/155",[22,3.08,316,3.501,434,2.126,435,2.707,532,4.841,805,2.441,1241,5.69]],["sidebarParentCategories/155",[87,0.711,805,1.218,806,1.591]],["title/156",[339,1.374,434,0.949,435,1.208,524,2.16,1250,2.853]],["content/156",[434,2.126,524,4.841,526,5.208,527,5.69,529,5.69,1251,6.393,1275,7.709]],["sidebarParentCategories/156",[87,0.711,805,1.218,806,1.591]],["title/157",[22,1.374,316,1.562,339,1.374,805,1.089,1253,2.853]],["content/157",[22,2.497,43,3.155,115,2.784,171,3.925,253,2.375,297,3.799,317,2.956,339,3.175,363,2.681,403,2.129,425,5.37,434,1.724,483,3.925,490,3.579,532,3.925,533,3.799,547,4.403,648,5.608,1214,4.403,1276,7.131,1277,6.251,1278,5.608,1279,6.251,1280,5.608]],["sidebarParentCategories/157",[87,0.711,805,1.218,806,1.591]],["title/158",[285,1.208,339,1.374,483,2.16,545,2.324,1256,2.853]],["content/158",[285,2.586,425,4.976,483,4.625,1276,6.607,1278,6.607,1280,6.607,1281,7.366,1282,7.366,1283,7.366,1284,7.366,1285,7.366]],["sidebarParentCategories/158",[87,0.711,805,1.218,806,1.591]],["title/159",[268,1.788,700,1.177]],["content/159",[2,0.848,3,1.422,6,2.013,8,2.505,17,2.706,25,1.491,32,3.202,33,2.424,41,3.658,55,1.262,103,1.848,147,1.54,201,1.71,268,3.07,278,4.115,306,2.083,324,2.761,344,2.351,363,2.505,394,4.34,396,2.706,412,3.668,546,2.424,700,2.083,707,4.074,719,2.351,746,3.345,852,1.926,871,3.851,1005,4.312,1226,2.809,1286,3.578,1287,2.944,1288,2.694,1289,2.46,1290,2.949,1291,3.148,1292,4.115,1293,3.091]],["sidebarParentCategories/159",[]],["title/160",[41,2.383,55,0.822,700,0.995]],["content/160",[6,3.345,32,3.07,33,4.028,41,4.364,147,2.56,201,2.842,268,2.224,306,2.363,344,3.906,546,4.028,700,1.984,707,3.906,719,3.906,852,3.201,1005,4.891,1226,4.668,1287,4.891,1288,4.477]],["sidebarParentCategories/160",[]],["title/161",[55,0.628,268,1.155,1289,1.449,1290,1.737,1291,1.423]],["content/161",[8,2.842,17,3.07,32,3.07,268,3.013,278,4.668,324,2.647,363,2.842,394,4.161,396,3.07,412,4.161,700,1.984,707,3.906,746,3.795,871,3.692,1290,3.345,1291,2.741,1292,4.668]],["sidebarParentCategories/161",[]],["title/162",[55,0.628,268,1.155,1289,1.449,1291,1.423,1293,1.821]],["content/162",[8,2.842,17,3.07,32,3.07,268,3.013,278,4.668,324,2.647,363,2.842,394,4.161,396,3.07,412,4.161,700,1.984,707,3.906,746,3.795,871,3.692,1291,2.741,1292,4.668,1293,3.507]],["sidebarParentCategories/162",[]],["title/163",[306,2.324]],["content/163",[2,0.828,3,1.389,25,2.146,39,3.493,58,0.633,67,2.113,77,2.367,78,2.631,147,1.504,149,3.798,150,1.768,211,1.182,236,2.367,268,1.307,273,3.032,306,3.297,324,1.556,362,5.149,365,1.347,401,2.367,414,2.295,455,2.743,480,2.743,485,3.665,523,2.556,531,3.493,606,2.012,700,1.507,811,2.743,854,3.032,904,3.493,906,4.043,1212,3.032,1240,4.76,1244,3.229,1290,3.441,1294,3.894,1295,7.523,1296,2.833,1297,6.115,1298,3.894,1299,3.894,1300,5.74,1301,6.817,1302,3.894,1303,3.032,1304,3.894,1305,3.229,1306,3.493,1307,3.493,1308,3.493]],["sidebarParentCategories/163",[]],["title/164",[211,1.367,485,1.739,1296,2.223]],["content/164",[5,4.689,8,2.583,17,2.79,25,2.902,95,3.112,168,4.446,201,2.583,236,4.717,268,2.605,347,4.689,485,3.504,541,2.902,700,1.716,713,6.437,759,5.403,1296,4.477,1309,6.023,1310,4.995,1311,6.023]],["sidebarParentCategories/164",[]],["title/165",[95,2.327,485,1.739,1296,2.223]],["content/165",[2,1.051,3,1.762,34,1.611,77,3.004,81,4.596,93,2.553,95,2.553,112,2.553,120,3.339,149,2.753,150,2.244,160,3.214,164,3.004,234,3.848,236,3.004,255,2.83,259,3.848,268,1.659,293,3.648,306,1.762,324,1.974,345,4.098,352,2.553,363,2.12,442,3.214,457,2.83,476,3.339,481,2.83,485,3.395,541,2.543,576,3.848,588,3.482,678,3.648,700,1.092,707,2.913,738,2.29,850,4.098,871,2.753,1286,4.434,1289,2.865,1296,3.84,1310,4.098,1312,3.848,1313,4.943,1314,4.943,1315,4.098]],["sidebarParentCategories/165",[]],["title/166",[201,1.931,485,1.739,1296,2.223]],["content/166",[13,4.368,18,3.167,31,1.063,32,2.256,41,4.408,58,1.095,95,3.479,117,2.458,147,1.881,179,4.368,184,4.038,201,3.749,234,3.791,253,1.85,306,2.401,324,1.945,327,2.256,361,2.788,363,2.088,485,3.217,493,4.38,696,3.791,700,2.049,852,2.352,903,3.594,1031,3.594,1289,2.836,1296,3.81,1305,4.038,1308,4.368,1316,4.87,1317,3.791,1318,4.87,1319,4.87]],["sidebarParentCategories/166",[]],["title/167",[363,2.284,1289,2.243]],["content/167",[250,4.867,262,4.126,268,2.913,363,3.09,365,2.492,1289,3.923,1290,3.637,1291,3.59,1293,3.813]],["sidebarParentCategories/167",[]],["title/168",[41,2.819,700,1.177]],["content/168",[6,2.81,31,1.92,32,2.579,33,3.383,41,4.375,53,2.303,147,2.15,201,3.545,268,1.868,306,2.629,344,3.281,546,3.383,700,2.079,707,3.281,719,3.281,741,3.383,852,2.688,912,4.981,1005,4.109,1167,3.921,1226,3.921,1287,4.109,1288,3.761,1320,5.567,1321,4.334,1322,4.616]],["sidebarParentCategories/168",[700,1.331]],["title/169",[700,1.177,942,3.931]],["content/169",[31,2.09,41,4.284,53,2.661,126,5.335,201,3.472,306,2.294,389,3.684,700,1.958,719,3.792,741,3.91,912,5.984,1167,4.532,1226,4.532,1321,5.009]],["sidebarParentCategories/169",[700,1.331]],["title/170",[31,0.671,41,1.628,700,0.68,719,1.814,912,2.079,1167,2.168]],["content/170",[2,1.29,19,1.66,31,1.921,34,1.047,37,2.501,41,3.611,50,3.612,53,2.053,55,1.797,71,1.128,105,2.017,138,2.501,149,1.79,173,2.3,201,2.927,230,4.273,259,2.501,261,2.017,262,1.84,299,2.371,306,1.77,311,1.84,324,1.983,325,2.169,346,1.95,392,2.263,396,1.488,403,1.094,541,1.856,563,2.926,700,1.797,719,1.894,724,2.171,745,2.018,776,2.694,780,2.129,794,3.641,814,1.744,912,2.171,1031,2.371,1046,2.171,1094,2.501,1218,2.882,1288,2.171,1292,2.263,1323,3.664,1324,2.501,1325,4.116,1326,2.882,1327,2.664,1328,2.664,1329,2.882,1330,3.213,1331,3.213,1332,2.882,1333,3.213,1334,2.882,1335,2.882,1336,2.882]],["sidebarParentCategories/170",[700,1.331]],["title/171",[31,0.968,53,1.151,201,1.902,306,0.992,1321,2.167]],["content/171",[2,1.074,31,1.808,34,0.793,37,3.097,41,2.105,50,3.198,53,2.855,55,1.772,71,0.854,89,1.287,135,1.894,148,1.714,149,1.355,169,1.32,172,1.287,173,1.843,201,3.124,230,1.714,233,1.527,250,1.643,262,2.278,295,1.714,299,4.746,306,2.955,311,1.393,317,1.15,324,1.589,325,1.063,346,1.982,352,2.055,396,1.127,401,2.418,403,0.829,406,1.527,457,1.393,533,1.478,536,2.182,539,2.182,541,1.887,563,3.79,604,1.478,700,1.116,719,1.434,724,1.643,745,0.989,776,2.159,780,1.706,794,2.878,814,1.32,912,3.41,942,1.795,944,2.936,1031,1.795,1046,1.643,1079,1.714,1167,2.802,1226,1.714,1288,1.643,1321,1.894,1323,1.795,1324,3.097,1325,6.303,1326,2.182,1327,2.017,1328,2.017,1332,3.569,1334,2.182,1335,2.182,1336,2.182,1337,2.182,1338,2.182,1339,2.433,1340,3.978,1341,2.433,1342,5.048,1343,2.433,1344,2.182,1345,2.182,1346,2.433,1347,3.978,1348,2.182,1349,2.433,1350,2.433,1351,2.433,1352,1.894]],["sidebarParentCategories/171",[700,1.331]],["title/172",[31,0.851,700,0.862,741,2.371,912,2.635]],["content/172",[2,1.513,6,2.115,31,1.879,34,1.366,38,3.093,41,2.218,50,1.941,55,1.739,58,0.682,71,1.471,149,2.334,172,2.218,201,2.597,285,1.471,306,1.494,311,2.399,346,2.378,356,1.982,363,1.797,367,3.475,389,3.467,396,1.941,403,1.427,541,1.567,563,3.569,590,3.057,680,2.505,700,1.903,724,2.831,726,3.759,745,2.89,776,3.286,780,1.797,794,2.068,814,2.274,1004,5.021,1046,2.831,1130,3.759,1289,1.765,1323,3.093,1325,3.475,1344,3.759,1353,4.191,1354,3.759,1355,3.759,1356,3.759,1357,4.191]],["sidebarParentCategories/172",[700,1.331]],["title/173",[1322,5.404]],["content/173",[17,2.13,34,1.499,35,2.888,41,3.424,58,0.748,84,3.705,102,1.486,160,2.991,171,2.888,173,2.998,191,2.71,210,3.394,255,2.633,262,2.633,365,1.59,418,5.038,490,3.705,493,2.991,542,2.888,545,4.371,700,1.795,713,3.813,741,2.795,852,2.221,872,3.58,906,3.239,944,3.394,1025,3.813,1047,2.434,1214,3.239,1289,3.153,1322,8.045,1358,4.599,1359,6.471,1360,4.599,1361,4.599,1362,4.599,1363,6.471,1364,3.813,1365,4.599,1366,4.599]],["sidebarParentCategories/173",[700,1.331]],["title/198",[268,1.309,1289,1.643,1290,1.969,1291,1.613]],["content/198",[2,1.911,8,1.721,17,2.718,32,1.859,55,1.071,70,2.328,71,1.409,266,1.859,268,2.561,278,2.826,295,2.826,303,1.897,306,2.092,311,3.36,324,2.771,325,1.753,328,2.896,329,3.501,330,2.962,338,0.942,363,1.721,390,2.235,394,2.519,396,2.718,403,1.367,412,2.519,434,1.618,435,2.06,454,2.609,700,1.936,707,2.365,719,2.365,746,3.36,871,2.235,1290,2.025,1291,2.427,1292,2.826,1323,2.962,1367,3.327,1368,3.599,1369,3.599,1370,7.632,1371,7.632,1372,3.599,1373,5.868]],["sidebarParentCategories/198",[700,1.331]],["title/199",[95,2.327,485,1.739,1296,2.223]],["content/199",[17,2.342,20,3.561,32,3.647,103,2.342,117,2.552,123,3.201,147,1.953,153,2.964,172,2.676,211,1.534,225,2.98,239,3.506,268,1.697,293,3.732,306,1.803,327,2.342,393,3.416,409,3.732,410,3.732,476,3.416,485,3.269,493,3.288,541,1.89,588,3.561,678,3.732,693,3.411,700,1.117,706,3.732,738,2.342,746,2.895,852,2.442,1235,3.175,1290,2.552,1296,4.176,1315,4.192,1374,3.175,1375,3.561,1376,4.535,1377,3.561]],["sidebarParentCategories/199",[700,1.331]],["title/200",[30,1.96,738,2.467]],["content/200",[8,0.735,17,0.794,19,0.48,30,2.774,33,0.565,43,0.469,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.421,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.981,120,0.628,123,1.104,131,1.158,139,0.724,141,1.372,146,2.353,148,0.655,149,0.955,150,0.778,151,0.342,152,0.505,153,2.991,157,0.724,160,0.605,164,0.565,172,0.907,180,0.565,181,0.48,183,0.981,191,1.405,192,3.592,203,1.076,205,2.087,211,0.52,219,0.686,222,0.686,224,0.834,230,1.207,236,0.565,238,2.747,243,0.771,253,0.353,265,0.565,268,0.575,295,0.655,299,1.265,306,1.056,331,0.686,339,0.372,346,0.365,347,0.724,351,0.628,352,2.408,358,1.405,361,0.533,365,0.322,375,1.431,386,1.115,392,0.655,396,0.431,398,0.459,401,0.565,434,1.648,457,0.533,479,0.686,481,0.533,485,1.34,493,0.605,513,1.405,523,1.319,533,0.565,537,1.405,541,1.463,542,1.86,544,3.374,563,0.548,575,0.628,606,1.232,700,0.865,707,1.746,738,1.996,771,0.533,780,2.932,793,0.533,794,2.456,808,0.771,811,0.655,834,0.771,852,1.431,857,1.608,926,1.801,931,0.834,939,1.265,940,0.771,943,1.538,949,1.421,958,1.431,986,3.148,997,1.977,1006,1.856,1047,1.835,1079,1.207,1085,1.207,1137,0.724,1145,4.077,1153,4.127,1168,1.207,1170,3.44,1172,1.115,1173,0.771,1235,0.584,1287,0.686,1288,0.628,1290,1.203,1291,0.986,1296,0.459,1303,0.724,1306,0.834,1307,0.834,1317,1.334,1324,0.724,1352,0.724,1374,0.584,1375,1.679,1377,0.655,1378,0.93,1379,2.138,1380,2.756,1381,0.93,1382,0.771,1383,0.834,1384,1.265,1385,3.864,1386,1.714,1387,2.658,1388,0.93,1389,1.421,1390,1.714,1391,1.714,1392,0.93,1393,0.93,1394,2.559,1395,1.158,1396,1.679,1397,1.977,1398,0.93,1399,0.93,1400,0.771,1401,1.538,1402,0.834,1403,0.93,1404,1.714,1405,0.771,1406,0.93,1407,0.93,1408,1.714,1409,1.714,1410,2.963,1411,0.93,1412,0.834,1413,0.93,1414,0.93,1415,0.93,1416,0.93,1417,0.93,1418,0.93,1419,0.93,1420,0.93,1421,1.714,1422,1.714,1423,1.714,1424,1.714,1425,2.963,1426,0.834,1427,2.307,1428,2.138,1429,1.679,1430,2.138,1431,0.834,1432,1.714,1433,0.93,1434,0.834,1435,0.834,1436,1.714,1437,0.93,1438,0.93,1439,0.93,1440,0.93,1441,0.93,1442,0.93,1443,0.93,1444,0.93,1445,0.834,1446,0.834,1447,0.771,1448,1.538,1449,0.724]],["sidebarParentCategories/200",[700,1.331]],["title/201",[151,1.96,738,2.467]],["content/201",[34,1.6,55,1.758,58,1.024,62,0.595,63,1.086,65,1.939,68,2.09,73,1.421,89,1.238,117,0.661,120,1.58,131,0.885,133,1.02,146,2.322,151,3.132,180,1.421,181,0.677,191,0.772,203,0.822,205,2.713,239,0.583,264,4.273,265,0.796,268,1.063,306,0.467,312,0.967,324,0.523,343,3.117,346,0.514,352,2.286,358,0.772,365,0.453,369,1.02,375,1.53,398,1.154,401,1.926,412,0.822,417,0.75,453,0.967,475,1.02,481,1.339,485,1.488,493,0.852,523,1.041,541,0.874,544,1.208,603,1.468,604,0.796,606,0.677,608,1.175,700,0.289,717,3.194,738,2.05,745,1.996,755,1.175,756,2.989,768,1.086,780,2.992,794,2.968,847,1.821,853,4.759,926,3.655,946,2.467,958,0.632,1025,1.086,1047,1.677,1055,4.785,1058,1.521,1060,2.713,1062,1.726,1064,2.627,1065,1.086,1066,1.086,1067,1.939,1072,1.02,1073,1.086,1075,1.647,1078,3.969,1079,1.647,1084,1.086,1087,1.821,1089,1.02,1091,1.02,1104,2.467,1137,1.02,1220,1.175,1240,1.086,1290,1.18,1291,0.967,1303,1.02,1312,1.02,1352,1.02,1364,1.086,1374,0.822,1377,2.232,1394,2.917,1395,0.885,1396,1.647,1400,1.086,1450,1.31,1451,1.31,1452,1.31,1453,1.175,1454,1.31,1455,1.31,1456,2.098,1457,1.31,1458,1.31,1459,1.31,1460,0.923,1461,3.969,1462,1.31,1463,1.31,1464,1.31,1465,1.31,1466,1.31,1467,1.086,1468,2.339,1469,1.31,1470,2.339,1471,2.339,1472,1.31,1473,1.31,1474,1.31,1475,1.31,1476,1.31,1477,1.175,1478,1.31,1479,2.842,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,1489,1.31]],["sidebarParentCategories/201",[700,1.331]],["title/202",[153,1.902,211,0.845,541,1.041,693,1.374,700,0.615,852,1.344]],["content/202",[2,1.014,6,1.539,25,1.14,33,1.853,34,0.994,37,2.374,55,1.755,58,0.775,68,2.587,102,0.7,123,1.413,153,3.273,172,1.614,175,4.276,180,1.853,211,2.633,225,4.244,231,3.1,268,1.023,306,1.7,312,2.251,324,1.218,346,2.606,352,1.576,479,2.251,485,1.841,523,2.123,546,1.853,575,4.483,576,3.712,606,1.576,693,1.505,712,2.148,738,1.413,814,2.587,852,2.834,926,1.853,1056,2.529,1147,2.529,1167,2.148,1235,1.915,1290,1.539,1291,1.262,1296,1.505,1297,2.736,1317,2.374,1345,5.265,1374,1.915,1375,2.148,1490,2.736,1491,2.736,1492,4.767,1493,3.05,1494,5.869,1495,3.05,1496,6.636,1497,4.276,1498,3.05,1499,5.953,1500,3.05,1501,2.736,1502,4.767,1503,4.767,1504,3.05,1505,3.05,1506,3.05,1507,2.736,1508,3.05,1509,3.05,1510,3.05]],["sidebarParentCategories/202",[700,1.331]],["title/203",[201,1.931,485,1.739,1296,2.223]],["content/203",[5,3.304,20,4.305,25,1.587,32,1.966,41,4.147,43,3.085,47,3.304,55,1.431,58,0.994,59,2.364,77,2.579,96,1.562,117,2.142,123,1.966,141,2.831,166,3.304,201,2.621,244,2.665,324,1.696,327,1.966,346,1.667,363,1.82,365,1.468,414,2.502,456,3.133,485,3.34,533,4.353,595,3.519,700,1.732,745,1.725,803,3.304,811,2.99,812,3.519,871,2.364,891,3.304,903,3.133,1101,3.519,1289,2.574,1290,2.142,1296,3.535,1327,3.519,1328,5.068,1374,3.838,1380,2.99,1383,3.807,1394,1.966,1402,3.807,1511,4.244,1512,4.244,1513,3.807,1514,3.807]],["sidebarParentCategories/203",[700,1.331]],["title/204",[30,1.96,222,3.931]],["content/204",[30,2.635,53,1.756,55,1.666,73,2.579,84,2.43,123,1.966,141,1.966,148,2.99,181,2.193,183,3.499,191,2.502,201,1.82,222,5.286,375,2.952,389,2.43,398,2.095,455,2.99,480,2.99,481,2.43,523,1.89,544,4.468,546,2.579,606,2.193,693,2.095,780,1.82,852,2.05,958,4.01,1079,2.99,1170,5.286,1197,3.807,1290,3.085,1291,1.756,1382,3.519,1394,1.966,1397,7.171,1412,3.807,1515,7.835,1516,3.807,1517,4.244,1518,4.244,1519,4.244,1520,4.244,1521,4.244,1522,4.244]],["sidebarParentCategories/204",[700,1.331]],["title/205",[30,1.435,958,1.884,1289,1.643,1394,1.807]],["content/205",[30,3.207,53,1.496,55,1.81,58,0.884,68,2.949,114,2.071,146,2.569,150,2.467,153,2.33,191,2.132,203,2.271,238,3.202,262,2.071,264,1.963,265,2.198,306,1.937,401,2.198,434,1.799,481,3.111,513,3.202,523,1.611,537,2.132,546,2.198,720,2.548,852,1.747,868,4.505,986,2.444,1031,2.67,1162,4.505,1172,2.352,1235,2.271,1289,1.523,1290,1.826,1291,1.496,1374,2.271,1380,2.548,1394,3.023,1427,4.23,1428,4.874,1429,3.827,1430,4.874,1523,4.874,1524,2.444,1525,5.434,1526,6.526,1527,5.434,1528,5.434,1529,5.434,1530,5.434,1531,5.434]],["sidebarParentCategories/205",[700,1.331]],["title/206",[348,2.327,1394,2.086,1460,3.172]],["content/206",[17,1.467,19,1.636,31,1.071,43,1.598,58,0.515,59,1.764,89,2.598,117,1.598,128,4.404,149,2.735,150,1.438,172,1.676,229,3.442,230,2.231,285,3.013,289,2.626,342,1.676,348,4.612,356,3.202,389,3.442,398,3.342,401,2.983,485,1.223,490,2.811,606,1.636,680,1.31,700,0.7,712,2.231,746,1.813,768,2.626,850,2.626,906,2.231,913,2.465,1034,2.626,1047,1.676,1214,2.231,1288,2.139,1329,4.404,1348,4.404,1356,2.841,1394,2.785,1405,2.626,1460,6.47,1507,4.404,1532,6.011,1533,8.581,1534,3.167,1535,3.167,1536,3.167,1537,4.909,1538,4.909,1539,2.841,1540,3.167,1541,4.909,1542,4.909,1543,3.167,1544,3.167,1545,3.167,1546,3.167,1547,3.167,1548,2.841,1549,4.909,1550,4.909]],["sidebarParentCategories/206",[700,1.331]],["title/207",[32,2.086,93,2.327,537,2.654]],["content/207",[32,4.091,53,2.772,55,1.355,58,0.615,59,2.107,62,1.718,81,2.556,84,3.217,93,1.954,113,3.795,148,2.665,151,2.916,201,2.409,219,2.792,222,2.792,227,2.665,240,2.556,254,3.393,269,2.792,306,1.349,352,1.954,398,1.867,434,1.043,435,1.328,482,2.792,537,2.23,606,1.954,700,1.242,756,3.795,771,2.166,958,1.827,1090,2.792,1235,2.375,1287,2.792,1289,2.366,1290,1.909,1291,1.565,1367,4.659,1374,2.375,1394,3.671,1395,2.556,1449,2.945,1524,2.556,1551,3.783,1552,5.618,1553,5.618,1554,5.618,1555,3.783,1556,6.702,1557,3.783,1558,5.618,1559,3.393,1560,3.393,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,1570,3.783]],["sidebarParentCategories/207",[700,1.331]],["title/208",[264,2.117,1055,2.371,1289,1.643,1394,1.807]],["content/208",[34,2.362,35,3.026,53,1.279,55,1.402,58,1.179,65,5.544,84,1.771,90,2.564,146,2.279,149,1.723,151,3.134,153,1.326,180,1.879,181,1.598,191,1.823,192,2.011,211,0.938,228,3.395,264,3.628,265,1.879,285,1.086,343,2.178,358,2.841,374,1.678,375,1.494,401,1.879,513,3.49,523,1.377,537,1.823,541,2.214,590,1.561,606,1.598,716,1.723,717,2.564,738,1.433,771,1.771,853,4.958,875,2.408,926,1.879,1055,4.063,1058,3.134,1213,2.408,1289,1.302,1290,1.561,1291,1.279,1352,2.408,1394,3.557,1395,2.089,1449,2.408,1456,2.774,1467,2.564,1524,2.089,1560,2.774,1571,5.922,1572,3.093,1573,3.093,1574,4.82,1575,3.093,1576,3.093,1577,4.82,1578,3.093,1579,4.82,1580,4.82,1581,4.82,1582,4.82,1583,4.82,1584,3.093,1585,3.093,1586,3.093,1587,3.093]],["sidebarParentCategories/208",[700,1.331]],["title/209",[151,1.435,343,2.748,1460,2.748,1588,3.499]],["content/209",[8,1.972,18,2.991,55,1.484,77,2.795,92,3.107,146,3.54,151,3.15,168,3.394,343,6.031,357,3.813,513,2.71,523,2.048,544,4.197,606,2.376,700,1.016,840,5.038,853,4.063,958,2.221,1047,2.434,1104,5.038,1289,1.936,1290,2.321,1355,4.125,1374,2.888,1394,3.764,1396,4.558,1400,3.813,1453,4.125,1460,6.031,1479,4.125,1524,3.107,1589,4.599,1590,6.471,1591,4.599,1592,4.599,1593,4.599]],["sidebarParentCategories/209",[700,1.331]],["title/231",[268,1.309,1289,1.643,1291,1.613,1293,2.064]],["content/231",[2,1.911,8,1.721,17,2.718,32,1.859,55,1.071,70,2.328,71,1.409,266,1.859,268,2.561,278,2.826,295,2.826,303,1.897,306,2.092,311,3.36,324,2.771,325,1.753,328,2.896,329,3.501,330,2.962,338,0.942,363,1.721,390,2.235,394,2.519,396,2.718,403,1.367,412,2.519,434,1.618,435,2.06,454,2.609,700,1.936,707,2.365,719,2.365,727,6.846,728,5.263,729,6.846,746,3.36,871,2.235,1291,1.66,1292,2.826,1293,3.105,1323,2.962,1367,3.327,1368,3.599,1369,3.599,1372,3.599]],["sidebarParentCategories/231",[700,1.331]],["title/232",[95,2.327,485,1.739,1296,2.223]],["content/232",[17,2.379,20,3.617,32,3.676,103,2.379,117,2.592,123,3.676,147,1.983,172,2.717,225,3.026,239,3.534,268,1.723,293,3.79,306,1.831,316,2.331,327,2.379,393,3.469,409,3.79,410,3.79,476,3.469,485,3.29,493,3.339,588,3.617,678,3.79,693,3.447,700,1.135,706,3.79,738,3.235,746,2.94,1235,3.224,1291,2.124,1296,4.203,1315,4.258,1375,3.617,1376,4.606,1377,3.617,1594,3.997]],["sidebarParentCategories/232",[700,1.331]],["title/233",[31,1.162,1595,4.778]],["content/233",[18,2.852,31,1.908,50,2.031,55,1.332,62,1.991,66,2.38,87,0.811,131,2.962,141,2.898,191,3.687,240,2.962,262,2.511,285,1.54,341,2.852,356,3.449,389,2.511,403,2.864,416,3.636,466,2.321,541,2.339,604,2.665,693,2.164,700,0.969,738,3.379,745,3.418,771,2.511,774,2.753,776,3.958,780,2.683,803,3.414,852,3.021,867,3.089,877,3.414,958,2.118,1007,3.636,1289,1.847,1291,1.814,1293,2.321,1377,3.089,1596,3.636,1597,6.256,1598,4.385,1599,3.934,1600,4.385,1601,4.385]],["sidebarParentCategories/233",[700,1.331]],["title/234",[146,2.129,1090,3.324,1602,4.04]],["content/234",[2,1.051,31,1.698,58,1.107,77,3.004,102,1.135,112,2.553,141,2.29,146,2.337,150,2.244,172,2.616,180,3.004,205,3.482,212,4.596,233,3.103,268,1.659,285,2.389,326,3.482,356,2.337,523,2.201,563,2.913,680,2.044,696,3.848,700,1.092,711,4.098,716,2.753,833,6.103,834,4.098,861,4.098,1005,3.648,1142,4.434,1210,4.434,1305,4.098,1364,4.098,1380,3.482,1384,5.022,1395,3.339,1548,4.434,1602,6.103,1603,4.943,1604,6.804,1605,4.943,1606,4.943,1607,4.943,1608,4.943,1609,4.943,1610,4.943]],["sidebarParentCategories/234",[700,1.331]],["title/235",[269,3.324,537,2.654,738,2.086]],["content/235",[2,1.494,31,1.37,55,1.836,58,0.552,73,2.063,123,1.572,168,2.505,265,2.063,269,2.505,273,2.643,303,1.605,328,1.675,345,2.815,346,2.034,361,1.944,365,1.174,389,1.944,403,1.156,417,3.595,481,2.965,523,1.512,533,2.063,537,2.001,541,2.347,563,2.001,693,2.556,702,6.3,709,4.645,738,3.503,745,2.105,776,1.842,780,1.456,794,3.466,886,2.815,1291,1.404,1293,1.796,1596,2.815,1611,3.394,1612,5.178,1613,5.178,1614,5.178,1615,5.178,1616,5.178,1617,3.045,1618,5.178,1619,5.178,1620,3.394,1621,5.178,1622,5.178,1623,5.178,1624,7.024,1625,3.394,1626,3.394,1627,3.394]],["sidebarParentCategories/235",[700,1.331]],["title/236",[236,2.737,738,2.086,979,3.734]],["content/236",[8,1.163,31,0.592,34,0.884,55,1.592,58,0.707,68,3.372,84,2.488,111,1.511,131,2.935,142,2.111,146,3.745,147,1.678,180,2.64,203,1.703,217,2.249,219,2.002,236,4.41,238,3.203,253,1.03,285,0.952,306,0.967,317,1.282,319,1.511,324,1.083,335,6.319,341,1.764,352,2.244,357,2.249,389,1.553,398,1.338,480,1.91,523,1.208,541,1.624,590,1.369,604,1.648,678,2.002,693,1.338,695,1.832,720,3.06,738,2.879,771,2.488,780,2.331,794,3.067,852,3.001,857,1.472,868,2.249,890,1.832,958,1.31,979,4.507,986,1.832,1047,2.299,1137,2.111,1168,3.828,1172,2.825,1291,1.797,1293,2.299,1338,2.433,1380,1.91,1384,2.002,1389,3.602,1405,5.153,1467,2.249,1539,3.897,1588,2.433,1628,2.712,1629,4.344,1630,2.433,1631,4.344,1632,5.435,1633,2.712,1634,4.344,1635,4.344,1636,2.712,1637,2.712,1638,2.712,1639,4.344,1640,4.344,1641,2.712,1642,2.712,1643,2.712,1644,2.712,1645,2.712,1646,2.712,1647,2.712,1648,2.433,1649,2.712,1650,2.712,1651,2.712,1652,2.433,1653,2.433]],["sidebarParentCategories/236",[700,1.331]],["title/237",[466,2.819,738,2.467]],["content/237",[30,2.567,173,3.232,183,3.995,319,3.887,356,3.299,466,3.692,485,2.695,604,4.24,867,4.915,1211,6.259,1212,5.432,1213,5.432,1654,6.259,1655,6.977,1656,6.977,1657,6.977]],["sidebarParentCategories/237",[700,1.331]],["title/238",[226,2.89,738,2.467]],["content/238",[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.095,77,1.095,95,0.931,108,1.004,114,1.771,123,0.835,131,2.09,141,1.433,146,2.801,150,0.818,153,3.207,154,1.132,157,1.403,164,1.095,172,0.954,180,1.095,191,1.062,203,1.132,211,0.547,226,3.792,230,1.27,238,3.491,243,1.495,244,1.132,265,1.095,268,0.605,306,1.449,324,0.72,331,1.33,339,0.72,351,1.218,352,2.491,358,1.062,361,1.032,365,0.623,434,1.121,457,1.032,479,1.33,481,1.032,485,1.195,513,1.062,523,2.417,533,1.095,537,1.824,541,1.52,542,3.027,544,2.491,575,1.218,606,0.931,700,0.898,738,2.514,780,2.868,794,3.128,852,2.86,958,0.87,986,4.001,997,3.37,1006,3.164,1047,0.954,1079,1.27,1145,3.558,1146,2.409,1168,2.179,1170,2.284,1172,2.012,1235,1.132,1291,1.28,1293,1.637,1303,1.403,1374,1.132,1375,2.863,1377,1.27,1384,2.284,1385,2.775,1387,2.775,1389,2.565,1394,2.233,1395,1.218,1396,2.179,1426,1.617,1427,3.753,1429,2.863,1431,1.617,1434,1.617,1435,1.617,1445,1.617,1446,1.617,1447,1.495,1448,2.775,1658,4.821,1659,1.403,1660,1.802,1661,1.802,1662,1.802,1663,1.802,1664,3.094,1665,1.802,1666,3.094,1667,1.802,1668,1.802,1669,4.821,1670,1.802,1671,3.094,1672,3.094,1673,3.094,1674,1.617,1675,1.617,1676,3.646,1677,3.094,1678,1.802,1679,2.775,1680,3.094,1681,1.802,1682,1.802,1683,1.802,1684,1.802,1685,1.802,1686,1.802]],["sidebarParentCategories/238",[700,1.331]],["title/239",[30,1.435,226,2.117,264,2.117,1055,2.371]],["content/239",[5,1.944,6,2.051,20,1.759,34,1.93,55,1.818,58,0.963,89,1.321,96,0.919,138,1.944,147,0.964,151,2.825,152,1.355,153,3.654,168,1.843,181,1.29,203,1.568,226,2.205,228,1.759,233,1.568,238,1.472,264,3.214,285,0.877,327,1.157,339,0.997,352,2.099,358,2.395,396,1.157,417,2.327,434,0.688,513,1.472,523,2.289,541,1.519,542,2.552,563,1.472,590,1.26,716,1.391,720,1.759,738,1.883,756,1.687,780,2.796,794,2.923,847,4.001,853,2.789,1039,2.07,1055,3.599,1058,1.624,1059,2.07,1060,2.863,1061,1.944,1062,3,1172,1.624,1291,1.033,1293,1.321,1310,2.07,1354,2.24,1379,2.24,1396,2.863,1397,3.37,1429,1.759,1477,2.24,1595,5.313,1675,2.24,1679,3.645,1687,4.064,1688,4.064,1689,4.064,1690,4.064,1691,4.064,1692,2.24,1693,2.497,1694,4.064,1695,4.064,1696,4.064,1697,4.064,1698,4.064,1699,2.497,1700,2.497,1701,2.497,1702,2.497,1703,2.497,1704,2.497,1705,2.497,1706,2.497]],["sidebarParentCategories/239",[700,1.331]],["title/240",[123,1.425,316,1.397,541,1.15,693,1.519,700,0.68,738,1.425]],["content/240",[2,0.754,6,0.483,17,0.443,25,0.358,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.858,84,0.548,92,1.189,93,1.83,111,1.973,123,2.198,139,0.745,146,1.433,147,0.68,149,0.533,151,0.352,152,0.519,153,2.507,161,1.578,172,0.931,180,1.069,211,0.92,217,0.794,221,1.144,225,3.445,227,1.24,228,2.495,233,0.601,236,1.484,241,2.719,255,0.548,262,0.548,268,0.321,280,0.647,289,0.794,299,0.706,307,0.794,316,0.799,319,1.688,324,0.703,328,2.166,337,0.674,343,0.674,346,1.391,352,1.566,361,1.399,365,0.331,375,0.462,382,0.622,389,1.008,396,0.815,403,0.599,417,1.008,475,0.745,479,0.706,485,0.68,493,0.622,523,1.577,541,2.472,563,2.088,575,3.42,604,0.582,693,1.206,700,0.54,712,0.674,720,0.674,738,2.9,745,0.715,776,0.519,780,2.405,793,2.286,794,2.341,814,1.922,852,0.85,861,0.794,886,0.794,926,0.582,1006,2.359,1034,0.794,1047,1.604,1085,1.24,1152,0.858,1168,2.135,1213,0.745,1235,0.601,1291,1.01,1293,1.293,1296,0.472,1312,2.359,1317,0.745,1324,0.745,1337,2.719,1375,1.24,1382,0.794,1394,2.985,1429,1.24,1447,1.459,1449,1.37,1460,0.674,1461,0.858,1490,0.858,1491,0.858,1497,1.578,1499,0.858,1501,0.858,1516,0.858,1594,0.745,1596,2.025,1599,0.858,1617,3.178,1648,1.578,1652,0.858,1653,2.191,1659,0.745,1674,1.578,1692,0.858,1707,0.957,1708,0.957,1709,4.389,1710,2.443,1711,0.957,1712,0.957,1713,0.957,1714,0.957,1715,0.957,1716,0.957,1717,3.031,1718,0.957,1719,1.76,1720,1.76,1721,1.76,1722,0.957,1723,0.957,1724,5.845,1725,0.957,1726,0.957,1727,0.957,1728,0.957,1729,0.957,1730,2.443,1731,0.957,1732,0.957,1733,0.957,1734,1.76,1735,3.992,1736,3.031,1737,3.992,1738,1.76,1739,3.031,1740,1.76,1741,0.957,1742,0.957,1743,1.76,1744,1.76,1745,1.76,1746,0.957,1747,1.76,1748,1.76,1749,0.957,1750,0.957,1751,0.957,1752,0.957,1753,0.957,1754,0.957,1755,3.031,1756,0.957,1757,3.992,1758,0.957,1759,1.76,1760,0.957,1761,0.957,1762,0.957,1763,0.957,1764,0.957,1765,0.957,1766,0.957,1767,0.957,1768,1.76,1769,0.957,1770,0.957,1771,0.957,1772,0.957,1773,3.992,1774,2.443,1775,3.542,1776,3.542,1777,0.957,1778,0.957,1779,0.957,1780,0.957,1781,1.76,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,1792,0.957]],["sidebarParentCategories/240",[700,1.331]],["title/241",[201,1.931,485,1.739,1296,2.223]],["content/241",[32,2.324,41,4.464,43,3.47,47,3.906,58,0.816,92,3.39,96,1.846,117,2.533,141,3.185,201,2.948,226,2.723,244,3.151,327,2.324,346,1.971,363,2.152,414,2.957,485,3.258,533,3.049,595,4.161,700,1.864,745,2.039,803,3.906,811,3.534,812,4.161,871,2.795,903,3.703,1289,2.895,1291,2.075,1293,2.655,1296,3.393,1380,3.534,1384,3.703,1394,2.324,1396,3.534,1513,4.501,1514,4.501,1594,3.906,1659,3.906,1793,5.018]],["sidebarParentCategories/241",[700,1.331]],["title/242",[226,2.117,958,1.884,1289,1.643,1394,1.807]],["content/242",[53,2.091,55,1.83,58,0.822,68,2.744,114,2.895,146,3.268,153,2.964,226,3.75,238,4.073,264,2.744,265,3.073,306,2.464,481,3.957,513,2.98,523,2.251,537,2.98,546,3.073,1172,3.288,1289,2.129,1291,2.091,1293,2.676,1394,3.647,1427,5.38,1429,4.868,1523,6.199,1524,3.416,1594,3.936,1676,6.199]],["sidebarParentCategories/242",[700,1.331]],["title/243",[151,1.435,958,1.884,1289,1.643,1394,1.807]],["content/243",[58,0.898,59,3.075,131,3.729,147,2.132,151,3.227,172,2.921,211,2.225,240,3.729,250,3.729,285,1.938,328,2.725,335,4.577,348,2.852,523,2.458,958,2.666,1151,6.08,1289,2.325,1312,4.298,1394,2.557,1401,4.952,1524,3.729,1559,4.952,1630,6.577,1654,4.952,1659,4.298,1794,5.52,1795,8.232,1796,5.52,1797,5.52,1798,5.52,1799,5.52,1800,5.52,1801,5.52]],["sidebarParentCategories/243",[700,1.331]],["title/244",[958,2.175,1289,1.896,1394,2.086]],["content/244",[9,4.777,34,1.877,53,2.383,55,1.629,84,3.299,151,2.12,181,2.976,203,3.617,219,4.252,265,3.501,280,3.892,375,4.307,457,3.299,523,2.565,541,2.154,606,2.976,958,4.06,1289,2.426,1291,2.383,1293,3.049,1394,3.493,1395,3.892,1524,3.892,1802,5.761,1803,7.541,1804,5.761]],["sidebarParentCategories/244",[700,1.331]]],"invertedIndex":[["",{"_index":55,"title":{"3":{},"4":{},"5":{},"24":{},"25":{},"26":{},"27":{},"42":{},"43":{},"85":{},"86":{},"87":{},"88":{},"160":{},"161":{},"162":{}},"content":{"1":{},"2":{},"9":{},"23":{},"32":{},"38":{},"40":{},"41":{},"55":{},"60":{},"76":{},"78":{},"79":{},"80":{},"81":{},"83":{},"84":{},"91":{},"92":{},"93":{},"94":{},"95":{},"99":{},"104":{},"106":{},"116":{},"117":{},"118":{},"119":{},"125":{},"131":{},"132":{},"133":{},"136":{},"142":{},"143":{},"150":{},"151":{},"159":{},"170":{},"171":{},"172":{},"175":{},"176":{},"177":{},"178":{},"182":{},"183":{},"184":{},"185":{},"186":{},"198":{},"200":{},"201":{},"202":{},"203":{},"204":{},"205":{},"207":{},"208":{},"209":{},"231":{},"233":{},"235":{},"236":{},"238":{},"239":{},"240":{},"242":{},"244":{}},"sidebarParentCategories":{}}],["0.0.1",{"_index":1301,"title":{},"content":{"163":{}},"sidebarParentCategories":{}}],["0.1",{"_index":1344,"title":{},"content":{"171":{},"172":{}},"sidebarParentCategories":{}}],["0.1.0",{"_index":1290,"title":{"161":{},"198":{}},"content":{"159":{},"161":{},"163":{},"167":{},"198":{},"199":{},"200":{},"201":{},"202":{},"203":{},"204":{},"205":{},"207":{},"208":{},"209":{}},"sidebarParentCategories":{}}],["0.2",{"_index":1356,"title":{},"content":{"172":{},"206":{}},"sidebarParentCategories":{}}],["0.2.0",{"_index":1374,"title":{},"content":{"199":{},"200":{},"201":{},"202":{},"203":{},"205":{},"207":{},"209":{},"238":{}},"sidebarParentCategories":{}}],["0.2.5",{"_index":1604,"title":{},"content":{"234":{}},"sidebarParentCategories":{}}],["0.2.x",{"_index":1291,"title":{"161":{},"162":{},"198":{},"231":{}},"content":{"159":{},"161":{},"162":{},"167":{},"198":{},"200":{},"201":{},"202":{},"204":{},"205":{},"207":{},"208":{},"231":{},"232":{},"233":{},"235":{},"236":{},"238":{},"239":{},"240":{},"241":{},"242":{},"244":{}},"sidebarParentCategories":{}}],["0.3.0",{"_index":1594,"title":{},"content":{"232":{},"240":{},"241":{},"242":{}},"sidebarParentCategories":{}}],["0.3.x",{"_index":1293,"title":{"162":{},"231":{}},"content":{"159":{},"162":{},"167":{},"231":{},"233":{},"235":{},"236":{},"238":{},"239":{},"240":{},"241":{},"242":{},"244":{}},"sidebarParentCategories":{}}],["0.61.5",{"_index":688,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["0.62.0",{"_index":681,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["0.64.0",{"_index":714,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["0.69.5",{"_index":682,"title":{},"content":{"81":{},"83":{}},"sidebarParentCategories":{}}],["0.70.0",{"_index":679,"title":{},"content":{"81":{},"83":{}},"sidebarParentCategories":{}}],["0023",{"_index":1480,"title":{},"content":{"201":{}},"sidebarParentCategories":{}}],["004",{"_index":206,"title":{},"content":{"10":{},"96":{}},"sidebarParentCategories":{}}],["01",{"_index":554,"title":{},"content":{"76":{}},"sidebarParentCategories":{}}],["0160",{"_index":1064,"title":{},"content":{"175":{},"179":{},"201":{}},"sidebarParentCategories":{}}],["0212",{"_index":984,"title":{},"content":{"125":{}},"sidebarParentCategories":{}}],["0360",{"_index":1603,"title":{},"content":{"234":{}},"sidebarParentCategories":{}}],["040e96c3c539",{"_index":1531,"title":{},"content":{"205":{}},"sidebarParentCategories":{}}],["0434",{"_index":1054,"title":{},"content":{"175":{},"179":{}},"sidebarParentCategories":{}}],["04a2c382",{"_index":1579,"title":{},"content":{"208":{}},"sidebarParentCategories":{}}],["0592",{"_index":1425,"title":{},"content":{"200":{}},"sidebarParentCategories":{}}],["09e46da9",{"_index":1527,"title":{},"content":{"205":{}},"sidebarParentCategories":{}}],["1",{"_index":317,"title":{"139":{},"146":{},"154":{},"175":{},"182":{}},"content":{"23":{},"24":{},"25":{},"26":{},"27":{},"84":{},"85":{},"106":{},"113":{},"142":{},"150":{},"157":{},"171":{},"188":{},"236":{}},"sidebarParentCategories":{}}],["1.0",{"_index":1147,"title":{},"content":{"183":{},"186":{},"202":{}},"sidebarParentCategories":{}}],["1.0.0",{"_index":1295,"title":{},"content":{"163":{}},"sidebarParentCategories":{}}],["1.1",{"_index":1056,"title":{},"content":{"175":{},"179":{},"202":{}},"sidebarParentCategories":{}}],["1.4",{"_index":907,"title":{},"content":{"113":{}},"sidebarParentCategories":{}}],["10",{"_index":993,"title":{},"content":{"126":{}},"sidebarParentCategories":{}}],["10000",{"_index":975,"title":{},"content":{"124":{}},"sidebarParentCategories":{}}],["10044/com.usereactnativeindysdk",{"_index":558,"title":{},"content":{"76":{}},"sidebarParentCategories":{}}],["13",{"_index":567,"title":{},"content":{"76":{}},"sidebarParentCategories":{}}],["16:25:02.300",{"_index":556,"title":{},"content":{"76":{}},"sidebarParentCategories":{}}],["2",{"_index":406,"title":{"140":{},"148":{},"155":{},"183":{}},"content":{"41":{},"42":{},"171":{},"175":{},"188":{}},"sidebarParentCategories":{}}],["2.1",{"_index":1250,"title":{"141":{},"149":{},"156":{}},"content":{},"sidebarParentCategories":{}}],["2.2",{"_index":1253,"title":{"142":{},"150":{},"157":{}},"content":{},"sidebarParentCategories":{}}],["2.3",{"_index":1256,"title":{"143":{},"151":{},"158":{}},"content":{},"sidebarParentCategories":{}}],["20",{"_index":994,"title":{},"content":{"126":{}},"sidebarParentCategories":{}}],["2020",{"_index":553,"title":{},"content":{"76":{}},"sidebarParentCategories":{}}],["2022",{"_index":1264,"title":{},"content":{"153":{}},"sidebarParentCategories":{}}],["21",{"_index":598,"title":{},"content":{"78":{}},"sidebarParentCategories":{}}],["23",{"_index":1176,"title":{},"content":{"185":{},"186":{}},"sidebarParentCategories":{}}],["27",{"_index":555,"title":{},"content":{"76":{}},"sidebarParentCategories":{}}],["3",{"_index":807,"title":{"176":{},"184":{}},"content":{"84":{},"88":{}},"sidebarParentCategories":{}}],["3000",{"_index":381,"title":{},"content":{"38":{},"93":{},"95":{},"182":{}},"sidebarParentCategories":{}}],["3001",{"_index":1053,"title":{},"content":{"175":{},"178":{},"182":{},"186":{}},"sidebarParentCategories":{}}],["3002",{"_index":1127,"title":{},"content":{"182":{},"186":{}},"sidebarParentCategories":{}}],["32",{"_index":863,"title":{},"content":{"105":{}},"sidebarParentCategories":{}}],["3b6f131af5e",{"_index":969,"title":{},"content":{"122":{}},"sidebarParentCategories":{}}],["4",{"_index":1074,"title":{"177":{},"185":{}},"content":{},"sidebarParentCategories":{}}],["40c4",{"_index":967,"title":{},"content":{"122":{}},"sidebarParentCategories":{}}],["4909",{"_index":1529,"title":{},"content":{"205":{}},"sidebarParentCategories":{}}],["4baf",{"_index":966,"title":{},"content":{"122":{}},"sidebarParentCategories":{}}],["4de9",{"_index":1581,"title":{},"content":{"208":{}},"sidebarParentCategories":{}}],["5",{"_index":1098,"title":{"178":{},"186":{}},"content":{},"sidebarParentCategories":{}}],["50",{"_index":1673,"title":{},"content":{"238":{}},"sidebarParentCategories":{}}],["5000",{"_index":384,"title":{},"content":{"38":{},"124":{}},"sidebarParentCategories":{}}],["64.jar",{"_index":665,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["7000",{"_index":1646,"title":{},"content":{"236":{}},"sidebarParentCategories":{}}],["9955",{"_index":557,"title":{},"content":{"76":{}},"sidebarParentCategories":{}}],["999e",{"_index":1580,"title":{},"content":{"208":{}},"sidebarParentCategories":{}}],["9dec0b2fa5e4",{"_index":1583,"title":{},"content":{"208":{}},"sidebarParentCategories":{}}],["_before_",{"_index":1330,"title":{},"content":{"170":{}},"sidebarParentCategories":{}}],["_internal/indycredenti",{"_index":1518,"title":{},"content":{"204":{}},"sidebarParentCategories":{}}],["_internal/indyrequest",{"_index":1517,"title":{},"content":{"204":{}},"sidebarParentCategories":{}}],["a1d2",{"_index":1582,"title":{},"content":{"208":{}},"sidebarParentCategories":{}}],["a575",{"_index":1528,"title":{},"content":{"205":{}},"sidebarParentCategories":{}}],["aarch64.jar",{"_index":656,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["abov",{"_index":340,"title":{},"content":{"31":{},"35":{},"48":{},"56":{},"64":{},"70":{}},"sidebarParentCategories":{}}],["accept",{"_index":857,"title":{},"content":{"104":{},"112":{},"113":{},"114":{},"118":{},"119":{},"120":{},"174":{},"181":{},"182":{},"184":{},"186":{},"200":{},"236":{}},"sidebarParentCategories":{}}],["acceptancemechan",{"_index":882,"title":{},"content":{"106":{}},"sidebarParentCategories":{}}],["acceptpresent",{"_index":1663,"title":{},"content":{"238":{}},"sidebarParentCategories":{}}],["acceptpropos",{"_index":1661,"title":{},"content":{"238":{}},"sidebarParentCategories":{}}],["acceptxxx",{"_index":1403,"title":{},"content":{"200":{}},"sidebarParentCategories":{}}],["acces",{"_index":1731,"title":{},"content":{"240":{}},"sidebarParentCategories":{}}],["access",{"_index":73,"title":{},"content":{"1":{},"44":{},"80":{},"82":{},"200":{},"201":{},"204":{},"235":{},"238":{},"240":{}},"sidebarParentCategories":{}}],["access/jna/raw/5.5.0/lib/native/android",{"_index":655,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["accord",{"_index":326,"title":{},"content":{"29":{},"30":{},"34":{},"125":{},"175":{},"234":{}},"sidebarParentCategories":{}}],["accordingli",{"_index":1152,"title":{},"content":{"184":{},"240":{}},"sidebarParentCategories":{}}],["account",{"_index":1235,"title":{},"content":{"136":{},"199":{},"200":{},"202":{},"205":{},"207":{},"232":{},"238":{},"240":{}},"sidebarParentCategories":{}}],["acm",{"_index":1037,"title":{},"content":{"174":{},"175":{},"177":{},"178":{}},"sidebarParentCategories":{}}],["acmeag",{"_index":1109,"title":{},"content":{"178":{}},"sidebarParentCategories":{}}],["act",{"_index":128,"title":{},"content":{"7":{},"206":{}},"sidebarParentCategories":{}}],["action",{"_index":289,"title":{},"content":{"21":{},"206":{},"240":{}},"sidebarParentCategories":{}}],["actionmenu",{"_index":1612,"title":{},"content":{"235":{}},"sidebarParentCategories":{}}],["actionmenumodul",{"_index":1618,"title":{},"content":{"235":{}},"sidebarParentCategories":{}}],["activ",{"_index":1115,"title":{},"content":{"178":{}},"sidebarParentCategories":{}}],["actual",{"_index":1507,"title":{},"content":{"202":{},"206":{}},"sidebarParentCategories":{}}],["ad",{"_index":606,"title":{"80":{},"81":{}},"content":{"79":{},"80":{},"136":{},"163":{},"200":{},"201":{},"202":{},"204":{},"206":{},"207":{},"208":{},"209":{},"238":{},"244":{}},"sidebarParentCategories":{}}],["adapt",{"_index":759,"title":{},"content":{"91":{},"164":{}},"sidebarParentCategories":{}}],["add",{"_index":328,"title":{"76":{},"79":{}},"content":{"29":{},"31":{},"35":{},"52":{},"78":{},"79":{},"81":{},"83":{},"90":{},"91":{},"182":{},"198":{},"231":{},"235":{},"240":{},"243":{}},"sidebarParentCategories":{}}],["addit",{"_index":513,"title":{"91":{},"177":{}},"content":{"60":{},"91":{},"200":{},"205":{},"208":{},"209":{},"238":{},"239":{},"242":{}},"sidebarParentCategories":{}}],["adjust",{"_index":683,"title":{},"content":{"81":{},"83":{}},"sidebarParentCategories":{}}],["admin",{"_index":379,"title":{},"content":{"38":{}},"sidebarParentCategories":{}}],["admin_account",{"_index":1236,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["admin_password",{"_index":1237,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["advanc",{"_index":837,"title":{},"content":{"102":{},"132":{}},"sidebarParentCategories":{}}],["advantag",{"_index":1324,"title":{},"content":{"170":{},"171":{},"200":{},"240":{}},"sidebarParentCategories":{}}],["afj",{"_index":268,"title":{"136":{},"159":{},"161":{},"162":{},"198":{},"231":{}},"content":{"19":{},"21":{},"23":{},"28":{},"29":{},"30":{},"32":{},"33":{},"34":{},"38":{},"39":{},"40":{},"133":{},"134":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"167":{},"168":{},"188":{},"198":{},"199":{},"200":{},"201":{},"202":{},"231":{},"232":{},"234":{},"238":{},"240":{}},"sidebarParentCategories":{}}],["afj'",{"_index":740,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["aforement",{"_index":1655,"title":{},"content":{"237":{}},"sidebarParentCategories":{}}],["afterward",{"_index":536,"title":{},"content":{"66":{},"171":{}},"sidebarParentCategories":{}}],["ag",{"_index":1146,"title":{},"content":{"183":{},"185":{},"186":{},"238":{}},"sidebarParentCategories":{}}],["again",{"_index":1351,"title":{},"content":{"171":{}},"sidebarParentCategories":{}}],["agent",{"_index":31,"title":{"3":{},"6":{},"85":{},"92":{},"94":{},"97":{},"170":{},"171":{},"172":{},"175":{},"182":{},"233":{}},"content":{"1":{},"2":{},"6":{},"7":{},"8":{},"9":{},"10":{},"17":{},"18":{},"23":{},"28":{},"32":{},"33":{},"40":{},"84":{},"92":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"104":{},"105":{},"117":{},"118":{},"119":{},"121":{},"125":{},"128":{},"131":{},"136":{},"166":{},"168":{},"169":{},"170":{},"171":{},"172":{},"174":{},"175":{},"176":{},"177":{},"178":{},"181":{},"182":{},"183":{},"184":{},"185":{},"186":{},"206":{},"233":{},"234":{},"235":{},"236":{},"240":{}},"sidebarParentCategories":{"130":{},"131":{},"132":{},"133":{}}}],["agent'",{"_index":1599,"title":{},"content":{"233":{},"240":{}},"sidebarParentCategories":{}}],["agent(agentconfig",{"_index":1598,"title":{},"content":{"233":{}},"sidebarParentCategories":{}}],["agent.config.filesystem.basepath}/afj/migration/backup/${backupidentifi",{"_index":1363,"title":{},"content":{"173":{}},"sidebarParentCategories":{}}],["agent.connections.createinvit",{"_index":1455,"title":{},"content":{"201":{}},"sidebarParentCategories":{}}],["agent.connections.findallbyoutofbandid(id",{"_index":1080,"title":{},"content":{"177":{}},"sidebarParentCategories":{}}],["agent.connections.findallbyoutofbandid(outofbandrecord.id",{"_index":1465,"title":{},"content":{"201":{}},"sidebarParentCategories":{}}],["agent.connections.receiveinvitation(parsedinvit",{"_index":1473,"title":{},"content":{"201":{}},"sidebarParentCategories":{}}],["agent.connections.receiveinvitationfromurl(invitationurl",{"_index":1469,"title":{},"content":{"201":{}},"sidebarParentCategories":{}}],["agent.credentials.findcredentialmessage('credentialrecordid",{"_index":1444,"title":{},"content":{"200":{}},"sidebarParentCategories":{}}],["agent.credentials.findoffermessage('credentialrecordid",{"_index":1442,"title":{},"content":{"200":{}},"sidebarParentCategories":{}}],["agent.credentials.findproposalmessage('credentialrecordid",{"_index":1441,"title":{},"content":{"200":{}},"sidebarParentCategories":{}}],["agent.credentials.findrequestmessage('credentialrecordid",{"_index":1443,"title":{},"content":{"200":{}},"sidebarParentCategories":{}}],["agent.credentials.getbyid('credentialrecordid",{"_index":1436,"title":{},"content":{"200":{}},"sidebarParentCategories":{}}],["agent.credentials.getformatdata(credentialrecord.id",{"_index":1417,"title":{},"content":{"200":{}},"sidebarParentCategories":{}}],["agent.credentials.offercredenti",{"_index":1393,"title":{},"content":{"200":{}},"sidebarParentCategories":{}}],["agent.credentials.offercredential('connectionid",{"_index":1388,"title":{},"content":{"200":{}},"sidebarParentCategories":{}}],["agent.discovery.isprotocolsupported(connectionid",{"_index":1641,"title":{},"content":{"236":{}},"sidebarParentCategories":{}}],["agent.discovery.queryfeatur",{"_index":1635,"title":{},"content":{"236":{}},"sidebarParentCategories":{}}],["agent.discovery.queryfeatures(connectionid",{"_index":1633,"title":{},"content":{"236":{}},"sidebarParentCategories":{}}],["agent.events.on(connectioneventtypes.connectionstatechang",{"_index":1084,"title":{},"content":{"177":{},"178":{},"201":{}},"sidebarParentCategories":{}}],["agent.events.on(credentialeventtypes.credentialstatechang",{"_index":1156,"title":{},"content":{"184":{},"186":{}},"sidebarParentCategories":{}}],["holder.oob.receiveinvitationfromurl(invitationurl",{"_index":1191,"title":{},"content":{"186":{}},"sidebarParentCategories":{}}],["homebrew",{"_index":1259,"title":{},"content":{"138":{}},"sidebarParentCategories":{}}],["hood",{"_index":1357,"title":{},"content":{"172":{}},"sidebarParentCategories":{}}],["hook",{"_index":304,"title":{"25":{},"33":{}},"content":{"23":{},"30":{},"31":{},"33":{}},"sidebarParentCategories":{"30":{},"31":{}}}],["host",{"_index":296,"title":{},"content":{"23":{},"74":{},"104":{}},"sidebarParentCategories":{}}],["hous",{"_index":436,"title":{},"content":{"46":{}},"sidebarParentCategories":{}}],["http",{"_index":248,"title":{},"content":{"14":{},"23":{},"38":{},"40":{},"60":{},"93":{},"175":{},"178":{},"182":{},"186":{}},"sidebarParentCategories":{}}],["http://localhost:3000/doc",{"_index":388,"title":{},"content":{"38":{}},"sidebarParentCategories":{}}],["http://localhost:3001",{"_index":1051,"title":{},"content":{"175":{},"178":{},"182":{},"186":{}},"sidebarParentCategories":{}}],["http://localhost:3002",{"_index":1126,"title":{},"content":{"182":{},"186":{}},"sidebarParentCategories":{}}],["http://localhost:5000",{"_index":378,"title":{},"content":{"38":{}},"sidebarParentCategories":{}}],["httpinboundtransport",{"_index":786,"title":{},"content":{"93":{},"95":{},"175":{},"178":{},"182":{},"186":{}},"sidebarParentCategories":{}}],["httpoutboundtransport",{"_index":784,"title":{},"content":{"93":{},"95":{},"175":{},"178":{},"182":{},"186":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())agent.registerinboundtransport(new",{"_index":788,"title":{},"content":{"93":{},"95":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())agent.registeroutboundtransport(new",{"_index":802,"title":{},"content":{"95":{}},"sidebarParentCategories":{}}],["https://afj.com",{"_index":1704,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["https://cdn.cocoapods.org",{"_index":697,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["https://crates.io/crates/env_logg",{"_index":1036,"title":{},"content":{"133":{}},"sidebarParentCategories":{}}],["https://deb.nodesource.com/setup_18.x",{"_index":502,"title":{},"content":{"55":{}},"sidebarParentCategories":{}}],["https://didcomm.agent.community.animo.id?c_i=ey....(mani",{"_index":962,"title":{},"content":{"121":{}},"sidebarParentCategories":{}}],["https://didcomm.org",{"_index":999,"title":{},"content":{"127":{}},"sidebarParentCategories":{}}],["https://didcomm.org/connections/1.0/invit",{"_index":1578,"title":{},"content":{"208":{}},"sidebarParentCategories":{}}],["https://didcomm.org/messagepickup/2.0",{"_index":1634,"title":{},"content":{"236":{}},"sidebarParentCategories":{}}],["https://didcomm.org/mi",{"_index":1501,"title":{},"content":{"202":{},"240":{}},"sidebarParentCategories":{}}],["https://example.com",{"_index":1456,"title":{},"content":{"201":{},"208":{}},"sidebarParentCategories":{}}],["https://example.com?c_i=eyxxx",{"_index":1468,"title":{},"content":{"201":{}},"sidebarParentCategories":{}}],["https://example.org",{"_index":1063,"title":{},"content":{"175":{},"178":{},"186":{}},"sidebarParentCategories":{}}],["https://example.org:3000",{"_index":858,"title":{},"content":{"104":{}},"sidebarParentCategories":{}}],["https://github.com/hyperledger/indi",{"_index":527,"title":{},"content":{"60":{},"83":{},"141":{},"149":{},"156":{}},"sidebarParentCategories":{}}],["https://github.com/java",{"_index":654,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["https://google.com",{"_index":1702,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["https://picsum.photos/200",{"_index":1003,"title":{},"content":{"128":{}},"sidebarParentCategories":{}}],["https://raw.githubusercontent.com/homebrew/install/head/install.sh",{"_index":447,"title":{},"content":{"46":{},"68":{}},"sidebarParentCategories":{}}],["https://repo.sovrin.org/android/libindy/stable/1.16.0/libindy_android_arm64_1.16.0.zip",{"_index":631,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["https://repo.sovrin.org/android/libindy/stable/1.16.0/libindy_android_armv7_1.16.0.zip",{"_index":639,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["https://repo.sovrin.org/android/libindy/stable/1.16.0/libindy_android_x86_1.16.0.zip",{"_index":644,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["https://repo.sovrin.org/android/libindy/stable/1.16.0/libindy_android_x86_64_1.16.0.zip",{"_index":649,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["https://repo.sovrin.org/repository/maven",{"_index":610,"title":{},"content":{"79":{}},"sidebarParentCategories":{}}],["https://rpm.nodesource.com/setup_18.x",{"_index":507,"title":{},"content":{"55":{}},"sidebarParentCategories":{}}],["https://sh.rustup.r",{"_index":520,"title":{},"content":{"60":{}},"sidebarParentCategories":{}}],["hub",{"_index":196,"title":{},"content":{"9":{}},"sidebarParentCategories":{}}],["hyperledg",{"_index":42,"title":{},"content":{"1":{},"10":{},"96":{}},"sidebarParentCategories":{}}],["i.",{"_index":1665,"title":{},"content":{"238":{}},"sidebarParentCategories":{}}],["id",{"_index":375,"title":{},"content":{"38":{},"92":{},"95":{},"99":{},"106":{},"122":{},"136":{},"175":{},"177":{},"178":{},"182":{},"184":{},"186":{},"200":{},"201":{},"204":{},"208":{},"240":{},"244":{}},"sidebarParentCategories":{}}],["ident",{"_index":11,"title":{},"content":{"1":{},"7":{},"9":{},"12":{},"40":{},"183":{},"186":{}},"sidebarParentCategories":{}}],["identifi",{"_index":210,"title":{},"content":{"12":{},"100":{},"107":{},"108":{},"173":{}},"sidebarParentCategories":{}}],["ignor",{"_index":1187,"title":{},"content":{"186":{}},"sidebarParentCategories":{}}],["imag",{"_index":1001,"title":{},"content":{"128":{}},"sidebarParentCategories":{}}],["implement",{"_index":111,"title":{},"content":{"2":{},"3":{},"6":{},"32":{},"40":{},"80":{},"91":{},"102":{},"116":{},"132":{},"133":{},"236":{},"240":{}},"sidebarParentCategories":{}}],["impli",{"_index":1221,"title":{},"content":{"188":{}},"sidebarParentCategories":{}}],["implicit",{"_index":694,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["implicitli",{"_index":988,"title":{},"content":{"125":{}},"sidebarParentCategories":{}}],["import",{"_index":346,"title":{},"content":{"32":{},"81":{},"91":{},"92":{},"93":{},"95":{},"99":{},"106":{},"116":{},"117":{},"118":{},"119":{},"125":{},"131":{},"132":{},"133":{},"136":{},"170":{},"171":{},"172":{},"178":{},"182":{},"186":{},"200":{},"201":{},"202":{},"203":{},"235":{},"240":{},"241":{}},"sidebarParentCategories":{}}],["improv",{"_index":713,"title":{},"content":{"83":{},"164":{},"173":{}},"sidebarParentCategories":{}}],["inbound",{"_index":383,"title":{},"content":{"38":{},"93":{},"175":{},"178":{},"182":{},"186":{}},"sidebarParentCategories":{}}],["inboundtransport",{"_index":1131,"title":{},"content":{"182":{}},"sidebarParentCategories":{}}],["includ",{"_index":255,"title":{},"content":{"16":{},"23":{},"84":{},"91":{},"99":{},"106":{},"165":{},"173":{},"177":{},"178":{},"186":{},"240":{}},"sidebarParentCategories":{}}],["incom",{"_index":941,"title":{"177":{},"184":{}},"content":{"118":{},"119":{},"184":{}},"sidebarParentCategories":{}}],["independ",{"_index":512,"title":{},"content":{"60":{}},"sidebarParentCategories":{}}],["index.(js|ts|jsx|tsx",{"_index":736,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["index.tsx",{"_index":737,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["indi",{"_index":434,"title":{"52":{},"60":{},"66":{},"72":{},"81":{},"133":{},"141":{},"149":{},"156":{}},"content":{"45":{},"50":{},"51":{},"52":{},"53":{},"58":{},"59":{},"60":{},"61":{},"66":{},"67":{},"72":{},"73":{},"74":{},"80":{},"81":{},"83":{},"90":{},"105":{},"106":{},"108":{},"112":{},"115":{},"133":{},"134":{},"140":{},"141":{},"142":{},"143":{},"148":{},"149":{},"150":{},"151":{},"155":{},"156":{},"157":{},"185":{},"186":{},"198":{},"200":{},"205":{},"207":{},"231":{},"238":{},"239":{}},"sidebarParentCategories":{}}],["indic",{"_index":1303,"title":{},"content":{"163":{},"200":{},"201":{},"238":{}},"sidebarParentCategories":{}}],["indicio",{"_index":874,"title":{},"content":{"106":{}},"sidebarParentCategories":{}}],["indy_crypto_prebuilt_deps_dir=c:\\users\\{windows_user}\\downloads\\indi",{"_index":1268,"title":{},"content":{"154":{}},"sidebarParentCategories":{}}],["indy_generate_wallet_key",{"_index":831,"title":{},"content":{"102":{}},"sidebarParentCategories":{}}],["indy_prebuilt_deps_dir=c:\\users\\{windows_user}\\downloads\\indi",{"_index":1266,"title":{},"content":{"154":{}},"sidebarParentCategories":{}}],["indy_set_default_logg",{"_index":1032,"title":{},"content":{"133":{}},"sidebarParentCategories":{}}],["indy_set_logg",{"_index":1033,"title":{},"content":{"133":{}},"sidebarParentCategories":{}}],["indycredenti",{"_index":1520,"title":{},"content":{"204":{}},"sidebarParentCategories":{}}],["indycredential?.credentialdefinitionid",{"_index":1521,"title":{},"content":{"204":{}},"sidebarParentCategories":{}}],["indycredential?.schemaid",{"_index":1522,"title":{},"content":{"204":{}},"sidebarParentCategories":{}}],["indycredentialmetadata",{"_index":1411,"title":{},"content":{"200":{}},"sidebarParentCategories":{}}],["indycredentialmetadata?.credentialdefinitionid",{"_index":1413,"title":{},"content":{"200":{}},"sidebarParentCategories":{}}],["indycredentialmetadata?.schemaid",{"_index":1414,"title":{},"content":{"200":{}},"sidebarParentCategories":{}}],["indyledg",{"_index":867,"title":{"106":{}},"content":{"106":{},"182":{},"186":{},"233":{},"237":{}},"sidebarParentCategories":{}}],["indyledgers.genesispath",{"_index":893,"title":{"110":{}},"content":{},"sidebarParentCategories":{}}],["indyledgers.genesistransact",{"_index":897,"title":{"111":{}},"content":{"110":{}},"sidebarParentCategories":{}}],["indyledgers.id",{"_index":884,"title":{"107":{}},"content":{},"sidebarParentCategories":{}}],["indyledgers.indynamespac",{"_index":885,"title":{"108":{}},"content":{},"sidebarParentCategories":{}}],["indyledgers.isproduct",{"_index":889,"title":{"109":{}},"content":{},"sidebarParentCategories":{}}],["indyledgers.transactionauthoragr",{"_index":899,"title":{"112":{}},"content":{},"sidebarParentCategories":{}}],["indyledgers.transactionauthoragreement.acceptancemechan",{"_index":908,"title":{"114":{}},"content":{},"sidebarParentCategories":{}}],["indyledgers.transactionauthoragreement.vers",{"_index":905,"title":{"113":{}},"content":{},"sidebarParentCategories":{}}],["indynamespac",{"_index":877,"title":{},"content":{"106":{},"182":{},"186":{},"233":{}},"sidebarParentCategories":{}}],["indypoolconfig",{"_index":873,"title":{},"content":{"106":{}},"sidebarParentCategories":{}}],["indypostgresstorageconfig",{"_index":1228,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["indysdk",{"_index":1227,"title":{},"content":{"134":{}},"sidebarParentCategories":{}}],["indystrgpostgres.dl",{"_index":1278,"title":{},"content":{"157":{},"158":{}},"sidebarParentCategories":{}}],["infer",{"_index":981,"title":{},"content":{"125":{}},"sidebarParentCategories":{}}],["info",{"_index":678,"title":{},"content":{"81":{},"165":{},"199":{},"232":{},"236":{}},"sidebarParentCategories":{}}],["info(messag",{"_index":1017,"title":{},"content":{"132":{}},"sidebarParentCategories":{}}],["inform",{"_index":220,"title":{},"content":{"13":{},"118":{},"119":{},"133":{}},"sidebarParentCategories":{}}],["initconfig",{"_index":774,"title":{},"content":{"92":{},"95":{},"131":{},"136":{},"175":{},"178":{},"182":{},"186":{},"233":{}},"sidebarParentCategories":{}}],["initi",{"_index":50,"title":{"94":{}},"content":{"1":{},"41":{},"92":{},"94":{},"95":{},"99":{},"105":{},"136":{},"170":{},"171":{},"172":{},"174":{},"175":{},"178":{},"181":{},"182":{},"186":{},"200":{},"233":{},"238":{}},"sidebarParentCategories":{}}],["initializeacmeag",{"_index":1048,"title":{},"content":{"175":{},"178":{}},"sidebarParentCategories":{}}],["initializebobag",{"_index":1041,"title":{},"content":{"175":{},"178":{}},"sidebarParentCategories":{}}],["initializeholderag",{"_index":1120,"title":{},"content":{"182":{},"186":{}},"sidebarParentCategories":{}}],["initializeissuerag",{"_index":1138,"title":{},"content":{"182":{},"186":{}},"sidebarParentCategories":{}}],["inject",{"_index":1617,"title":{},"content":{"235":{},"240":{}},"sidebarParentCategories":{}}],["insid",{"_index":105,"title":{},"content":{"2":{},"14":{},"78":{},"79":{},"81":{},"131":{},"170":{},"176":{},"182":{}},"sidebarParentCategories":{}}],["insight",{"_index":431,"title":{},"content":{"45":{}},"sidebarParentCategories":{}}],["instal",{"_index":338,"title":{"31":{},"35":{},"42":{},"44":{},"53":{},"61":{},"67":{},"73":{},"82":{},"90":{},"135":{},"139":{},"146":{}},"content":{"36":{},"38":{},"41":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"64":{},"65":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"82":{},"83":{},"89":{},"90":{},"134":{},"135":{},"139":{},"142":{},"147":{},"150":{},"153":{},"182":{},"198":{},"231":{}},"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":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"83":{}}}],["instanc",{"_index":361,"title":{},"content":{"40":{},"93":{},"116":{},"166":{},"175":{},"178":{},"182":{},"186":{},"200":{},"235":{},"238":{},"240":{}},"sidebarParentCategories":{}}],["instanceconst",{"_index":798,"title":{},"content":{"95":{}},"sidebarParentCategories":{}}],["instanceof",{"_index":1448,"title":{},"content":{"200":{},"238":{}},"sidebarParentCategories":{}}],["instanti",{"_index":1167,"title":{"170":{}},"content":{"168":{},"169":{},"171":{},"185":{},"202":{}},"sidebarParentCategories":{}}],["instantli",{"_index":355,"title":{},"content":{"40":{}},"sidebarParentCategories":{}}],["instead",{"_index":180,"title":{},"content":{"8":{},"134":{},"200":{},"201":{},"202":{},"208":{},"234":{},"236":{},"238":{},"240":{}},"sidebarParentCategories":{}}],["instruct",{"_index":1308,"title":{},"content":{"163":{},"166":{}},"sidebarParentCategories":{}}],["integ",{"_index":846,"title":{},"content":{"102":{}},"sidebarParentCategories":{}}],["integr",{"_index":345,"title":{},"content":{"32":{},"165":{},"235":{}},"sidebarParentCategories":{}}],["intel",{"_index":427,"title":{"68":{}},"content":{"45":{},"68":{},"137":{}},"sidebarParentCategories":{}}],["intend",{"_index":1512,"title":{},"content":{"203":{}},"sidebarParentCategories":{}}],["intent",{"_index":1217,"title":{},"content":{"188":{}},"sidebarParentCategories":{}}],["interact",{"_index":112,"title":{},"content":{"2":{},"3":{},"6":{},"7":{},"23":{},"32":{},"33":{},"40":{},"52":{},"60":{},"66":{},"72":{},"115":{},"165":{},"184":{},"234":{}},"sidebarParentCategories":{}}],["interfac",{"_index":337,"title":{},"content":{"33":{},"116":{},"132":{},"136":{},"184":{},"240":{}},"sidebarParentCategories":{}}],["intern",{"_index":1377,"title":{},"content":{"199":{},"200":{},"201":{},"232":{},"233":{},"238":{}},"sidebarParentCategories":{}}],["internet",{"_index":354,"title":{},"content":{"40":{}},"sidebarParentCategories":{}}],["interoper",{"_index":46,"title":{},"content":{"1":{},"7":{},"14":{},"40":{}},"sidebarParentCategories":{}}],["interv",{"_index":972,"title":{},"content":{"124":{}},"sidebarParentCategories":{}}],["intro",{"_index":0,"title":{"1":{}},"content":{},"sidebarParentCategories":{}}],["introduc",{"_index":1659,"title":{},"content":{"238":{},"240":{},"241":{},"243":{}},"sidebarParentCategories":{}}],["invit",{"_index":853,"title":{"176":{}},"content":{"104":{},"121":{},"174":{},"175":{},"176":{},"177":{},"178":{},"182":{},"186":{},"201":{},"208":{},"209":{},"239":{}},"sidebarParentCategories":{}}],["invitation.tourl",{"_index":1067,"title":{},"content":{"175":{},"178":{},"201":{}},"sidebarParentCategories":{}}],["invitationdid",{"_index":1571,"title":{},"content":{"208":{}},"sidebarParentCategories":{}}],["invitationurl",{"_index":1060,"title":{},"content":{"175":{},"176":{},"178":{},"186":{},"201":{},"239":{}},"sidebarParentCategories":{}}],["invitationurl)}export",{"_index":1118,"title":{},"content":{"178":{}},"sidebarParentCategories":{}}],["invitationurl)}void",{"_index":1208,"title":{},"content":{"186":{}},"sidebarParentCategories":{}}],["invite",{"_index":1459,"title":{},"content":{"201":{}},"sidebarParentCategories":{}}],["io",{"_index":549,"title":{"83":{}},"content":{"74":{},"83":{},"182":{}},"sidebarParentCategories":{}}],["ios/podfil",{"_index":692,"title":{},"content":{"83":{}},"sidebarParentCategories":{}}],["iot",{"_index":134,"title":{},"content":{"7":{}},"sidebarParentCategories":{}}],["isn't",{"_index":1491,"title":{},"content":{"202":{},"240":{}},"sidebarParentCategories":{}}],["ispickupv2support",{"_index":1640,"title":{},"content":{"236":{}},"sidebarParentCategories":{}}],["isproduct",{"_index":878,"title":{},"content":{"106":{},"182":{},"186":{}},"sidebarParentCategories":{}}],["isprotocolsupport",{"_index":1636,"title":{},"content":{"236":{}},"sidebarParentCategories":{}}],["issu",{"_index":150,"title":{"87":{},"181":{},"185":{}},"content":{"7":{},"21":{},"40":{},"76":{},"81":{},"84":{},"163":{},"165":{},"174":{},"177":{},"181":{},"183":{},"186":{},"187":{},"200":{},"205":{},"206":{},"234":{},"238":{}},"sidebarParentCategories":{}}],["issuecredenti",{"_index":1169,"title":{},"content":{"185":{},"186":{}},"sidebarParentCategories":{}}],["issuecredential(issu",{"_index":1200,"title":{},"content":{"186":{}},"sidebarParentCategories":{}}],["issuer",{"_index":118,"title":{},"content":{"2":{},"5":{},"22":{},"41":{},"181":{},"182":{},"183":{},"185":{},"186":{}},"sidebarParentCategories":{}}],["issuer.credentials.offercredenti",{"_index":1171,"title":{},"content":{"185":{},"186":{}},"sidebarParentCategories":{}}],["issuer.events.on(connectioneventtypes.connectionstatechang",{"_index":1193,"title":{},"content":{"186":{}},"sidebarParentCategories":{}}],["issuer.ledger.registercredentialdefinit",{"_index":1149,"title":{},"content":{"183":{},"186":{}},"sidebarParentCategories":{}}],["issuer.ledger.registerschema",{"_index":1144,"title":{},"content":{"183":{},"186":{}},"sidebarParentCategories":{}}],["issuer.oob.createinvit",{"_index":1190,"title":{},"content":{"186":{}},"sidebarParentCategories":{}}],["isvalidmessagetyp",{"_index":1503,"title":{},"content":{"202":{}},"sidebarParentCategories":{}}],["isvalidmessagetype(mymessage.typ",{"_index":1504,"title":{},"content":{"202":{}},"sidebarParentCategories":{}}],["it'",{"_index":1034,"title":{},"content":{"133":{},"206":{},"240":{}},"sidebarParentCategories":{}}],["item",{"_index":318,"title":{},"content":{"23":{},"24":{},"25":{},"26":{},"27":{},"41":{},"42":{},"84":{},"85":{},"86":{},"88":{},"112":{},"174":{},"181":{}},"sidebarParentCategories":{}}],["itself",{"_index":219,"title":{},"content":{"13":{},"200":{},"207":{},"236":{},"244":{}},"sidebarParentCategories":{}}],["jane",{"_index":1174,"title":{},"content":{"185":{},"186":{}},"sidebarParentCategories":{}}],["jar",{"_index":657,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["java",{"_index":612,"title":{},"content":{"80":{}},"sidebarParentCategories":{}}],["java.io.fil",{"_index":672,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["javascript",{"_index":3,"title":{"16":{},"19":{}},"content":{"1":{},"2":{},"5":{},"7":{},"8":{},"14":{},"16":{},"17":{},"18":{},"19":{},"22":{},"23":{},"29":{},"30":{},"34":{},"40":{},"41":{},"44":{},"45":{},"47":{},"52":{},"55":{},"60":{},"63":{},"66":{},"69":{},"72":{},"82":{},"97":{},"116":{},"129":{},"159":{},"163":{},"165":{}},"sidebarParentCategories":{}}],["jna",{"_index":611,"title":{"80":{}},"content":{"80":{},"81":{}},"sidebarParentCategories":{}}],["jnilib",{"_index":618,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["js",{"_index":272,"title":{"20":{}},"content":{"20":{},"91":{}},"sidebarParentCategories":{}}],["json",{"_index":748,"title":{},"content":{"91":{},"110":{},"111":{},"112":{}},"sidebarParentCategories":{}}],["kali",{"_index":1247,"title":{"147":{}},"content":{},"sidebarParentCategories":{}}],["keep",{"_index":77,"title":{},"content":{"1":{},"134":{},"163":{},"165":{},"188":{},"200":{},"203":{},"209":{},"234":{},"238":{}},"sidebarParentCategories":{}}],["kept",{"_index":822,"title":{},"content":{"101":{}},"sidebarParentCategories":{}}],["key",{"_index":141,"title":{},"content":{"7":{},"13":{},"38":{},"92":{},"95":{},"99":{},"101":{},"102":{},"114":{},"136":{},"175":{},"178":{},"182":{},"186":{},"200":{},"203":{},"204":{},"233":{},"234":{},"238":{},"241":{}},"sidebarParentCategories":{}}],["keyderivationmethod",{"_index":813,"title":{},"content":{"99":{},"102":{}},"sidebarParentCategories":{}}],["keyderivationmethod.argon2imod",{"_index":817,"title":{},"content":{"99":{},"102":{}},"sidebarParentCategories":{}}],["keyderivationmethod.argon2int",{"_index":845,"title":{},"content":{"102":{}},"sidebarParentCategories":{}}],["keyderivationmethod.raw",{"_index":828,"title":{},"content":{"102":{}},"sidebarParentCategories":{}}],["kind",{"_index":568,"title":{},"content":{"76":{}},"sidebarParentCategories":{}}],["kit",{"_index":48,"title":{},"content":{"1":{}},"sidebarParentCategories":{}}],["know",{"_index":871,"title":{},"content":{"106":{},"159":{},"161":{},"162":{},"165":{},"174":{},"177":{},"178":{},"186":{},"198":{},"203":{},"231":{},"241":{}},"sidebarParentCategories":{}}],["knowledg",{"_index":252,"title":{},"content":{"14":{},"92":{},"174":{},"181":{}},"sidebarParentCategories":{}}],["known",{"_index":550,"title":{"75":{}},"content":{},"sidebarParentCategories":{}}],["label",{"_index":374,"title":{"98":{}},"content":{"38":{},"92":{},"95":{},"98":{},"112":{},"114":{},"128":{},"136":{},"175":{},"178":{},"182":{},"186":{},"208":{}},"sidebarParentCategories":{}}],["lack",{"_index":237,"title":{},"content":{"14":{}},"sidebarParentCategories":{}}],["larg",{"_index":408,"title":{},"content":{"44":{},"82":{}},"sidebarParentCategories":{}}],["lastli",{"_index":158,"title":{},"content":{"7":{},"52":{},"60":{}},"sidebarParentCategories":{}}],["later",{"_index":148,"title":{},"content":{"7":{},"99":{},"171":{},"200":{},"204":{},"207":{}},"sidebarParentCategories":{}}],["latest",{"_index":295,"title":{},"content":{"21":{},"83":{},"171":{},"198":{},"200":{},"231":{}},"sidebarParentCategories":{}}],["launch",{"_index":1336,"title":{},"content":{"170":{},"171":{}},"sidebarParentCategories":{}}],["ld_library_path",{"_index":543,"title":{},"content":{"66":{}},"sidebarParentCategories":{}}],["lead",{"_index":913,"title":{},"content":{"115":{},"178":{},"186":{},"206":{}},"sidebarParentCategories":{}}],["ledger",{"_index":466,"title":{"237":{}},"content":{"52":{},"60":{},"66":{},"72":{},"81":{},"105":{},"106":{},"107":{},"109":{},"115":{},"182":{},"188":{},"233":{},"237":{}},"sidebarParentCategories":{}}],["legaci",{"_index":756,"title":{},"content":{"91":{},"127":{},"175":{},"186":{},"201":{},"207":{},"239":{}},"sidebarParentCategories":{}}],["legacydiddoc",{"_index":1567,"title":{},"content":{"207":{}},"sidebarParentCategories":{}}],["legacytheirdiddoc",{"_index":1568,"title":{},"content":{"207":{}},"sidebarParentCategories":{}}],["less",{"_index":847,"title":{},"content":{"102":{},"117":{},"201":{},"239":{}},"sidebarParentCategories":{}}],["level",{"_index":110,"title":{},"content":{"2":{},"41":{},"52":{},"60":{},"66":{},"72":{},"133":{}},"sidebarParentCategories":{}}],["leverag",{"_index":1226,"title":{},"content":{"134":{},"159":{},"160":{},"168":{},"169":{},"171":{}},"sidebarParentCategories":{}}],["lib_indy_strg_postgres=c:\\users\\{windows_user}\\downloads\\indi",{"_index":1281,"title":{},"content":{"158":{}},"sidebarParentCategories":{}}],["libari",{"_index":615,"title":{"81":{}},"content":{},"sidebarParentCategories":{}}],["libcore/result.rs:945",{"_index":571,"title":{},"content":{"76":{}},"sidebarParentCategories":{}}],["libindi",{"_index":371,"title":{},"content":{"38":{},"72":{},"133":{},"153":{}},"sidebarParentCategories":{}}],["libindy_arm64/lib/libindy.so",{"_index":635,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["libindy_armv7/lib/libindy.so",{"_index":641,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["libindy_x86/lib/libindy.so",{"_index":646,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["libindy_x86_64/lib/libindy.so",{"_index":651,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["libjnidispatch.so",{"_index":659,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["librari",{"_index":297,"title":{"80":{}},"content":{"23":{},"52":{},"60":{},"66":{},"76":{},"80":{},"81":{},"83":{},"157":{}},"sidebarParentCategories":{}}],["libsodium",{"_index":432,"title":{"50":{},"58":{}},"content":{"45":{},"50":{},"58":{},"59":{},"139":{},"147":{}},"sidebarParentCategories":{}}],["libssl",{"_index":1249,"title":{},"content":{"147":{}},"sidebarParentCategories":{}}],["libzmq",{"_index":433,"title":{"51":{},"59":{}},"content":{"45":{},"51":{},"59":{}},"sidebarParentCategories":{}}],["libzmq3",{"_index":511,"title":{},"content":{"59":{},"147":{}},"sidebarParentCategories":{}}],["libzmq_prefix=c:\\users\\{windows_user}\\downloads\\indi",{"_index":1270,"title":{},"content":{"154":{}},"sidebarParentCategories":{}}],["licens",{"_index":195,"title":{},"content":{"9":{}},"sidebarParentCategories":{}}],["lightweight",{"_index":462,"title":{},"content":{"51":{},"59":{}},"sidebarParentCategories":{}}],["line",{"_index":690,"title":{},"content":{"83":{},"133":{}},"sidebarParentCategories":{}}],["link",{"_index":475,"title":{},"content":{"52":{},"104":{},"201":{},"240":{}},"sidebarParentCategories":{}}],["linux",{"_index":424,"title":{"54":{},"144":{}},"content":{"45":{},"52":{},"54":{},"55":{},"58":{},"59":{},"135":{}},"sidebarParentCategories":{}}],["list",{"_index":393,"title":{},"content":{"39":{},"104":{},"106":{},"112":{},"182":{},"199":{},"232":{}},"sidebarParentCategories":{}}],["listen",{"_index":1075,"title":{"177":{},"184":{}},"content":{"177":{},"184":{},"186":{},"201":{}},"sidebarParentCategories":{}}],["lo",{"_index":653,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["load",{"_index":667,"title":{},"content":{"81":{},"136":{}},"sidebarParentCategories":{}}],["loadpostgresplugin",{"_index":1229,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["loadpostgresplugin(storageconfig.config",{"_index":1238,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["local",{"_index":1135,"title":{},"content":{"134":{},"182":{}},"sidebarParentCategories":{}}],["localhost:5432",{"_index":1232,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["locat",{"_index":171,"title":{},"content":{"8":{},"52":{},"60":{},"66":{},"79":{},"81":{},"110":{},"157":{},"173":{}},"sidebarParentCategories":{}}],["log",{"_index":921,"title":{"130":{},"133":{}},"content":{"116":{},"131":{},"133":{}},"sidebarParentCategories":{}}],["logger",{"_index":917,"title":{"116":{},"132":{}},"content":{"116":{},"131":{},"132":{},"133":{}},"sidebarParentCategories":{}}],["logic",{"_index":1093,"title":{},"content":{"177":{},"178":{},"184":{},"186":{}},"sidebarParentCategories":{}}],["loglevel",{"_index":922,"title":{},"content":{"116":{},"131":{},"132":{}},"sidebarParentCategories":{}}],["loglevel.off",{"_index":1010,"title":{},"content":{"132":{}},"sidebarParentCategories":{}}],["long",{"_index":865,"title":{},"content":{"105":{},"107":{}},"sidebarParentCategories":{}}],["look",{"_index":291,"title":{},"content":{"21":{},"44":{},"82":{}},"sidebarParentCategories":{}}],["loos",{"_index":185,"title":{},"content":{"9":{}},"sidebarParentCategories":{}}],["lot",{"_index":20,"title":{},"content":{"1":{},"13":{},"199":{},"203":{},"232":{},"239":{}},"sidebarParentCategories":{}}],["lower",{"_index":465,"title":{},"content":{"52":{},"60":{},"66":{},"72":{},"115":{}},"sidebarParentCategories":{}}],["luckili",{"_index":13,"title":{},"content":{"1":{},"166":{}},"sidebarParentCategories":{}}],["m1",{"_index":438,"title":{},"content":{"46":{}},"sidebarParentCategories":{}}],["machin",{"_index":368,"title":{},"content":{"37":{}},"sidebarParentCategories":{}}],["maco",{"_index":469,"title":{"137":{}},"content":{"52":{},"72":{},"135":{}},"sidebarParentCategories":{}}],["made",{"_index":493,"title":{},"content":{"72":{},"166":{},"173":{},"199":{},"200":{},"201":{},"232":{},"240":{}},"sidebarParentCategories":{}}],["main",{"_index":15,"title":{},"content":{"1":{}},"sidebarParentCategories":{}}],["mainacm",{"_index":1049,"title":{},"content":{"175":{},"178":{}},"sidebarParentCategories":{}}],["mainact",{"_index":574,"title":{},"content":{"76":{},"81":{}},"sidebarParentCategories":{}}],["mainactivity.java",{"_index":668,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["mainbob",{"_index":1042,"title":{},"content":{"175":{},"178":{}},"sidebarParentCategories":{}}],["mainli",{"_index":1793,"title":{},"content":{"241":{}},"sidebarParentCategories":{}}],["maintain",{"_index":75,"title":{},"content":{"1":{},"21":{}},"sidebarParentCategories":{}}],["major",{"_index":362,"title":{},"content":{"40":{},"163":{}},"sidebarParentCategories":{}}],["make",{"_index":17,"title":{},"content":{"1":{},"40":{},"91":{},"99":{},"115":{},"153":{},"159":{},"161":{},"162":{},"164":{},"173":{},"182":{},"183":{},"198":{},"199":{},"200":{},"206":{},"231":{},"232":{},"238":{},"240":{}},"sidebarParentCategories":{}}],["manag",{"_index":344,"title":{},"content":{"32":{},"48":{},"56":{},"64":{},"70":{},"142":{},"145":{},"150":{},"159":{},"160":{},"168":{}},"sidebarParentCategories":{}}],["mani",{"_index":166,"title":{},"content":{"8":{},"60":{},"126":{},"203":{}},"sidebarParentCategories":{}}],["manual",{"_index":719,"title":{"170":{}},"content":{"83":{},"120":{},"159":{},"160":{},"168":{},"169":{},"170":{},"171":{},"198":{},"231":{}},"sidebarParentCategories":{}}],["mark",{"_index":1716,"title":{},"content":{"240":{}},"sidebarParentCategories":{}}],["match",{"_index":1405,"title":{},"content":{"200":{},"206":{},"236":{}},"sidebarParentCategories":{}}],["maven",{"_index":602,"title":{"79":{}},"content":{"79":{}},"sidebarParentCategories":{}}],["max",{"_index":440,"title":{},"content":{"46":{}},"sidebarParentCategories":{}}],["maximummessagepickup",{"_index":990,"title":{"126":{}},"content":{"126":{}},"sidebarParentCategories":{}}],["mean",{"_index":149,"title":{},"content":{"7":{},"13":{},"14":{},"60":{},"163":{},"165":{},"170":{},"171":{},"172":{},"200":{},"206":{},"208":{},"240":{}},"sidebarParentCategories":{}}],["mechan",{"_index":227,"title":{},"content":{"13":{},"112":{},"113":{},"114":{},"207":{},"240":{}},"sidebarParentCategories":{}}],["mediat",{"_index":348,"title":{"206":{}},"content":{"32":{},"93":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"175":{},"178":{},"182":{},"186":{},"206":{},"243":{}},"sidebarParentCategories":{}}],["mediationrole.medi",{"_index":1532,"title":{},"content":{"206":{}},"sidebarParentCategories":{}}],["mediationrole.recipi",{"_index":1542,"title":{},"content":{"206":{}},"sidebarParentCategories":{}}],["mediationroleupdatestrategi",{"_index":1328,"title":{},"content":{"170":{},"171":{},"203":{}},"sidebarParentCategories":{}}],["mediatorconnectionsinvit",{"_index":957,"title":{"121":{}},"content":{"121":{},"122":{},"123":{}},"sidebarParentCategories":{}}],["mediatormodul",{"_index":956,"title":{},"content":{"120":{}},"sidebarParentCategories":{}}],["mediatorpickupstrategi",{"_index":980,"title":{},"content":{"125":{}},"sidebarParentCategories":{}}],["mediatorpickupstrategy.implicit",{"_index":987,"title":{},"content":{"125":{}},"sidebarParentCategories":{}}],["mediatorpickupstrategy.pickupv1",{"_index":983,"title":{},"content":{"125":{}},"sidebarParentCategories":{}}],["mediatorpickupstrategy.pickupv2",{"_index":985,"title":{},"content":{"125":{},"126":{}},"sidebarParentCategories":{}}],["mediatorpickupstrateri",{"_index":976,"title":{"125":{}},"content":{},"sidebarParentCategories":{}}],["mediatorpollinginterv",{"_index":971,"title":{"124":{}},"content":{"124":{}},"sidebarParentCategories":{}}],["meet",{"_index":276,"title":{},"content":{"20":{}},"sidebarParentCategories":{}}],["member",{"_index":841,"title":{},"content":{"102":{},"117":{},"118":{},"119":{},"125":{}},"sidebarParentCategories":{}}],["mention",{"_index":234,"title":{},"content":{"14":{},"60":{},"165":{},"166":{}},"sidebarParentCategories":{}}],["menu",{"_index":1614,"title":{},"content":{"235":{}},"sidebarParentCategories":{}}],["mere",{"_index":1452,"title":{},"content":{"201":{}},"sidebarParentCategories":{}}],["messag",{"_index":153,"title":{"202":{}},"content":{"7":{},"9":{},"13":{},"14":{},"19":{},"51":{},"59":{},"76":{},"117":{},"125":{},"133":{},"174":{},"177":{},"178":{},"186":{},"199":{},"200":{},"202":{},"205":{},"208":{},"238":{},"239":{},"240":{},"242":{}},"sidebarParentCategories":{}}],["message.id",{"_index":1740,"title":{},"content":{"240":{}},"sidebarParentCategories":{}}],["messagecontext",{"_index":1730,"title":{},"content":{"240":{}},"sidebarParentCategories":{}}],["messagecontext.agentcontext",{"_index":1732,"title":{},"content":{"240":{}},"sidebarParentCategories":{}}],["messagecontext.message.id",{"_index":1747,"title":{},"content":{"240":{}},"sidebarParentCategories":{}}],["messagecontext.message.thread?.parentthreadid",{"_index":1748,"title":{},"content":{"240":{}},"sidebarParentCategories":{}}],["messagehandl",{"_index":1710,"title":{},"content":{"240":{}},"sidebarParentCategories":{}}],["messagehandlerinboundmessag",{"_index":1713,"title":{},"content":{"240":{}},"sidebarParentCategories":{}}],["messagehandlerinboundmessage(agentcontext",{"_index":1752,"title":{},"content":{"240":{}},"sidebarParentCategories":{}}],["this.loglevel",{"_index":1011,"title":{},"content":{"132":{}},"sidebarParentCategories":{}}],["this.messagesend",{"_index":1777,"title":{},"content":{"240":{}},"sidebarParentCategories":{}}],["this.messagesender.sendmessage(outboundmessag",{"_index":1766,"title":{},"content":{"240":{}},"sidebarParentCategories":{}}],["this.messagesender.sendmessage(outboundmessagecontext",{"_index":1770,"title":{},"content":{"240":{}},"sidebarParentCategories":{}}],["this.myrecordrepository.save(agentcontext",{"_index":1751,"title":{},"content":{"240":{}},"sidebarParentCategories":{}}],["this.myrecordrepository.save(record",{"_index":1741,"title":{},"content":{"240":{}},"sidebarParentCategories":{}}],["this.myrepository.save(messagecontext.agentcontext",{"_index":1754,"title":{},"content":{"240":{}},"sidebarParentCategories":{}}],["this.myrepository.save(record",{"_index":1749,"title":{},"content":{"240":{}},"sidebarParentCategories":{}}],["this.myservic",{"_index":1778,"title":{},"content":{"240":{}},"sidebarParentCategories":{}}],["this.registerhandlers(messagehandlerregistri",{"_index":1780,"title":{},"content":{"240":{}},"sidebarParentCategories":{}}],["those",{"_index":1589,"title":{},"content":{"209":{}},"sidebarParentCategories":{}}],["though",{"_index":1478,"title":{},"content":{"201":{}},"sidebarParentCategories":{}}],["thread",{"_index":560,"title":{},"content":{"76":{}},"sidebarParentCategories":{}}],["threadid",{"_index":1739,"title":{},"content":{"240":{}},"sidebarParentCategories":{}}],["three",{"_index":126,"title":{},"content":{"7":{},"17":{},"169":{}},"sidebarParentCategories":{}}],["threshold",{"_index":1672,"title":{},"content":{"238":{}},"sidebarParentCategories":{}}],["through",{"_index":351,"title":{},"content":{"32":{},"41":{},"44":{},"82":{},"133":{},"200":{},"238":{}},"sidebarParentCategories":{}}],["throughout",{"_index":1434,"title":{},"content":{"200":{},"238":{}},"sidebarParentCategories":{}}],["throw",{"_index":1214,"title":{},"content":{"142":{},"150":{},"157":{},"173":{},"188":{},"206":{}},"sidebarParentCategories":{}}],["thrown",{"_index":1761,"title":{},"content":{"240":{}},"sidebarParentCategories":{}}],["thu",{"_index":767,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["ti",{"_index":1690,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["time",{"_index":1706,"title":{},"content":{"239":{}},"sidebarParentCategories":{}}],["timestamp",{"_index":1362,"title":{},"content":{"173":{}},"sidebarParentCategories":{}}],["tlsv1.2",{"_index":518,"title":{},"content":{"60":{}},"sidebarParentCategories":{}}],["todo",{"_index":474,"title":{},"content":{"52":{},"93":{},"103":{},"118":{},"119":{},"177":{}},"sidebarParentCategories":{}}],["togeth",{"_index":100,"title":{},"content":{"1":{}},"sidebarParentCategories":{}}],["token",{"_index":322,"title":{},"content":{"28":{}},"sidebarParentCategories":{}}],["tool",{"_index":47,"title":{},"content":{"1":{},"14":{},"203":{},"241":{}},"sidebarParentCategories":{}}],["toolkit",{"_index":155,"title":{},"content":{"7":{},"23":{}},"sidebarParentCategories":{}}],["top",{"_index":79,"title":{},"content":{"1":{},"23":{}},"sidebarParentCategories":{}}],["trace(messag",{"_index":1015,"title":{},"content":{"132":{}},"sidebarParentCategories":{}}],["traffic",{"_index":783,"title":{},"content":{"93":{}},"sidebarParentCategories":{}}],["transact",{"_index":896,"title":{},"content":{"110":{},"111":{},"112":{}},"sidebarParentCategories":{}}],["transactionauthoragr",{"_index":881,"title":{},"content":{"106":{},"112":{}},"sidebarParentCategories":{}}],["transform",{"_index":1453,"title":{},"content":{"201":{},"209":{}},"sidebarParentCategories":{}}],["transmit",{"_index":52,"title":{},"content":{"1":{},"176":{}},"sidebarParentCategories":{}}],["transport",{"_index":242,"title":{"93":{}},"content":{"14":{},"38":{},"93":{},"175":{},"178":{},"182":{},"186":{}},"sidebarParentCategories":{}}],["transportagent.registeroutboundtransport(new",{"_index":801,"title":{},"content":{"95":{}},"sidebarParentCategories":{}}],["transportsagent.registeroutboundtransport(new",{"_index":799,"title":{},"content":{"95":{}},"sidebarParentCategories":{}}],["tri",{"_index":588,"title":{},"content":{"76":{},"81":{},"137":{},"165":{},"199":{},"232":{}},"sidebarParentCategories":{}}],["trick",{"_index":769,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["true",{"_index":590,"title":{},"content":{"76":{},"81":{},"83":{},"115":{},"120":{},"123":{},"127":{},"129":{},"172":{},"175":{},"176":{},"178":{},"182":{},"186":{},"208":{},"236":{},"239":{}},"sidebarParentCategories":{}}],["ts",{"_index":749,"title":{},"content":{"91":{},"186":{}},"sidebarParentCategories":{}}],["tsx",{"_index":750,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["tunnel",{"_index":1133,"title":{},"content":{"182":{}},"sidebarParentCategories":{}}],["tutori",{"_index":87,"title":{"84":{}},"content":{"1":{},"92":{},"174":{},"175":{},"178":{},"181":{},"182":{},"233":{}},"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":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"181":{},"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{}}}],["two",{"_index":168,"title":{},"content":{"8":{},"164":{},"209":{},"235":{},"239":{}},"sidebarParentCategories":{}}],["type",{"_index":211,"title":{"164":{},"202":{}},"content":{"12":{},"92":{},"95":{},"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":{},"199":{},"200":{},"202":{},"208":{},"238":{},"240":{},"243":{}},"sidebarParentCategories":{}}],["typescript",{"_index":61,"title":{},"content":{"1":{}},"sidebarParentCategories":{}}],["ubuntu",{"_index":1245,"title":{"147":{}},"content":{},"sidebarParentCategories":{}}],["ui",{"_index":350,"title":{},"content":{"32":{}},"sidebarParentCategories":{}}],["under",{"_index":1130,"title":{},"content":{"172":{},"182":{}},"sidebarParentCategories":{}}],["underli",{"_index":1021,"title":{},"content":{"133":{}},"sidebarParentCategories":{}}],["understand",{"_index":107,"title":{},"content":{"2":{}},"sidebarParentCategories":{}}],["unifi",{"_index":1588,"title":{"209":{}},"content":{"236":{}},"sidebarParentCategories":{}}],["unimodul",{"_index":757,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["unimodules/cor",{"_index":760,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["unimodules/react",{"_index":758,"title":{},"content":{"91":{}},"sidebarParentCategories":{}}],["uniqu",{"_index":142,"title":{},"content":{"7":{},"107":{},"112":{},"236":{}},"sidebarParentCategories":{}}],["unless",{"_index":1606,"title":{},"content":{"234":{}},"sidebarParentCategories":{}}],["unlock",{"_index":821,"title":{},"content":{"101":{}},"sidebarParentCategories":{}}],["unnam",{"_index":561,"title":{},"content":{"76":{}},"sidebarParentCategories":{}}],["unqualifi",{"_index":1555,"title":{},"content":{"207":{}},"sidebarParentCategories":{}}],["unrel",{"_index":1514,"title":{},"content":{"203":{},"241":{}},"sidebarParentCategories":{}}],["until",{"_index":1352,"title":{},"content":{"171":{},"200":{},"201":{},"208":{}},"sidebarParentCategories":{}}],["unzip",{"_index":634,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["up",{"_index":325,"title":{"92":{},"93":{},"175":{},"182":{}},"content":{"29":{},"30":{},"34":{},"40":{},"44":{},"45":{},"77":{},"82":{},"84":{},"93":{},"98":{},"109":{},"125":{},"128":{},"170":{},"171":{},"174":{},"181":{},"198":{},"231":{}},"sidebarParentCategories":{}}],["updat",{"_index":700,"title":{"159":{},"160":{},"168":{},"169":{},"170":{},"172":{},"202":{},"240":{}},"content":{"83":{},"129":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"198":{},"199":{},"200":{},"201":{},"203":{},"206":{},"207":{},"209":{},"231":{},"232":{},"233":{},"234":{},"238":{},"240":{},"241":{}},"sidebarParentCategories":{"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"198":{},"199":{},"200":{},"201":{},"202":{},"203":{},"204":{},"205":{},"206":{},"207":{},"208":{},"209":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{}}}],["updateassist",{"_index":1325,"title":{},"content":{"170":{},"171":{},"172":{}},"sidebarParentCategories":{}}],["updateassistant(ag",{"_index":1326,"title":{},"content":{"170":{},"171":{}},"sidebarParentCategories":{}}],["updateassistant.frameworkstoragevers",{"_index":1347,"title":{},"content":{"171":{}},"sidebarParentCategories":{}}],["updateassistant.getcurrentagentstoragevers",{"_index":1339,"title":{},"content":{"171":{}},"sidebarParentCategories":{}}],["updateassistant.initi",{"_index":1332,"title":{},"content":{"170":{},"171":{}},"sidebarParentCategories":{}}],["updateassistant.isuptod",{"_index":1333,"title":{},"content":{"170":{}},"sidebarParentCategories":{}}],["updateassistant.upd",{"_index":1334,"title":{},"content":{"170":{},"171":{}},"sidebarParentCategories":{}}],["upgrad",{"_index":1707,"title":{},"content":{"240":{}},"sidebarParentCategories":{}}],["uppcj5apts7ot5wx25943f",{"_index":1564,"title":{},"content":{"207":{}},"sidebarParentCategories":{}}],["uri",{"_index":1508,"title":{},"content":{"202":{}},"sidebarParentCategories":{}}],["url",{"_index":603,"title":{},"content":{"79":{},"128":{},"136":{},"175":{},"176":{},"178":{},"182":{},"186":{},"201":{}},"sidebarParentCategories":{}}],["us",{"_index":58,"title":{"10":{},"15":{},"96":{},"131":{},"134":{},"136":{},"139":{},"146":{},"179":{},"187":{}},"content":{"1":{},"2":{},"5":{},"7":{},"9":{},"22":{},"23":{},"28":{},"29":{},"30":{},"32":{},"33":{},"34":{},"37":{},"38":{},"41":{},"46":{},"49":{},"50":{},"51":{},"52":{},"57":{},"58":{},"59":{},"60":{},"65":{},"66":{},"71":{},"72":{},"76":{},"81":{},"84":{},"87":{},"90":{},"91":{},"92":{},"98":{},"100":{},"102":{},"103":{},"104":{},"105":{},"106":{},"109":{},"116":{},"117":{},"118":{},"119":{},"121":{},"122":{},"125":{},"126":{},"127":{},"128":{},"129":{},"132":{},"134":{},"154":{},"163":{},"166":{},"172":{},"173":{},"175":{},"177":{},"178":{},"181":{},"182":{},"186":{},"200":{},"201":{},"202":{},"203":{},"205":{},"206":{},"207":{},"208":{},"234":{},"235":{},"236":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{}},"sidebarParentCategories":{}}],["usag",{"_index":1090,"title":{"234":{}},"content":{"177":{},"178":{},"186":{},"207":{}},"sidebarParentCategories":{}}],["usedidkeyinprotocol",{"_index":1605,"title":{},"content":{"234":{}},"sidebarParentCategories":{}}],["uselegacydidsovprefix",{"_index":995,"title":{"127":{}},"content":{"127":{}},"sidebarParentCategories":{}}],["user",{"_index":78,"title":{},"content":{"1":{},"33":{},"98":{},"107":{},"128":{},"163":{},"184":{}},"sidebarParentCategories":{}}],["usr/lib/libindy.so",{"_index":535,"title":{},"content":{"60":{}},"sidebarParentCategories":{}}],["usr/local/lib",{"_index":489,"title":{},"content":{"52":{}},"sidebarParentCategories":{}}],["usr/local/lib/libindystrgpostgres.dylib",{"_index":1261,"title":{},"content":{"143":{}},"sidebarParentCategories":{}}],["usr/local/lib/libindystrgpostgres.so",{"_index":1258,"title":{},"content":{"151":{}},"sidebarParentCategories":{}}],["util",{"_index":1495,"title":{},"content":{"202":{}},"sidebarParentCategories":{}}],["uuid",{"_index":1803,"title":{},"content":{"244":{}},"sidebarParentCategories":{}}],["v0.3.0",{"_index":1209,"title":{},"content":{"188":{}},"sidebarParentCategories":{}}],["v0_1tov0_2",{"_index":1327,"title":{},"content":{"170":{},"171":{},"203":{}},"sidebarParentCategories":{}}],["v0_1tov0_2.mediationroleupdatestrategi",{"_index":1540,"title":{},"content":{"206":{}},"sidebarParentCategories":{}}],["v1",{"_index":238,"title":{},"content":{"14":{},"181":{},"185":{},"186":{},"187":{},"200":{},"205":{},"236":{},"238":{},"239":{},"242":{}},"sidebarParentCategories":{}}],["v1proposecredentialmessag",{"_index":1432,"title":{},"content":{"200":{}},"sidebarParentCategories":{}}],["v1requestpresentationmessag",{"_index":1677,"title":{},"content":{"238":{}},"sidebarParentCategories":{}}],["v1xxxmessag",{"_index":1445,"title":{},"content":{"200":{},"238":{}},"sidebarParentCategories":{}}],["v2",{"_index":986,"title":{},"content":{"125":{},"181":{},"187":{},"200":{},"205":{},"236":{},"238":{}},"sidebarParentCategories":{}}],["v2proposecredentialmessag",{"_index":1433,"title":{},"content":{"200":{}},"sidebarParentCategories":{}}],["v2requestpresentationmessag",{"_index":1678,"title":{},"content":{"238":{}},"sidebarParentCategories":{}}],["v2xxxmessag",{"_index":1446,"title":{},"content":{"200":{},"238":{}},"sidebarParentCategories":{}}],["v7a",{"_index":626,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["v7a/libindy.so",{"_index":642,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["v7a/libjnidispatch.so",{"_index":662,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["v8a",{"_index":624,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["v8a/libindy.so",{"_index":636,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["v8a/libjnidispatch.so",{"_index":660,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["valid",{"_index":231,"title":{},"content":{"13":{},"36":{},"89":{},"118":{},"119":{},"174":{},"181":{},"202":{}},"sidebarParentCategories":{}}],["validrespons",{"_index":1623,"title":{},"content":{"235":{}},"sidebarParentCategories":{}}],["valu",{"_index":544,"title":{},"content":{"66":{},"76":{},"90":{},"91":{},"100":{},"101":{},"105":{},"114":{},"184":{},"185":{},"186":{},"200":{},"201":{},"204":{},"209":{},"238":{}},"sidebarParentCategories":{}}],["vari",{"_index":1040,"title":{},"content":{"175":{},"182":{}},"sidebarParentCategories":{}}],["variabl",{"_index":540,"title":{},"content":{"66":{},"133":{}},"sidebarParentCategories":{}}],["variables:set",{"_index":1265,"title":{},"content":{"154":{}},"sidebarParentCategories":{}}],["variant",{"_index":1136,"title":{},"content":{"182":{}},"sidebarParentCategories":{}}],["variou",{"_index":256,"title":{},"content":{"16":{}},"sidebarParentCategories":{}}],["veri",{"_index":415,"title":{},"content":{"44":{},"82":{},"97":{},"177":{},"182":{}},"sidebarParentCategories":{}}],["verifi",{"_index":29,"title":{},"content":{"1":{},"2":{},"5":{},"7":{},"12":{},"22":{},"41":{},"84":{},"174":{},"177":{},"183":{}},"sidebarParentCategories":{}}],["verkey",{"_index":1565,"title":{},"content":{"207":{}},"sidebarParentCategories":{}}],["version",{"_index":306,"title":{"78":{},"163":{},"171":{}},"content":{"23":{},"78":{},"81":{},"83":{},"106":{},"112":{},"113":{},"129":{},"159":{},"160":{},"163":{},"165":{},"166":{},"168":{},"169":{},"170":{},"171":{},"172":{},"183":{},"186":{},"188":{},"198":{},"199":{},"200":{},"201":{},"202":{},"205":{},"207":{},"231":{},"232":{},"236":{},"238":{},"242":{}},"sidebarParentCategories":{}}],["versionstr",{"_index":1343,"title":{},"content":{"171":{}},"sidebarParentCategories":{}}],["via",{"_index":121,"title":{},"content":{"6":{},"7":{},"14":{},"46":{},"68":{},"102":{},"118":{},"119":{},"120":{},"182":{}},"sidebarParentCategories":{}}],["view",{"_index":72,"title":{},"content":{"1":{},"38":{},"200":{}},"sidebarParentCategories":{}}],["visual",{"_index":1262,"title":{},"content":{"153":{}},"sidebarParentCategories":{}}],["void",{"_index":580,"title":{},"content":{"76":{},"81":{},"132":{},"177":{},"178":{}},"sidebarParentCategories":{}}],["walk",{"_index":405,"title":{},"content":{"41":{}},"sidebarParentCategories":{}}],["wallet",{"_index":173,"title":{},"content":{"8":{},"9":{},"38":{},"92":{},"95":{},"99":{},"100":{},"101":{},"103":{},"104":{},"136":{},"170":{},"171":{},"173":{},"175":{},"178":{},"181":{},"182":{},"186":{},"188":{},"237":{}},"sidebarParentCategories":{}}],["wallet_schem",{"_index":1233,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["walletconfig",{"_index":778,"title":{"99":{}},"content":{"92":{},"95":{},"99":{},"136":{},"175":{},"178":{},"182":{},"186":{}},"sidebarParentCategories":{}}],["walletconfig.id",{"_index":819,"title":{"100":{}},"content":{"136":{}},"sidebarParentCategories":{}}],["walletconfig.key",{"_index":820,"title":{"101":{}},"content":{"102":{},"136":{},"178":{},"186":{}},"sidebarParentCategories":{}}],["walletconfig.keyderivationmethod",{"_index":826,"title":{"102":{}},"content":{},"sidebarParentCategories":{}}],["walletconfig.storag",{"_index":849,"title":{"103":{}},"content":{},"sidebarParentCategories":{}}],["walletid",{"_index":376,"title":{},"content":{"38":{},"136":{}},"sidebarParentCategories":{}}],["walletkey",{"_index":377,"title":{},"content":{"38":{}},"sidebarParentCategories":{}}],["walletschem",{"_index":1230,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["walletscheme.databaseperwallet",{"_index":1234,"title":{},"content":{"136":{}},"sidebarParentCategories":{}}],["want",{"_index":417,"title":{},"content":{"44":{},"76":{},"82":{},"134":{},"177":{},"182":{},"183":{},"184":{},"201":{},"235":{},"239":{},"240":{}},"sidebarParentCategories":{}}],["warn",{"_index":1030,"title":{},"content":{"133":{}},"sidebarParentCategories":{}}],["warn(messag",{"_index":1018,"title":{},"content":{"132":{}},"sidebarParentCategories":{}}],["way",{"_index":6,"title":{},"content":{"1":{},"28":{},"33":{},"37":{},"40":{},"76":{},"93":{},"133":{},"159":{},"160":{},"168":{},"172":{},"177":{},"202":{},"238":{},"239":{},"240":{}},"sidebarParentCategories":{}}],["we'll",{"_index":259,"title":{},"content":{"16":{},"41":{},"165":{},"170":{}},"sidebarParentCategories":{}}],["we'v",{"_index":1317,"title":{},"content":{"166":{},"200":{},"202":{},"240":{}},"sidebarParentCategories":{}}],["websit",{"_index":855,"title":{},"content":{"104":{}},"sidebarParentCategories":{}}],["websocket",{"_index":249,"title":{},"content":{"14":{},"40":{},"93":{},"125":{},"175":{},"178":{},"182":{},"186":{}},"sidebarParentCategories":{}}],["weekli",{"_index":275,"title":{},"content":{"20":{}},"sidebarParentCategories":{}}],["welcom",{"_index":1,"title":{},"content":{"1":{}},"sidebarParentCategories":{}}],["well",{"_index":63,"title":{},"content":{"1":{},"103":{},"201":{}},"sidebarParentCategories":{}}],["whether",{"_index":19,"title":{},"content":{"1":{},"53":{},"61":{},"67":{},"73":{},"109":{},"115":{},"118":{},"119":{},"120":{},"123":{},"127":{},"129":{},"170":{},"200":{},"206":{}},"sidebarParentCategories":{}}],["whose",{"_index":1631,"title":{},"content":{"236":{}},"sidebarParentCategories":{}}],["window",{"_index":425,"title":{"62":{},"152":{}},"content":{"45":{},"135":{},"153":{},"157":{},"158":{}},"sidebarParentCategories":{}}],["wire",{"_index":934,"title":{},"content":{"117":{}},"sidebarParentCategories":{}}],["without",{"_index":811,"title":{},"content":{"99":{},"163":{},"188":{},"200":{},"203":{},"241":{}},"sidebarParentCategories":{}}],["won't",{"_index":1025,"title":{},"content":{"133":{},"173":{},"201":{}},"sidebarParentCategories":{}}],["work",{"_index":8,"title":{},"content":{"1":{},"2":{},"3":{},"6":{},"14":{},"20":{},"41":{},"44":{},"45":{},"81":{},"82":{},"91":{},"133":{},"159":{},"161":{},"162":{},"164":{},"175":{},"182":{},"198":{},"200":{},"209":{},"231":{},"236":{},"238":{}},"sidebarParentCategories":{}}],["workflow",{"_index":1218,"title":{},"content":{"170":{},"188":{}},"sidebarParentCategories":{}}],["world",{"_index":189,"title":{},"content":{"9":{}},"sidebarParentCategories":{}}],["worri",{"_index":1407,"title":{},"content":{"200":{}},"sidebarParentCategories":{}}],["worth",{"_index":1725,"title":{},"content":{"240":{}},"sidebarParentCategories":{}}],["wrapper",{"_index":305,"title":{},"content":{"23":{},"133":{}},"sidebarParentCategories":{}}],["written",{"_index":60,"title":{},"content":{"1":{}},"sidebarParentCategories":{}}],["wrong",{"_index":1536,"title":{},"content":{"206":{}},"sidebarParentCategories":{}}],["wsoutboundtransport",{"_index":785,"title":{},"content":{"93":{},"95":{},"175":{},"178":{},"182":{},"186":{}},"sidebarParentCategories":{}}],["wsoutboundtransport())agent.registeroutboundtransport(new",{"_index":791,"title":{},"content":{"93":{}},"sidebarParentCategories":{}}],["x86",{"_index":643,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["x86.jar",{"_index":663,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["x86.zip",{"_index":645,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["x86_64",{"_index":648,"title":{},"content":{"81":{},"157":{}},"sidebarParentCategories":{}}],["x86_64.zip",{"_index":650,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["xf",{"_index":658,"title":{},"content":{"81":{}},"sidebarParentCategories":{}}],["y",{"_index":505,"title":{},"content":{"55":{}},"sidebarParentCategories":{}}],["yarn",{"_index":330,"title":{"49":{},"57":{},"65":{},"71":{}},"content":{"29":{},"31":{},"35":{},"45":{},"49":{},"57":{},"65":{},"71":{},"90":{},"91":{},"182":{},"198":{},"231":{}},"sidebarParentCategories":{}}],["ye",{"_index":702,"title":{},"content":{"83":{},"235":{}},"sidebarParentCategories":{}}],["you'll",{"_index":83,"title":{},"content":{"1":{},"240":{}},"sidebarParentCategories":{}}],["you'r",{"_index":412,"title":{},"content":{"44":{},"82":{},"91":{},"159":{},"161":{},"162":{},"198":{},"201":{},"231":{}},"sidebarParentCategories":{}}],["yourself",{"_index":37,"title":{},"content":{"1":{},"170":{},"171":{},"202":{}},"sidebarParentCategories":{}}],["yum",{"_index":508,"title":{},"content":{"55":{},"58":{},"59":{}},"sidebarParentCategories":{}}],["zeromq",{"_index":464,"title":{},"content":{"51":{},"59":{},"139":{}},"sidebarParentCategories":{}}],["zip",{"_index":1242,"title":{},"content":{"138":{},"145":{}},"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 d9912cb0..a9b6fe99 100644 --- a/search-index-docs-default-0.4.json +++ b/search-index-docs-default-0.4.json @@ -1 +1 @@ -{"documents":[{"id":420,"pageTitle":"","sectionTitle":"Intro","sectionRoute":"/guides","type":"docs"},{"id":402,"pageTitle":"","sectionTitle":"Concepts","sectionRoute":"/guides/concepts","type":"docs"},{"id":403,"pageTitle":"","sectionTitle":"📄️ Agents","sectionRoute":"/guides/concepts","type":"docs"},{"id":404,"pageTitle":"","sectionTitle":"📄️ DIDs and DIDComm","sectionRoute":"/guides/concepts","type":"docs"},{"id":405,"pageTitle":"","sectionTitle":"📄️ Platform and Environment","sectionRoute":"/guides/concepts","type":"docs"},{"id":421,"pageTitle":"","sectionTitle":"Agents","sectionRoute":"/guides/concepts/agents","type":"docs"},{"id":422,"pageTitle":"","sectionTitle":"Characteristics","sectionRoute":"/guides/concepts/agents#characteristics","type":"docs"},{"id":423,"pageTitle":"","sectionTitle":"Categories","sectionRoute":"/guides/concepts/agents#categories","type":"docs"},{"id":424,"pageTitle":"","sectionTitle":"Examples","sectionRoute":"/guides/concepts/agents#examples","type":"docs"},{"id":425,"pageTitle":"","sectionTitle":"Useful resources","sectionRoute":"/guides/concepts/agents#useful-resources","type":"docs"},{"id":427,"pageTitle":"","sectionTitle":"DIDs and DIDComm","sectionRoute":"/guides/concepts/did-and-didcomm","type":"docs"},{"id":428,"pageTitle":"","sectionTitle":"DIDs","sectionRoute":"/guides/concepts/did-and-didcomm#dids","type":"docs"},{"id":429,"pageTitle":"","sectionTitle":"DID Documents","sectionRoute":"/guides/concepts/did-and-didcomm#did-documents","type":"docs"},{"id":430,"pageTitle":"","sectionTitle":"DIDComm","sectionRoute":"/guides/concepts/did-and-didcomm#didcomm","type":"docs"},{"id":431,"pageTitle":"","sectionTitle":"Useful Resources","sectionRoute":"/guides/concepts/did-and-didcomm#useful-resources","type":"docs"},{"id":426,"pageTitle":"","sectionTitle":"Platform and Environment","sectionRoute":"/guides/concepts/platform-and-environment","type":"docs"},{"id":432,"pageTitle":"","sectionTitle":"The Aries JavaScript Ecosystem","sectionRoute":"/guides/ecosystem","type":"docs"},{"id":433,"pageTitle":"","sectionTitle":"Repositories","sectionRoute":"/guides/ecosystem#repositories","type":"docs"},{"id":434,"pageTitle":"","sectionTitle":"Documentation","sectionRoute":"/guides/ecosystem#documentation","type":"docs"},{"id":435,"pageTitle":"","sectionTitle":"Aries Framework JavaScript","sectionRoute":"/guides/ecosystem#aries-framework-javascript","type":"docs"},{"id":436,"pageTitle":"","sectionTitle":"Contributing in the Aries JS Ecosystem","sectionRoute":"/guides/ecosystem#contributing-in-the-aries-js-ecosystem","type":"docs"},{"id":437,"pageTitle":"","sectionTitle":"Developer Contributions","sectionRoute":"/guides/ecosystem#developer-contributions","type":"docs"},{"id":438,"pageTitle":"","sectionTitle":"Extensions","sectionRoute":"/guides/extensions","type":"docs"},{"id":439,"pageTitle":"","sectionTitle":"📄️ REST API","sectionRoute":"/guides/extensions","type":"docs"},{"id":440,"pageTitle":"","sectionTitle":"📄️ React Hooks","sectionRoute":"/guides/extensions","type":"docs"},{"id":441,"pageTitle":"","sectionTitle":"📄️ Redux Store","sectionRoute":"/guides/extensions","type":"docs"},{"id":442,"pageTitle":"","sectionTitle":"📄️ Push Notifications","sectionRoute":"/guides/extensions","type":"docs"},{"id":445,"pageTitle":"","sectionTitle":"Push Notifications","sectionRoute":"/guides/extensions/push-notifications","type":"docs"},{"id":446,"pageTitle":"","sectionTitle":"Installation","sectionRoute":"/guides/extensions/push-notifications#installation","type":"docs"},{"id":463,"pageTitle":"","sectionTitle":"React Hooks","sectionRoute":"/guides/extensions/react-hooks","type":"docs"},{"id":464,"pageTitle":"","sectionTitle":"Installation","sectionRoute":"/guides/extensions/react-hooks#installation","type":"docs"},{"id":465,"pageTitle":"","sectionTitle":"Usage","sectionRoute":"/guides/extensions/react-hooks#usage","type":"docs"},{"id":443,"pageTitle":"","sectionTitle":"Redux Store","sectionRoute":"/guides/extensions/redux-store","type":"docs"},{"id":444,"pageTitle":"","sectionTitle":"Installation","sectionRoute":"/guides/extensions/redux-store#installation","type":"docs"},{"id":450,"pageTitle":"","sectionTitle":"REST API","sectionRoute":"/guides/extensions/rest","type":"docs"},{"id":451,"pageTitle":"","sectionTitle":"Quick Setup","sectionRoute":"/guides/extensions/rest#quick-setup","type":"docs"},{"id":452,"pageTitle":"","sectionTitle":"Directly on computer","sectionRoute":"/guides/extensions/rest#directly-on-computer","type":"docs"},{"id":453,"pageTitle":"","sectionTitle":"Configuration","sectionRoute":"/guides/extensions/rest#configuration","type":"docs"},{"id":447,"pageTitle":"","sectionTitle":"Getting started","sectionRoute":"/guides/getting-started","type":"docs"},{"id":448,"pageTitle":"","sectionTitle":"📄️ Prerequisites","sectionRoute":"/guides/getting-started","type":"docs"},{"id":449,"pageTitle":"","sectionTitle":"🗃️ Agent Setup","sectionRoute":"/guides/getting-started","type":"docs"},{"id":454,"pageTitle":"","sectionTitle":"Prerequisites","sectionRoute":"/guides/getting-started/prerequisites","type":"docs"},{"id":455,"pageTitle":"","sectionTitle":"Node.JS","sectionRoute":"/guides/getting-started/prerequisites#nodejs","type":"docs"},{"id":456,"pageTitle":"","sectionTitle":"NPM","sectionRoute":"/guides/getting-started/prerequisites#npm","type":"docs"},{"id":457,"pageTitle":"","sectionTitle":"Yarn","sectionRoute":"/guides/getting-started/prerequisites#yarn","type":"docs"},{"id":458,"pageTitle":"","sectionTitle":"Project Setup","sectionRoute":"/guides/getting-started/prerequisites#project-setup","type":"docs"},{"id":490,"pageTitle":"","sectionTitle":"Agent Setup","sectionRoute":"/guides/getting-started/set-up","type":"docs"},{"id":491,"pageTitle":"","sectionTitle":"Installing the required dependencies","sectionRoute":"/guides/getting-started/set-up#installing-the-required-dependencies","type":"docs"},{"id":492,"pageTitle":"","sectionTitle":"Additional setup","sectionRoute":"/guides/getting-started/set-up#additional-setup","type":"docs"},{"id":493,"pageTitle":"","sectionTitle":"Setting up the agent","sectionRoute":"/guides/getting-started/set-up#setting-up-the-agent","type":"docs"},{"id":494,"pageTitle":"","sectionTitle":"Adding a wallet and storage implementation","sectionRoute":"/guides/getting-started/set-up#adding-a-wallet-and-storage-implementation","type":"docs"},{"id":495,"pageTitle":"","sectionTitle":"📄️ Aries Askar","sectionRoute":"/guides/getting-started/set-up","type":"docs"},{"id":496,"pageTitle":"","sectionTitle":"📄️ Indy SDK","sectionRoute":"/guides/getting-started/set-up","type":"docs"},{"id":497,"pageTitle":"","sectionTitle":"Setting up the transports","sectionRoute":"/guides/getting-started/set-up#setting-up-the-transports","type":"docs"},{"id":498,"pageTitle":"","sectionTitle":"Initializing the agent","sectionRoute":"/guides/getting-started/set-up#initializing-the-agent","type":"docs"},{"id":499,"pageTitle":"","sectionTitle":"Next Steps","sectionRoute":"/guides/getting-started/set-up#next-steps","type":"docs"},{"id":500,"pageTitle":"","sectionTitle":"📄️ Tutorials","sectionRoute":"/guides/getting-started/set-up","type":"docs"},{"id":501,"pageTitle":"","sectionTitle":"📄️ Create a Connection","sectionRoute":"/guides/getting-started/set-up","type":"docs"},{"id":502,"pageTitle":"","sectionTitle":"Useful resources","sectionRoute":"/guides/getting-started/set-up#useful-resources","type":"docs"},{"id":508,"pageTitle":"","sectionTitle":"AnonCreds RS","sectionRoute":"/guides/getting-started/set-up/anoncreds-rs","type":"docs"},{"id":509,"pageTitle":"","sectionTitle":"Installing AnonCreds RS","sectionRoute":"/guides/getting-started/set-up/anoncreds-rs#installing-anoncreds-rs","type":"docs"},{"id":510,"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":511,"pageTitle":"","sectionTitle":"Configuration","sectionRoute":"/guides/getting-started/set-up/anoncreds-rs#configuration","type":"docs"},{"id":512,"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":459,"pageTitle":"","sectionTitle":"Aries Askar","sectionRoute":"/guides/getting-started/set-up/aries-askar","type":"docs"},{"id":460,"pageTitle":"","sectionTitle":"Installing Aries Askar","sectionRoute":"/guides/getting-started/set-up/aries-askar#installing-aries-askar","type":"docs"},{"id":461,"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":462,"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":479,"pageTitle":"","sectionTitle":"cheqd","sectionRoute":"/guides/getting-started/set-up/cheqd","type":"docs"},{"id":480,"pageTitle":"","sectionTitle":"Installing cheqd","sectionRoute":"/guides/getting-started/set-up/cheqd#installing-cheqd","type":"docs"},{"id":481,"pageTitle":"","sectionTitle":"Adding the cheqd to the Agent","sectionRoute":"/guides/getting-started/set-up/cheqd#adding-the-cheqd-to-the-agent","type":"docs"},{"id":466,"pageTitle":"","sectionTitle":"Indy SDK","sectionRoute":"/guides/getting-started/set-up/indy-sdk","type":"docs"},{"id":467,"pageTitle":"","sectionTitle":"Installing the Indy SDK","sectionRoute":"/guides/getting-started/set-up/indy-sdk#installing-the-indy-sdk","type":"docs"},{"id":468,"pageTitle":"","sectionTitle":"📄️ Linux","sectionRoute":"/guides/getting-started/set-up/indy-sdk","type":"docs"},{"id":469,"pageTitle":"","sectionTitle":"📄️ Windows","sectionRoute":"/guides/getting-started/set-up/indy-sdk","type":"docs"},{"id":470,"pageTitle":"","sectionTitle":"📄️ macOS (Intel)","sectionRoute":"/guides/getting-started/set-up/indy-sdk","type":"docs"},{"id":471,"pageTitle":"","sectionTitle":"📄️ macOS (ARM)","sectionRoute":"/guides/getting-started/set-up/indy-sdk","type":"docs"},{"id":472,"pageTitle":"","sectionTitle":"📄️ React Native","sectionRoute":"/guides/getting-started/set-up/indy-sdk","type":"docs"},{"id":473,"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":474,"pageTitle":"","sectionTitle":"Linux","sectionRoute":"/guides/getting-started/set-up/indy-sdk/linux","type":"docs"},{"id":475,"pageTitle":"","sectionTitle":"Libsodium","sectionRoute":"/guides/getting-started/set-up/indy-sdk/linux#libsodium","type":"docs"},{"id":476,"pageTitle":"","sectionTitle":"Libzmq","sectionRoute":"/guides/getting-started/set-up/indy-sdk/linux#libzmq","type":"docs"},{"id":477,"pageTitle":"","sectionTitle":"Indy SDK","sectionRoute":"/guides/getting-started/set-up/indy-sdk/linux#indy-sdk","type":"docs"},{"id":478,"pageTitle":"","sectionTitle":"Confirm installation","sectionRoute":"/guides/getting-started/set-up/indy-sdk/linux#confirm-installation","type":"docs"},{"id":482,"pageTitle":"","sectionTitle":"macOS (ARM)","sectionRoute":"/guides/getting-started/set-up/indy-sdk/macos-arm","type":"docs"},{"id":483,"pageTitle":"","sectionTitle":"Libsodium","sectionRoute":"/guides/getting-started/set-up/indy-sdk/macos-arm#libsodium","type":"docs"},{"id":484,"pageTitle":"","sectionTitle":"Libzmq","sectionRoute":"/guides/getting-started/set-up/indy-sdk/macos-arm#libzmq","type":"docs"},{"id":485,"pageTitle":"","sectionTitle":"Indy SDK","sectionRoute":"/guides/getting-started/set-up/indy-sdk/macos-arm#indy-sdk","type":"docs"},{"id":486,"pageTitle":"","sectionTitle":"Confirm installation","sectionRoute":"/guides/getting-started/set-up/indy-sdk/macos-arm#confirm-installation","type":"docs"},{"id":487,"pageTitle":"","sectionTitle":"macOS (Intel)","sectionRoute":"/guides/getting-started/set-up/indy-sdk/macos-intel","type":"docs"},{"id":488,"pageTitle":"","sectionTitle":"Indy SDK","sectionRoute":"/guides/getting-started/set-up/indy-sdk/macos-intel#indy-sdk","type":"docs"},{"id":489,"pageTitle":"","sectionTitle":"Confirm installation","sectionRoute":"/guides/getting-started/set-up/indy-sdk/macos-intel#confirm-installation","type":"docs"},{"id":503,"pageTitle":"","sectionTitle":"React Native","sectionRoute":"/guides/getting-started/set-up/indy-sdk/react-native","type":"docs"},{"id":504,"pageTitle":"","sectionTitle":"Expo","sectionRoute":"/guides/getting-started/set-up/indy-sdk/react-native#expo","type":"docs"},{"id":505,"pageTitle":"","sectionTitle":"Without Expo","sectionRoute":"/guides/getting-started/set-up/indy-sdk/react-native#without-expo","type":"docs"},{"id":506,"pageTitle":"","sectionTitle":"Windows","sectionRoute":"/guides/getting-started/set-up/indy-sdk/windows","type":"docs"},{"id":507,"pageTitle":"","sectionTitle":"Confirm installation","sectionRoute":"/guides/getting-started/set-up/indy-sdk/windows#confirm-installation","type":"docs"},{"id":571,"pageTitle":"","sectionTitle":"Indy VDR","sectionRoute":"/guides/getting-started/set-up/indy-vdr","type":"docs"},{"id":572,"pageTitle":"","sectionTitle":"Installing Indy VDR","sectionRoute":"/guides/getting-started/set-up/indy-vdr#installing-indy-vdr","type":"docs"},{"id":573,"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":574,"pageTitle":"","sectionTitle":"Configuration","sectionRoute":"/guides/getting-started/set-up/indy-vdr#configuration","type":"docs"},{"id":575,"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":517,"pageTitle":"","sectionTitle":"Tutorials","sectionRoute":"/guides/tutorials","type":"docs"},{"id":518,"pageTitle":"","sectionTitle":"🗃️ Agent Config","sectionRoute":"/guides/tutorials","type":"docs"},{"id":519,"pageTitle":"","sectionTitle":"📄️ Create a connection","sectionRoute":"/guides/tutorials","type":"docs"},{"id":520,"pageTitle":"","sectionTitle":"📄️ Cheqd Did Module","sectionRoute":"/guides/tutorials","type":"docs"},{"id":521,"pageTitle":"","sectionTitle":"📄️ Registering a schema and credential definition on an AnonCreds Registry","sectionRoute":"/guides/tutorials","type":"docs"},{"id":522,"pageTitle":"","sectionTitle":"📄️ Issue a credential","sectionRoute":"/guides/tutorials","type":"docs"},{"id":523,"pageTitle":"","sectionTitle":"📄️ Mediation","sectionRoute":"/guides/tutorials","type":"docs"},{"id":524,"pageTitle":"","sectionTitle":"🗃️ Using PostgreSQL with the Indy SDK","sectionRoute":"/guides/tutorials","type":"docs"},{"id":557,"pageTitle":"","sectionTitle":"Agent Config","sectionRoute":"/guides/tutorials/agent-config","type":"docs"},{"id":558,"pageTitle":"","sectionTitle":"label*","sectionRoute":"/guides/tutorials/agent-config#label","type":"docs"},{"id":559,"pageTitle":"","sectionTitle":"walletConfig","sectionRoute":"/guides/tutorials/agent-config#walletconfig","type":"docs"},{"id":560,"pageTitle":"","sectionTitle":"walletConfig.id*","sectionRoute":"/guides/tutorials/agent-config#walletconfigid","type":"docs"},{"id":561,"pageTitle":"","sectionTitle":"walletConfig.key*","sectionRoute":"/guides/tutorials/agent-config#walletconfigkey","type":"docs"},{"id":562,"pageTitle":"","sectionTitle":"walletConfig.keyDerivationMethod","sectionRoute":"/guides/tutorials/agent-config#walletconfigkeyderivationmethod","type":"docs"},{"id":563,"pageTitle":"","sectionTitle":"walletConfig.storage","sectionRoute":"/guides/tutorials/agent-config#walletconfigstorage","type":"docs"},{"id":564,"pageTitle":"","sectionTitle":"endpoints","sectionRoute":"/guides/tutorials/agent-config#endpoints","type":"docs"},{"id":565,"pageTitle":"","sectionTitle":"logger","sectionRoute":"/guides/tutorials/agent-config#logger","type":"docs"},{"id":566,"pageTitle":"","sectionTitle":"didCommMimeType","sectionRoute":"/guides/tutorials/agent-config#didcommmimetype","type":"docs"},{"id":567,"pageTitle":"","sectionTitle":"useDidSovPrefixWhereAllowed","sectionRoute":"/guides/tutorials/agent-config#usedidsovprefixwhereallowed","type":"docs"},{"id":568,"pageTitle":"","sectionTitle":"useDidKeyInProtocols","sectionRoute":"/guides/tutorials/agent-config#usedidkeyinprotocols","type":"docs"},{"id":569,"pageTitle":"","sectionTitle":"connectionImageUrl","sectionRoute":"/guides/tutorials/agent-config#connectionimageurl","type":"docs"},{"id":570,"pageTitle":"","sectionTitle":"autoUpdateStorageOnStartup","sectionRoute":"/guides/tutorials/agent-config#autoupdatestorageonstartup","type":"docs"},{"id":513,"pageTitle":"","sectionTitle":"Logging","sectionRoute":"/guides/tutorials/agent-config/logging","type":"docs"},{"id":514,"pageTitle":"","sectionTitle":"Using the Default ConsoleLogger","sectionRoute":"/guides/tutorials/agent-config/logging#using-the-default-consolelogger","type":"docs"},{"id":515,"pageTitle":"","sectionTitle":"Creating your own Logger","sectionRoute":"/guides/tutorials/agent-config/logging#creating-your-own-logger","type":"docs"},{"id":516,"pageTitle":"","sectionTitle":"Indy Logs","sectionRoute":"/guides/tutorials/agent-config/logging#indy-logs","type":"docs"},{"id":551,"pageTitle":"","sectionTitle":"Cheqd Did Module","sectionRoute":"/guides/tutorials/cheqd","type":"docs"},{"id":552,"pageTitle":"","sectionTitle":"DID Module","sectionRoute":"/guides/tutorials/cheqd#did-module","type":"docs"},{"id":553,"pageTitle":"","sectionTitle":"Create DID","sectionRoute":"/guides/tutorials/cheqd#create-did","type":"docs"},{"id":554,"pageTitle":"","sectionTitle":"Update DID","sectionRoute":"/guides/tutorials/cheqd#update-did","type":"docs"},{"id":555,"pageTitle":"","sectionTitle":"Deactivate DID","sectionRoute":"/guides/tutorials/cheqd#deactivate-did","type":"docs"},{"id":556,"pageTitle":"","sectionTitle":"Types","sectionRoute":"/guides/tutorials/cheqd#types","type":"docs"},{"id":628,"pageTitle":"","sectionTitle":"Create a connection","sectionRoute":"/guides/tutorials/create-a-connection","type":"docs"},{"id":629,"pageTitle":"","sectionTitle":"1. Setting up the agents","sectionRoute":"/guides/tutorials/create-a-connection#1-setting-up-the-agents","type":"docs"},{"id":630,"pageTitle":"","sectionTitle":"3. Receiving the invitation","sectionRoute":"/guides/tutorials/create-a-connection#3-receiving-the-invitation","type":"docs"},{"id":631,"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":632,"pageTitle":"","sectionTitle":"5. Full code snippets","sectionRoute":"/guides/tutorials/create-a-connection#5-full-code-snippets","type":"docs"},{"id":633,"pageTitle":"","sectionTitle":"Useful resources","sectionRoute":"/guides/tutorials/create-a-connection#useful-resources","type":"docs"},{"id":583,"pageTitle":"","sectionTitle":"Using PostgreSQL as Database for Indy SDK in Node.js","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs","type":"docs"},{"id":584,"pageTitle":"","sectionTitle":"Installation of the Postgres Plugin","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs#installation-of-the-postgres-plugin","type":"docs"},{"id":585,"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":543,"pageTitle":"","sectionTitle":"Postgres Setup for Linux","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/linux","type":"docs"},{"id":544,"pageTitle":"","sectionTitle":"Prerequisites","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/linux#prerequisites","type":"docs"},{"id":545,"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":546,"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":547,"pageTitle":"","sectionTitle":"Step 2: Build Postgres plugin","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/linux#step-2-build-postgres-plugin","type":"docs"},{"id":548,"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":549,"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":550,"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":576,"pageTitle":"","sectionTitle":"Postgres Setup for macOS","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/macos","type":"docs"},{"id":577,"pageTitle":"","sectionTitle":"Prerequisites","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/macos#prerequisites","type":"docs"},{"id":578,"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":579,"pageTitle":"","sectionTitle":"Step 2: Build Postgres plugin","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/macos#step-2-build-postgres-plugin","type":"docs"},{"id":580,"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":581,"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":582,"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":592,"pageTitle":"","sectionTitle":"Postgres Setup for windows","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/windows","type":"docs"},{"id":593,"pageTitle":"","sectionTitle":"Build Environment Prerequisites","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/windows#build-environment-prerequisites","type":"docs"},{"id":594,"pageTitle":"","sectionTitle":"Step 1: Getting dependencies","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/windows#step-1-getting-dependencies","type":"docs"},{"id":595,"pageTitle":"","sectionTitle":"Step 2: Build Postgres plugin","sectionRoute":"/guides/tutorials/indy-sdk-postgres-database-nodejs/windows#step-2-build-postgres-plugin","type":"docs"},{"id":596,"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":597,"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":598,"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":641,"pageTitle":"","sectionTitle":"Issue a credential","sectionRoute":"/guides/tutorials/issue-a-credential","type":"docs"},{"id":642,"pageTitle":"","sectionTitle":"1. Setting up the agents","sectionRoute":"/guides/tutorials/issue-a-credential#1-setting-up-the-agents","type":"docs"},{"id":643,"pageTitle":"","sectionTitle":"3. Listening for incoming credentials","sectionRoute":"/guides/tutorials/issue-a-credential#3-listening-for-incoming-credentials","type":"docs"},{"id":644,"pageTitle":"","sectionTitle":"4. Issuing a credential","sectionRoute":"/guides/tutorials/issue-a-credential#4-issuing-a-credential","type":"docs"},{"id":645,"pageTitle":"","sectionTitle":"Useful resources","sectionRoute":"/guides/tutorials/issue-a-credential#useful-resources","type":"docs"},{"id":610,"pageTitle":"","sectionTitle":"Mediation","sectionRoute":"/guides/tutorials/mediation","type":"docs"},{"id":611,"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":612,"pageTitle":"","sectionTitle":"1. Mediator setup","sectionRoute":"/guides/tutorials/mediation#1-mediator-setup","type":"docs"},{"id":613,"pageTitle":"","sectionTitle":"2. Recipient (Alice) setup","sectionRoute":"/guides/tutorials/mediation#2-recipient-alice-setup","type":"docs"},{"id":614,"pageTitle":"","sectionTitle":"3. Message exchange","sectionRoute":"/guides/tutorials/mediation#3-message-exchange","type":"docs"},{"id":615,"pageTitle":"","sectionTitle":"Useful resources","sectionRoute":"/guides/tutorials/mediation#useful-resources","type":"docs"},{"id":634,"pageTitle":"","sectionTitle":"Registering a schema and credential definition on an AnonCreds Registry","sectionRoute":"/guides/tutorials/registering-schema-and-credential-definition","type":"docs"},{"id":635,"pageTitle":"","sectionTitle":"1. Setting up the agent","sectionRoute":"/guides/tutorials/registering-schema-and-credential-definition#1-setting-up-the-agent","type":"docs"},{"id":636,"pageTitle":"","sectionTitle":"2. Importing a DID (optional)","sectionRoute":"/guides/tutorials/registering-schema-and-credential-definition#2-importing-a-did-optional","type":"docs"},{"id":637,"pageTitle":"","sectionTitle":"3. Registering a schema","sectionRoute":"/guides/tutorials/registering-schema-and-credential-definition#3-registering-a-schema","type":"docs"},{"id":638,"pageTitle":"","sectionTitle":"3. Registering a credential definition","sectionRoute":"/guides/tutorials/registering-schema-and-credential-definition#3-registering-a-credential-definition","type":"docs"},{"id":639,"pageTitle":"","sectionTitle":"Using it","sectionRoute":"/guides/tutorials/registering-schema-and-credential-definition#using-it","type":"docs"},{"id":640,"pageTitle":"","sectionTitle":"Useful Resources","sectionRoute":"/guides/tutorials/registering-schema-and-credential-definition#useful-resources","type":"docs"},{"id":599,"pageTitle":"","sectionTitle":"Updating AFJ","sectionRoute":"/guides/updating","type":"docs"},{"id":600,"pageTitle":"","sectionTitle":"📄️ Update Assistant","sectionRoute":"/guides/updating","type":"docs"},{"id":601,"pageTitle":"","sectionTitle":"📄️ Migrating from an Indy SDK Wallet to Aries Askar","sectionRoute":"/guides/updating","type":"docs"},{"id":602,"pageTitle":"","sectionTitle":"📄️ Migrating from AFJ 0.1.0 to 0.2.x","sectionRoute":"/guides/updating","type":"docs"},{"id":603,"pageTitle":"","sectionTitle":"📄️ Migrating from AFJ 0.2.x to 0.3.x","sectionRoute":"/guides/updating","type":"docs"},{"id":604,"pageTitle":"","sectionTitle":"📄️ Migrating from AFJ 0.3.x to 0.4.x","sectionRoute":"/guides/updating","type":"docs"},{"id":605,"pageTitle":"","sectionTitle":"Versioning","sectionRoute":"/guides/updating#versioning","type":"docs"},{"id":606,"pageTitle":"","sectionTitle":"Types of breaking changes","sectionRoute":"/guides/updating#types-of-breaking-changes","type":"docs"},{"id":607,"pageTitle":"","sectionTitle":"Breaking Code Changes","sectionRoute":"/guides/updating#breaking-code-changes","type":"docs"},{"id":608,"pageTitle":"","sectionTitle":"Breaking Storage Changes","sectionRoute":"/guides/updating#breaking-storage-changes","type":"docs"},{"id":609,"pageTitle":"","sectionTitle":"Migration Guides","sectionRoute":"/guides/updating#migration-guides","type":"docs"},{"id":586,"pageTitle":"","sectionTitle":"Update Assistant","sectionRoute":"/guides/updating/update-assistant","type":"docs"},{"id":587,"pageTitle":"","sectionTitle":"Update Strategies","sectionRoute":"/guides/updating/update-assistant#update-strategies","type":"docs"},{"id":588,"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":589,"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":590,"pageTitle":"","sectionTitle":"Automatically update on agent startup","sectionRoute":"/guides/updating/update-assistant#automatically-update-on-agent-startup","type":"docs"},{"id":591,"pageTitle":"","sectionTitle":"Backups","sectionRoute":"/guides/updating/update-assistant#backups","type":"docs"},{"id":646,"pageTitle":"","sectionTitle":"Migrating from an Indy SDK Wallet to Aries Askar","sectionRoute":"/guides/updating/update-indy-sdk-to-askar","type":"docs"},{"id":647,"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":648,"pageTitle":"","sectionTitle":"Create a backup","sectionRoute":"/guides/updating/update-indy-sdk-to-askar#create-a-backup","type":"docs"},{"id":649,"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":650,"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":651,"pageTitle":"","sectionTitle":"Update the keys","sectionRoute":"/guides/updating/update-indy-sdk-to-askar#update-the-keys","type":"docs"},{"id":652,"pageTitle":"","sectionTitle":"Update the DIDs","sectionRoute":"/guides/updating/update-indy-sdk-to-askar#update-the-dids","type":"docs"},{"id":653,"pageTitle":"","sectionTitle":"Update the credential definitions","sectionRoute":"/guides/updating/update-indy-sdk-to-askar#update-the-credential-definitions","type":"docs"},{"id":654,"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":655,"pageTitle":"","sectionTitle":"Update the credentials","sectionRoute":"/guides/updating/update-indy-sdk-to-askar#update-the-credentials","type":"docs"},{"id":656,"pageTitle":"","sectionTitle":"All the other records","sectionRoute":"/guides/updating/update-indy-sdk-to-askar#all-the-other-records","type":"docs"},{"id":657,"pageTitle":"","sectionTitle":"How to update","sectionRoute":"/guides/updating/update-indy-sdk-to-askar#how-to-update","type":"docs"},{"id":658,"pageTitle":"","sectionTitle":"add the required dependencies:","sectionRoute":"/guides/updating/update-indy-sdk-to-askar#add-the-required-dependencies","type":"docs"},{"id":659,"pageTitle":"","sectionTitle":"Getting the database path","sectionRoute":"/guides/updating/update-indy-sdk-to-askar#getting-the-database-path","type":"docs"},{"id":616,"pageTitle":"","sectionTitle":"Migrating from AFJ 0.1.0 to 0.2.x","sectionRoute":"/guides/updating/versions/0.1-to-0.2","type":"docs"},{"id":617,"pageTitle":"","sectionTitle":"Breaking Code Changes","sectionRoute":"/guides/updating/versions/0.1-to-0.2#breaking-code-changes","type":"docs"},{"id":618,"pageTitle":"","sectionTitle":"Credentials Module","sectionRoute":"/guides/updating/versions/0.1-to-0.2#credentials-module","type":"docs"},{"id":619,"pageTitle":"","sectionTitle":"Connections Module","sectionRoute":"/guides/updating/versions/0.1-to-0.2#connections-module","type":"docs"},{"id":620,"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":621,"pageTitle":"","sectionTitle":"Breaking Storage Changes","sectionRoute":"/guides/updating/versions/0.1-to-0.2#breaking-storage-changes","type":"docs"},{"id":622,"pageTitle":"","sectionTitle":"Credential Metadata","sectionRoute":"/guides/updating/versions/0.1-to-0.2#credential-metadata","type":"docs"},{"id":623,"pageTitle":"","sectionTitle":"Migrate Credential Record Properties","sectionRoute":"/guides/updating/versions/0.1-to-0.2#migrate-credential-record-properties","type":"docs"},{"id":624,"pageTitle":"","sectionTitle":"Mediation Record Role","sectionRoute":"/guides/updating/versions/0.1-to-0.2#mediation-record-role","type":"docs"},{"id":625,"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":626,"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":627,"pageTitle":"","sectionTitle":"Unifying Connection States and Roles","sectionRoute":"/guides/updating/versions/0.1-to-0.2#unifying-connection-states-and-roles","type":"docs"},{"id":660,"pageTitle":"","sectionTitle":"Migrating from AFJ 0.2.x to 0.3.x","sectionRoute":"/guides/updating/versions/0.2-to-0.3","type":"docs"},{"id":661,"pageTitle":"","sectionTitle":"Breaking Code Changes","sectionRoute":"/guides/updating/versions/0.2-to-0.3#breaking-code-changes","type":"docs"},{"id":662,"pageTitle":"","sectionTitle":"Agent creation","sectionRoute":"/guides/updating/versions/0.2-to-0.3#agent-creation","type":"docs"},{"id":663,"pageTitle":"","sectionTitle":"did:key usage in protocols","sectionRoute":"/guides/updating/versions/0.2-to-0.3#didkey-usage-in-protocols","type":"docs"},{"id":664,"pageTitle":"","sectionTitle":"Modules extracted from the core","sectionRoute":"/guides/updating/versions/0.2-to-0.3#modules-extracted-from-the-core","type":"docs"},{"id":665,"pageTitle":"","sectionTitle":"Discover Features Module","sectionRoute":"/guides/updating/versions/0.2-to-0.3#discover-features-module","type":"docs"},{"id":666,"pageTitle":"","sectionTitle":"Ledger Module","sectionRoute":"/guides/updating/versions/0.2-to-0.3#ledger-module","type":"docs"},{"id":667,"pageTitle":"","sectionTitle":"Proofs Module","sectionRoute":"/guides/updating/versions/0.2-to-0.3#proofs-module","type":"docs"},{"id":668,"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":669,"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":670,"pageTitle":"","sectionTitle":"Breaking Storage Changes","sectionRoute":"/guides/updating/versions/0.2-to-0.3#breaking-storage-changes","type":"docs"},{"id":671,"pageTitle":"","sectionTitle":"Migrate Proof Record Properties","sectionRoute":"/guides/updating/versions/0.2-to-0.3#migrate-proof-record-properties","type":"docs"},{"id":672,"pageTitle":"","sectionTitle":"Migrate Connection Record properties","sectionRoute":"/guides/updating/versions/0.2-to-0.3#migrate-connection-record-properties","type":"docs"},{"id":673,"pageTitle":"","sectionTitle":"Migrate Did Record properties","sectionRoute":"/guides/updating/versions/0.2-to-0.3#migrate-did-record-properties","type":"docs"},{"id":674,"pageTitle":"","sectionTitle":"Migrating from AFJ 0.3.x to 0.4.x","sectionRoute":"/guides/updating/versions/0.3-to-0.4","type":"docs"},{"id":675,"pageTitle":"","sectionTitle":"Breaking Code Changes","sectionRoute":"/guides/updating/versions/0.3-to-0.4#breaking-code-changes","type":"docs"},{"id":676,"pageTitle":"","sectionTitle":"Agent Creation","sectionRoute":"/guides/updating/versions/0.3-to-0.4#agent-creation","type":"docs"},{"id":677,"pageTitle":"","sectionTitle":"Indy Network Configuration","sectionRoute":"/guides/updating/versions/0.3-to-0.4#indy-network-configuration","type":"docs"},{"id":678,"pageTitle":"","sectionTitle":"Changes to wallet","sectionRoute":"/guides/updating/versions/0.3-to-0.4#changes-to-wallet","type":"docs"},{"id":679,"pageTitle":"","sectionTitle":"Did Resolver and Registrar","sectionRoute":"/guides/updating/versions/0.3-to-0.4#did-resolver-and-registrar","type":"docs"},{"id":680,"pageTitle":"","sectionTitle":"Removal of publicDidSeed and publicDid","sectionRoute":"/guides/updating/versions/0.3-to-0.4#removal-of-publicdidseed-and-publicdid","type":"docs"},{"id":681,"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":682,"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":683,"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":684,"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":685,"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":686,"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":687,"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":688,"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":689,"pageTitle":"","sectionTitle":"Generalizing Indy properties in CredentialExchangeRecord","sectionRoute":"/guides/updating/versions/0.3-to-0.4#generalizing-indy-properties-in-credentialexchangerecord","type":"docs"},{"id":690,"pageTitle":"","sectionTitle":"More paths in FileSystem","sectionRoute":"/guides/updating/versions/0.3-to-0.4#more-paths-in-filesystem","type":"docs"},{"id":691,"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/420",[0,6.993]],["content/420",[1,3.632,2,1.257,3,2.33,4,5.299,5,2.409,6,1.581,7,3.035,8,2.036,9,2.497,10,2.598,11,2.331,12,3.632,13,3.272,14,3.632,15,5.501,16,3.632,17,1.308,18,2.497,19,2.083,20,3.237,21,4.328,22,2.8,23,3.632,24,3.53,25,2.588,26,3.272,27,3.632,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.598,38,5.224,39,3.272,40,2.26,41,1.9,42,3.63,43,1.274,44,2.716,45,3.632,46,2.598,47,2.716,48,3.632,49,3.272,50,1.692,51,2.858,52,3.272,53,1.442,54,3.632,55,0.5,56,2.858,57,3.632,58,0.691,59,1.788,60,4.956,61,5.501,62,2.036,63,2.409,64,3.632,65,2.716,66,1.788,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.632,77,2.137,78,2.598,79,3.272,80,3.272,81,2.497,82,3.632,83,4.596,84,1.788,85,3.632,86,1.986,87,0.689,88,2.716,89,1.755,90,2.716,91,1.788,92,2.497,93,1.824,94,3.632,95,1.788,96,1.508,97,3.632,98,3.632,99,3.632,100,3.632,101,2.858,102,0.749]],["sidebarParentCategories/420",[]],["title/402",[86,3.822]],["content/402",[2,1.419,3,2.986,8,2.102,22,2.395,24,3.645,25,2.461,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.587,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.68,108,3.179,109,5.68,110,4.469,111,2.223,112,2.852,113,3.958,114,3.036,115,3.295,116,5.659,117,2.646,118,3.036,119,3.257]],["sidebarParentCategories/402",[]],["title/403",[31,0.542,55,0.803]],["content/403",[2,1.44,8,3.076,111,3.253,112,4.174]],["sidebarParentCategories/403",[]],["title/404",[55,0.689,113,2.621,114,2.678]],["content/404",[113,4.516]],["sidebarParentCategories/404",[]],["title/405",[55,0.689,66,2.467,115,2.181]],["content/405",[2,1.295,3,3.025,22,2.935,24,4.465,25,2.804,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.029,116,6.448,117,3.242,118,3.719,119,3.991]],["sidebarParentCategories/405",[]],["title/421",[31,0.65]],["content/421",[2,1.381,8,2.864,31,0.719,111,3.029,112,3.886,120,4.331,121,5.133,122,5.902,123,4.363,124,6.972]],["sidebarParentCategories/421",[86,3.509]],["title/422",[125,6.299]],["content/422",[2,1.31,3,1.809,11,3.309,29,2.589,30,1.524,31,0.849,34,1.507,46,3.689,58,0.537,106,3.118,112,3.559,114,3.789,121,3.421,125,4.646,126,3.857,127,4.646,128,6.386,129,5.157,130,6.386,131,4.549,132,4.646,133,4.874,134,5.157,135,3.857,136,5.157,137,4.646,138,3.421,139,3.689,140,5.577,141,2.078,142,5.923,143,5.157,144,5.157,145,4.309,146,3.245,147,1.698,148,4.874,149,2.589,150,2.774,151,1.719,152,2.642,153,2.109,154,3.309,155,4.646,156,3.421,157,4.058,158,4.309,159,5.157,160,3.118,161,4.058,162,5.157,163,3.421,164,3.309]],["sidebarParentCategories/422",[86,3.509]],["title/423",[165,5.229]],["content/423",[2,1.32,3,2.128,31,0.96,34,1.772,35,3.555,106,3.666,165,6.572,166,4.771,167,7.917,168,4.022,169,4.804,170,6.601,171,5.432,172,2.986,173,1.948,174,4.338,175,5.463,176,6.064,177,6.064,178,6.064,179,6.601,180,3.241,181,3.332,182,6.064]],["sidebarParentCategories/423",[86,3.509]],["title/424",[96,2.904]],["content/424",[2,1.099,11,4.697,30,1.598,31,0.68,33,3.364,34,1.58,44,4.043,53,2.146,55,0.744,58,0.762,70,1.544,71,1.58,96,3.04,108,3.025,132,4.87,133,3.717,135,4.043,138,3.586,139,3.867,147,1.78,151,1.802,152,2.77,153,2.211,154,3.469,156,3.586,163,3.586,169,4.537,173,2.352,181,2.28,183,2.475,184,4.517,185,5.406,186,5.406,187,5.406,188,5.406,189,5.406,190,3.181,191,2.955,192,4.862,193,5.406,194,5.406,195,5.406,196,7.32,197,4.87,198,4.87,199,4.043,200,5.406,201,2.056,202,4.253,203,3.025,204,4.87]],["sidebarParentCategories/424",[86,3.509]],["title/425",[40,3.632,58,0.608]],["content/425",[2,1.215,31,0.751,42,4.422,102,1.668,124,7.286,205,5.033,206,7.286,207,2.135]],["sidebarParentCategories/425",[86,3.509]],["title/427",[113,3.054,114,3.12]],["content/427",[]],["sidebarParentCategories/427",[86,3.509]],["title/428",[113,3.658]],["content/428",[11,5.614,29,3.577,43,2.5,113,4.576,145,5.953,154,4.572,197,6.418,204,6.418,208,6.418,209,8.749,210,5.29,211,2.566,212,4.725,213,3.65,214,7.124,215,7.124,216,7.124,217,3.727,218,7.124]],["sidebarParentCategories/428",[86,3.509]],["title/429",[32,2.698]],["content/429",[20,4.063,32,3.311,59,4.225,141,2.782,149,3.467,152,3.537,153,2.824,191,3.775,192,3.775,219,4.58,220,4.431,221,5.163,222,4.94,223,3.775,224,4.175,225,4.063,226,3.467,227,5.432,228,5.188,229,4.802,230,4.431,231,4.748,232,4.748]],["sidebarParentCategories/429",[86,3.509]],["title/430",[114,3.738]],["content/430",[2,0.887,3,2.072,8,2.873,46,4.224,47,4.415,49,5.319,103,2.452,104,4.415,105,3.916,106,3.57,114,4.637,121,3.916,147,1.944,149,2.965,152,3.978,153,3.175,154,3.789,156,5.754,183,2.703,228,3.57,229,3.304,233,3.789,234,4.415,235,5.905,236,3.304,237,5.905,238,3.474,239,2.853,240,3.228,241,4.415,242,3.789,243,4.224,244,4.06,245,4.224,246,3.474,247,5.905,248,3.57,249,3.789,250,3.674,251,5.319,252,4.224,253,1.993]],["sidebarParentCategories/430",[86,3.509]],["title/431",[40,3.632,58,0.608]],["content/431",[114,4.528,254,8.734]],["sidebarParentCategories/431",[86,3.509]],["title/426",[66,2.874,115,2.541]],["content/426",[2,1.295,3,3.025,22,2.935,24,4.465,25,2.804,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.029,116,6.448,117,3.242,118,3.719,119,3.991]],["sidebarParentCategories/426",[86,3.509]],["title/432",[2,0.752,3,1.758,106,3.029]],["content/432",[2,1.123,3,2.625,59,3.684,92,5.144,93,3.756,103,3.107,106,4.523,160,4.523,203,4.186,255,4.29,256,6.739,257,7.091,258,7.481,259,6.251,260,4.962,261,4.29]],["sidebarParentCategories/432",[]],["title/433",[93,3.511]],["content/433",[2,1.491,3,3.346,25,2.873,31,0.673,70,2.067,71,2.115,93,3.635,126,5.414,169,3.957,262,3.565,263,7.24,264,3.565,265,4.051,266,3.258,267,5.696]],["sidebarParentCategories/433",[]],["title/434",[32,2.698]],["content/434",[2,1.458,3,3.178,25,2.946,31,0.701,32,2.91,38,5.935,70,2.154,71,2.204,169,4.124,239,3.645,266,3.395,267,5.935]],["sidebarParentCategories/434",[]],["title/435",[2,0.752,3,1.758,25,1.629]],["content/435",[2,1.353,3,3.162,25,2.433,43,2.625,92,5.144,106,4.523,147,2.463,153,3.06,164,4.801,201,2.846,253,2.526,268,2.695,269,4.29,270,7.481]],["sidebarParentCategories/435",[]],["title/436",[2,0.659,106,2.653,271,3.666,272,3.666]],["content/436",[2,1.437,8,2.701,25,2.374,67,3.818,167,6.575,262,3.594,267,5.742,272,6.098,273,5.742,274,7.298,275,7.298,276,9.957,277,6.575,278,4.841,279,7.298]],["sidebarParentCategories/436",[]],["title/437",[67,3.054,271,4.877]],["content/437",[2,0.984,43,2.299,67,3.427,75,5.474,91,4.088,150,2.564,233,4.204,267,5.155,268,2.483,271,7.616,273,5.155,280,4.886,281,8.303,282,8.303,283,6.552,284,6.552,285,2.03,286,6.552,287,6.552,288,6.552,289,5.474,290,6.552,291,5.902,292,5.902,293,4.899,294,5.902,295,4.346]],["sidebarParentCategories/437",[]],["title/438",[266,3.147]],["content/438",[2,1.368,3,2.828,4,2.359,6,1.436,7,2.756,22,1.391,24,2.116,25,2.621,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.565,96,1.37,111,1.291,112,3.14,120,1.846,122,5.172,123,2.966,155,2.971,181,2.97,190,1.941,192,1.803,229,3.5,248,3.089,249,2.116,255,1.891,261,3.587,262,1.624,266,3.17,268,2.514,269,1.891,296,2.466,297,3.179,298,2.359,299,2.359,300,3.298,301,3.298,302,2.971,303,2.838,304,5.542,305,4.92,306,1.073,307,2.756,308,2.756,309,4.474,310,2.595,311,1.391,312,2.359,313,2.756,314,5.766,315,5.239,316,2.339,317,2.116,318,1.349,319,2.756,320,1.237,321,2.756,322,2.756,323,2.116,324,1.204,325,2.188,326,2.359,327,3.513,328,1.941,329,1.846,330,1.188,331,2.595,332,2.756,333,2.359]],["sidebarParentCategories/438",[]],["title/439",[55,0.689,122,3.215,123,2.376]],["content/439",[2,0.998,3,2.333,4,4.756,25,2.162,31,0.853,43,2.94,112,3.338,122,5.889,123,3.154,181,3.534,229,4.69,248,4.02,249,4.267,261,4.806,268,2.506,317,4.267,318,2.719,319,5.555,320,2.494,321,5.555,322,5.555,323,4.267,324,2.427]],["sidebarParentCategories/439",[]],["title/440",[55,0.689,70,1.43,304,3.445]],["content/440",[58,0.799,70,2.792,112,3.853,181,3.236,190,4.515,268,2.295,303,3.092,304,6.292,325,5.089,326,5.489,327,5.276]],["sidebarParentCategories/440",[]],["title/441",[53,1.989,55,0.689,309,3.584]],["content/441",[22,3.209,24,4.882,53,3.021,55,1.047,58,0.948,70,2.6,71,2.223,111,2.977,268,2.275,309,5.442,327,5.231,328,4.477,329,4.257]],["sidebarParentCategories/441",[]],["title/442",[55,0.689,314,3.584,315,3.445]],["content/442",[6,3.203,31,0.684,43,2.582,58,0.766,120,4.118,181,3.103,268,2.2,303,2.965,314,6.87,315,6.603,316,3.368,330,2.65,331,5.789,332,6.148,333,5.264]],["sidebarParentCategories/442",[]],["title/445",[314,4.176,315,4.014]],["content/445",[2,1.208,6,2.714,8,2.306,31,0.579,32,2.405,43,2.187,58,0.649,120,3.488,181,2.629,224,3.768,265,3.488,266,2.805,268,1.864,269,3.574,303,3.791,306,2.896,313,5.208,314,6.967,315,6.469,316,2.853,330,2.245,331,4.904,332,5.208,333,4.459,334,3.332,335,5.615,336,2.758,337,2.904]],["sidebarParentCategories/445",[266,2.889]],["title/446",[338,1.747]],["content/446",[2,1.138,31,0.821,55,1.453,58,0.593,91,1.872,135,6.371,151,2.527,152,3.883,160,3.442,228,3.442,231,5.211,303,1.532,313,5.703,314,5.422,315,2.614,316,1.74,323,2.439,330,1.369,331,2.991,333,4.073,336,1.682,339,2.7,340,2.366,341,1.872,342,2.859,343,2.606,344,2.522,345,1.743,346,5.693,347,5.693,348,1.388,349,1.842,350,1.192,351,1.644,352,3.802,353,3.802,354,3.477,355,2.522,356,2.522,357,3.732,358,5.693,359,3.802,360,2.439,361,5.693,362,5.693,363,4.757,364,3.802,365,5.693,366,3.776,367,3.425,368,3.802,369,3.802]],["sidebarParentCategories/446",[266,2.889]],["title/463",[70,1.667,304,4.014]],["content/463",[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,181,3.274,190,4.568,192,3.228,224,3.57,265,3.304,266,2.657,268,1.766,269,3.386,303,3.713,304,6.582,306,2.821,311,2.49,317,3.789,325,3.916,326,4.224,327,5.338,334,3.156,335,5.319,336,2.613,337,2.751,370,4.645,371,5.319,372,3.089]],["sidebarParentCategories/463",[266,2.889]],["title/464",[338,1.747]],["content/464",[2,1.34,70,2.101,91,3.623,303,2.965,304,5.059,311,3.763,323,4.722,339,4.232,340,4.579,341,3.623,342,4.48,343,4.085,373,8.923]],["sidebarParentCategories/464",[266,2.889]],["title/465",[344,4.638]],["content/465",[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.915,70,0.779,73,1.604,83,2.278,96,2.293,112,1.369,116,2.039,126,2.039,147,0.898,151,1.841,181,1.15,192,3.019,239,1.317,257,2.145,268,0.815,280,1.604,285,0.845,291,2.456,303,1.099,304,6.055,306,1.429,311,2.329,318,1.115,320,1.023,325,1.808,326,1.95,328,1.604,345,1.691,348,2.967,349,0.736,354,1.168,374,1.526,375,2.278,376,6.947,377,5.522,378,6.947,379,2.727,380,4.396,381,2.727,382,2.727,383,4.396,384,2.727,385,2.727,386,1.168,387,1.15,388,2.456,389,5.312,390,1.564,391,1.875,392,2.727,393,2.727,394,4.396,395,1.875,396,2.727,397,1.187,398,2.727,399,2.727,400,2.727,401,4.156,402,2.727,403,2.727,404,2.456,405,1.604,406,2.456,407,1.447,408,0.982,409,2.727,410,1.132,411,2.039,412,4.975,413,2.727,414,2.456,415,2.727,416,0.957,417,2.727,418,2.039,419,2.735,420,2.456,421,2.727,422,2.145,423,1.248,424,1.95,425,2.727,426,2.727,427,2.727,428,1.648,429,2.727,430,2.727,431,2.456,432,1.564,433,2.727,434,1.697,435,1.808,436,2.727,437,2.727,438,1.825,439,2.403,440,2.278,441,2.727,442,2.727,443,2.145,444,2.456,445,2.727,446,2.727,447,2.727]],["sidebarParentCategories/465",[266,2.889]],["title/443",[53,2.318,309,4.176]],["content/443",[2,1.099,8,2,22,2.28,24,3.469,25,1.758,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.714,151,1.802,181,3.087,190,3.181,224,3.269,226,2.714,265,3.025,266,2.433,268,2.189,269,3.1,303,3.344,306,2.699,308,4.517,309,5.937,327,5.033,328,5.234,329,4.096,334,2.89,336,2.392,337,3.41,345,1.655,435,3.586,448,4.043,449,3.469,450,2.714,451,5.406,452,5.406]],["sidebarParentCategories/443",[266,2.889]],["title/444",[338,1.747]],["content/444",[2,1.34,53,3.813,91,3.623,303,2.965,308,7.455,309,5.264,323,4.722,339,4.232,340,4.579,341,3.623,342,4.48,343,4.085]],["sidebarParentCategories/444",[266,2.889]],["title/450",[122,3.746,123,2.769]],["content/450",[2,1.352,3,1.558,4,3.178,6,1.934,8,2.362,9,3.054,10,3.178,11,2.85,17,1.6,18,3.054,24,4.095,25,1.445,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,150,1.738,151,1.481,181,2.692,224,2.686,226,2.23,229,4.18,248,2.686,249,2.85,261,3.66,265,2.486,266,1.999,268,2.234,269,2.547,295,2.946,303,3.29,306,2.656,310,5.021,317,2.85,318,1.817,319,3.711,320,1.666,321,3.711,322,3.711,323,2.85,324,1.622,336,2.824,337,2.069,453,3.495,454,2.547,455,3.711,456,4.442,457,2.686,458,3.711,459,3.711,460,0.618,461,4.442,462,1.903]],["sidebarParentCategories/450",[266,2.889]],["title/451",[463,5.837,464,1.367]],["content/451",[6,3.053,25,2.281,58,0.73,66,3.453,69,2.398,91,3.453,102,1.787,103,2.912,120,3.924,122,4.5,123,3.326,207,1.851,231,4.822,338,1.752,357,3.453,410,2.912,416,2.46,455,5.86,464,1.643,465,3.296,466,3.668,467,5.517,468,7.013]],["sidebarParentCategories/451",[266,2.889]],["title/452",[120,3.267,469,5.259]],["content/452",[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.392,123,2.628,141,2.232,172,2.728,173,2.391,174,3.963,229,4.703,242,4.775,248,4.499,268,2.225,310,4.358,323,3.555,326,3.963,338,1.859,341,2.728,360,2.373,470,4.143,471,4.358,472,3.963,473,3.963,474,3.26,475,4.358,476,5.54,477,5.54,478,5.54,479,3.809,480,4.99,481,3.674,482,4.143,483,5.54,484,5.54,485,2.676,486,5.54,487,5.54]],["sidebarParentCategories/452",[266,2.889]],["title/453",[324,2.553]],["content/453",[2,1.07,33,5.444,38,5.605,102,1.47,122,4.572,250,5.444,264,3.508,268,2.13,310,5.605,324,2.601,341,3.508,397,3.809,418,5.328,419,4.433,455,7.31,472,5.097,473,5.097,488,3.727,489,7.124]],["sidebarParentCategories/453",[266,2.889]],["title/447",[102,1.204,207,1.541]],["content/447",[2,0.938,3,2.192,8,2.719,22,2.635,25,2.032,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,169,4.017,174,4.47,190,3.677,260,4.874,261,3.584,280,2.538,285,1.337,320,1.618,338,2.013,374,2.414,386,1.848,387,1.819,389,5.256,407,2.419,416,3,428,2.608,439,4.017,443,4.916,464,1.721,465,2.795,490,3.604,491,5.539,492,1.848,493,5.629,494,2.768,495,2.306,496,2.21,497,1.177,498,3.086,499,2.684,500,3.604,501,3.394,502,2.538,503,3.394,504,3.394]],["sidebarParentCategories/447",[]],["title/448",[55,0.803,491,4.014]],["content/448",[2,0.991,3,2.316,8,2.442,25,2.146,34,1.928,62,2.442,66,3.25,69,2.852,70,1.884,71,1.928,102,1.361,115,2.873,169,3.608,260,5.533,261,3.785,280,3.884,285,2.045,320,2.476,338,2.285,389,4.721,407,2.747,497,1.801,498,4.721,499,4.107,500,5.514,501,5.192,502,3.884,503,5.192]],["sidebarParentCategories/448",[]],["title/449",[31,0.465,55,0.689,464,1.173]],["content/449",[428,5.17,504,6.728]],["sidebarParentCategories/449",[]],["title/454",[491,4.808]],["content/454",[2,0.904,3,2.113,8,2.229,25,1.959,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.622,169,3.293,260,5.217,261,3.454,280,3.544,285,2.437,320,2.951,338,2.189,342,3.024,343,2.757,389,4.309,407,2.59,428,3.642,497,1.644,498,4.309,499,3.748,500,5.033,501,4.739,502,3.544,503,4.739,505,6.024,506,6.024]],["sidebarParentCategories/454",[102,1.048,207,1.341]],["title/455",[69,2.391]],["content/455",[3,1.739,17,1.786,55,0.949,59,2.441,62,1.835,69,3.082,115,2.158,120,2.774,174,3.547,338,2.392,341,2.441,342,2.489,387,2.091,416,2.783,488,3.608,498,3.547,507,6.198,508,3.9,509,4.958,510,4.958,511,4.466,512,4.958,513,2.774,514,2.774,515,4.936,516,4.796,517,7.146,518,2.194,519,4.466,520,4.142,521,4.142,522,6.241,523,5.763,524,4.142,525,3.288,526,4.466,527,2.593,528,4.142,529,3.9,530,4.142,531,3.9,532,4.958,533,5.427,534,3.547,535,4.958,536,4.142,537,4.142,538,4.958,539,4.958,540,4.142]],["sidebarParentCategories/455",[102,1.048,207,1.341]],["title/456",[342,3.511]],["content/456",[303,3.23,329,4.486,338,2.003,431,7.221,507,5.512,541,5.734,542,7.221,543,5.317,544,7.221]],["sidebarParentCategories/456",[102,1.048,207,1.341]],["title/457",[343,3.201]],["content/457",[58,0.82,66,3.878,253,2.659,338,2.322,342,4.666,343,4.254,495,4.21,545,7.094]],["sidebarParentCategories/457",[102,1.048,207,1.341]],["title/458",[91,2.874,464,1.367]],["content/458",[17,2.546,58,0.736,69,2.977,70,2.486,71,2.544,91,4.287,285,2.697,320,3.266,407,2.327,416,2.48,465,2.689,518,3.128,546,5.561,547,3.549,548,7.068,549,7.068,550,7.068,551,7.068]],["sidebarParentCategories/458",[102,1.048,207,1.341]],["title/490",[31,0.542,464,1.367]],["content/490",[2,1.422,3,1.543,17,1.584,25,1.43,29,2.208,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,180,2.351,224,2.659,228,2.659,231,3.024,236,4.549,257,3.46,268,1.895,295,2.917,297,2.737,306,1.43,327,3.024,337,2.049,351,2.488,357,2.166,416,2.223,464,1.03,465,1.673,466,2.301,491,3.024,518,1.946,547,2.208,552,2.404,553,4.067,554,3.962,555,6.079,556,3.962,557,4.927,558,5.295,559,3.675,560,4.398,561,1.946,562,1.523,563,2.659,564,4.398,565,3.146,566,1.673,567,3.962,568,1.721,569,2.253,570,2.166,571,2.822,572,2.822,573,3.962,574,3.962,575,3.675,576,3.675,577,3.962,578,3.962,579,4.398,580,6.337,581,4.398,582,2.166,583,3.962]],["sidebarParentCategories/490",[102,1.048,207,1.341]],["title/491",[253,1.691,338,1.252,497,1.367]],["content/491",[2,1.482,3,2.282,25,2.115,31,0.604,69,2.224,70,2.594,71,2.654,253,2.196,268,1.945,311,2.743,324,2.374,338,1.625,339,3.92,343,3.784,386,2.787,497,1.775,584,4.653,585,5.859,586,7.445,587,5.859,588,5.859,589,5.434,590,5.859,591,3.332]],["sidebarParentCategories/491",[102,1.048,207,1.341]],["title/492",[464,1.367,592,2.931]],["content/492",[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,190,3.257,223,3.026,253,1.236,255,2.1,266,2.491,272,3.06,293,2.738,339,2.625,342,3.351,343,3.055,345,1.121,350,1.148,351,1.058,397,2.41,407,2.197,464,1.296,495,1.957,496,1.876,497,1.511,518,2.45,546,2.881,547,2.779,590,3.299,591,1.876,592,2.779,593,3.662,594,3.299,595,3.662,596,3.662,597,5.535,598,3.662,599,6.673,600,3.662,601,2.049,602,3.662,603,3.662,604,3.662,605,3.662,606,3.06,607,3.662,608,3.662,609,2.738,610,1.876,611,4.774,612,3.662,613,2.155,614,2.049,615,3.662,616,1.839,617,5.535,618,4.986,619,5.535,620,3.662,621,5.562,622,6.673,623,3.662,624,2.214,625,3.662,626,4.139,627,3.662,628,2.518,629,2.62,630,2.881,631,3.662,632,2.881,633,2.881,634,2.002]],["sidebarParentCategories/492",[102,1.048,207,1.341]],["title/493",[31,0.465,285,1.552,320,1.879]],["content/493",[2,1.302,31,0.913,50,1.858,55,1.428,58,0.731,62,2.183,69,1.363,70,1.684,71,1.724,81,4.056,84,1.963,87,1.119,89,2.85,103,1.656,104,2.982,117,1.858,141,2.377,147,1.313,173,1.895,190,2.346,211,2.125,213,2.043,221,2.982,252,2.853,285,1.235,311,1.682,324,2.833,345,1.806,348,2.154,349,1.592,350,2.597,360,3.324,416,1.399,464,0.934,466,2.086,474,3.471,497,1.61,507,2.742,635,3.332,636,2.231,637,3.988,638,3.988,639,1.963,640,5.147,641,4.828,642,3.222,643,3.988,644,3.786,645,5.314,646,3.332]],["sidebarParentCategories/493",[102,1.048,207,1.341]],["title/494",[111,1.717,173,1.41,201,1.669,647,1.975]],["content/494",[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.081,43,3.202,55,0.904,56,3.639,62,2.431,63,3.068,68,2.431,111,3.754,112,2.322,140,3.639,156,3.068,173,2.822,192,2.528,201,3.164,232,4.517,262,2.277,264,3.235,268,1.383,285,1.433,320,1.735,407,1.523,416,2.305,457,2.796,465,1.759,492,1.982,503,3.639,566,1.759,568,2.99,614,3.676,648,2.878,649,6.569,650,2.419,651,0.887,652,1.172,653,3.639,654,3.309,655,3.309,656,3.18,657,4.913,658,2.968,659,3.298,660,3.865]],["sidebarParentCategories/494",[102,1.048,207,1.341]],["title/495",[2,0.752,55,0.689,568,1.96]],["content/495",[2,1.105,29,3.695,31,0.684,43,3.131,68,2.723,111,2.88,140,5.789,156,4.881,173,2.364,192,4.022,201,2.799,232,6.135,492,3.152,568,2.88,655,5.264,656,5.059,657,5.502]],["sidebarParentCategories/495",[102,1.048,207,1.341]],["title/496",[55,0.689,651,0.534,652,0.769]],["content/496",[6,3.053,9,4.822,10,5.017,11,4.5,31,0.651,35,3.156,43,3.04,56,5.517,62,2.595,63,4.652,111,3.391,112,3.521,173,2.253,566,2.668,614,3.924,651,0.924,652,1.076,657,5.244,658,4.5,659,4.35,660,5.86]],["sidebarParentCategories/496",[102,1.048,207,1.341]],["title/497",[242,3.215,285,1.552,320,1.879]],["content/497",[2,1.198,6,2.183,31,0.8,55,1.368,69,1.714,70,1.431,71,1.465,103,3.314,117,2.335,147,1.651,169,2.74,242,5.808,248,3.031,249,3.217,253,1.692,260,3.325,285,2.472,312,3.586,320,1.881,336,2.219,345,2.128,450,2.517,464,1.628,479,3.447,480,4.516,481,5.716,482,5.198,495,2.68,546,3.944,635,4.189,641,3.12,661,5.013,662,5.013,663,5.469,664,5.967,665,5.198,666,2.805,667,6.951,668,5.808,669,6.951,670,5.013,671,4.516]],["sidebarParentCategories/497",[102,1.048,207,1.341]],["title/498",[31,0.542,50,2.719]],["content/498",[31,0.893,50,4.479,55,1.451,58,0.623,69,2.046,70,1.708,71,1.748,101,4.707,153,3.203,285,2.427,320,2.938,546,4.707,672,3.969,673,7.832,674,7.832,675,7.832,676,7.832,677,6.544,678,7.832]],["sidebarParentCategories/498",[102,1.048,207,1.341]],["title/499",[387,2.462,679,4.176]],["content/499",[22,2.868,31,0.632,34,2.483,55,1.169,58,0.708,87,1.759,102,1.753,103,2.824,151,2.834,190,4.001,202,5.35,236,3.805,246,4.001,261,3.9,408,2.449,464,1.593,672,4.51,680,4.676,681,6.8,682,5.35,683,3.717,684,4.51,685,4.865]],["sidebarParentCategories/499",[102,1.048,207,1.341]],["title/500",[55,0.803,87,1.107]],["content/500",[58,0.865,103,3.452,202,6.541,236,4.652,683,4.545]],["sidebarParentCategories/500",[102,1.048,207,1.341]],["title/501",[34,1.464,55,0.689,151,1.67]],["content/501",[34,2.407,87,1.562,151,2.746,246,4.847,684,5.463,685,5.892]],["sidebarParentCategories/501",[102,1.048,207,1.341]],["title/502",[40,3.632,58,0.608]],["content/502",[2,1.248,31,0.772,42,4.545,205,5.173,206,7.489]],["sidebarParentCategories/502",[102,1.048,207,1.341]],["title/508",[566,2.22,572,3.746]],["content/508",[2,0.657,3,1.536,21,3.444,25,1.423,29,2.198,30,1.867,34,2.164,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,147,1.441,150,2.899,164,2.809,172,2.155,183,2.004,226,2.198,244,3.009,262,3.109,280,2.575,285,1.356,297,2.724,306,1.423,324,1.598,338,1.094,340,2.724,341,2.155,342,3.171,343,2.004,349,1.181,350,1.372,408,1.577,410,1.818,423,2.891,485,2.115,488,2.29,502,2.575,513,2.449,533,4.968,552,2.393,555,3.273,566,3.513,572,5.518,634,2.393,639,2.155,648,2.724,650,2.29,651,0.467,652,0.672,686,3.943,687,3.657,688,3.273,689,1.356,690,3.273,691,3.273,692,3.131,693,3.235,694,3.273,695,3.657,696,3.657,697,3.009,698,3.657,699,2.903,700,2.903,701,3.444,702,5.276,703,3.657,704,3.657]],["sidebarParentCategories/508",[31,0.333,102,0.739,207,0.946,464,0.84]],["title/509",[338,1.252,566,1.906,572,3.215]],["content/509",[2,1.387,3,1.863,25,1.727,58,0.553,62,1.965,66,3.561,69,2.473,70,2.521,71,2.58,111,2.078,191,2.903,262,2.615,303,2.914,305,4.178,338,1.807,339,3.901,343,3.311,372,2.778,407,2.708,497,1.974,507,3.651,566,2.751,571,4.641,572,5.277,648,3.304,705,3.971,706,7.964,707,3.971,708,4.5,709,5.31,710,6.515,711,7.232,712,4.437,713,4.437]],["sidebarParentCategories/509",[31,0.333,102,0.739,207,0.946,464,0.84]],["title/510",[31,0.408,566,1.669,572,2.816,647,1.975]],["content/510",[2,1.38,31,0.839,55,1.479,58,0.491,69,1.019,70,1.673,71,0.871,96,1.96,173,1.516,217,4.041,239,2.28,255,2.706,311,1.257,330,2.111,338,0.745,339,2.238,345,1.445,349,2.389,350,1.48,351,2.097,407,1.554,492,1.277,497,1.599,566,3.287,568,3.023,569,2.418,570,2.324,571,3.028,641,2.937,642,2.767,651,0.503,706,3.943,714,4.896,715,2.049,716,4.276,717,3.376,718,4.276,719,3.13,720,3.713,721,4.42,722,4.252,723,5.568,724,4.252,725,5.243,726,4.252,727,4.381]],["sidebarParentCategories/510",[31,0.333,102,0.739,207,0.946,464,0.84]],["title/511",[324,2.553]],["content/511",[42,3.895,58,0.911,217,4.576,223,3.895,351,2.735,390,4.086,410,2.958,419,4.433,423,3.261,566,3.602,570,3.508,650,3.727,651,1.01,652,1.093,728,3.65]],["sidebarParentCategories/511",[31,0.333,102,0.739,207,0.946,464,0.84]],["title/512",[68,1.444,69,1.335,306,1.269,566,1.485,572,2.505]],["content/512",[8,1.644,17,1.6,55,1.306,58,0.9,69,2.957,147,1.463,150,2.923,163,4.955,220,2.85,303,3.01,306,1.445,342,3.205,343,2.922,357,2.187,410,1.845,416,1.558,518,1.966,547,2.23,566,2.842,572,4.793,611,4.566,626,3.322,628,4.388,692,4.566,708,2.764,729,3.178,730,7.751,731,8.385,732,5.021,733,3.054,734,5.021,735,3.322,736,3.495,737,3.711,738,6.241,739,5.333,740,4.442,741,3.711,742,3.711,743,5.333,744,5.333,745,5.333,746,3.711,747,3.711]],["sidebarParentCategories/512",[31,0.333,102,0.739,207,0.946,464,0.84]],["title/459",[2,0.877,568,2.284]],["content/459",[2,1.456,3,1.393,21,3.123,25,1.291,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,140,3.123,150,2.741,156,2.633,170,3.317,172,1.955,173,1.889,192,2.17,201,1.51,224,2.4,232,4.043,262,2.895,280,2.336,285,1.23,306,1.291,324,1.449,338,0.992,340,2.47,341,1.955,342,2.952,343,1.817,349,1.071,350,1.245,408,1.43,410,2.442,488,2.077,492,1.701,502,2.336,513,2.222,533,4.626,547,1.993,552,2.17,555,2.969,568,3.677,634,2.17,639,1.955,648,2.47,650,2.077,651,0.627,652,0.902,655,2.84,656,2.73,657,2.969,689,1.822,690,2.969,691,2.969,692,2.84,693,3.012,694,2.969,695,3.317,696,3.317,697,2.73,698,3.317,699,2.633,700,2.633,701,3.123,702,4.913,703,3.317,704,3.317,748,3.317,749,3.97,750,2.547,751,2.969,752,3.97,753,3.576,754,3.123]],["sidebarParentCategories/459",[31,0.333,102,0.739,207,0.946,464,0.84]],["title/460",[2,0.752,338,1.252,568,1.96]],["content/460",[2,1.404,3,1.932,25,1.791,31,0.511,58,0.573,62,2.037,66,3.649,69,2.534,70,2.559,71,2.618,111,2.155,262,2.711,303,2.218,338,1.852,339,3.973,343,3.393,372,2.88,407,2.951,497,1.503,507,3.786,568,3.77,648,3.426,705,4.117,707,4.117,708,4.612,712,4.6,713,4.6,719,5.944,755,4.96,756,5.506,757,7.411]],["sidebarParentCategories/460",[31,0.333,102,0.739,207,0.946,464,0.84]],["title/461",[2,0.659,31,0.408,568,1.717,647,1.975]],["content/461",[2,1.361,31,0.902,55,1.474,69,1.55,70,1.849,71,1.324,311,1.911,330,2.721,338,1.132,345,1.982,349,2.224,350,2.03,351,2.518,497,2.061,568,3.652,641,4.029,642,3.422,646,3.786,715,3.116,716,5.288,717,4.632,718,5.288,719,4.294,727,3.389,758,4.082]],["sidebarParentCategories/461",[31,0.333,102,0.739,207,0.946,464,0.84]],["title/462",[2,0.586,68,1.444,69,1.335,306,1.269,568,1.527]],["content/462",[2,1.122,8,1.644,17,1.6,55,1.306,58,0.9,69,2.957,147,1.463,150,2.923,163,4.955,220,2.85,303,3.01,306,1.445,342,3.205,343,2.922,357,2.187,410,1.845,416,1.558,518,1.966,547,2.23,568,2.923,611,4.566,626,3.322,628,4.388,692,4.566,708,2.764,729,3.178,730,7.751,731,8.385,732,5.021,733,3.054,734,5.021,735,3.322,736,3.495,737,3.711,738,6.241,739,5.333,741,3.711,742,3.711,743,5.333,744,5.333,745,5.333,746,3.711,747,3.711,759,4.002]],["sidebarParentCategories/462",[31,0.333,102,0.739,207,0.946,464,0.84]],["title/479",[582,3.443]],["content/479",[9,3.608,10,3.754,11,4.603,24,3.368,25,1.707,29,3.602,30,1.551,32,2.025,40,3.266,58,0.747,60,4.728,62,1.942,63,4.758,68,1.942,71,1.533,106,3.173,118,2.805,119,3.01,138,3.481,212,3.481,243,3.754,256,4.728,298,3.754,318,3.343,333,3.754,423,2.402,435,4.758,563,3.173,566,2.729,576,4.385,582,4.53,606,4.385,659,2.635,687,4.385,728,4.713,760,5.248,761,4.385,762,3.608,763,4.129,764,4.385,765,3.088,766,5.248,767,5.248,768,4.385,769,5.248,770,4.728,771,5.248,772,5.248,773,5.248,774,5.248,775,4.385,776,3.173]],["sidebarParentCategories/479",[31,0.333,102,0.739,207,0.946,464,0.84]],["title/480",[338,1.459,582,2.874]],["content/480",[2,0.799,3,1.22,5,2.306,25,1.131,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,163,3.53,212,2.306,303,2.918,338,1.33,339,3.066,342,2.672,343,2.959,345,1.979,372,1.819,387,1.466,389,2.487,407,2.57,416,1.867,497,1.452,527,3.382,582,1.712,583,3.132,594,3.132,611,3.807,616,1.746,624,4.379,626,2.6,628,3.659,648,2.164,656,3.659,705,2.6,777,3.807,778,8.233,779,3.477,780,6.465,781,5.322,782,9.931,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,5.322,801,7.032,802,5.322,803,3.477]],["sidebarParentCategories/480",[31,0.333,102,0.739,207,0.946,464,0.84]],["title/481",[31,0.465,582,2.467,647,2.254]],["content/481",[2,1.166,30,1.559,31,0.721,34,1.004,55,1.433,58,0.549,70,0.981,87,1,95,1.692,111,1.345,113,1.798,150,1.345,154,2.206,169,1.879,173,2.062,181,1.45,183,1.574,184,2.872,201,1.308,217,1.798,223,1.879,266,1.547,311,1.45,329,1.924,330,1.9,333,2.459,338,1.318,339,1.63,345,1.052,349,2.436,350,1.078,351,2.079,397,1.496,416,1.206,420,3.096,464,0.805,485,1.661,497,1.439,511,3.096,527,1.798,566,2.006,568,2.512,570,1.692,582,3.824,591,1.761,641,2.139,642,2.19,647,1.547,651,0.367,716,3.385,717,2.459,718,3.385,719,2.28,721,3.499,727,3.944,728,2.702,761,2.872,777,2.459,804,2.57,805,3.773,806,2.57,807,2.872,808,4.752,809,4.752,810,4.752,811,4.752,812,4.752,813,3.437,814,3.437,815,3.096,816,2.28,817,2.28,818,2.57,819,4.752,820,3.096,821,3.944,822,4.752,823,3.437,824,5.275,825,3.437,826,3.437,827,2.023,828,2.023]],["sidebarParentCategories/481",[31,0.333,102,0.739,207,0.946,464,0.84]],["title/466",[651,0.623,652,0.896]],["content/466",[2,1.317,3,2.296,6,2.003,9,3.164,10,3.292,11,2.953,25,2.129,31,0.427,35,2.071,42,2.515,43,2.296,56,3.62,58,0.681,62,2.422,63,3.052,68,3.071,91,3.223,102,0.949,111,3.431,112,2.31,173,1.478,236,2.575,243,3.292,262,2.266,297,2.863,318,1.882,340,2.863,349,2.239,448,3.441,543,3.052,552,3.578,566,3.335,568,2.981,570,2.266,614,3.663,616,2.31,650,2.407,651,1,652,1.273,657,3.441,658,2.953,659,3.825,660,3.845,687,3.845,689,1.426,829,4.602,830,4.145,831,4.602,832,3.845,833,3.62,834,4.602,835,4.602,836,3.441]],["sidebarParentCategories/466",[31,0.333,102,0.739,207,0.946,464,0.84]],["title/467",[338,1.252,651,0.534,652,0.769]],["content/467",[2,0.958,3,0.968,5,1.831,22,1.164,25,0.898,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,147,0.909,211,1.599,213,2.274,253,1.88,262,1.359,296,2.064,297,3.97,298,1.974,303,1.112,338,2.394,339,3.316,343,2.92,356,2.944,366,2.944,372,1.444,407,2.585,416,0.968,464,1.304,465,2.841,492,1.902,496,1.414,497,2.038,508,2.171,513,2.484,514,4.179,515,3.465,516,1.669,527,1.444,543,1.831,569,2.853,639,2.186,648,1.717,651,1.039,652,1.532,658,1.771,697,1.898,705,2.064,707,2.064,708,2.762,837,1.974,838,3.829,839,3.754,840,1.898,841,4.386,842,4.77,843,3.319,844,4.386,845,1.831,846,3.999,847,3.319,848,3.999,849,2.486]],["sidebarParentCategories/467",[31,0.333,102,0.739,207,0.946,464,0.84]],["title/468",[55,0.803,515,3.632]],["content/468",[147,2.526,253,2.591,338,2.286,465,2.919,497,2.094,508,6.037,515,5.694,651,0.819,652,1.177,658,4.924,838,5.276,839,4.515]],["sidebarParentCategories/468",[31,0.333,102,0.739,207,0.946,464,0.84]],["title/469",[55,0.803,513,3.267]],["content/469",[93,3.989,298,5.684,338,1.985,513,4.446,516,4.804,543,5.27,651,0.848,652,1.219,697,5.463,840,5.463]],["sidebarParentCategories/469",[31,0.333,102,0.739,207,0.946,464,0.84]],["title/470",[55,0.689,514,2.803,841,3.445]],["content/470",[35,3.084,213,3.51,253,2.313,338,2.325,465,3.249,497,1.87,514,4.779,639,3.374,651,1.039,652,1.495,838,4.711,839,4.032,841,4.711,842,6.386,843,5.124,844,5.872]],["sidebarParentCategories/470",[31,0.333,102,0.739,207,0.946,464,0.84]],["title/471",[55,0.689,514,2.803,844,3.445]],["content/471",[35,3.084,213,3.51,253,2.313,338,2.325,465,3.249,497,1.87,514,4.779,639,3.374,651,1.039,652,1.495,838,4.711,839,4.032,841,5.872,842,6.386,843,5.124,844,4.711]],["sidebarParentCategories/471",[31,0.333,102,0.739,207,0.946,464,0.84]],["title/472",[55,0.689,70,1.43,71,1.464]],["content/472",[22,2.825,55,0.922,66,3.298,69,2.29,70,2.629,71,2.691,91,3.298,296,5.009,338,1.674,356,5.585,366,5.585,407,2.206,464,1.972,465,2.548,492,3.607,496,3.432,497,1.828,651,0.898,652,1.292,839,3.942,845,4.443]],["sidebarParentCategories/472",[31,0.333,102,0.739,207,0.946,464,0.84]],["title/473",[31,0.408,647,1.975,651,0.468,652,0.673]],["content/473",[2,1.361,31,0.902,55,1.46,69,1.55,70,1.849,71,1.324,311,1.911,330,2.721,338,1.132,345,1.982,349,2.224,350,2.03,351,2.518,497,2.061,569,3.317,641,4.029,642,3.422,646,3.786,651,0.93,652,1.264,715,3.116,727,3.389,850,4.849,851,5.833,852,5.481,853,4.532]],["sidebarParentCategories/473",[31,0.333,102,0.739,207,0.946,464,0.84]],["title/474",[515,4.351]],["content/474",[147,2.526,253,2.591,338,2.286,465,2.919,497,2.094,508,6.037,515,5.694,651,0.819,652,1.177,658,4.924,838,5.276,839,4.515]],["sidebarParentCategories/474",[31,0.257,102,0.571,207,0.731,464,0.649,651,0.295,652,0.425]],["title/475",[854,4.808]],["content/475",[58,0.73,232,4.822,338,2.165,515,4.364,528,5.86,529,5.517,530,5.86,531,5.517,534,5.017,536,5.86,537,5.86,540,5.86,651,0.748,652,1.076,655,5.017,656,4.822,847,5.244,854,6.938,855,6.318,856,6.318]],["sidebarParentCategories/475",[31,0.257,102,0.571,207,0.731,464,0.649,651,0.295,652,0.425]],["title/476",[857,5.501]],["content/476",[58,0.736,153,2.891,338,2.175,515,4.398,528,5.906,529,5.561,530,5.906,531,5.561,534,5.056,536,5.906,537,5.906,540,5.906,651,0.754,652,1.085,847,5.286,854,4.86,856,6.367,857,5.561,858,6.367,859,6.367,860,7.274,861,6.367]],["sidebarParentCategories/476",[31,0.257,102,0.571,207,0.731,464,0.649,651,0.295,652,0.425]],["title/477",[651,0.623,652,0.896]],["content/477",[18,3.486,22,3.652,43,1.779,55,0.698,93,2.546,149,2.546,158,4.236,166,3.989,171,3.486,234,3.791,239,2.449,248,3.065,253,1.712,260,3.363,297,4.359,338,1.75,386,2.172,387,2.138,406,4.567,408,1.826,416,1.779,488,2.652,516,3.065,522,3.989,592,2.546,621,5.239,651,0.856,652,1.232,658,3.253,697,3.486,707,3.791,832,4.236,833,6.812,862,4.567,863,4.018,864,5.512,865,5.07,866,5.07,867,5.07,868,5.07,869,5.07,870,5.07,871,5.07,872,4.495,873,4.236,874,3.486,875,3.791,876,5.239,877,3.989,878,5.07,879,3.791,880,3.253,881,2.907,882,3.791,883,3.989,884,5.07,885,5.07]],["sidebarParentCategories/477",[31,0.257,102,0.571,207,0.731,464,0.649,651,0.295,652,0.425]],["title/478",[338,1.459,470,4.365]],["content/478",[2,1.123,19,4.29,338,2.252,341,3.684,410,3.107,416,2.625,472,5.352,473,5.352,488,3.913,502,4.402,651,0.961,652,1.148,886,5.144,887,4.29,888,5.886]],["sidebarParentCategories/478",[31,0.257,102,0.571,207,0.731,464,0.649,651,0.295,652,0.425]],["title/482",[514,3.267,844,4.014]],["content/482",[35,2.786,121,4.106,213,3.171,253,2.09,338,2.487,357,3.048,465,3.046,466,3.238,488,3.238,497,1.689,514,4.481,520,5.172,521,5.172,522,4.87,523,5.172,524,5.172,525,4.106,639,3.942,651,1.001,652,1.44,838,4.256,839,3.642,841,5.505,842,5.987,843,4.629,844,4.256]],["sidebarParentCategories/482",[31,0.257,102,0.571,207,0.731,464,0.649,651,0.295,652,0.425]],["title/483",[854,4.808]],["content/483",[58,0.82,232,5.415,338,1.968,525,5.224,651,0.84,652,1.208,655,5.634,656,5.415,854,6.39,855,7.094]],["sidebarParentCategories/483",[31,0.257,102,0.571,207,0.731,464,0.649,651,0.295,652,0.425]],["title/484",[857,5.501]],["content/484",[58,0.827,153,3.249,338,1.985,525,5.27,651,0.848,652,1.219,857,6.251,858,7.157,859,7.157,860,6.638]],["sidebarParentCategories/484",[31,0.257,102,0.571,207,0.731,464,0.649,651,0.295,652,0.425]],["title/485",[651,0.623,652,0.896]],["content/485",[22,2.395,93,2.852,158,4.746,160,3.434,171,3.906,250,3.535,297,5.881,298,5.413,386,3.242,391,3.906,416,1.993,449,3.645,488,2.971,514,3.179,516,5.145,543,5.019,552,3.105,562,1.967,621,4.248,624,3.434,634,4.137,639,2.797,651,0.807,652,1.161,656,3.906,658,3.645,837,4.063,864,4.469,876,4.248,881,3.257,882,4.248,883,4.469,889,6.323,890,5.68,891,5.68,892,5.68,893,5.68,894,5.68,895,5.117,896,3.342,897,5.68,898,5.68]],["sidebarParentCategories/485",[31,0.257,102,0.571,207,0.731,464,0.649,651,0.295,652,0.425]],["title/486",[338,1.459,470,4.365]],["content/486",[2,1.123,19,4.29,338,2.252,341,3.684,410,3.107,416,2.625,472,5.352,473,5.352,488,3.913,502,4.402,651,0.961,652,1.148,886,5.144,887,4.29,888,5.886]],["sidebarParentCategories/486",[31,0.257,102,0.571,207,0.731,464,0.649,651,0.295,652,0.425]],["title/487",[514,3.267,841,4.014]],["content/487",[35,2.786,121,4.106,213,3.171,253,2.09,338,2.487,357,3.048,465,3.046,466,3.238,488,3.238,497,1.689,514,4.481,520,5.172,521,5.172,522,4.87,523,5.172,524,5.172,525,4.106,639,3.942,651,1.001,652,1.44,838,4.256,839,3.642,841,4.256,842,5.987,843,4.629,844,5.505]],["sidebarParentCategories/487",[31,0.257,102,0.571,207,0.731,464,0.649,651,0.295,652,0.425]],["title/488",[651,0.623,652,0.896]],["content/488",[253,2.569,338,2.275,471,5.986,497,2.076,514,4.257,525,6.039,651,0.812,652,1.167,658,4.882,889,6.357,899,4.6,900,7.608,901,7.608]],["sidebarParentCategories/488",[31,0.257,102,0.571,207,0.731,464,0.649,651,0.295,652,0.425]],["title/489",[338,1.459,470,4.365]],["content/489",[2,1.123,19,4.29,338,2.252,341,3.684,410,3.107,416,2.625,472,5.352,473,5.352,488,3.913,502,4.402,651,0.961,652,1.148,886,5.144,887,4.29,888,5.886]],["sidebarParentCategories/489",[31,0.257,102,0.571,207,0.731,464,0.649,651,0.295,652,0.425]],["title/503",[70,1.667,71,1.705]],["content/503",[22,2.825,55,0.922,66,3.298,69,2.29,70,2.629,71,2.691,91,3.298,296,5.009,338,1.674,356,5.585,366,5.585,407,2.206,464,1.972,465,2.548,492,3.607,496,3.432,497,1.828,651,0.898,652,1.292,839,3.942,845,4.443]],["sidebarParentCategories/503",[31,0.257,102,0.571,207,0.731,464,0.649,651,0.295,652,0.425]],["title/504",[609,5.229]],["content/504",[6,2.852,58,0.949,91,3.226,93,3.29,213,3.357,285,2.03,316,4.173,320,2.458,338,2.075,350,2.054,356,4.346,366,4.346,492,2.807,547,3.29,609,7.167,650,3.427,651,1.022,652,1.471,837,4.687,902,6.552]],["sidebarParentCategories/504",[31,0.257,102,0.571,207,0.731,464,0.649,651,0.295,652,0.425]],["title/505",[609,4.365,903,3.746]],["content/505",[58,0.902,70,2.474,71,2.531,93,3.521,120,3.924,213,3.593,285,2.173,303,2.826,320,2.631,338,1.752,356,4.652,366,4.652,407,2.309,492,3.004,609,5.244,651,1.003,652,1.443,837,5.017]],["sidebarParentCategories/505",[31,0.257,102,0.571,207,0.731,464,0.649,651,0.295,652,0.425]],["title/506",[513,3.913]],["content/506",[93,3.363,115,2.916,171,4.606,260,4.443,297,4.168,298,4.792,338,1.674,349,1.808,502,4.955,513,3.749,516,5.091,543,4.443,591,3.432,651,0.715,652,1.028,679,4.792,697,4.606,840,4.606,895,6.034,904,4.443,905,4.829,906,5.597,907,6.699,908,7.035,909,3.749,910,6.699,911,4.443]],["sidebarParentCategories/506",[31,0.257,102,0.571,207,0.731,464,0.649,651,0.295,652,0.425]],["title/507",[338,1.459,470,4.365]],["content/507",[2,1.123,19,4.29,338,2.252,341,3.684,410,3.107,416,2.625,472,5.352,473,5.352,488,3.913,502,4.402,651,0.961,652,1.148,886,5.144,887,4.29,888,5.886]],["sidebarParentCategories/507",[31,0.257,102,0.571,207,0.731,464,0.649,651,0.295,652,0.425]],["title/571",[570,2.874,651,0.623]],["content/571",[2,0.886,3,2.07,21,3.137,25,1.919,29,2.002,30,1.179,42,2.18,43,1.399,58,0.808,59,1.963,66,1.963,68,2.598,69,2.401,91,3.457,102,0.823,113,2.086,147,1.313,150,2.748,151,1.329,152,2.043,161,3.137,172,1.963,183,1.825,192,2.18,217,2.086,223,2.18,231,2.742,262,2.905,280,2.346,285,1.828,306,1.297,318,1.631,324,1.456,330,1.436,338,0.996,340,2.481,341,1.963,342,2.962,343,1.825,349,1.076,350,1.25,408,1.436,410,1.656,454,2.287,485,1.927,488,2.086,502,2.346,513,2.231,533,4.641,541,4.22,552,2.18,555,2.982,563,2.411,570,4.269,634,2.18,639,1.963,648,2.481,650,2.086,651,0.983,652,0.612,659,2.962,689,1.235,690,2.982,691,2.982,692,2.853,693,3.022,694,2.982,695,3.332,696,3.332,697,2.742,698,3.332,699,2.645,700,2.645,701,3.137,702,4.929,703,3.332,704,3.332,776,2.411,912,3.988,913,3.592,914,3.137,915,2.853,916,2.853,917,3.988,918,3.592,919,3.988,920,3.988,921,3.592]],["sidebarParentCategories/571",[31,0.333,102,0.739,207,0.946,464,0.84]],["title/572",[338,1.252,570,2.467,651,0.534]],["content/572",[2,1.242,3,1.885,25,1.748,42,2.938,58,0.559,62,1.988,66,3.59,69,2.493,70,2.534,71,2.592,164,3.448,191,2.938,262,2.646,330,1.936,338,1.822,339,3.925,343,3.337,407,2.724,423,2.46,497,1.466,507,3.695,569,3.735,570,4.901,648,3.344,651,0.778,705,4.018,707,4.018,708,4.537,712,4.49,713,4.49,922,7.298,923,5.374,924,7.291]],["sidebarParentCategories/572",[31,0.333,102,0.739,207,0.946,464,0.84]],["title/573",[31,0.408,570,2.16,647,1.975,651,0.468]],["content/573",[2,1.338,31,0.759,55,1.479,58,0.501,69,1.043,70,1.699,71,0.891,111,1.882,173,1.545,201,1.829,217,2.515,311,1.287,330,1.099,338,0.762,345,1.472,349,2.405,350,1.508,351,1.718,397,2.093,497,1.624,566,1.829,568,3.054,569,2.463,570,3.617,641,2.992,642,2.804,651,0.635,715,2.098,716,4.332,717,3.439,718,4.332,719,3.189,720,3.783,721,4.478,725,5.312,727,4.449,728,2.463,815,4.331,922,3.783,925,5.312,926,4.331,927,6.139,928,3.189,929,2.992,930,3.085,931,3.783,932,3.783,933,4.331,934,3.595,935,2.24]],["sidebarParentCategories/573",[31,0.333,102,0.739,207,0.946,464,0.84]],["title/574",[324,2.553]],["content/574",[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,141,1.907,142,2.498,145,2.498,147,0.985,151,1.958,172,2.33,191,1.635,210,3.55,211,3.116,213,1.532,223,1.635,227,6.375,250,1.861,303,1.907,306,2.366,318,1.223,330,1.077,345,0.915,349,0.807,351,1.367,390,2.714,410,1.965,416,1.049,419,4.154,422,2.353,423,2.688,424,3.385,428,1.808,474,2.784,507,2.056,527,1.564,541,2.139,569,1.532,570,3.582,591,1.532,606,3.954,651,0.825,659,3.652,708,2.944,720,2.353,726,2.694,728,3.963,751,3.538,909,2.648,915,3.385,922,4.62,925,3.723,927,6.086,928,3.139,929,2.944,930,3.036,931,2.353,932,4.62,933,2.694,934,3.538,935,1.393,936,1.861,937,2.99,938,2.99,939,4.28,940,2.353,941,2.694,942,2.056,943,2.353,944,2.99,945,1.919,946,1.302,947,4.732,948,4.732,949,2.056,950,4.768,951,2.99,952,7.274,953,1.919,954,2.694,955,2.99,956,2.236,957,1.501,958,2.99,959,2.99,960,2.99,961,2.99,962,2.99]],["sidebarParentCategories/574",[31,0.333,102,0.739,207,0.946,464,0.84]],["title/575",[68,1.444,69,1.335,306,1.269,570,1.922,651,0.416]],["content/575",[8,1.644,17,1.6,55,1.306,58,0.9,69,2.957,147,1.463,150,2.923,163,4.955,220,2.85,303,3.01,306,1.445,342,3.205,343,2.922,357,2.187,410,1.845,416,1.558,518,1.966,547,2.23,570,3.678,611,4.566,626,3.322,628,4.388,651,0.797,692,4.566,708,2.764,729,3.178,730,7.751,731,8.385,732,5.021,733,3.054,734,5.021,735,3.322,736,3.495,737,3.711,738,6.241,739,5.333,741,3.711,742,3.711,743,5.333,744,5.333,745,5.333,746,3.711,747,3.711,759,4.002]],["sidebarParentCategories/575",[31,0.333,102,0.739,207,0.946,464,0.84]],["title/517",[87,1.326]],["content/517",[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,150,2.829,151,2.65,152,2.148,172,2.064,173,1.347,183,3.309,202,3.299,217,2.193,226,2.105,236,2.346,246,2.467,253,1.415,255,2.404,285,1.896,320,2.296,324,1.531,330,2.604,350,1.315,351,1.768,410,1.741,416,1.471,428,3.701,450,2.105,466,3.202,485,3.493,492,1.796,565,2.999,566,1.595,570,2.064,582,3.559,584,2.999,601,2.346,651,0.771,652,0.643,659,2.105,683,2.292,684,2.781,685,2.999,776,3.701,950,2.467,953,2.69,957,2.105,963,1.855,964,2.781]],["sidebarParentCategories/517",[]],["title/518",[31,0.465,55,0.689,350,1.571]],["content/518",[428,5.17,957,4.294]],["sidebarParentCategories/518",[]],["title/519",[34,1.464,55,0.689,151,1.67]],["content/519",[34,2.407,87,1.562,151,2.746,246,4.847,684,5.463,685,5.892]],["sidebarParentCategories/519",[]],["title/520",[55,0.689,351,1.447,582,2.467]],["content/520",[58,0.857,87,1.562,351,2.379,410,3.42,582,4.056,953,5.286]],["sidebarParentCategories/520",[]],["title/521",[30,0.945,55,0.44,183,1.463,217,1.672,330,1.152,485,1.545,566,1.216]],["content/521",[30,2.288,42,4.231,87,1.468,172,3.811,183,3.543,330,2.788,485,3.739,565,5.536,570,3.811,582,3.811,651,0.981,659,3.886]],["sidebarParentCategories/521",[]],["title/522",[30,1.481,55,0.689,150,1.96]],["content/522",[30,2.825,31,0.604,50,3.03,53,2.582,87,1.568,102,1.342,118,5.109,119,5.21,150,2.545,151,2.168,152,3.332,173,2.089,183,2.977,253,2.196,285,2.015,320,2.44,324,2.374,330,2.343,416,2.282,466,3.402,485,3.142,492,2.787,584,4.653,601,3.64,776,3.932,950,3.827]],["sidebarParentCategories/522",[]],["title/523",[55,0.803,450,2.931]],["content/523",[103,3.551,466,4.473]],["sidebarParentCategories/523",[]],["title/524",[55,0.537,58,0.406,651,0.416,652,0.599,963,1.727]],["content/524",[428,5.17,964,5.672]],["sidebarParentCategories/524",[]],["title/557",[31,0.542,350,1.83]],["content/557",[2,1.388,3,2.739,25,2.539,31,0.725,43,2.739,208,7.033,266,3.513,307,6.523,324,2.85,397,3.399,965,5.368]],["sidebarParentCategories/557",[87,1.218]],["title/558",[474,4.114]],["content/558",[31,0.689,34,2.168,35,3.339,58,0.772,78,6.415,96,3.081,116,5.548,151,2.473,211,2.672,285,2.299,320,2.783,474,5.277,939,4.366,966,5.837,967,5.837,968,5.548]],["sidebarParentCategories/558",[87,1.218]],["title/559",[644,4.487]],["content/559",[2,0.869,17,2.086,31,0.798,50,4.26,55,1.393,96,2.404,117,2.697,141,2.333,148,3.981,173,2.938,190,3.407,201,2.915,211,3.095,253,1.955,255,3.321,265,3.24,324,2.798,336,2.562,345,1.773,360,2.481,464,1.356,497,1.58,644,4.918,671,5.216,903,3.716,969,4.33,970,6.905,971,5.79,972,5.79,973,5.216,974,5.216]],["sidebarParentCategories/559",[87,1.218]],["title/560",[975,5.842]],["content/560",[58,0.82,160,4.761,173,2.53,210,4.761,211,2.837,239,3.805,349,2.125,591,4.035,634,4.305,939,5.468]],["sidebarParentCategories/560",[87,1.218]],["title/561",[976,5.501]],["content/561",[141,3.201,173,2.552,211,2.862,591,4.07,939,4.675,977,7.945,978,7.157,979,5.27,980,7.945,981,6.638]],["sidebarParentCategories/561",[87,1.218]],["title/562",[982,6.993]],["content/562",[58,1.008,62,2.076,84,3.695,111,2.195,121,3.72,141,3.792,156,4.977,211,2.02,239,2.71,253,1.894,318,3.069,397,2.442,650,3.925,946,2.442,970,5.053,973,6.76,976,4.413,983,7.504,984,7.504,985,4.687,986,5.609,987,7.504,988,5.609,989,5.053,990,4.194,991,5.609,992,5.609,993,4.413,994,5.609,995,7.504,996,4.687,997,4.687,998,5.609,999,5.609,1000,5.609,1001,5.609,1002,5.609,1003,4.194,1004,5.609]],["sidebarParentCategories/562",[87,1.218]],["title/563",[1005,6.993]],["content/563",[58,0.938,63,4.962,173,2.403,201,2.846,211,2.695,423,3.425,946,3.924,949,5.144,1006,5.594,1007,7.53,1008,6.416,1009,3.614]],["sidebarParentCategories/563",[87,1.218]],["title/564",[229,3.913]],["content/564",[31,0.646,55,1.186,58,0.898,96,3.581,173,2.235,211,2.507,229,4.825,251,6.269,296,6.448,419,4.33,479,4.785,485,3.362,517,6.269,762,4.785,939,4.095,950,4.095,1010,4.945,1011,5.475,1012,6.959,1013,6.959]],["sidebarParentCategories/564",[87,1.218]],["title/565",[1014,4.638]],["content/565",[2,1.235,3,2.266,25,2.1,33,4.018,34,1.887,55,1.132,58,0.672,96,2.681,111,2.527,147,2.126,211,2.326,317,4.144,325,4.283,336,2.858,345,1.977,349,1.743,372,3.378,410,2.681,457,4.974,953,4.144,1014,6.531,1015,6.457,1016,6.457,1017,6.874,1018,6.152,1019,5.395,1020,5.817]],["sidebarParentCategories/565",[87,1.218]],["title/566",[1021,5.842]],["content/566",[2,0.949,31,0.587,55,1.117,58,0.845,62,2.339,96,2.625,147,2.081,152,3.238,153,2.585,211,2.923,244,4.346,336,2.797,345,1.935,405,3.719,946,2.752,996,5.281,997,5.281,1003,4.727,1021,7.489,1022,6.321,1023,6.321,1024,6.321,1025,6.321,1026,6.321,1027,4.973,1028,8.075,1029,5.694,1030,5.694,1031,5.694,1032,5.281,1033,5.281,1034,5.281]],["sidebarParentCategories/566",[87,1.218]],["title/567",[1035,5.842]],["content/567",[19,3.599,31,0.583,46,4.49,89,3.032,96,2.606,117,2.924,153,4.086,181,3.768,211,3.218,240,3.431,269,3.599,285,1.945,424,4.49,614,4.521,689,1.945,929,3.906,935,2.924,936,3.906,946,2.733,1035,5.244,1036,7.278,1037,4.938,1038,6.041,1039,5.654,1040,6.277,1041,4.028,1042,5.654,1043,4.938]],["sidebarParentCategories/567",[87,1.218]],["title/568",[1044,5.842]],["content/568",[19,4.551,25,2.581,31,0.737,58,0.918,68,2.259,89,3.834,96,2.535,146,2.795,205,5.486,211,2.199,240,3.338,344,4.05,424,4.368,561,2.702,601,3.417,630,4.804,935,3.697,942,4.198,946,3.455,1043,4.804,1044,5.101,1045,7.8,1046,5.5,1047,7.149,1048,6.106,1049,5.5,1050,5.101,1051,5.101,1052,3.593,1053,6.106]],["sidebarParentCategories/568",[87,1.218]],["title/569",[1054,6.299]],["content/569",[31,0.689,35,3.339,58,0.934,78,5.307,96,3.081,199,5.548,211,2.672,240,4.056,320,2.783,474,4.366,939,4.366,967,5.837,1054,6.684,1055,5.101,1056,7.419,1057,6.684,1058,7.419]],["sidebarParentCategories/569",[87,1.218]],["title/570",[1059,5.842]],["content/570",[2,1.123,3,2.625,19,4.29,25,2.433,58,0.779,96,3.107,201,2.846,211,2.695,306,2.433,424,5.352,460,1.041,601,4.186,929,4.655,935,3.485,946,3.257,1059,6.251,1060,5.594]],["sidebarParentCategories/570",[87,1.218]],["title/513",[1018,5.229]],["content/513",[]],["sidebarParentCategories/513",[31,0.39,87,0.797,350,1.318]],["title/514",[58,0.522,946,2.181,1017,4.186]],["content/514",[2,1.213,25,2.627,31,0.583,55,1.443,105,4.163,211,2.261,212,4.163,317,4.028,336,3.575,345,2.735,348,2.291,349,1.694,350,2.533,434,3.906,640,5.359,1014,5.359,1017,6.75,1018,4.694,1019,5.244,1020,5.654,1061,4.49,1062,2.647]],["sidebarParentCategories/514",[31,0.39,87,0.797,350,1.318]],["title/515",[34,1.705,1014,3.872]],["content/515",[2,0.645,55,1.451,58,0.447,89,2.074,96,1.783,111,2.437,147,1.414,192,5.546,225,5.641,336,1.9,345,1.314,372,2.246,410,1.783,527,2.246,936,2.671,939,5.403,993,3.378,1014,4.86,1019,7.13,1063,4.293,1064,4.293,1065,4.293,1066,4.293,1067,4.293,1068,9.182,1069,7.672,1070,9.182,1071,4.293,1072,4.293,1073,4.293,1074,4.293,1075,4.293,1076,4.293]],["sidebarParentCategories/515",[31,0.39,87,0.797,350,1.318]],["title/516",[651,0.623,1018,4.365]],["content/516",[2,1.012,6,2.089,8,1.776,25,1.561,55,1.271,69,1.641,71,1.402,110,5.304,111,1.878,115,2.089,147,1.58,153,2.758,212,3.183,220,3.079,239,2.318,268,1.435,285,2.415,305,3.775,311,2.024,318,1.963,345,2.064,410,1.993,432,3.867,435,3.183,467,3.775,471,3.775,492,2.056,497,1.31,552,2.623,562,1.662,624,4.076,642,2.8,651,0.832,652,0.736,666,2.685,672,3.183,833,3.775,845,4.472,904,4.472,908,4.009,949,3.299,966,3.775,1014,3.183,1018,5.829,1062,2.024,1077,4.799,1078,6.742,1079,6.742,1080,5.633,1081,4.799,1082,4.799,1083,6.742,1084,6.742,1085,4.799,1086,4.799,1087,4.799,1088,4.799,1089,4.799,1090,4.799]],["sidebarParentCategories/516",[31,0.39,87,0.797,350,1.318]],["title/551",[351,1.686,582,2.874]],["content/551",[58,0.772,87,1.407,103,3.081,115,3.23,285,2.299,320,2.783,351,2.59,357,3.653,410,3.081,464,2.1,466,3.881,582,4.746,953,4.761,1091,6.684]],["sidebarParentCategories/551",[87,1.218]],["title/552",[351,2.02]],["content/552",[34,2.186,62,2.768,147,2.463,157,5.886,210,4.523,213,3.833,351,2.161,460,1.041,582,3.684,639,3.684,1092,7.481,1093,4.655,1094,5.594,1095,7.481,1096,9.013,1097,7.481]],["sidebarParentCategories/552",[87,1.218]],["title/553",[34,2.043]],["content/553",[6,1.538,32,2.817,34,2.133,43,1.89,55,1.397,62,1.307,117,1.645,138,3.572,141,3.167,168,2.343,173,1.135,191,1.931,211,2.351,225,2.078,253,1.192,269,2.026,292,3.182,318,3.215,349,0.953,354,2.307,360,3.128,397,3.606,434,2.198,454,2.026,496,1.81,575,2.951,582,3.214,728,2.759,750,2.266,764,5.454,806,2.641,807,5.454,816,2.343,818,4.027,916,2.527,957,3.666,967,2.779,979,5.214,990,2.641,1052,3.841,1098,2.527,1099,4.237,1100,3.182,1101,3.532,1102,3.532,1103,2.951,1104,3.532,1105,5.386,1106,3.532,1107,3.532,1108,3.532,1109,7.861,1110,7.861,1111,7.861,1112,7.861,1113,6.528,1114,5.135,1115,5.386,1116,3.182,1117,3.532,1118,2.198,1119,3.182,1120,2.779,1121,4.852,1122,2.779]],["sidebarParentCategories/553",[87,1.218]],["title/554",[460,0.973]],["content/554",[17,1.524,32,3.274,43,1.485,55,1.402,90,3.165,138,4.088,141,1.705,211,2.618,223,2.314,228,3.726,318,1.731,349,1.142,354,1.813,360,3.421,397,1.843,434,2.634,439,2.314,460,1.18,562,1.466,592,2.125,764,3.536,807,5.149,957,3.094,967,3.33,979,4.088,1052,3.626,1100,3.813,1114,4.849,1118,2.634,1120,3.33,1123,3.813,1124,4.232,1125,8.235,1126,8.235,1127,8.235,1128,8.235,1129,7.192,1130,3.813,1131,6.163,1132,4.232,1133,4.232,1134,4.232,1135,4.232,1136,4.232,1137,4.232,1138,3.813,1139,4.232]],["sidebarParentCategories/554",[87,1.218]],["title/555",[1140,6.299]],["content/555",[55,1.312,223,3.957,354,3.102,397,4.151,553,4.645,1052,5.199,1125,6.522,1126,6.522,1127,6.522,1128,6.522,1129,6.522,1140,6.522,1141,7.24,1142,8.835,1143,7.24]],["sidebarParentCategories/555",[87,1.218]],["title/556",[211,2.519]],["content/556",[32,2.234,62,2.143,210,3.501,211,3.646,306,1.883,318,2.368,407,1.906,582,2.851,728,2.966,735,5.731,817,3.841,818,5.731,909,3.24,939,5.751,946,3.74,949,5.907,997,7.178,1114,4.555,1116,5.216,1120,6.03,1122,6.03,1130,5.216,1144,5.79,1145,5.79,1146,5.79,1147,5.79,1148,5.79,1149,5.79,1150,5.79,1151,5.79]],["sidebarParentCategories/556",[87,1.218]],["title/628",[34,1.705,151,1.946]],["content/628",[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,150,2.237,151,2.534,152,3.893,153,2.338,154,3.668,163,3.792,226,2.87,246,5.023,252,4.089,253,2.566,261,3.278,280,3.364,285,2.355,320,2.851,324,2.087,350,1.792,357,2.815,416,2.006,466,2.99,492,2.449,584,4.089,636,3.199,684,5.041,685,5.436,950,3.364,1010,4.358,1011,4.497,1152,4.497,1153,3.199]],["sidebarParentCategories/628",[87,1.218]],["title/629",[31,0.408,285,1.359,320,1.646,957,2.203]],["content/629",[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,141,1.411,146,1.603,151,1.517,169,1.132,173,1.719,229,1.159,239,1.692,242,4.438,246,3.52,248,2.751,249,2.248,253,1.536,264,1.02,285,1.41,317,4.438,318,2.189,324,1.954,330,2.155,348,2.859,349,2.043,350,1.678,351,1.012,354,2.293,355,2.323,360,1.501,386,0.887,395,3.679,401,2.995,407,1.153,408,0.746,450,1.759,457,2.118,464,1.253,474,3.149,479,1.424,481,4.307,482,2.619,492,1.501,497,1.242,568,2.094,614,2.547,616,1.759,636,1.96,640,2.323,642,1.454,644,2.248,651,0.374,652,0.537,663,2.756,664,2.619,665,1.549,668,4.471,684,4.822,685,2.506,716,2.248,718,2.248,845,1.374,935,1.632,968,2.619,1010,3.724,1055,1.424,1099,2.756,1118,1.289,1154,1.731,1155,1.866,1156,1.866,1157,1.866,1158,2.756,1159,2.756,1160,1.866,1161,1.866,1162,1.866,1163,1.866,1164,1.866,1165,1.731,1166,1.866,1167,1.289,1168,1.731,1169,1.866,1170,2.408,1171,1.731,1172,1.482,1173,1.731,1174,2.619,1175,3.155,1176,1.731,1177,1.731,1178,1.731,1179,1.731]],["sidebarParentCategories/629",[87,1.218]],["title/630",[405,2.948,964,3.323,1010,2.873]],["content/630",[31,0.814,34,1.76,52,5.426,55,1.385,88,4.504,89,2.91,95,3.873,105,3.995,119,4.511,151,2.008,152,3.086,246,4.629,285,1.866,348,2.872,354,2.581,395,4.142,401,3.371,492,2.581,935,2.806,939,3.544,1010,3.454,1055,4.142,1152,4.739,1159,4.739,1170,5.409,1172,4.309,1180,6.024,1181,6.024,1182,7.866,1183,6.024,1184,5.033,1185,5.033]],["sidebarParentCategories/630",[87,1.218]],["title/631",[151,1.172,592,1.765,1186,3.166,1187,2.628,1188,2.937,1189,3.166]],["content/631",[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.449,117,2.039,127,3.943,146,2.004,150,1.713,151,2.704,152,2.242,153,1.79,160,2.646,192,2.393,199,3.273,226,2.198,239,2.115,255,2.51,264,2.155,318,1.79,344,2.903,348,1.598,360,1.875,401,2.449,405,3.716,408,1.577,439,2.393,440,6.19,454,2.51,499,2.724,610,2.242,684,2.903,775,3.657,965,3.009,1010,3.621,1069,3.657,1098,3.131,1153,2.449,1167,2.724,1170,4.342,1187,3.273,1189,3.943,1190,4.377,1191,5.689,1192,6.674,1193,3.009,1194,4.377,1195,3.943,1196,5.689,1197,3.943,1198,3.657,1199,3.943,1200,5.276,1201,3.943,1202,3.657,1203,3.657,1204,3.943,1205,3.444,1206,3.444,1207,3.657,1208,3.657]],["sidebarParentCategories/631",[87,1.218]],["title/632",[95,2.16,418,3.281,504,3.452,777,3.139]],["content/632",[2,0.585,31,0.85,34,0.858,35,0.759,50,1.367,55,1.476,58,0.406,87,0.32,89,0.814,95,0.83,96,0.7,101,1.326,108,2.181,115,0.734,117,0.785,141,1.183,146,0.772,151,1.934,152,0.864,153,0.689,169,0.922,173,1.252,199,1.261,229,0.943,239,1.883,242,3.391,246,2.294,248,2.357,249,1.883,253,1.316,255,0.967,264,0.83,280,0.992,285,1.208,317,4.001,324,1.702,330,1.904,341,1.445,344,1.118,345,0.516,348,2.873,349,1.783,350,1.462,351,0.848,354,2.968,355,1.947,360,1.67,395,3.988,401,3.246,408,1.057,416,0.591,450,0.846,457,1.775,474,2.744,479,1.159,481,3.093,482,1.261,492,0.722,497,0.801,527,0.882,554,1.519,562,1.017,568,2.068,610,0.864,616,1.474,636,1.642,640,2.585,641,1.049,642,1.619,644,1.883,651,0.313,652,0.45,663,3.067,664,2.915,665,2.195,668,3.896,684,2.585,715,1.159,716,2.501,717,1.206,718,2.501,719,1.118,758,1.519,775,1.409,777,1.206,935,1.367,939,0.992,946,0.734,968,2.195,976,1.326,981,1.409,1010,2.674,1055,1.159,1069,1.409,1098,1.206,1153,0.943,1155,2.644,1156,1.519,1157,1.519,1158,3.067,1159,2.309,1160,2.644,1161,1.519,1162,1.519,1163,1.519,1164,1.519,1165,1.409,1167,1.049,1169,1.519,1170,4.543,1171,1.409,1172,2.788,1173,1.409,1174,2.195,1175,2.644,1177,1.409,1178,1.409,1179,1.409,1184,1.409,1185,1.409,1195,1.519,1196,2.644,1197,1.519,1198,1.409,1199,1.519,1200,2.452,1201,1.519,1202,1.409,1203,1.409,1204,1.519,1205,1.326,1206,1.326,1207,1.409,1208,1.409,1209,1.519,1210,1.686,1211,1.409,1212,1.519,1213,1.686,1214,1.686,1215,1.409,1216,2.935,1217,1.686,1218,2.935,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,1229,1.686]],["sidebarParentCategories/632",[87,1.218]],["title/633",[40,3.632,58,0.608]],["content/633",[146,4.321,151,2.697,264,3.983,1166,7.286,1167,5.033,1168,6.758,1176,6.758]],["sidebarParentCategories/633",[87,1.218]],["title/583",[58,0.366,69,1.202,651,0.375,652,0.539,963,1.555,1008,2.331]],["content/583",[32,2.34,36,6.601,58,0.915,77,3.568,115,3.44,135,4.535,147,1.997,169,3.315,174,4.338,180,3.241,181,2.557,201,3.542,268,1.813,316,3.617,324,2.214,338,1.515,407,1.997,439,3.315,499,3.774,563,3.666,651,0.843,652,1.212,852,3.666,946,2.64,963,3.496,1007,6.601,1008,4.022,1009,2.93,1230,6.064,1231,5.463,1232,6.064,1233,6.064,1234,3.394]],["sidebarParentCategories/583",[87,1.218]],["title/584",[316,2.293,338,1.252,1009,2.42]],["content/584",[62,2.914,66,3.878,213,4.035,316,3.605,338,1.968,465,2.996,513,4.407,514,4.407,515,4.901,639,3.878,1009,3.805]],["sidebarParentCategories/584",[87,1.218]],["title/585",[58,0.457,268,1.312,316,2.009,1009,2.12]],["content/585",[2,1.103,30,1.275,31,0.794,55,1.442,141,1.738,173,1.386,201,2.377,211,1.554,240,3.416,253,1.456,316,3.364,324,1.575,345,1.321,348,1.575,349,1.686,350,1.959,351,1.246,360,1.848,372,2.257,412,3.886,474,2.538,475,3.394,497,1.177,553,2.768,569,2.21,640,4.145,641,2.684,642,2.595,644,2.768,645,3.886,647,1.941,651,0.46,652,0.662,715,2.966,827,2.538,850,3.677,851,3.886,852,4.442,974,3.886,975,3.604,976,3.394,981,3.604,1009,4.443,1041,2.768,1055,2.966,1061,4.47,1235,7.348,1236,4.314,1237,4.314,1238,4.314,1239,6.249,1240,4.314,1241,4.314,1242,4.314,1243,4.314,1244,4.314,1245,4.314,1246,4.314,1247,4.314]],["sidebarParentCategories/585",[87,1.218]],["title/543",[464,1.173,515,3.117,1009,2.42]],["content/543",[]],["sidebarParentCategories/543",[58,0.325,87,0.593,651,0.333,652,0.479,963,1.383]],["title/544",[491,4.808]],["content/544",[22,3.103,154,4.722,303,2.965,316,3.368,329,4.118,502,4.33,516,4.449,529,5.789,534,5.264,682,5.789,864,5.789,872,4.722,874,5.059,880,4.722,896,4.33,906,6.148,1009,3.555,1248,5.502,1249,5.789]],["sidebarParentCategories/544",[58,0.325,87,0.593,651,0.333,652,0.479,963,1.383]],["title/545",[58,0.366,338,0.878,387,1.482,497,0.959,534,2.514,957,1.765]],["content/545",[]],["sidebarParentCategories/545",[58,0.325,87,0.593,651,0.333,652,0.479,963,1.383]],["title/546",[35,1.439,154,2.051,531,2.515,1250,3.197,1251,3.197,1252,3.197,1253,3.197]],["content/546",[338,2.003,534,5.734,847,7.447,854,5.512,861,7.221,882,5.994,1254,8.016]],["sidebarParentCategories/546",[58,0.325,87,0.593,651,0.333,652,0.479,963,1.383]],["title/547",[22,1.646,316,1.787,387,1.646,1009,1.886,1118,2.429]],["content/547",[22,3.442,316,3.736,651,0.871,652,1.252,880,5.238,1009,3.943,1248,6.104]],["sidebarParentCategories/547",[58,0.325,87,0.593,651,0.333,652,0.479,963,1.383]],["title/548",[387,1.646,651,0.416,652,0.599,872,2.505,1255,3.261]],["content/548",[651,0.871,872,5.238,874,5.612,875,6.104,877,6.421,1256,6.82,1257,5.839]],["sidebarParentCategories/548",[58,0.325,87,0.593,651,0.333,652,0.479,963,1.383]],["title/549",[22,1.646,316,1.787,387,1.646,1009,1.886,1258,3.261]],["content/549",[22,2.868,43,2.386,55,0.936,67,3.557,108,3.805,253,2.296,303,3.914,329,3.805,338,2.124,387,3.585,465,2.587,466,3.557,497,1.856,651,0.725,863,3.9,880,4.364,887,3.9,957,3.414,1257,4.865,1259,4.51,1260,7.657,1261,5.35,1262,5.35]],["sidebarParentCategories/549",[58,0.325,87,0.593,651,0.333,652,0.479,963,1.383]],["title/550",[387,1.85,624,2.653,881,2.516,1263,3.666]],["content/550",[55,1.103,651,0.855,882,5.994,883,6.307,1257,5.734,1261,6.307,1262,6.307,1264,8.016,1265,8.016]],["sidebarParentCategories/550",[58,0.325,87,0.593,651,0.333,652,0.479,963,1.383]],["title/576",[464,1.173,514,2.803,1009,2.42]],["content/576",[]],["sidebarParentCategories/576",[58,0.325,87,0.593,651,0.333,652,0.479,963,1.383]],["title/577",[491,4.808]],["content/577",[22,3.236,316,3.513,516,4.639,519,6.912,682,6.037,864,6.037,872,4.924,874,5.276,880,4.924,896,4.515,906,6.411,1009,3.707,1248,5.738,1249,6.037]],["sidebarParentCategories/577",[58,0.325,87,0.593,651,0.333,652,0.479,963,1.383]],["title/578",[58,0.366,338,0.878,387,1.482,497,0.959,525,2.331,957,1.765]],["content/578",[338,2.097,525,5.566,854,5.77,860,7.011]],["sidebarParentCategories/578",[58,0.325,87,0.593,651,0.333,652,0.479,963,1.383]],["title/579",[22,1.646,316,1.787,387,1.646,1009,1.886,1118,2.429]],["content/579",[22,3.442,316,3.736,651,0.871,652,1.252,880,5.238,1009,3.943,1248,6.104]],["sidebarParentCategories/579",[58,0.325,87,0.593,651,0.333,652,0.479,963,1.383]],["title/580",[387,1.646,651,0.416,652,0.599,872,2.505,1255,3.261]],["content/580",[651,0.871,872,5.238,874,5.612,875,6.104,877,6.421,1256,6.82,1257,5.839]],["sidebarParentCategories/580",[58,0.325,87,0.593,651,0.333,652,0.479,963,1.383]],["title/581",[22,1.646,316,1.787,387,1.646,1009,1.886,1258,3.261]],["content/581",[22,2.868,43,2.386,55,0.936,67,3.557,108,3.805,253,2.296,303,3.914,329,3.805,338,2.124,387,3.585,465,2.587,466,3.557,497,1.856,651,0.725,863,3.9,880,4.364,887,3.9,957,3.414,1257,4.865,1259,4.51,1260,7.657,1261,5.35,1262,5.35]],["sidebarParentCategories/581",[58,0.325,87,0.593,651,0.333,652,0.479,963,1.383]],["title/582",[387,1.85,624,2.653,881,2.516,1263,3.666]],["content/582",[55,1.103,651,0.855,882,5.994,883,6.307,1257,5.734,1261,6.307,1262,6.307,1266,8.016,1267,8.016]],["sidebarParentCategories/582",[58,0.325,87,0.593,651,0.333,652,0.479,963,1.383]],["title/592",[464,1.173,513,2.803,1009,2.42]],["content/592",[]],["sidebarParentCategories/592",[58,0.325,87,0.593,651,0.333,652,0.479,963,1.383]],["title/593",[22,2.113,115,2.181,491,3.445]],["content/593",[4,5.179,17,2.608,239,4.269,338,2.208,464,1.696,471,5.696,513,5.336,516,5.342,518,3.204,750,4.645,833,5.696,874,4.978,1209,6.522,1268,7.24,1269,7.24,1270,7.24]],["sidebarParentCategories/593",[58,0.325,87,0.593,651,0.333,652,0.479,963,1.383]],["title/594",[207,1.158,387,1.85,497,1.197,957,2.203]],["content/594",[58,0.663,115,2.771,163,4.222,239,3.075,285,3.107,497,1.737,516,3.849,621,4.76,652,1.564,905,3.651,911,4.222,1271,6.366,1272,6.366,1273,6.366,1274,10.029,1275,6.366,1276,6.366,1277,6.366,1278,6.366,1279,6.366,1280,6.366,1281,6.366]],["sidebarParentCategories/594",[58,0.325,87,0.593,651,0.333,652,0.479,963,1.383]],["title/595",[22,1.646,316,1.787,387,1.646,1009,1.886,1118,2.429]],["content/595",[22,3.442,316,3.736,651,0.871,652,1.252,880,5.238,1009,3.943,1248,6.104]],["sidebarParentCategories/595",[58,0.325,87,0.593,651,0.333,652,0.479,963,1.383]],["title/596",[387,1.646,651,0.416,652,0.599,872,2.505,1255,3.261]],["content/596",[651,0.871,872,5.238,874,5.612,875,6.104,877,6.421,1256,6.82,1282,8.162]],["sidebarParentCategories/596",[58,0.325,87,0.593,651,0.333,652,0.479,963,1.383]],["title/597",[22,1.646,316,1.787,387,1.646,1009,1.886,1258,3.261]],["content/597",[22,2.912,43,2.423,115,3.006,171,4.748,253,2.331,297,4.297,387,3.619,465,2.627,497,1.884,513,4.802,624,4.175,651,0.737,845,4.58,863,3.96,880,4.431,887,3.96,957,3.467,1259,4.58,1283,6.905,1284,7.731,1285,6.905,1286,6.22,1287,6.905,1288,6.22]],["sidebarParentCategories/597",[58,0.325,87,0.593,651,0.333,652,0.479,963,1.383]],["title/598",[285,1.209,387,1.646,624,2.36,911,2.589,1263,3.261]],["content/598",[285,2.44,513,4.407,526,7.094,624,4.761,1284,7.094,1286,7.094,1288,7.094,1289,7.875,1290,7.875,1291,7.094,1292,7.875]],["sidebarParentCategories/598",[58,0.325,87,0.593,651,0.333,652,0.479,963,1.383]],["title/641",[30,1.725,150,2.284]],["content/641",[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,146,3.245,150,3.17,151,2.363,152,2.642,173,1.657,183,3.245,199,3.857,217,2.698,238,3.035,252,3.689,253,2.393,285,2.196,320,2.659,324,1.883,330,2.918,350,1.617,357,2.539,416,2.487,466,3.708,485,3.425,492,2.21,566,2.697,584,3.689,601,2.886,636,2.886,776,3.118,896,3.035,950,3.035,1091,4.646,1293,3.421]],["sidebarParentCategories/641",[87,1.218]],["title/642",[31,0.408,285,1.359,320,1.646,957,2.203]],["content/642",[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,133,1.309,141,0.767,147,0.627,149,0.956,153,0.779,169,2.768,173,1.047,174,1.362,181,0.803,183,0.872,212,1.263,217,1.706,221,1.424,223,1.782,225,3.351,228,1.971,229,1.825,239,0.92,242,1.222,248,4.725,249,2.092,253,0.643,261,1.092,311,0.803,317,3.984,325,2.836,330,2.391,334,1.018,338,0.815,339,2.028,342,1.637,343,1.493,345,0.998,348,1.19,349,2.553,350,1.341,351,0.942,356,1.263,366,1.263,374,1.066,386,0.816,405,1.12,407,1.074,416,1.5,419,1.185,439,1.782,443,2.565,450,2.147,464,1.001,479,4.269,481,3.777,482,2.438,488,0.996,492,1.397,495,1.743,497,1.167,518,0.843,527,0.996,545,2.937,566,1.926,568,1.276,636,1.066,642,1.776,650,1.706,659,0.956,663,2.565,664,2.438,665,2.438,700,1.263,708,1.185,714,2.724,716,2.092,718,2.092,721,2.163,723,2.724,725,2.565,728,1.67,805,2.333,816,1.263,821,2.438,845,1.263,914,2.565,915,2.333,925,2.565,927,3.984,928,2.163,929,2.029,930,2.092,931,2.565,932,2.565,934,2.438,935,1.519,946,1.42,950,1.12,965,2.242,968,1.424,1011,2.565,1154,1.591,1231,1.715,1294,1.904,1295,1.715,1296,1.715,1297,1.591,1298,1.498,1299,3.261,1300,4.276,1301,1.424,1302,3.261,1303,5.98,1304,1.715,1305,1.362,1306,1.904,1307,1.715,1308,2.937,1309,2.937,1310,2.937,1311,2.937,1312,2.565,1313,2.937,1314,2.937,1315,3.261,1316,1.904,1317,1.904,1318,3.261,1319,1.904]],["sidebarParentCategories/642",[87,1.218]],["title/643",[30,1.297,964,2.91,1187,3.281,1188,3.666]],["content/643",[30,2.847,55,1.395,78,5.302,89,3.581,96,2.286,112,2.764,119,3.157,190,3.24,239,3.581,312,3.939,354,2.359,360,2.359,372,2.88,395,3.786,405,3.24,439,3.01,591,2.821,610,2.821,836,4.117,950,4.361,968,4.117,1057,4.96,1098,3.939,1187,4.117,1188,4.6,1205,4.332,1207,4.6,1208,4.6,1301,4.117,1320,4.96,1321,5.506,1322,5.506,1323,5.506,1324,5.506,1325,5.506,1326,5.506,1327,5.506,1328,4.6,1329,7.411,1330,5.506,1331,5.506,1332,5.506]],["sidebarParentCategories/643",[87,1.218]],["title/644",[30,1.481,150,1.96,1186,4.513]],["content/644",[30,2.22,34,1.311,55,1.458,59,2.209,96,1.863,118,4.015,119,2.573,151,2.895,183,2.943,213,2.298,348,2.347,354,1.922,360,3.514,374,2.511,408,2.315,464,1.051,465,1.707,466,2.347,492,1.922,493,4.042,566,2.445,591,4.203,639,2.209,651,0.686,836,3.355,909,5.056,1293,4.264,1312,5.057,1333,3.209,1334,5.165,1335,4.486,1336,6.428,1337,4.42,1338,4.807,1339,5.057,1340,6.428,1341,6.428,1342,5.791,1343,6.428,1344,4.486]],["sidebarParentCategories/644",[87,1.218]],["title/645",[40,3.632,58,0.608]],["content/645",[30,2.776,146,4.299,150,3.675,238,4.717,566,3.049,1293,5.317]],["sidebarParentCategories/645",[87,1.218]],["title/610",[450,3.511]],["content/610",[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.231,108,3.007,115,3.602,153,2.982,231,3.695,245,3.844,246,3.162,252,3.844,253,1.814,285,2.564,320,3.104,324,1.962,350,1.685,386,2.302,450,4.803,464,1.259,466,3.814,497,1.466,636,3.007,683,3.985,776,3.249,828,4.29,845,3.564,879,4.018,1154,4.49,1345,5.374,1346,3.695,1347,6.091,1348,5.374,1349,5.374,1350,3.695,1351,5.374]],["sidebarParentCategories/610",[87,1.218]],["title/611",[58,0.522,59,2.467,450,2.515]],["content/611",[4,2.325,17,1.171,28,2.716,31,0.911,40,2.023,58,0.9,59,2.487,68,1.203,96,2.573,104,2.431,110,2.557,112,1.632,115,2.199,130,2.928,133,2.235,152,3.175,153,3.536,160,1.965,169,4.137,170,2.716,173,1.044,180,1.737,181,1.371,203,1.819,205,2.023,211,1.171,224,1.965,225,2.973,233,2.086,239,1.57,242,3.242,245,4.999,246,1.913,248,1.965,249,3.242,315,2.235,324,1.187,330,1.171,357,1.6,397,1.415,404,2.928,405,2.973,434,2.023,435,3.351,450,4.832,453,2.557,490,2.716,542,2.928,629,2.325,650,2.643,664,2.431,680,3.474,728,1.665,751,2.431,753,2.928,941,2.928,956,2.431,966,2.557,993,2.557,1047,2.928,1234,1.819,1303,2.928,1352,3.25,1353,3.25,1354,4.551,1355,5.582,1356,3.25,1357,5.052,1358,3.25,1359,3.25,1360,3.25,1361,3.25,1362,3.25,1363,2.928,1364,2.235,1365,4.551,1366,6.818,1367,2.325,1368,2.928,1369,3.25,1370,3.25,1371,3.25,1372,3.25,1373,3.25,1374,2.928,1375,2.716,1376,3.25,1377,3.974,1378,3.25,1379,3.25,1380,2.928,1381,3.25,1382,2.928,1383,3.25,1384,3.25,1385,3.25,1386,3.25,1387,3.25,1388,2.716,1389,2.928,1390,3.25]],["sidebarParentCategories/611",[87,1.218]],["title/612",[450,2.515,464,1.173,957,2.515]],["content/612",[2,0.596,3,1.393,6,1.728,25,1.291,31,0.719,34,1.16,51,3.123,55,1.364,58,0.413,84,1.955,96,1.649,103,1.649,141,1.6,151,1.96,168,2.633,181,1.674,203,2.222,229,2.222,264,1.955,285,2.399,320,2.627,324,1.449,348,2.147,349,2.09,350,1.245,351,1.147,354,2.519,360,1.701,386,1.701,449,2.547,450,4.718,454,2.277,474,2.336,479,4.815,497,1.083,601,2.222,640,2.633,642,1.649,644,2.547,665,2.969,765,2.336,850,2.336,852,3.555,879,2.969,909,4.333,935,3.607,950,2.336,1010,2.277,1061,4.206,1158,3.123,1159,3.123,1165,3.317,1167,2.47,1174,2.969,1346,2.73,1391,3.97,1392,5.88,1393,3.317,1394,3.97,1395,3.97,1396,3.576,1397,5.88,1398,5.88,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.97,1408,3.576,1409,3.97,1410,3.97,1411,3.97]],["sidebarParentCategories/612",[87,1.218]],["title/613",[245,3.139,464,1.028,1118,2.73,1412,3.666]],["content/613",[2,0.559,3,1.306,6,1.621,19,2.135,25,1.211,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,141,1.5,151,2.247,224,2.251,225,3.298,229,2.083,239,1.799,245,4.009,253,1.257,262,1.833,277,3.354,285,1.153,320,1.397,324,1.359,341,1.833,348,1.359,349,2.024,350,1.167,351,1.619,357,1.833,360,1.595,374,2.083,416,1.306,449,3.596,450,4.637,464,1.313,467,2.929,474,2.19,495,1.99,497,1.016,601,2.083,629,2.663,640,2.469,642,1.546,644,2.389,765,2.19,777,4.009,850,2.19,852,3.388,879,4.191,896,2.19,909,4.197,916,2.663,945,2.389,950,2.19,1010,3.214,1014,2.469,1055,3.853,1061,4.009,1123,3.354,1158,2.929,1172,4.009,1301,2.784,1346,2.56,1350,2.56,1375,3.11,1393,4.683,1412,3.11,1413,6.072,1414,6.756,1415,5.605,1416,3.723,1417,3.723,1418,3.723,1419,3.723,1420,3.354,1421,3.723,1422,3.723,1423,3.723,1424,3.723,1425,3.723,1426,3.723,1427,3.723,1428,3.723]],["sidebarParentCategories/613",[87,1.218]],["title/614",[153,2.049,828,2.948,964,3.323]],["content/614",[31,0.806,58,0.838,59,2.511,87,0.967,102,1.052,103,2.117,120,2.853,151,2.345,153,3.293,160,3.083,168,4.665,245,6.209,246,4.738,285,1.58,320,1.913,435,3.382,449,4.513,450,4.727,454,2.924,496,2.612,499,3.173,527,2.667,601,2.853,683,2.787,732,4.011,776,4.252,828,3,916,3.647,949,3.506,957,2.56,964,3.382,1118,3.173,1152,5.533,1346,3.506,1347,4.26,1354,4.593,1355,4.593,1366,6.336,1413,4.593,1414,4.593,1429,5.099,1430,5.099,1431,4.593,1432,5.099,1433,5.099,1434,5.099,1435,5.099,1436,5.099,1437,5.099,1438,5.099]],["sidebarParentCategories/614",[87,1.218]],["title/615",[40,3.632,58,0.608]],["content/615",[2,1.452,31,0.695,42,4.09,146,3.425,147,2.463,205,4.655,213,3.833,220,4.801,450,5.041,1365,6.739,1374,6.739,1439,7.481]],["sidebarParentCategories/615",[87,1.218]],["title/634",[30,1.039,183,1.609,217,1.839,330,1.266,485,1.698,566,1.337]],["content/634",[30,2.057,31,0.646,42,3.804,67,3.64,87,1.32,103,2.89,108,3.894,115,3.029,172,3.426,183,3.185,252,4.978,253,2.349,285,2.156,320,2.61,330,2.507,350,2.182,357,3.426,466,3.64,485,3.362,565,4.978,570,3.426,582,3.426,636,3.894,651,0.92,659,3.494]],["sidebarParentCategories/634",[87,1.218]],["title/635",[31,0.408,285,1.359,320,1.646,957,2.203]],["content/635",[2,1.271,31,0.714,55,1.468,58,0.35,69,1.149,73,1.977,95,1.654,96,1.395,113,1.758,115,1.463,118,1.796,173,1.665,217,1.758,223,1.837,330,1.21,345,1.029,349,2.615,350,1.054,351,1.828,386,1.439,464,0.787,497,0.917,566,2.407,568,2.476,569,1.721,570,2.552,571,2.156,582,2.552,641,2.091,642,2.152,651,0.358,706,2.807,714,2.807,715,2.31,716,3.326,717,2.404,718,3.326,719,2.229,720,4.978,721,3.438,722,3.027,723,4.331,724,3.027,725,4.078,728,3.242,761,2.807,805,2.404,808,4.669,809,4.669,810,4.669,811,4.669,812,4.669,816,2.229,817,2.229,818,2.513,819,3.027,820,3.027,821,2.513,822,3.027,914,2.643,915,2.404,922,2.643,925,4.078,926,3.027,927,4.978,928,2.229,929,2.091,930,2.156,931,2.643,932,2.643,934,2.513,935,1.565,1307,4.669,1308,4.669,1440,3.36]],["sidebarParentCategories/635",[87,1.218]],["title/636",[345,1.534,397,2.181,1118,3.117]],["content/636",[18,2.487,30,1.621,31,0.509,34,1.057,42,1.978,55,1.365,58,0.769,67,2.869,68,1.339,87,0.686,103,1.502,113,1.892,118,1.934,141,2.669,148,2.487,156,2.399,166,2.846,173,1.162,181,1.526,183,2.511,211,1.303,221,2.705,241,4.101,253,1.221,318,1.48,326,2.588,330,3.012,345,1.108,348,1.321,351,1.045,354,2.35,357,1.781,360,1.55,386,1.55,397,1.575,401,2.024,416,1.269,432,2.075,448,2.705,464,1.285,485,2.65,527,1.892,570,1.781,582,3.912,614,2.024,647,1.628,650,1.892,651,0.585,652,0.555,659,2.754,688,2.705,728,3.393,750,3.519,751,2.705,763,2.846,777,2.588,806,2.705,817,2.399,818,4.101,821,5.941,896,2.129,914,2.846,915,2.588,935,1.685,957,1.816,965,2.487,969,2.705,978,3.259,979,2.399,1103,3.023,1114,2.846,1119,4.941,1120,2.846,1121,3.259,1122,2.846,1193,2.487,1296,4.941,1297,3.023,1301,2.705,1441,3.618,1442,5.534,1443,3.023,1444,3.259,1445,3.618,1446,3.618,1447,3.618,1448,3.618,1449,5.485,1450,3.618,1451,3.618,1452,3.618,1453,3.618,1454,3.259,1455,3.618]],["sidebarParentCategories/636",[87,1.218]],["title/637",[330,1.805,485,2.42,964,3.323]],["content/637",[34,1.737,55,1.32,96,2.468,118,3.177,173,2.505,253,2.007,302,5.354,306,2.536,330,3.328,334,3.177,345,1.82,348,2.17,349,1.604,354,2.546,397,2.588,485,4.635,495,3.177,636,3.326,728,3.045,909,4.87,1259,3.942,1456,7.271,1457,7.025,1458,5.354,1459,5.354,1460,4.966,1461,5.354,1462,4.966,1463,5.354,1464,5.944]],["sidebarParentCategories/637",[87,1.218]],["title/638",[30,1.297,183,2.009,330,1.58,964,2.91]],["content/638",[30,2.765,34,1.609,35,2.478,55,1.325,62,2.742,103,2.286,118,4.79,133,3.786,147,1.813,183,4.282,260,3.652,330,2.669,348,2.01,349,1.486,354,2.359,397,2.397,485,4.33,635,4.6,708,3.426,776,3.329,887,4.25,946,2.397,949,3.786,1259,3.652,1295,4.96,1456,4.6,1462,4.6,1465,4.96,1466,7.411,1467,4.96,1468,4.96,1469,4.6,1470,4.332,1471,3.939,1472,4.96,1473,5.506,1474,5.506]],["sidebarParentCategories/638",[87,1.218]],["title/639",[58,0.728]],["content/639",[30,2.733,58,0.813,87,1.481,150,3.618,330,2.812,374,4.369,464,1.829,565,5.585,566,2.97,679,5.585]],["sidebarParentCategories/639",[87,1.218]],["title/640",[40,3.632,58,0.608]],["content/640",[62,3.134,566,3.222,582,4.171]],["sidebarParentCategories/640",[87,1.218]],["title/599",[268,1.746,460,0.812]],["content/599",[2,1.035,3,1.357,6,1.684,8,2.552,17,2.484,25,1.258,32,3.154,33,2.406,41,3.607,55,1.125,103,1.606,147,1.273,173,1.853,201,1.471,268,2.951,278,4.574,306,1.875,329,2.164,337,2.686,374,4.277,386,2.954,407,2.517,423,1.77,460,1.385,462,3.275,465,2.623,496,1.981,499,2.406,518,3.052,547,3.462,563,2.338,568,2.257,651,0.615,652,0.885,683,2.114,689,2.533,765,2.276,839,2.276,1060,4.312,1093,4.291,1153,4.277,1234,4.277,1367,2.766,1475,2.276,1476,3.017,1477,3.08]],["sidebarParentCategories/599",[]],["title/600",[41,2.621,55,0.689,460,0.697]],["content/600",[6,3.152,32,2.793,33,4.505,41,4.622,147,2.384,201,2.754,268,2.165,306,2.354,329,4.051,423,3.314,460,1.326,496,3.709,563,4.377,765,4.26,1060,5.414,1234,4.051,1367,5.179,1475,4.26]],["sidebarParentCategories/600",[]],["title/601",[2,0.48,55,0.44,173,1.027,568,1.251,651,0.341,652,0.491,689,0.99]],["content/601",[2,1.204,32,3.093,173,2.575,499,4.988,568,3.137,651,0.855,652,1.23,683,4.382,689,2.484]],["sidebarParentCategories/601",[]],["title/602",[55,0.537,268,1.167,462,1.672,689,1.209,1476,2.042]],["content/602",[8,2.679,17,2.608,32,2.793,268,2.852,278,4.802,374,4.051,386,3.102,407,2.384,460,1.326,462,3.102,465,2.754,518,3.204,547,3.635,1093,4.505,1153,4.051,1234,4.051,1476,3.787]],["sidebarParentCategories/602",[]],["title/603",[55,0.537,268,1.167,462,1.672,689,1.209,1477,1.573]],["content/603",[8,2.679,17,2.608,32,2.793,268,2.852,278,4.802,374,4.051,386,3.102,407,2.384,460,1.326,462,3.102,465,2.754,518,3.204,547,3.635,1093,4.505,1153,4.051,1234,4.051,1477,2.917]],["sidebarParentCategories/603",[]],["title/604",[55,0.537,268,1.167,337,1.818,689,1.209,1477,1.573]],["content/604",[8,2.679,17,2.608,32,2.793,268,2.852,278,4.802,337,3.373,374,4.051,386,3.102,407,2.384,460,1.326,465,2.754,518,3.204,547,3.635,1093,4.505,1153,4.051,1234,4.051,1477,2.917]],["sidebarParentCategories/604",[]],["title/605",[306,2.274]],["content/605",[2,0.695,3,1.623,25,2.136,39,4.167,58,0.481,67,2.419,77,2.722,78,3.309,147,1.523,149,3.836,150,1.81,211,1.666,236,2.588,268,1.383,273,3.639,306,3.219,407,1.523,408,2.366,416,1.623,458,5.489,460,1.063,494,2.968,527,2.419,543,3.068,553,4.216,561,2.907,562,3.502,647,2.081,682,3.639,733,3.18,734,5.168,736,3.639,750,2.968,837,3.309,879,3.459,896,2.722,903,2.968,954,4.167,956,4.913,1011,3.639,1350,3.18,1460,6.949,1476,3.996,1478,4.625,1479,6.882,1480,4.625,1481,7.64,1482,4.625,1483,3.639,1484,4.625,1485,3.865]],["sidebarParentCategories/605",[]],["title/606",[211,1.805,561,2.217,562,1.735]],["content/606",[5,4.443,8,2.479,17,2.413,25,2.738,95,3.298,168,4.443,201,2.548,236,4.712,268,2.518,349,2.272,449,4.298,460,1.171,561,4.276,562,3.346,618,6.034,1486,6.699,1487,7.585,1488,5.27,1489,6.699]],["sidebarParentCategories/606",[]],["title/607",[95,2.467,561,2.217,562,1.735]],["content/607",[2,0.853,3,1.993,34,1.66,77,3.342,81,5.203,93,2.852,95,2.797,112,2.852,120,3.179,149,2.852,150,2.223,160,3.434,164,3.645,234,4.248,236,3.179,255,3.257,259,4.746,268,1.699,293,4.248,306,1.847,318,2.323,349,2.042,351,1.641,357,2.797,407,1.87,448,4.248,460,0.79,465,2.161,495,3.036,561,3.766,562,3.273,634,3.105,639,2.797,689,2.345,690,4.248,839,3.342,881,3.257,1006,4.248,1153,3.179,1234,3.179,1488,4.469,1490,4.063,1491,4.746,1492,4.248,1493,5.68,1494,4.469]],["sidebarParentCategories/607",[]],["title/608",[201,1.906,561,2.217,562,1.735]],["content/608",[13,5.053,18,3.857,31,0.521,32,2.164,41,4.723,58,0.781,95,3.695,117,2.613,147,1.847,179,4.687,184,4.687,201,3.58,234,4.194,253,1.894,306,2.44,407,1.847,410,2.329,423,2.568,457,3.391,460,1.376,465,2.134,561,3.742,562,3.127,689,2.325,733,3.857,837,4.012,899,4.537,904,3.72,953,3.599,1363,5.053,1495,5.609,1496,4.194,1497,5.609,1498,4.413]],["sidebarParentCategories/608",[]],["title/609",[465,2.22,689,1.809]],["content/609",[2,1.07,173,2.289,250,4.433,262,3.508,268,2.831,337,3.319,416,2.5,462,3.748,465,2.71,568,2.788,651,0.76,652,1.093,689,3.14,1476,3.727,1477,3.525]],["sidebarParentCategories/609",[]],["title/586",[41,3.054,460,0.812]],["content/586",[6,2.733,31,0.876,32,2.421,33,3.906,41,4.673,53,2.492,147,2.067,201,3.398,268,1.877,306,2.627,329,3.512,423,2.873,460,1.39,496,3.216,563,3.795,601,3.512,765,3.693,945,5.184,1060,4.694,1234,3.512,1333,4.49,1367,4.49,1475,3.693,1499,6.277,1500,4.938,1501,4.694]],["sidebarParentCategories/586",[460,0.893]],["title/587",[460,0.812,1502,5.259]],["content/587",[31,0.939,41,4.554,53,2.806,126,5.286,201,3.312,306,2.299,397,3.077,460,1.313,563,4.273,601,3.955,945,6.055,1333,5.056,1475,4.159,1500,5.561]],["sidebarParentCategories/587",[460,0.893]],["title/588",[31,0.327,41,1.839,460,0.489,945,2.255,1333,2.514,1475,2.068]],["content/588",[2,1.041,19,2.237,31,0.884,34,1.14,37,2.791,41,4.016,50,4.007,53,2.304,55,1.435,71,1.14,105,2.587,138,2.587,149,1.959,173,1.865,201,2.92,230,4.448,259,3.259,261,2.237,262,1.921,299,2.791,306,1.888,311,1.645,320,2.177,336,1.726,345,1.777,348,2.119,349,1.566,350,1.82,354,3.516,355,2.587,386,1.671,407,1.911,418,2.917,432,3.328,460,1.239,497,1.065,642,2.41,666,2.183,765,2.295,904,2.587,945,2.503,1093,2.427,1206,3.069,1475,2.295,1503,4.152,1504,3.069,1505,3.901,1506,4.849,1507,3.514,1508,3.259,1509,3.259,1510,3.514,1511,3.901,1512,3.901,1513,3.514,1514,3.901,1515,3.514,1516,3.069,1517,3.514]],["sidebarParentCategories/588",[460,0.893]],["title/589",[31,0.463,53,1.269,201,1.897,306,1.04,1500,2.515]],["content/589",[2,0.889,31,0.843,34,0.885,37,3.421,41,2.502,50,3.625,53,3.089,55,1.42,71,0.885,89,1.464,135,2.266,148,2.084,149,1.522,169,1.657,172,1.492,173,1.536,201,3.098,230,1.945,233,1.945,250,1.886,262,2.355,295,2.01,299,5.238,306,2.951,311,1.278,318,1.956,320,1.137,334,1.62,336,1.341,345,1.814,348,1.746,349,1.599,350,0.95,354,2.882,355,2.01,375,2.532,386,1.298,407,1.575,432,4.199,460,0.824,494,3.069,495,1.62,497,0.827,563,1.832,642,1.986,666,1.696,679,2.168,694,2.266,765,1.783,863,1.738,904,2.01,945,3.801,957,1.522,1041,3.069,1118,1.886,1193,2.084,1333,3.421,1475,1.783,1500,2.384,1502,2.73,1503,2.168,1504,3.763,1506,7.054,1507,2.73,1508,2.532,1509,2.532,1513,4.308,1515,2.73,1516,2.384,1517,2.73,1518,2.73,1519,3.031,1520,4.782,1521,2.73,1522,5.924,1523,3.031,1524,2.73,1525,2.73,1526,3.031,1527,4.782,1528,2.73,1529,2.73,1530,2.73,1531,2.73,1532,2.384]],["sidebarParentCategories/589",[460,0.893]],["title/590",[31,0.408,460,0.61,601,2.455,945,2.816]],["content/590",[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,149,2.476,172,2.428,201,2.614,285,1.528,306,1.603,311,2.079,324,1.8,336,2.182,345,2.104,348,1.8,349,1.331,350,2.48,354,2.112,355,3.27,386,2.112,397,2.992,432,3.941,460,1.296,465,1.876,467,3.879,497,1.346,585,4.442,642,2.853,666,2.759,689,1.528,700,3.27,935,3.201,946,2.992,1059,5.741,1503,3.527,1506,4.12,1524,4.442,1533,4.931,1534,4.12,1535,4.442,1536,4.442,1537,4.931]],["sidebarParentCategories/590",[460,0.893]],["title/591",[1501,5.229]],["content/591",[17,1.924,34,1.561,35,2.404,41,3.798,58,0.556,84,3.575,102,1.498,160,3.23,171,3.673,173,2.333,191,2.92,210,3.23,255,3.063,262,2.63,401,2.989,416,1.874,423,2.445,460,1.231,499,4.518,601,2.989,654,3.821,689,2.556,887,4.164,899,3.23,909,2.989,911,4.816,956,3.994,1041,3.428,1080,4.463,1259,3.543,1377,4.203,1462,6.067,1487,4.812,1501,7.69,1538,5.342,1539,4.812,1540,5.342,1541,5.342,1542,7.261,1543,5.342,1544,5.342]],["sidebarParentCategories/591",[460,0.893]],["title/646",[2,0.528,173,1.129,568,1.375,651,0.375,652,0.539,689,1.089]],["content/646",[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,150,1.973,173,1.62,183,3.195,213,2.583,224,3.048,268,1.508,334,2.695,337,4.024,341,2.482,345,1.543,407,1.66,438,2.093,459,4.212,460,0.971,485,2.436,490,4.212,499,4.342,552,3.815,568,2.731,634,2.756,639,3.436,651,0.744,652,1.071,683,2.756,689,2.98,693,4.1,896,2.966,942,3.466,985,4.212,1009,3.372,1041,4.478,1249,3.966,1477,3.48,1518,4.542,1545,4.212,1546,4.212,1547,5.041,1548,5.041]],["sidebarParentCategories/646",[460,0.893]],["title/647",[689,1.809,1549,3.872]],["content/647",[8,2.815,17,2.74,328,4.477,363,6.357,374,4.257,416,2.669,518,3.367,677,6.357,689,2.821,693,3.898,889,6.357,1206,5.986,1546,6.357,1550,7.608]],["sidebarParentCategories/647",[460,0.893]],["title/648",[34,1.705,1501,4.365]],["content/648",[2,1.061,3,2.48,25,2.299,34,2.065,320,2.652,328,4.159,349,1.907,363,7.274,621,6.511,873,5.906,887,4.993,1094,5.286,1501,6.511,1546,5.906,1551,7.068,1552,5.056,1553,8.5,1554,7.068]],["sidebarParentCategories/648",[460,0.893]],["title/649",[2,0.586,568,1.527,689,1.209,1008,2.589,1555,2.792]],["content/649",[2,1.289,53,2.742,105,4.58,141,3.458,232,4.748,349,2.316,386,2.958,407,2.273,428,5.188,496,3.537,562,2.391,568,3.358,651,0.915,652,1.059,655,4.94,909,3.864,1008,4.58,1555,6.139,1556,6.905,1557,5.432]],["sidebarParentCategories/649",[460,0.893]],["title/650",[2,0.48,173,1.027,349,0.863,568,1.251,634,1.748,1492,2.391,1555,2.287]],["content/650",[173,3.065,634,4.503,886,5.664,1558,6.48,1559,7.42]],["sidebarParentCategories/650",[460,0.893]],["title/651",[141,2.352,460,0.812]],["content/651",[2,1.183,6,3.429,53,3.127,62,2.914,141,3.744,165,5.889,240,4.305,568,3.082,689,2.44,1560,7.875]],["sidebarParentCategories/651",[460,0.893]],["title/652",[113,3.054,460,0.812]],["content/652",[113,3.757,147,2.365,150,2.81,220,4.608,230,4.608,264,3.536,268,2.148,337,3.346,391,4.938,438,2.982,460,0.999,552,3.926,639,3.536,651,0.766,689,2.225,693,3.679,1477,2.894,1558,5.65,1561,6,1562,6.469,1563,6.469,1564,6.469]],["sidebarParentCategories/652",[460,0.893]],["title/653",[30,1.481,183,2.293,460,0.697]],["content/653",[30,2.328,68,2.914,69,2.693,115,3.429,183,3.605,341,3.878,459,6.58,460,1.096,693,4.035,985,6.58,1545,6.58]],["sidebarParentCategories/653",[460,0.893]],["title/654",[460,0.543,762,2.684,979,2.589,1565,3.903,1566,3.261]],["content/654",[35,2.948,53,2.601,105,4.346,165,4.899,210,3.961,285,2.03,349,1.768,438,2.721,460,0.911,475,6.533,552,3.582,592,3.29,647,2.948,651,0.699,679,4.687,689,2.03,762,5.709,804,4.899,887,3.757,942,4.505,946,2.852,979,5.507,1052,3.855,1205,5.155,1539,5.902,1567,6.552,1568,5.902,1569,6.552,1570,6.552,1571,6.552,1572,5.902]],["sidebarParentCategories/654",[460,0.893]],["title/655",[30,1.725,460,0.812]],["content/655",[17,2.608,20,4.26,30,2.14,53,2.874,59,4.35,68,2.679,147,2.384,149,3.635,165,5.414,210,4.377,349,1.954,370,5.696,408,2.608,460,1.007,1291,6.522,1470,5.696,1573,7.24,1574,7.24,1575,7.24,1576,6.049]],["sidebarParentCategories/655",[460,0.893]],["title/656",[438,2.904]],["content/656",[62,3.048,438,3.42,460,1.146,651,0.879,903,5.286,1577,8.237]],["sidebarParentCategories/656",[460,0.893]],["title/657",[460,0.973]],["content/657",[6,2.537,20,3.429,41,3.049,43,2.045,53,3.056,88,4.358,95,2.87,147,1.919,201,2.217,220,3.74,230,3.74,253,1.968,264,2.87,328,3.429,334,3.115,341,4.244,345,1.784,389,4.169,460,1.199,552,3.186,559,4.869,591,2.986,639,2.87,680,5.293,689,2.67,693,4.416,750,3.74,887,3.342,896,3.429,904,3.865,942,4.007,965,4.007,1008,3.865,1350,4.007,1375,4.869,1516,4.585,1521,5.25,1578,5.828,1579,4.869,1580,5.25,1581,5.828]],["sidebarParentCategories/657",[460,0.893]],["title/658",[253,1.691,339,2.376,497,1.367]],["content/658",[2,1.196,8,1.559,17,1.517,20,2.479,31,0.673,50,1.962,55,1.452,70,2.07,71,2.328,95,2.074,103,1.749,181,1.776,198,3.795,220,2.703,253,1.422,311,1.776,339,1.998,341,2.074,343,1.928,345,2.439,348,2.646,349,1.657,350,1.321,351,1.217,354,2.631,410,1.749,460,0.586,497,1.15,518,1.864,527,3.213,552,2.303,568,3.117,569,3.147,584,3.013,589,3.52,642,2.55,650,2.204,652,0.942,689,2.624,693,2.158,716,3.941,718,4.651,719,4.074,755,3.795,1014,2.794,1530,3.795,1579,3.52,1580,3.795,1582,4.212,1583,4.212,1584,4.212,1585,4.212,1586,5.533,1587,4.212,1588,4.212]],["sidebarParentCategories/658",[460,0.893]],["title/659",[207,1.322,911,3.323,1008,3.323]],["content/659",[35,3.271,55,1.368,70,2.28,71,2.333,95,2.084,103,1.757,115,1.843,171,4.238,173,2.565,230,2.716,264,2.084,285,1.909,345,1.887,348,3.63,356,4.821,366,4.821,387,1.785,416,1.485,443,4.849,464,1.444,475,4.849,496,2.168,504,3.33,527,2.214,562,1.466,589,6.671,624,3.726,651,0.657,652,0.946,700,4.088,908,3.536,911,2.807,946,2.683,1008,4.088,1552,4.409,1586,5.552,1589,4.232,1590,4.232,1591,6.163,1592,6.163,1593,6.163,1594,6.163,1595,6.163,1596,4.232,1597,4.232,1598,6.163,1599,4.232,1600,4.232,1601,4.232]],["sidebarParentCategories/659",[460,0.893]],["title/616",[268,1.312,462,1.88,689,1.359,1476,2.295]],["content/616",[2,1.45,8,1.757,17,2.41,32,1.832,55,0.921,70,2.213,71,1.387,266,2.137,268,2.516,278,3.149,295,3.149,303,1.913,306,2.176,311,2.822,320,1.781,338,1.672,339,3.174,342,3.891,343,3.063,374,2.657,386,2.867,407,2.552,460,1.316,462,2.867,465,1.806,488,2.484,497,1.296,518,2.962,541,3.396,547,2.384,651,0.714,652,1.027,1093,2.954,1153,2.657,1234,2.657,1475,2.794,1476,2.484,1503,3.396,1602,3.735,1603,4.277,1604,3.967,1605,8.415,1606,8.415,1607,3.967,1608,6.692]],["sidebarParentCategories/616",[460,0.893]],["title/617",[95,2.467,561,2.217,562,1.735]],["content/617",[17,2.086,20,3.407,32,3.314,103,2.404,117,2.697,123,3.635,147,1.906,153,3.135,172,2.851,211,2.086,225,3.407,239,4.151,268,1.731,293,4.33,306,1.883,349,1.563,351,1.672,357,2.851,390,3.321,410,2.404,419,3.603,423,2.651,460,0.805,518,2.562,561,4.047,562,3.167,610,3.927,632,4.555,633,4.555,634,3.165,776,3.501,827,3.407,899,3.501,1476,3.029,1492,4.33,1494,4.555,1549,3.841,1609,3.716,1610,4.838]],["sidebarParentCategories/617",[460,0.893]],["title/618",[30,1.725,351,1.686]],["content/618",[8,0.815,17,0.794,19,0.7,30,2.49,33,0.759,43,0.428,44,0.912,50,0.568,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.064,90,2.252,92,0.839,95,1.483,102,0.454,108,0.683,114,1.178,120,0.683,123,1.429,131,1.414,139,0.873,141,1.486,146,2.701,148,0.839,149,1.106,150,0.862,151,0.407,152,0.625,153,3.227,157,0.96,160,0.738,164,0.783,172,1.085,180,0.652,181,0.515,183,1.009,191,1.646,192,3.533,203,1.233,205,2.296,211,0.794,219,0.809,222,0.873,224,0.738,230,1.414,236,0.683,238,3.275,243,0.873,253,0.412,265,0.683,268,0.659,295,0.809,299,1.576,306,1.2,318,2.277,325,0.809,345,0.374,348,2.833,349,1.284,351,1.499,354,2.528,360,1.58,386,0.523,387,0.515,390,1.727,391,0.839,395,0.839,401,2.386,405,2.171,408,1.329,416,0.428,418,0.912,423,1.689,432,0.7,434,1.874,435,0.809,438,2.684,449,0.783,454,1.727,457,0.738,460,0.662,462,1.29,485,1.064,492,0.523,494,0.783,495,0.652,561,0.54,562,1.477,591,3.825,592,1.512,636,0.683,647,1.355,651,0.738,765,0.718,768,1.019,827,0.718,828,1.772,832,1.019,836,4.412,863,0.7,881,0.7,899,0.738,903,0.783,905,1.727,909,2.064,936,0.759,950,2.171,966,0.96,990,0.912,1027,0.96,1038,2.252,1052,1.296,1062,1.556,1098,1.576,1193,1.515,1234,2.064,1293,3.692,1305,0.873,1312,0.96,1334,1.515,1337,1.515,1338,4.162,1339,5.085,1350,0.839,1367,0.873,1471,2.155,1476,1.576,1483,0.96,1485,1.019,1496,1.647,1504,0.96,1532,0.96,1549,0.809,1555,0.873,1576,1.019,1609,0.783,1611,1.22,1612,2.713,1613,2.961,1614,1.099,1615,1.099,1616,4.336,1617,2.203,1618,3.082,1619,1.22,1620,2.203,1621,2.203,1622,1.841,1623,2.203,1624,2.203,1625,1.22,1626,1.22,1627,1.414,1628,1.22,1629,1.841,1630,1.22,1631,1.019,1632,1.985,1633,1.019,1634,1.22,1635,1.22,1636,2.203,1637,1.019,1638,1.099,1639,2.203,1640,2.203,1641,3.689,1642,1.22,1643,1.099,1644,1.22,1645,1.22,1646,1.22,1647,1.22,1648,1.22,1649,1.22,1650,1.22,1651,1.22,1652,2.203,1653,2.203,1654,2.203,1655,2.203,1656,3.323,1657,2.902,1658,2.713,1659,2.155,1660,2.713,1661,2.203,1662,1.22,1663,1.019,1664,1.099,1665,2.203,1666,1.22,1667,1.22,1668,1.22,1669,1.22,1670,1.22,1671,1.22,1672,1.22,1673,1.22,1674,1.099,1675,1.099,1676,1.019,1677,1.985,1678,0.96]],["sidebarParentCategories/618",[460,0.893]],["title/619",[151,1.946,351,1.686]],["content/619",[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,131,1.088,133,1.166,146,2.664,151,3.1,180,1.577,181,0.715,191,0.927,203,0.949,205,2.913,239,0.819,264,4.295,265,0.949,268,1.171,306,0.551,312,1.213,318,2.169,328,3.121,334,0.906,345,0.519,348,2.878,349,0.796,350,1.825,351,1.532,354,2.976,360,1.677,401,2.191,405,4.087,407,0.558,408,1.062,416,0.595,438,3,439,0.927,440,4.431,454,0.972,460,0.236,462,1.264,469,1.527,492,1.264,494,2.512,498,1.213,547,0.851,553,1.088,562,1.621,591,1.511,613,0.998,614,2.968,630,1.334,647,0.763,654,1.213,762,1.166,763,4.172,828,1.736,881,1.692,899,1.025,1003,2.206,1010,5.464,1055,2.028,1062,0.715,1080,1.417,1167,5.428,1170,2.028,1172,3.348,1174,2.206,1176,3.271,1177,1.417,1178,1.417,1179,2.464,1184,1.417,1185,1.417,1187,2.206,1191,3.527,1193,2.028,1198,1.417,1200,2.464,1202,1.417,1203,1.417,1215,3.271,1305,1.213,1364,1.166,1382,1.527,1388,1.417,1476,1.543,1483,1.334,1490,1.213,1532,1.334,1549,2.597,1557,3.683,1558,1.334,1609,1.088,1627,1.088,1631,1.417,1679,1.695,1680,1.695,1681,1.695,1682,1.695,1683,1.695,1684,1.695,1685,2.657,1686,1.695,1687,1.695,1688,1.695,1689,1.695,1690,1.695,1691,1.695,1692,1.695,1693,1.417,1694,2.95,1695,1.695,1696,2.95,1697,2.95,1698,1.695,1699,1.695,1700,1.695,1701,1.695,1702,1.695,1703,1.527,1704,1.695,1705,3.527,1706,1.695,1707,1.695,1708,1.695,1709,1.695,1710,1.695,1711,1.695,1712,1.695,1713,1.695,1714,1.695,1715,1.695]],["sidebarParentCategories/619",[460,0.893]],["title/620",[153,2.04,211,1.152,349,0.863,423,1.463,460,0.445,610,1.638]],["content/620",[2,0.842,6,1.621,25,1.211,33,2.316,34,1.088,37,2.663,55,1.408,58,0.583,68,2.074,102,0.768,123,1.766,153,3.457,172,1.833,175,5.049,180,1.99,211,3.389,225,4.733,231,3.853,268,1.113,306,1.823,312,2.663,318,1.523,336,2.48,345,2.296,351,1.075,390,2.135,391,2.56,405,2.19,407,1.226,408,2.019,411,2.784,423,3.085,462,1.595,496,1.907,561,1.647,562,1.941,610,1.907,647,1.675,650,1.947,748,3.11,827,2.19,936,4.667,1168,3.11,1333,2.663,1396,3.354,1476,1.947,1479,3.354,1491,4.683,1496,2.784,1525,6.072,1609,2.389,1716,3.354,1717,3.723,1718,5.605,1719,3.723,1720,6.74,1721,7.5,1722,5.049,1723,3.723,1724,6.756,1725,3.723,1726,3.354,1727,5.605,1728,5.605,1729,3.723,1730,3.723,1731,3.723,1732,3.723,1733,3.723,1734,3.723]],["sidebarParentCategories/620",[460,0.893]],["title/621",[201,1.906,561,2.217,562,1.735]],["content/621",[5,3.307,20,4.075,25,1.621,32,1.923,41,4.497,43,2.429,47,3.728,55,1.183,58,0.721,59,2.455,77,2.933,96,2.07,117,2.323,123,2.365,141,2.79,166,3.922,201,2.634,244,3.428,345,1.526,350,1.563,407,1.641,410,2.07,416,1.749,438,2.07,460,1.196,465,1.896,527,2.608,544,4.491,561,3.521,562,3.238,683,2.725,689,2.145,751,3.728,863,4.563,903,3.199,953,3.199,969,3.728,1153,2.79,1212,4.491,1346,3.428,1476,2.608,1508,4.165,1509,5.786,1609,4.443,1613,3.102,1615,4.491,1633,4.165,1735,4.985,1736,4.985,1737,4.165,1738,4.165]],["sidebarParentCategories/621",[460,0.893]],["title/622",[30,1.725,222,4.176]],["content/622",[30,2.352,53,1.979,55,1.345,73,2.933,84,2.455,123,2.365,141,2.009,148,3.428,181,2.102,183,3.17,191,2.725,201,1.896,222,5.692,348,1.82,360,2.967,397,2.17,408,1.796,423,2.282,438,2.07,462,2.136,492,2.136,496,2.554,543,3.307,591,4.79,610,2.554,647,2.243,699,3.307,881,2.859,896,2.933,1062,3.809,1193,3.428,1338,5.95,1469,4.165,1471,6.688,1476,3.622,1555,3.566,1643,4.491,1739,8.597,1740,4.491,1741,4.491,1742,4.985,1743,4.985,1744,4.985,1745,4.985]],["sidebarParentCategories/622",[460,0.893]],["title/623",[30,1.297,438,1.822,689,1.359,1062,1.85]],["content/623",[30,2.787,53,1.721,55,1.443,58,0.653,68,2.32,114,2.317,146,2.871,150,2.454,153,2.565,191,2.37,203,2.426,238,3.69,262,2.134,264,2.134,265,2.426,306,2.039,408,1.561,422,4.933,423,1.984,438,3.059,462,1.857,494,2.781,496,2.221,592,3.148,616,2.176,651,0.786,689,1.343,693,2.221,827,2.551,881,3.596,904,2.875,905,2.486,1293,2.875,1328,5.239,1337,2.98,1476,2.267,1609,2.781,1613,2.697,1657,4.933,1658,5.649,1659,4.486,1660,5.649,1746,5.649,1747,6.271,1748,6.637,1749,6.271,1750,6.271,1751,6.271,1752,6.271,1753,6.271]],["sidebarParentCategories/623",[460,0.893]],["title/624",[438,2.08,450,2.515,1364,3.445]],["content/624",[17,1.387,19,2.208,31,0.534,43,1.351,58,0.401,59,1.896,89,2.777,117,1.794,128,5.178,149,2.886,150,1.507,172,1.896,229,3.849,230,2.471,285,2.888,289,3.217,324,2.784,341,1.896,397,2.994,401,2.155,411,4.298,438,2.856,450,4.836,460,0.536,492,3.268,494,3.689,518,1.704,562,1.334,630,3.029,647,1.733,650,2.014,672,2.554,677,3.217,765,2.266,886,3.952,887,3.296,942,2.648,946,1.676,956,2.879,1006,2.879,1043,3.029,1211,3.217,1259,2.554,1364,6.779,1380,3.469,1412,7.788,1431,5.178,1510,5.178,1528,5.178,1536,3.469,1553,3.469,1563,3.469,1637,3.217,1754,6.878,1755,3.469,1756,3.851,1757,5.748,1758,5.748,1759,3.851,1760,3.851,1761,3.469,1762,5.748,1763,5.748]],["sidebarParentCategories/624",[460,0.893]],["title/625",[32,1.933,93,2.515,905,2.873]],["content/625",[32,3.677,53,2.991,55,1.131,58,0.469,59,2.22,62,1.668,81,3.1,84,3.176,93,2.264,113,3.375,148,3.1,151,2.9,201,2.454,219,2.991,222,3.226,227,3.547,240,2.465,254,4.062,269,2.586,306,1.466,318,1.844,344,2.991,438,3.613,460,0.897,462,1.932,492,1.932,614,3.61,636,2.523,647,2.029,651,0.481,652,0.692,689,1.999,693,2.31,701,5.075,827,2.653,876,3.372,905,2.586,943,3.547,1062,1.902,1094,3.372,1367,3.226,1476,2.359,1562,5.812,1602,5.075,1609,2.893,1627,2.893,1678,3.547,1764,4.509,1765,6.451,1766,6.451,1767,7.533,1768,4.509,1769,4.062,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,1779,4.509]],["sidebarParentCategories/625",[460,0.893]],["title/626",[264,2.16,438,1.822,689,1.359,1167,2.73]],["content/626",[34,2.363,35,2.546,53,1.497,55,1.168,58,0.842,65,5.644,84,1.856,90,2.819,146,2.59,149,1.893,151,3.089,153,1.542,180,2.015,181,1.59,191,2.061,192,2.061,211,1.358,228,3.421,264,3.716,265,2.11,285,1.168,328,2.218,340,2.346,349,1.833,351,1.089,360,1.615,405,2.218,408,1.358,438,3.527,454,3.244,462,1.615,474,2.218,494,2.419,592,3.41,636,2.11,647,1.696,689,1.168,693,1.931,905,2.162,929,2.346,935,1.756,1010,5.63,1094,2.819,1138,3.396,1167,4.696,1170,3.89,1297,3.15,1408,5.097,1465,3.396,1476,1.972,1532,2.966,1557,2.966,1627,2.419,1678,2.966,1685,3.396,1693,3.15,1780,6.791,1781,3.77,1782,3.77,1783,3.77,1784,5.658,1785,3.77,1786,5.658,1787,5.658,1788,5.658,1789,5.658,1790,5.658,1791,3.77,1792,3.77,1793,3.77]],["sidebarParentCategories/626",[460,0.893]],["title/627",[151,1.463,328,2.582,1364,3.017,1794,3.953]],["content/627",[8,1.977,18,3.673,55,1.218,77,3.143,92,3.673,146,3.776,151,3.086,168,3.543,328,5.447,401,2.989,408,1.924,438,3.675,453,4.203,460,0.743,591,4.534,592,2.682,647,2.404,689,1.655,693,2.737,828,4.272,996,6.067,1010,4.731,1051,4.463,1062,2.253,1215,6.067,1364,6.365,1476,2.794,1535,4.812,1558,4.203,1609,3.428,1631,4.463,1705,4.812,1795,7.261,1796,5.342,1797,5.342,1798,5.342]],["sidebarParentCategories/627",[460,0.893]],["title/660",[268,1.312,462,1.88,689,1.359,1477,1.768]],["content/660",[2,1.45,8,1.757,17,2.41,32,1.832,55,0.921,70,2.213,71,1.387,266,2.137,268,2.516,278,3.149,295,3.149,303,1.913,306,2.176,311,2.822,320,1.781,338,1.672,339,3.174,342,3.891,343,3.063,374,2.657,386,2.867,407,2.552,460,1.316,462,2.034,465,1.806,488,2.484,497,1.296,518,2.962,541,3.396,547,2.384,651,0.714,652,1.027,1093,2.954,1153,2.657,1234,2.657,1475,2.794,1477,2.696,1503,3.396,1602,3.735,1603,4.277,1604,3.967,1607,3.967,1799,8.415,1800,8.415,1801,6.692]],["sidebarParentCategories/660",[460,0.893]],["title/661",[95,2.467,561,2.217,562,1.735]],["content/661",[17,2.113,20,3.452,32,3.336,103,2.436,117,2.733,123,4.101,147,1.931,172,2.888,225,3.452,239,4.178,268,1.754,293,4.386,306,1.908,316,2.685,351,2.233,357,2.888,390,3.364,410,2.436,419,3.65,460,0.816,462,2.513,518,2.596,561,4.068,562,3.183,610,3.96,632,4.615,633,4.615,634,3.207,776,3.547,827,3.452,899,3.547,1492,4.386,1494,4.615,1549,3.891,1610,4.901,1802,4.386]],["sidebarParentCategories/661",[460,0.893]],["title/662",[31,0.542,1803,4.176]],["content/662",[18,3.526,31,0.876,50,2.389,55,1.111,62,1.898,66,2.525,87,0.973,131,3.291,141,2.845,191,3.86,240,2.803,262,2.525,285,1.589,323,3.291,324,2.948,334,2.741,348,2.578,349,1.905,350,2.861,351,2.332,397,2.232,423,3.232,460,0.713,462,2.197,497,2.49,610,2.627,636,2.87,640,3.401,642,3.353,659,2.575,683,2.803,689,1.589,804,3.835,916,3.668,930,3.291,1061,3.668,1062,2.163,1477,2.066,1549,3.401,1804,7.061,1805,5.128,1806,4.619,1807,4.619,1808,5.128,1809,3.835]],["sidebarParentCategories/662",[460,0.893]],["title/663",[146,2.293,344,3.323,1045,4.186]],["content/663",[2,0.853,31,0.791,58,0.788,77,3.342,102,1.172,112,2.852,141,2.289,146,2.6,150,2.223,172,2.797,180,3.036,205,3.535,212,5.019,233,3.645,268,1.699,285,2.345,324,2.074,408,2.046,432,3.257,460,0.79,653,4.469,654,4.063,733,3.906,929,3.535,946,2.473,989,6.817,990,4.248,1044,4.746,1045,6.323,1046,5.117,1052,4.453,1060,4.248,1099,4.469,1393,4.746,1498,4.469,1613,3.535,1627,3.645,1761,5.117,1810,7.568,1811,5.68,1812,5.117,1813,5.68,1814,5.68,1815,5.68,1816,5.68,1817,5.68]],["sidebarParentCategories/663",[460,0.893]],["title/664",[269,2.873,351,1.447,905,2.873]],["content/664",[2,1.18,31,0.663,55,1.46,58,0.426,73,2.411,123,1.943,168,2.717,265,2.293,269,2.349,273,3.223,303,1.651,339,1.943,345,1.843,348,1.496,349,1.925,350,1.887,351,2.419,354,3.368,397,1.784,408,1.476,416,1.437,432,2.349,439,3.899,448,3.064,457,2.477,462,1.755,497,1.118,610,3.083,642,1.701,735,3.064,804,3.064,863,2.349,881,3.451,905,2.349,940,3.223,1477,1.651,1818,6.018,1819,6.018,1820,6.018,1821,6.018,1822,6.018,1823,6.018,1824,3.423,1825,6.018,1826,6.018,1827,4.097,1828,6.018,1829,6.018,1830,6.018,1831,7.862,1832,7.862,1833,4.097,1834,4.097,1835,4.097]],["sidebarParentCategories/664",[460,0.893]],["title/665",[236,2.803,351,1.447,1836,4.186]],["content/665",[8,1.239,31,0.311,34,0.978,55,1.301,58,0.538,68,2.627,84,2.545,111,1.31,131,3.316,142,2.797,146,3.996,147,1.702,180,2.763,203,1.873,217,1.751,219,2.22,236,4.538,238,3.715,253,1.13,285,1.037,306,1.089,318,2.114,323,2.148,330,1.206,334,1.789,348,2.305,349,1.395,351,2.05,354,3.041,357,1.648,370,6.65,397,1.457,401,2.892,407,1.102,408,1.206,422,2.634,423,3.25,424,2.395,453,2.634,462,2.214,492,1.434,610,1.715,616,2.595,636,2.892,694,2.503,830,3.016,896,1.97,935,1.559,942,3.554,949,2.302,950,1.97,957,1.681,1050,2.797,1052,1.97,1062,1.412,1293,2.22,1305,2.395,1334,4.341,1337,3.554,1477,2.082,1579,2.797,1613,2.083,1622,4.318,1637,5.932,1693,2.797,1794,3.016,1836,5.275,1837,5.168,1838,3.016,1839,5.168,1840,6.313,1841,3.347,1842,5.168,1843,5.168,1844,3.347,1845,3.347,1846,5.168,1847,5.168,1848,3.347,1849,3.347,1850,3.347,1851,3.347,1852,3.347,1853,3.347,1854,3.347,1855,3.016,1856,3.347,1857,3.347,1858,3.016,1859,3.016]],["sidebarParentCategories/665",[460,0.893]],["title/666",[351,1.686,659,2.931]],["content/666",[30,2.23,173,2.424,183,3.453,324,2.754,330,2.717,334,4.032,340,4.694,562,2.613,659,3.788,750,4.841,1559,6.796,1809,5.641,1860,6.796,1861,7.544,1862,7.544,1863,7.544]],["sidebarParentCategories/666",[460,0.893]],["title/667",[226,2.931,351,1.686]],["content/667",[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,131,2.448,141,1.537,146,3.131,150,0.898,153,3.413,154,1.472,157,1.805,164,1.472,172,1.13,180,1.226,191,1.254,203,1.284,211,0.826,226,3.958,230,1.472,238,4.025,243,1.641,244,1.577,265,1.284,268,0.686,306,1.593,318,2.335,325,1.522,348,2.772,349,1.322,351,1.831,354,3.107,387,0.967,390,2.809,391,1.577,401,1.284,407,0.755,408,2.283,416,0.805,423,3.131,434,3.048,435,1.522,438,2.371,454,1.316,457,1.387,460,0.681,462,1.635,495,1.226,562,1.321,591,2.925,592,1.152,647,1.032,651,0.523,688,4.269,768,1.917,827,1.35,828,2.245,863,1.316,881,1.316,905,2.188,909,3.195,936,1.427,1038,3.663,1052,2.245,1062,0.967,1193,1.577,1293,4.537,1334,2.624,1337,2.624,1338,2.853,1339,4.492,1342,3.437,1477,1.537,1483,1.805,1549,1.522,1576,1.917,1609,1.472,1616,3.188,1618,3.188,1622,3.188,1627,1.472,1657,4.492,1659,3.504,1663,1.917,1664,2.067,1674,2.067,1675,2.067,1676,1.917,1677,3.437,1864,1.641,1865,2.294,1866,2.294,1867,2.294,1868,2.294,1869,3.816,1870,2.294,1871,3.816,1872,2.294,1873,2.294,1874,5.709,1875,2.294,1876,3.816,1877,3.816,1878,3.816,1879,2.067,1880,1.917,1881,4.413,1882,3.816,1883,2.294,1884,3.437,1885,3.816,1886,2.294,1887,2.294,1888,2.294,1889,2.294,1890,2.294,1891,2.294]],["sidebarParentCategories/667",[460,0.893]],["title/668",[30,1.297,226,2.203,264,2.16,1167,2.73]],["content/668",[5,2.059,6,2.122,20,1.826,34,1.991,55,1.449,58,0.71,89,1.5,96,1.289,138,2.059,147,1.022,151,2.838,152,1.59,153,3.796,168,2.059,181,1.309,203,1.737,226,2.447,228,1.877,233,1.992,238,1.826,264,3.356,285,0.962,318,1.993,348,2.704,349,1.315,351,1.408,354,2.92,386,1.33,387,1.309,408,2.167,410,1.289,414,4.39,432,1.78,439,2.664,454,2.795,462,1.33,592,1.559,614,1.737,616,1.559,651,0.331,680,2.134,828,2.868,909,2.727,929,1.932,935,1.446,1003,4.499,1010,3.45,1152,2.442,1167,4.241,1170,2.134,1171,2.594,1172,3.486,1173,2.594,1174,3.644,1337,2.134,1471,3.486,1477,1.251,1488,2.442,1534,2.594,1612,2.796,1659,2.221,1703,2.796,1803,4.876,1880,2.594,1884,4.39,1892,4.873,1893,4.873,1894,4.873,1895,4.873,1896,2.796,1897,3.104,1898,4.873,1899,4.873,1900,4.873,1901,4.873,1902,4.873,1903,3.104,1904,3.104,1905,3.104,1906,3.104,1907,3.104,1908,3.104,1909,3.104]],["sidebarParentCategories/668",[460,0.893]],["title/669",[123,1.667,316,1.609,349,0.949,351,1.015,460,0.489,610,1.801]],["content/669",[2,0.653,6,0.546,17,0.452,25,0.408,31,0.35,34,0.366,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,139,0.897,146,1.724,147,0.744,149,0.63,151,0.418,152,0.643,153,2.776,161,1.777,172,1.112,180,1.207,211,1.357,217,0.656,221,1.689,225,3.994,227,1.777,228,2.628,233,0.805,236,1.724,241,2.817,255,0.719,262,0.618,268,0.375,280,0.738,289,1.048,299,0.897,307,1.048,316,1.034,318,1.54,328,0.738,330,1.357,334,0.67,336,1.924,339,2.503,340,0.78,345,1.331,348,2.391,349,2.036,350,0.708,351,2.08,354,2.422,360,0.537,372,0.656,375,3.147,386,0.968,390,1.295,391,0.862,395,3.331,397,0.983,401,2.108,405,0.738,407,0.744,408,1.566,416,0.44,423,1.034,432,2.493,434,2.344,438,3.064,439,1.235,457,1.863,460,0.429,462,1.32,481,0.832,497,0.616,561,0.555,562,0.782,610,1.578,616,0.63,642,0.521,650,0.656,653,0.987,672,0.832,699,0.832,748,1.048,754,0.987,762,0.862,763,0.987,804,2.304,827,0.738,899,0.758,936,3.726,940,0.987,1036,1.13,1098,1.616,1320,1.13,1334,2.59,1364,0.862,1443,1.048,1477,1.241,1490,2.694,1496,0.938,1504,0.987,1555,0.897,1572,1.13,1659,1.616,1676,1.887,1678,1.777,1716,1.13,1722,2.035,1724,1.13,1726,1.13,1802,0.938,1806,1.13,1824,3.632,1855,2.035,1858,1.13,1859,2.775,1864,0.897,1879,2.035,1896,1.13,1910,5.276,1911,3.081,1912,1.254,1913,1.254,1914,1.254,1915,1.254,1916,1.254,1917,1.254,1918,3.767,1919,1.254,1920,2.259,1921,2.259,1922,2.259,1923,1.254,1924,1.254,1925,6.788,1926,1.254,1927,1.254,1928,1.254,1929,1.254,1930,1.254,1931,3.081,1932,1.254,1933,1.254,1934,1.254,1935,2.259,1936,4.845,1937,3.767,1938,4.845,1939,2.259,1940,3.767,1941,2.259,1942,1.254,1943,1.254,1944,2.259,1945,2.259,1946,2.259,1947,1.254,1948,2.259,1949,2.259,1950,1.254,1951,1.254,1952,1.254,1953,1.254,1954,1.254,1955,1.254,1956,3.767,1957,1.254,1958,4.845,1959,1.254,1960,2.259,1961,1.254,1962,1.254,1963,1.254,1964,1.254,1965,1.254,1966,1.254,1967,2.259,1968,1.254,1969,1.254,1970,1.254,1971,1.254,1972,4.845,1973,3.081,1974,4.347,1975,4.347,1976,1.254,1977,1.254,1978,1.254,1979,1.254,1980,2.035,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,1991,1.254]],["sidebarParentCategories/669",[460,0.893]],["title/670",[201,1.906,561,2.217,562,1.735]],["content/670",[32,2.219,41,4.771,43,2.678,47,4.302,58,0.599,92,3.956,96,2.389,117,2.68,141,3.075,201,2.903,226,2.889,244,3.956,345,1.761,350,1.804,410,2.389,438,2.389,460,1.269,462,2.465,465,2.188,527,3.009,561,3.377,562,3.159,683,3.145,689,2.365,828,3.385,863,3.299,903,3.692,921,5.183,953,3.692,969,4.302,1052,3.385,1153,3.219,1346,3.956,1477,2.318,1613,3.58,1737,4.807,1738,4.807,1802,4.302,1864,4.115]],["sidebarParentCategories/670",[460,0.893]],["title/671",[226,2.203,438,1.822,689,1.359,1062,1.85]],["content/671",[53,2.299,55,1.452,58,0.603,68,2.143,114,3.095,146,3.509,153,3.135,226,3.848,238,4.51,264,2.851,265,3.24,306,2.493,408,2.086,438,3.568,462,2.481,496,2.966,592,2.907,689,1.794,693,2.966,881,4.395,905,3.321,1337,3.981,1477,2.333,1657,6.03,1659,5.483,1746,6.905,1802,4.33,1881,6.905]],["sidebarParentCategories/671",[460,0.893]],["title/672",[151,1.463,438,1.822,689,1.359,1062,1.85]],["content/672",[58,0.649,59,3.069,131,4,147,2.052,151,3.137,172,3.069,211,2.897,240,3.407,250,3.879,285,1.931,339,2.956,370,4.904,408,2.245,438,2.588,450,3.129,686,5.615,689,1.931,693,3.193,913,5.615,1062,2.629,1470,6.327,1490,4.459,1632,5.615,1769,5.615,1838,7.245,1860,5.615,1864,4.459,1992,5.615,1993,8.904,1994,6.233,1995,6.233,1996,6.233,1997,6.233]],["sidebarParentCategories/672",[460,0.893]],["title/673",[438,2.08,689,1.552,1062,2.113]],["content/673",[9,4.44,34,1.887,53,2.564,55,1.312,84,3.179,151,2.153,181,2.723,203,3.614,219,4.283,265,3.614,280,3.8,349,1.743,360,4.084,408,2.326,438,3.416,462,2.766,495,3.452,647,2.906,689,2.001,693,3.308,1062,3.818,1122,6.473,1477,2.602,1627,4.144,1998,6.457,1999,6.457]],["sidebarParentCategories/673",[460,0.893]],["title/674",[268,1.312,337,2.044,689,1.359,1477,1.768]],["content/674",[2,1.43,3,1.085,7,2.583,8,0.662,17,2.162,20,1.819,25,1.006,29,0.899,30,0.529,31,0.166,32,1.193,44,1.339,55,0.668,58,0.67,62,0.662,65,3.052,68,0.662,70,1.837,71,1.192,77,1.053,102,0.369,111,1.597,117,0.834,123,1.467,147,1.018,149,0.899,150,0.701,179,1.496,180,0.957,192,0.979,211,1.114,219,1.187,225,1.053,228,1.082,234,1.339,236,2.719,250,1.114,253,0.604,257,2.433,266,0.806,268,1.795,278,1.187,295,1.187,297,1.114,303,2.979,305,2.433,306,1.58,311,1.304,320,0.672,327,1.231,334,0.957,336,0.792,337,2.796,338,1.961,339,2.602,342,3.23,343,2.224,345,0.548,349,1.48,351,1.179,374,1.002,386,2.081,387,1.304,390,1.027,407,1.976,416,1.432,439,0.979,458,1.496,460,1.092,464,0.724,465,2.087,488,0.936,495,0.957,497,1.638,518,2.427,541,1.281,547,2.049,552,2.231,555,1.339,556,1.613,557,3.222,558,1.496,559,1.496,562,0.62,565,1.281,566,1.552,567,1.613,568,2.147,569,3.296,570,1.522,571,1.149,572,2.619,573,1.613,574,1.613,575,1.496,576,1.496,577,3.677,578,1.613,586,4.377,587,2.785,588,2.785,592,0.899,613,1.053,616,0.899,634,0.979,639,0.881,651,0.92,652,1.443,689,1.993,699,1.187,710,4.377,754,1.408,839,2.401,846,4.377,847,3.633,848,5.406,849,2.785,863,1.773,946,0.779,965,1.231,1093,1.114,1153,1.002,1234,1.002,1249,1.408,1377,1.408,1475,1.053,1477,2.21,1503,1.281,1534,1.496,1552,1.281,1561,1.496,1602,1.408,1604,1.496,1607,1.496,1864,2.212,2000,1.79,2001,1.79,2002,1.79,2003,1.79,2004,1.79,2005,3.092,2006,3.092]],["sidebarParentCategories/674",[460,0.893]],["title/675",[95,2.467,561,2.217,562,1.735]],["content/675",[17,2.199,20,3.593,32,3.401,103,2.535,117,2.844,123,3.764,147,2.01,225,3.593,239,4.26,268,1.826,306,1.986,351,1.763,357,3.006,390,3.501,419,3.799,454,3.501,518,2.702,557,4.05,561,4.131,562,3.233,610,3.128,632,4.804,633,4.804,634,3.338,776,3.691,827,3.593,899,3.691,1389,5.5,1477,2.46,1492,4.566,1494,4.804,1549,4.05,1610,5.101]],["sidebarParentCategories/675",[460,0.893]],["title/676",[31,0.542,1803,4.176]],["content/676",[2,1.39,31,0.811,43,2.097,55,1.474,70,2.235,71,2.55,164,2.605,303,1.636,311,2.521,330,2.153,336,3.14,337,1.891,345,2.894,348,2.182,349,1.915,350,1.874,351,1.173,407,1.337,408,1.462,497,2.136,553,2.605,563,2.455,569,2.08,613,2.389,642,3.25,651,0.835,652,1.28,666,3.345,850,4.606,852,4.732,1477,1.636]],["sidebarParentCategories/676",[460,0.893]],["title/677",[324,1.829,651,0.534,728,2.567]],["content/677",[2,1.244,31,0.737,43,1.112,55,1.46,70,1.969,71,2.317,138,2.103,147,1.044,151,1.057,180,1.694,181,1.337,250,3.083,261,1.818,264,1.561,269,1.818,311,2.089,324,2.226,330,1.142,336,2.192,337,1.477,339,1.504,345,2.698,348,1.809,349,1.861,350,1.553,351,0.916,360,2.122,372,1.658,397,2.157,408,1.142,497,1.664,569,1.624,592,1.592,613,1.865,616,1.592,642,2.863,651,0.651,652,1.058,666,2.772,728,3.832,817,3.286,840,4.74,850,4.057,852,4.168,905,1.818,928,3.286,930,3.179,934,4.56,935,3.212,945,2.034,1006,2.37,1061,2.268,1062,2.572,1477,1.277,1561,2.649,1809,4.56,2007,2.37,2008,4.954,2009,2.856,2010,3.17,2011,3.17,2012,3.898,2013,3.898,2014,3.898]],["sidebarParentCategories/677",[460,0.893]],["title/678",[173,1.875,562,2.022]],["content/678",[17,1.995,25,1.802,43,2.611,58,0.775,68,2.05,84,2.728,117,2.581,120,3.1,141,2.998,147,1.824,149,2.781,173,1.78,211,1.995,241,4.143,349,1.495,372,2.898,408,1.995,411,4.143,562,1.919,592,2.781,613,3.26,647,2.493,651,0.591,652,0.85,699,3.674,801,4.99,821,7.373,850,4.379,939,3.26,990,4.143,1027,4.358,1062,4.227,1304,4.99,1442,7.021,1663,4.629,1836,4.629,1992,4.99,2007,4.143,2015,5.54,2016,4.99]],["sidebarParentCategories/678",[460,0.893]],["title/679",[223,3.191,816,3.872]],["content/679",[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.904,77,1.686,113,2.987,133,1.971,137,2.582,151,0.955,223,4.664,233,1.839,240,1.567,253,0.968,255,1.644,264,1.411,285,0.888,303,1.155,311,1.929,318,1.172,324,1.67,330,2.981,334,3.052,336,2.025,337,1.335,345,2.44,348,1.67,349,2.151,350,1.435,351,1.321,410,1.9,439,1.567,494,1.839,495,1.532,497,1.249,518,1.268,553,1.839,557,1.901,563,1.733,569,2.344,592,1.439,613,1.686,616,1.439,628,1.971,629,3.273,642,2.707,651,0.488,652,0.876,666,2.56,728,3.339,805,4.085,816,5.49,850,3.836,881,1.644,935,1.335,946,3.306,1027,2.255,1037,3.599,1050,2.395,1062,1.209,1305,2.05,1477,1.843,1552,3.273,1803,2.05,2009,2.582,2017,2.866,2018,2.866,2019,4.575,2020,2.395,2021,4.575,2022,2.866,2023,2.866,2024,4.575,2025,2.866,2026,2.866,2027,2.866,2028,2.866,2029,2.866,2030,2.866,2031,2.395]],["sidebarParentCategories/679",[460,0.893]],["title/680",[613,2.948,1298,3.941,2032,4.513]],["content/680",[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.822,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,131,1.232,141,1.734,147,0.632,149,0.964,150,0.752,151,0.64,161,1.511,173,1.636,183,0.879,203,1.838,210,1.161,219,1.274,223,1.796,241,2.456,268,0.982,311,1.385,318,2.341,324,1.199,330,2.401,334,1.027,336,1.454,337,0.895,345,2.758,348,1.199,349,1.683,350,1.03,351,1.243,354,1.407,355,1.274,360,0.823,372,1.005,390,1.101,397,1.43,407,1.081,408,1.183,410,1.787,419,2.044,428,1.161,432,1.884,434,1.195,439,1.05,449,1.232,465,0.731,466,1.005,485,0.928,495,1.027,496,1.683,497,0.896,501,1.511,518,1.904,547,0.964,562,0.665,566,0.731,569,0.984,613,1.13,616,2.161,629,1.374,642,2.115,650,1.005,651,0.783,652,0.66,653,1.511,654,1.374,659,3.132,666,1.838,680,1.321,683,1.05,689,0.595,691,1.436,728,3.196,750,2.108,765,1.13,770,1.73,805,2.35,806,2.456,816,1.274,817,1.274,827,1.13,840,2.258,850,2.532,852,2.602,875,1.436,876,1.436,896,1.933,904,1.274,915,1.374,916,1.374,928,1.274,930,2.108,935,0.895,936,1.195,940,3.386,1003,1.436,1037,2.584,1041,2.108,1062,3.207,1093,1.195,1103,1.605,1298,4.503,1377,1.511,1442,3.595,1444,3.877,1454,1.73,1477,0.774,1564,1.73,1627,1.232,1755,1.73,1803,1.374,2007,1.436,2012,1.511,2013,1.511,2014,1.511,2020,2.744,2031,4.255,2032,5.619,2033,1.921,2034,1.921,2035,2.959,2036,1.921,2037,1.73,2038,1.73,2039,1.921,2040,1.73,2041,1.921]],["sidebarParentCategories/680",[460,0.893]],["title/681",[114,1.567,147,0.965,153,1.199,344,1.944,614,1.641,1037,2.306,1038,2.192,2042,2.932]],["content/681",[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,146,3.322,149,1.753,153,2.183,180,1.866,181,1.472,211,1.257,240,3.967,261,2.002,268,1.596,311,2.251,336,2.362,337,1.626,345,2.525,348,1.949,349,2.447,350,1.674,497,1.457,498,2.497,557,2.315,561,1.545,591,1.788,614,4.376,616,1.753,642,3.014,666,2.987,680,2.4,689,1.082,699,2.315,729,2.497,765,2.054,862,3.145,903,2.24,935,2.487,946,2.821,1035,5.414,1038,7.037,1039,3.145,1041,2.24,1042,3.145,1062,3.061,1211,2.917,1388,2.917,1443,2.917,1477,1.407,1552,2.497,1802,2.61,1812,3.145,2043,6.48,2044,3.491,2045,3.491,2046,3.491,2047,3.491,2048,3.491,2049,3.491,2050,3.491,2051,3.491]],["sidebarParentCategories/681",[460,0.893]],["title/682",[31,0.408,613,2.582,1062,1.85,2052,3.953]],["content/682",[31,0.571,43,2.157,58,0.83,73,3.617,104,4.597,120,4.461,121,4.078,150,2.406,164,5.115,191,4.836,388,5.538,407,2.913,457,4.819,616,3.087,639,3.027,647,2.766,650,3.216,936,4.96,1062,3.947,1824,7.391,1980,8.951,2052,5.538,2053,6.148,2054,6.148]],["sidebarParentCategories/682",[460,0.893]],["title/683",[151,1.463,460,0.61,1334,3.017,2055,3.953]],["content/683",[58,0.703,73,3.971,74,6.08,89,3.261,90,5.047,111,2.641,139,4.828,151,3.23,180,3.607,213,3.458,219,4.477,242,5.93,360,2.891,408,2.431,438,2.803,562,2.93,610,3.458,946,2.938,993,5.31,1062,2.846,1334,4.64,2055,6.08,2056,6.749,2057,6.749]],["sidebarParentCategories/683",[460,0.893]],["title/684",[349,0.949,351,1.55,566,1.337,616,1.765,659,1.765]],["content/684",[2,0.979,5,1.09,25,0.534,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.586,103,1.192,112,0.825,113,2.72,117,0.765,118,2.448,139,1.175,146,0.752,150,0.643,181,1.611,210,2.31,212,1.09,217,1.501,223,2.503,226,2.299,250,1.785,253,0.555,268,0.858,269,0.942,285,0.509,306,0.933,311,1.21,318,1.873,320,0.616,324,1.047,329,0.919,330,2.35,336,1.27,337,0.765,345,2.535,348,2.086,349,1.76,350,0.9,351,2.391,354,2.448,355,1.903,360,1.229,372,1.501,386,0.704,397,1.249,407,0.945,408,0.592,411,1.228,416,0.576,423,1.749,434,1.022,449,2.451,465,0.625,485,2.761,495,0.878,497,0.783,527,0.859,553,1.054,557,1.09,566,3.29,569,0.842,571,1.054,592,0.825,611,1.175,614,0.919,616,1.441,642,1.902,648,1.022,651,0.408,652,0.586,659,2.299,666,1.606,672,1.09,683,2.088,688,1.228,689,0.509,700,1.09,721,2.534,728,2.346,729,1.175,750,1.054,805,2.053,806,1.228,816,1.09,817,1.903,828,1.688,840,3.149,850,2.695,852,2.31,909,2.563,928,1.903,929,1.022,930,1.841,935,1.337,943,1.292,946,1.249,965,1.129,1041,1.054,1043,1.292,1062,0.693,1099,1.292,1234,0.919,1259,1.09,1298,1.292,1305,1.175,1339,1.292,1350,1.129,1368,1.48,1456,3.826,1457,1.48,1458,1.48,1459,1.48,1460,1.372,1461,1.48,1463,1.48,1467,1.48,1468,1.48,1469,2.397,1470,2.257,1471,1.175,1472,1.48,1475,2.695,1477,0.662,1516,1.292,1614,1.48,1807,2.585,1809,1.228,2012,2.257,2013,2.257,2014,2.257,2020,2.397,2031,3.192,2037,1.48,2038,1.48,2040,2.585,2058,1.643,2059,1.643,2060,1.643,2061,1.643,2062,1.643,2063,1.643,2064,1.643,2065,3.826,2066,1.643,2067,1.643,2068,1.643,2069,1.643,2070,1.643,2071,1.643,2072,1.643,2073,1.643]],["sidebarParentCategories/684",[460,0.893]],["title/685",[30,1.297,226,2.203,351,1.267,562,1.52]],["content/685",[2,0.627,3,1.464,17,1.503,20,2.456,30,2.344,37,2.985,58,0.751,62,1.544,81,2.869,84,2.055,89,2.947,93,2.095,102,0.861,103,1.733,119,2.393,146,1.91,147,2.009,150,1.633,190,2.456,213,2.138,226,4.236,238,2.456,255,2.393,318,3.244,324,1.523,330,1.503,345,1.278,350,1.309,351,2.291,367,3.759,371,3.759,372,3.191,397,1.817,408,1.503,444,3.759,492,1.788,553,2.678,558,3.487,561,1.847,562,2.747,566,1.587,613,4.667,616,2.095,634,2.281,639,3.004,647,1.878,651,0.651,672,2.768,679,2.985,683,2.281,688,5.391,690,3.121,691,3.121,729,2.985,899,3.688,909,3.414,1051,3.487,1052,2.456,1490,5.158,1496,3.121,1613,3.796,1616,3.487,1618,3.487,1633,3.487,2016,5.495,2074,4.173,2075,4.173,2076,4.173,2077,4.173,2078,6.1,2079,4.173,2080,4.173,2081,4.173,2082,4.173,2083,4.173,2084,4.173,2085,4.173]],["sidebarParentCategories/685",[460,0.893]],["title/686",[30,1.154,226,1.96,562,1.352,566,1.485,1613,2.429]],["content/686",[2,1.256,30,2.083,31,0.655,35,2.109,43,0.756,55,1.454,62,0.798,68,2.453,70,1.568,71,1.937,89,1.042,146,1.659,181,0.909,205,2.254,210,1.304,217,1.895,223,1.179,226,3.329,228,1.304,238,2.132,240,1.981,243,1.542,253,0.728,268,0.645,303,1.888,306,0.701,311,1.528,330,2.205,336,1.603,337,1.688,345,2.561,348,2.004,349,2.382,350,1.136,351,1.586,360,1.552,372,1.128,408,0.777,492,2.352,497,0.989,557,1.43,566,2.927,569,1.105,571,3.007,592,1.083,614,3.073,642,2.28,647,0.97,651,0.707,652,0.719,654,1.542,659,1.083,666,2.027,721,2.403,728,1.105,817,2.403,828,2.132,840,3.775,850,2.132,852,2.833,863,1.236,905,1.236,928,2.403,930,2.325,935,1.688,943,1.696,946,1.577,1293,2.403,1309,3.264,1310,1.942,1311,3.264,1312,1.696,1313,4.221,1314,1.942,1477,1.46,1498,1.696,1613,2.916,1656,1.942,1809,1.612,1880,1.801,2007,1.612,2012,2.85,2013,2.85,2014,2.85,2065,3.027,2086,2.156,2087,2.156,2088,2.156,2089,4.686,2090,2.156,2091,2.156,2092,4.686,2093,4.686,2094,3.623,2095,3.623,2096,4.686,2097,4.686,2098,2.156,2099,2.156,2100,2.156]],["sidebarParentCategories/686",[460,0.893]],["title/687",[173,1.129,329,1.967,566,1.337,613,2.068,979,2.331,1566,2.937]],["content/687",[2,1.134,30,0.836,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,141,1.825,173,1.819,201,1.076,217,1.48,285,0.877,311,1.193,318,1.157,329,1.584,336,1.252,345,2.522,348,2.067,349,1.91,350,0.887,351,1.308,354,2.772,360,2.772,386,1.212,407,1.864,408,1.631,432,2.597,438,1.175,454,1.623,497,0.772,547,1.421,552,1.547,566,2.462,568,1.107,569,1.45,571,2.906,601,2.534,610,2.901,628,1.946,642,1.881,644,2.906,651,0.604,652,0.993,666,1.584,689,2.005,693,2.901,721,3.004,762,4.867,836,2.116,850,2.665,852,3.423,876,3.387,935,1.318,936,1.761,946,1.232,975,3.784,979,5.009,1041,3.633,1049,2.549,1094,2.116,1475,1.665,1498,2.226,1529,2.549,1566,2.364,1568,5.1,1627,1.816,1803,2.024,2007,2.116,2065,3.784,2101,4.529,2102,2.83,2103,2.83,2104,4.529,2105,2.83,2106,2.83,2107,2.83,2108,5.662,2109,2.83,2110,2.83,2111,2.83,2112,2.83,2113,2.83]],["sidebarParentCategories/687",[460,0.893]],["title/688",[114,1.447,211,0.975,408,0.975,481,1.796,946,1.179,1032,2.262,1033,2.262,1034,2.262,1629,2.262]],["content/688",[2,1.355,17,1.462,31,0.878,46,2.904,55,1.437,58,0.423,70,1.707,71,2.287,77,2.389,114,3.195,205,2.526,211,1.462,238,4.175,240,2.219,294,3.657,311,2.521,324,2.59,336,2.646,337,1.891,345,2.672,348,2.182,349,1.613,350,1.874,439,2.219,481,2.693,497,1.631,562,2.07,591,2.08,642,3.25,666,3.345,918,3.657,946,3.632,1021,5.929,1028,3.657,1029,5.385,1030,3.657,1031,3.657,1032,3.392,1033,3.392,1034,3.392,1062,1.712,1420,3.657,1477,1.636,1488,3.194,1545,3.392,1552,4.276,1557,3.194,1629,3.392,2114,4.06,2115,4.06,2116,3.657]],["sidebarParentCategories/688",[460,0.893]],["title/689",[84,2.16,651,0.468,1062,1.85,2117,3.953]],["content/689",[2,0.497,17,1.192,30,2.386,42,1.81,53,1.314,55,1.449,58,0.345,62,2.32,68,1.225,84,3.087,141,1.334,201,1.259,203,1.852,213,1.696,222,5.048,240,1.81,303,1.334,337,2.387,345,1.014,360,3.908,386,1.418,390,1.898,407,1.09,408,1.846,460,0.713,485,2.476,518,1.465,566,3.071,571,2.124,591,1.696,616,1.662,651,0.814,659,1.662,689,1.026,693,1.696,733,2.276,939,5.118,1006,2.475,1062,2.161,1328,4.281,1338,3.832,1347,2.766,1350,2.276,1471,3.666,1477,2.065,1485,2.766,1490,3.666,1740,2.982,1741,2.982,1748,6.876,2117,6.357,2118,3.31,2119,3.31,2120,3.31,2121,3.31,2122,7.057,2123,5.124,2124,3.31,2125,7.057,2126,5.124,2127,3.31,2128,5.124,2129,5.124,2130,5.124,2131,5.124,2132,5.124,2133,3.31,2134,3.31,2135,3.31,2136,3.31]],["sidebarParentCategories/689",[460,0.893]],["title/690",[147,1.649,911,3.323,2137,4.513]],["content/690",[2,0.593,17,2.111,25,1.906,26,5.28,28,3.302,31,0.367,35,3.477,53,2.773,58,0.931,68,2.585,111,1.547,126,4.383,131,2.536,173,1.883,192,2.161,201,2.229,203,2.212,233,2.536,240,2.161,299,2.827,312,2.827,372,4.042,407,1.93,408,1.424,423,2.683,428,2.39,460,0.55,496,3.579,516,2.39,518,2.594,547,1.984,552,2.161,562,2.03,568,1.547,610,2.025,624,5.555,629,2.827,651,0.422,652,0.606,672,3.887,680,5.312,700,2.622,754,3.11,873,3.302,886,2.718,899,2.39,911,5.473,1007,4.897,1062,1.667,1301,5.223,1491,4.897,1531,3.561,1638,3.561,2035,3.561,2116,3.561,2137,6.96,2138,3.953,2139,3.953,2140,3.953,2141,3.953,2142,5.861,2143,7.726,2144,6.985,2145,3.953,2146,3.953,2147,3.953,2148,3.953,2149,3.953]],["sidebarParentCategories/690",[460,0.893]],["title/691",[201,1.906,561,2.217,562,1.735]],["content/691",[32,2.263,41,4.808,43,2.712,47,4.386,58,0.611,96,2.436,117,2.733,141,3.115,201,2.941,244,4.033,324,2.141,337,2.733,345,1.796,410,2.436,438,2.436,460,1.279,465,2.231,527,3.068,557,3.891,561,3.421,562,3.183,683,3.207,689,2.395,863,3.364,903,3.764,953,3.764,969,4.386,1052,3.452,1153,3.283,1192,5.284,1346,4.033,1477,2.364,1613,3.65,1737,4.901,1738,4.901,1864,4.196]],["sidebarParentCategories/691",[460,0.893]]],"invertedIndex":[["",{"_index":55,"title":{"403":{},"404":{},"405":{},"439":{},"440":{},"441":{},"442":{},"448":{},"449":{},"468":{},"469":{},"470":{},"471":{},"472":{},"495":{},"496":{},"500":{},"501":{},"518":{},"519":{},"520":{},"521":{},"522":{},"523":{},"524":{},"600":{},"601":{},"602":{},"603":{},"604":{}},"content":{"402":{},"420":{},"424":{},"438":{},"441":{},"443":{},"446":{},"447":{},"450":{},"452":{},"455":{},"461":{},"462":{},"465":{},"467":{},"472":{},"473":{},"477":{},"480":{},"481":{},"492":{},"493":{},"494":{},"497":{},"498":{},"499":{},"503":{},"510":{},"512":{},"514":{},"515":{},"516":{},"517":{},"549":{},"550":{},"553":{},"554":{},"555":{},"559":{},"564":{},"565":{},"566":{},"573":{},"574":{},"575":{},"581":{},"582":{},"585":{},"588":{},"589":{},"590":{},"599":{},"612":{},"613":{},"616":{},"618":{},"619":{},"620":{},"621":{},"622":{},"623":{},"625":{},"626":{},"627":{},"629":{},"630":{},"631":{},"632":{},"635":{},"636":{},"637":{},"638":{},"642":{},"643":{},"644":{},"658":{},"659":{},"660":{},"662":{},"664":{},"665":{},"667":{},"668":{},"669":{},"671":{},"673":{},"674":{},"676":{},"677":{},"679":{},"680":{},"681":{},"684":{},"686":{},"687":{},"688":{},"689":{}},"sidebarParentCategories":{}}],["0.0.1",{"_index":1481,"title":{},"content":{"605":{}},"sidebarParentCategories":{}}],["0.1",{"_index":1524,"title":{},"content":{"589":{},"590":{}},"sidebarParentCategories":{}}],["0.1.0",{"_index":1476,"title":{"602":{},"616":{}},"content":{"599":{},"602":{},"605":{},"609":{},"616":{},"617":{},"618":{},"619":{},"620":{},"621":{},"622":{},"623":{},"625":{},"626":{},"627":{}},"sidebarParentCategories":{}}],["0.2",{"_index":1536,"title":{},"content":{"590":{},"624":{}},"sidebarParentCategories":{}}],["0.2.0",{"_index":1609,"title":{},"content":{"617":{},"618":{},"619":{},"620":{},"621":{},"623":{},"625":{},"627":{},"667":{}},"sidebarParentCategories":{}}],["0.2.5",{"_index":1810,"title":{},"content":{"663":{}},"sidebarParentCategories":{}}],["0.2.x",{"_index":462,"title":{"602":{},"603":{},"616":{},"660":{}},"content":{"450":{},"599":{},"602":{},"603":{},"609":{},"616":{},"618":{},"619":{},"620":{},"622":{},"623":{},"625":{},"626":{},"660":{},"661":{},"662":{},"664":{},"665":{},"667":{},"668":{},"669":{},"670":{},"671":{},"673":{}},"sidebarParentCategories":{}}],["0.3.0",{"_index":1802,"title":{},"content":{"661":{},"669":{},"670":{},"671":{},"681":{}},"sidebarParentCategories":{}}],["0.3.x",{"_index":1477,"title":{"603":{},"604":{},"660":{},"674":{}},"content":{"599":{},"603":{},"604":{},"609":{},"646":{},"652":{},"660":{},"662":{},"664":{},"665":{},"667":{},"668":{},"669":{},"670":{},"671":{},"673":{},"674":{},"675":{},"676":{},"677":{},"679":{},"680":{},"681":{},"684":{},"686":{},"688":{},"689":{},"691":{}},"sidebarParentCategories":{}}],["0.4.0",{"_index":557,"title":{},"content":{"490":{},"674":{},"675":{},"679":{},"681":{},"684":{},"686":{},"691":{}},"sidebarParentCategories":{}}],["0.4.x",{"_index":337,"title":{"604":{},"674":{}},"content":{"443":{},"445":{},"450":{},"463":{},"490":{},"599":{},"604":{},"609":{},"646":{},"652":{},"674":{},"676":{},"677":{},"679":{},"680":{},"681":{},"684":{},"686":{},"688":{},"689":{},"691":{}},"sidebarParentCategories":{}}],["0.5.x",{"_index":335,"title":{},"content":{"445":{},"463":{}},"sidebarParentCategories":{}}],["0.9.x",{"_index":461,"title":{},"content":{"450":{}},"sidebarParentCategories":{}}],["0023",{"_index":1706,"title":{},"content":{"619":{}},"sidebarParentCategories":{}}],["004",{"_index":206,"title":{},"content":{"425":{},"502":{}},"sidebarParentCategories":{}}],["0044",{"_index":2114,"title":{},"content":{"688":{}},"sidebarParentCategories":{}}],["0046",{"_index":1374,"title":{},"content":{"611":{},"615":{}},"sidebarParentCategories":{}}],["0160",{"_index":1176,"title":{},"content":{"619":{},"629":{},"633":{}},"sidebarParentCategories":{}}],["01eafa4de4e22ed4fc2ee522b6ce2731",{"_index":2037,"title":{},"content":{"680":{},"684":{}},"sidebarParentCategories":{}}],["0360",{"_index":1046,"title":{},"content":{"568":{},"663":{}},"sidebarParentCategories":{}}],["040e96c3c539",{"_index":1753,"title":{},"content":{"623":{}},"sidebarParentCategories":{}}],["0434",{"_index":1166,"title":{},"content":{"629":{},"633":{}},"sidebarParentCategories":{}}],["04a2c382",{"_index":1786,"title":{},"content":{"626":{}},"sidebarParentCategories":{}}],["0592",{"_index":1656,"title":{},"content":{"618":{},"686":{}},"sidebarParentCategories":{}}],["0771",{"_index":2091,"title":{},"content":{"686":{}},"sidebarParentCategories":{}}],["09e46da9",{"_index":1749,"title":{},"content":{"623":{}},"sidebarParentCategories":{}}],["1",{"_index":957,"title":{"545":{},"578":{},"594":{},"612":{},"629":{},"635":{},"642":{}},"content":{"517":{},"518":{},"549":{},"553":{},"554":{},"574":{},"581":{},"589":{},"597":{},"614":{},"636":{},"665":{}},"sidebarParentCategories":{}}],["1.0",{"_index":1717,"title":{},"content":{"620":{}},"sidebarParentCategories":{}}],["1.0.0",{"_index":1460,"title":{},"content":{"605":{},"637":{},"684":{}},"sidebarParentCategories":{}}],["1.0.1",{"_index":2068,"title":{},"content":{"684":{}},"sidebarParentCategories":{}}],["1.1",{"_index":1168,"title":{},"content":{"620":{},"629":{},"633":{}},"sidebarParentCategories":{}}],["1.4",{"_index":958,"title":{},"content":{"574":{}},"sidebarParentCategories":{}}],["123",{"_index":362,"title":{},"content":{"446":{}},"sidebarParentCategories":{}}],["18",{"_index":692,"title":{},"content":{"459":{},"462":{},"508":{},"512":{},"571":{},"575":{}},"sidebarParentCategories":{}}],["2",{"_index":1118,"title":{"547":{},"579":{},"595":{},"613":{},"636":{}},"content":{"553":{},"554":{},"589":{},"614":{},"629":{}},"sidebarParentCategories":{}}],["2.1",{"_index":1255,"title":{"548":{},"580":{},"596":{}},"content":{},"sidebarParentCategories":{}}],["2.2",{"_index":1258,"title":{"549":{},"581":{},"597":{}},"content":{},"sidebarParentCategories":{}}],["2.3",{"_index":1263,"title":{"550":{},"582":{},"598":{}},"content":{},"sidebarParentCategories":{}}],["2022",{"_index":1270,"title":{},"content":{"593":{}},"sidebarParentCategories":{}}],["2060.io/ref",{"_index":738,"title":{},"content":{"462":{},"512":{},"575":{}},"sidebarParentCategories":{}}],["23",{"_index":1343,"title":{},"content":{"644":{}},"sidebarParentCategories":{}}],["3",{"_index":964,"title":{"614":{},"630":{},"637":{},"638":{},"643":{}},"content":{"517":{},"524":{},"614":{}},"sidebarParentCategories":{}}],["3.0",{"_index":1143,"title":{},"content":{"555":{}},"sidebarParentCategories":{}}],["3000",{"_index":480,"title":{},"content":{"452":{},"497":{}},"sidebarParentCategories":{}}],["3001",{"_index":1165,"title":{},"content":{"612":{},"629":{},"632":{}},"sidebarParentCategories":{}}],["3001const",{"_index":1401,"title":{},"content":{"612":{}},"sidebarParentCategories":{}}],["3002",{"_index":1300,"title":{},"content":{"642":{}},"sidebarParentCategories":{}}],["32",{"_index":823,"title":{},"content":{"481":{}},"sidebarParentCategories":{}}],["364a1ec9237d",{"_index":1113,"title":{},"content":{"553":{}},"sidebarParentCategories":{}}],["364a1ec9237d#key",{"_index":1115,"title":{},"content":{"553":{}},"sidebarParentCategories":{}}],["4",{"_index":1186,"title":{"631":{},"644":{}},"content":{},"sidebarParentCategories":{}}],["40ea",{"_index":1111,"title":{},"content":{"553":{}},"sidebarParentCategories":{}}],["43ee",{"_index":1126,"title":{},"content":{"554":{},"555":{}},"sidebarParentCategories":{}}],["4483",{"_index":1127,"title":{},"content":{"554":{},"555":{}},"sidebarParentCategories":{}}],["4909",{"_index":1751,"title":{},"content":{"623":{}},"sidebarParentCategories":{}}],["4de9",{"_index":1788,"title":{},"content":{"626":{}},"sidebarParentCategories":{}}],["5",{"_index":504,"title":{"632":{}},"content":{"447":{},"449":{},"659":{}},"sidebarParentCategories":{}}],["50",{"_index":1878,"title":{},"content":{"667":{}},"sidebarParentCategories":{}}],["5000",{"_index":483,"title":{},"content":{"452":{}},"sidebarParentCategories":{}}],["6",{"_index":1433,"title":{},"content":{"614":{}},"sidebarParentCategories":{}}],["7",{"_index":1435,"title":{},"content":{"614":{}},"sidebarParentCategories":{}}],["7000",{"_index":1853,"title":{},"content":{"665":{}},"sidebarParentCategories":{}}],["8",{"_index":1436,"title":{},"content":{"614":{}},"sidebarParentCategories":{}}],["8ae5",{"_index":1112,"title":{},"content":{"553":{}},"sidebarParentCategories":{}}],["9",{"_index":1437,"title":{},"content":{"614":{}},"sidebarParentCategories":{}}],["98c5",{"_index":1128,"title":{},"content":{"554":{},"555":{}},"sidebarParentCategories":{}}],["999e",{"_index":1787,"title":{},"content":{"626":{}},"sidebarParentCategories":{}}],["9dec0b2fa5e4",{"_index":1790,"title":{},"content":{"626":{}},"sidebarParentCategories":{}}],["_anoncreds/credenti",{"_index":2133,"title":{},"content":{"689":{}},"sidebarParentCategories":{}}],["_anoncreds/credentialrequest",{"_index":2136,"title":{},"content":{"689":{}},"sidebarParentCategories":{}}],["_before_",{"_index":1511,"title":{},"content":{"588":{}},"sidebarParentCategories":{}}],["_internal/indycredenti",{"_index":1741,"title":{},"content":{"622":{},"689":{}},"sidebarParentCategories":{}}],["_internal/indyrequest",{"_index":1740,"title":{},"content":{"622":{},"689":{}},"sidebarParentCategories":{}}],["a1d2",{"_index":1789,"title":{},"content":{"626":{}},"sidebarParentCategories":{}}],["a575",{"_index":1750,"title":{},"content":{"623":{}},"sidebarParentCategories":{}}],["abov",{"_index":431,"title":{},"content":{"456":{},"465":{}},"sidebarParentCategories":{}}],["abstract",{"_index":1360,"title":{},"content":{"611":{}},"sidebarParentCategories":{}}],["accept",{"_index":950,"title":{},"content":{"517":{},"522":{},"564":{},"574":{},"612":{},"613":{},"618":{},"628":{},"641":{},"642":{},"643":{},"665":{}},"sidebarParentCategories":{}}],["acceptpresent",{"_index":1868,"title":{},"content":{"667":{}},"sidebarParentCategories":{}}],["acceptpropos",{"_index":1866,"title":{},"content":{"667":{}},"sidebarParentCategories":{}}],["acceptxxx",{"_index":1635,"title":{},"content":{"618":{}},"sidebarParentCategories":{}}],["acces",{"_index":1932,"title":{},"content":{"669":{}},"sidebarParentCategories":{}}],["access",{"_index":73,"title":{},"content":{"420":{},"465":{},"618":{},"619":{},"622":{},"635":{},"664":{},"667":{},"669":{},"682":{},"683":{},"684":{}},"sidebarParentCategories":{}}],["accident",{"_index":560,"title":{},"content":{"490":{}},"sidebarParentCategories":{}}],["accord",{"_index":1099,"title":{},"content":{"553":{},"629":{},"663":{},"684":{}},"sidebarParentCategories":{}}],["accordingli",{"_index":1320,"title":{},"content":{"643":{},"669":{}},"sidebarParentCategories":{}}],["account",{"_index":827,"title":{},"content":{"481":{},"585":{},"617":{},"618":{},"620":{},"623":{},"625":{},"661":{},"667":{},"669":{},"675":{},"680":{}},"sidebarParentCategories":{}}],["acm",{"_index":684,"title":{},"content":{"499":{},"501":{},"517":{},"519":{},"628":{},"629":{},"631":{},"632":{}},"sidebarParentCategories":{}}],["acmeag",{"_index":1220,"title":{},"content":{"632":{}},"sidebarParentCategories":{}}],["acquir",{"_index":358,"title":{},"content":{"446":{}},"sidebarParentCategories":{}}],["act",{"_index":128,"title":{},"content":{"422":{},"624":{}},"sidebarParentCategories":{}}],["action",{"_index":289,"title":{},"content":{"437":{},"624":{},"669":{}},"sidebarParentCategories":{}}],["actionmenu",{"_index":1818,"title":{},"content":{"664":{}},"sidebarParentCategories":{}}],["actionmenumodul",{"_index":1825,"title":{},"content":{"664":{}},"sidebarParentCategories":{}}],["activ",{"_index":554,"title":{},"content":{"490":{},"632":{}},"sidebarParentCategories":{}}],["actual",{"_index":411,"title":{},"content":{"465":{},"620":{},"624":{},"678":{},"684":{}},"sidebarParentCategories":{}}],["ad",{"_index":647,"title":{"461":{},"473":{},"481":{},"494":{},"510":{},"573":{}},"content":{"481":{},"585":{},"605":{},"618":{},"619":{},"620":{},"622":{},"624":{},"625":{},"626":{},"627":{},"636":{},"654":{},"667":{},"673":{},"678":{},"682":{},"685":{},"686":{}},"sidebarParentCategories":{}}],["adapt",{"_index":618,"title":{},"content":{"492":{},"606":{}},"sidebarParentCategories":{}}],["add",{"_index":339,"title":{"658":{}},"content":{"444":{},"446":{},"460":{},"464":{},"467":{},"480":{},"481":{},"491":{},"492":{},"509":{},"510":{},"572":{},"616":{},"642":{},"658":{},"660":{},"664":{},"669":{},"672":{},"674":{},"677":{}},"sidebarParentCategories":{}}],["addit",{"_index":592,"title":{"492":{},"631":{}},"content":{"477":{},"492":{},"554":{},"618":{},"623":{},"626":{},"627":{},"654":{},"667":{},"668":{},"671":{},"674":{},"677":{},"678":{},"679":{},"684":{},"686":{}},"sidebarParentCategories":{}}],["admin",{"_index":478,"title":{},"content":{"452":{}},"sidebarParentCategories":{}}],["admin_account",{"_index":1243,"title":{},"content":{"585":{}},"sidebarParentCategories":{}}],["admin_password",{"_index":1244,"title":{},"content":{"585":{}},"sidebarParentCategories":{}}],["adopt",{"_index":1047,"title":{},"content":{"568":{},"611":{}},"sidebarParentCategories":{}}],["advanc",{"_index":993,"title":{},"content":{"515":{},"562":{},"611":{},"683":{}},"sidebarParentCategories":{}}],["advantag",{"_index":1504,"title":{},"content":{"588":{},"589":{},"618":{},"669":{}},"sidebarParentCategories":{}}],["advis",{"_index":1545,"title":{},"content":{"646":{},"653":{},"688":{}},"sidebarParentCategories":{}}],["affect",{"_index":2057,"title":{},"content":{"683":{}},"sidebarParentCategories":{}}],["afj",{"_index":268,"title":{"585":{},"599":{},"602":{},"603":{},"604":{},"616":{},"660":{},"674":{}},"content":{"435":{},"437":{},"438":{},"439":{},"440":{},"441":{},"442":{},"443":{},"445":{},"450":{},"452":{},"453":{},"463":{},"465":{},"490":{},"491":{},"494":{},"516":{},"583":{},"586":{},"599":{},"600":{},"602":{},"603":{},"604":{},"605":{},"606":{},"607":{},"609":{},"616":{},"617":{},"618":{},"619":{},"620":{},"646":{},"652":{},"660":{},"661":{},"663":{},"667":{},"669":{},"674":{},"675":{},"680":{},"681":{},"684":{},"686":{}},"sidebarParentCategories":{}}],["afj'",{"_index":600,"title":{},"content":{"492":{}},"sidebarParentCategories":{}}],["aforement",{"_index":1861,"title":{},"content":{"666":{}},"sidebarParentCategories":{}}],["afterward",{"_index":1518,"title":{},"content":{"589":{},"646":{}},"sidebarParentCategories":{}}],["ag",{"_index":1342,"title":{},"content":{"644":{},"667":{}},"sidebarParentCategories":{}}],["again",{"_index":1531,"title":{},"content":{"589":{},"690":{}},"sidebarParentCategories":{}}],["agent",{"_index":31,"title":{"403":{},"421":{},"449":{},"461":{},"473":{},"481":{},"490":{},"493":{},"498":{},"510":{},"518":{},"557":{},"573":{},"588":{},"589":{},"590":{},"629":{},"635":{},"642":{},"662":{},"676":{},"682":{}},"content":{"402":{},"420":{},"421":{},"422":{},"423":{},"424":{},"425":{},"433":{},"434":{},"438":{},"439":{},"442":{},"443":{},"445":{},"446":{},"447":{},"450":{},"459":{},"460":{},"461":{},"463":{},"465":{},"466":{},"467":{},"473":{},"480":{},"481":{},"491":{},"493":{},"494":{},"495":{},"496":{},"497":{},"498":{},"499":{},"502":{},"510":{},"514":{},"517":{},"522":{},"557":{},"558":{},"559":{},"564":{},"566":{},"567":{},"568":{},"569":{},"573":{},"585":{},"586":{},"587":{},"588":{},"589":{},"590":{},"608":{},"610":{},"611":{},"612":{},"613":{},"614":{},"615":{},"624":{},"628":{},"629":{},"630":{},"631":{},"632":{},"634":{},"635":{},"636":{},"641":{},"642":{},"658":{},"662":{},"663":{},"664":{},"665":{},"669":{},"674":{},"676":{},"677":{},"679":{},"680":{},"681":{},"682":{},"684":{},"686":{},"687":{},"688":{},"690":{}},"sidebarParentCategories":{"459":{},"460":{},"461":{},"462":{},"466":{},"467":{},"468":{},"469":{},"470":{},"471":{},"472":{},"473":{},"474":{},"475":{},"476":{},"477":{},"478":{},"479":{},"480":{},"481":{},"482":{},"483":{},"484":{},"485":{},"486":{},"487":{},"488":{},"489":{},"503":{},"504":{},"505":{},"506":{},"507":{},"508":{},"509":{},"510":{},"511":{},"512":{},"513":{},"514":{},"515":{},"516":{},"571":{},"572":{},"573":{},"574":{},"575":{}}}],["agent'",{"_index":1806,"title":{},"content":{"662":{},"669":{}},"sidebarParentCategories":{}}],["agent(agentconfig",{"_index":1805,"title":{},"content":{"662":{}},"sidebarParentCategories":{}}],["agent.config.filesystem.basepath}/afj/migration/backup/${backupidentifi",{"_index":1542,"title":{},"content":{"591":{}},"sidebarParentCategories":{}}],["agent.config.walletconfig.id",{"_index":1593,"title":{},"content":{"659":{}},"sidebarParentCategories":{}}],["agent.connections.createinvit",{"_index":1684,"title":{},"content":{"619":{}},"sidebarParentCategories":{}}],["agent.connections.findallbyoutofbandid(id",{"_index":1194,"title":{},"content":{"631":{}},"sidebarParentCategories":{}}],["agent.connections.findallbyoutofbandid(outofbandrecord.id",{"_index":1691,"title":{},"content":{"619":{}},"sidebarParentCategories":{}}],["agent.connections.receiveinvitation(parsedinvit",{"_index":1699,"title":{},"content":{"619":{}},"sidebarParentCategories":{}}],["agent.connections.receiveinvitationfromurl(invitationurl",{"_index":1695,"title":{},"content":{"619":{}},"sidebarParentCategories":{}}],["agent.credentials.findcredentialmessage('credentialrecordid",{"_index":1673,"title":{},"content":{"618":{}},"sidebarParentCategories":{}}],["agent.credentials.findoffermessage('credentialrecordid",{"_index":1671,"title":{},"content":{"618":{}},"sidebarParentCategories":{}}],["agent.credentials.findproposalmessage('credentialrecordid",{"_index":1670,"title":{},"content":{"618":{}},"sidebarParentCategories":{}}],["agent.credentials.findrequestmessage('credentialrecordid",{"_index":1672,"title":{},"content":{"618":{}},"sidebarParentCategories":{}}],["agent.credentials.getbyid('credentialrecordid",{"_index":1665,"title":{},"content":{"618":{}},"sidebarParentCategories":{}}],["agent.credentials.getformatdata(credentialrecord.id",{"_index":1648,"title":{},"content":{"618":{}},"sidebarParentCategories":{}}],["agent.credentials.offercredenti",{"_index":1626,"title":{},"content":{"618":{}},"sidebarParentCategories":{}}],["agent.credentials.offercredential('connectionid",{"_index":1619,"title":{},"content":{"618":{}},"sidebarParentCategories":{}}],["agent.dependencymanager.resolve(anoncredslinksecretrepositori",{"_index":2107,"title":{},"content":{"687":{}},"sidebarParentCategories":{}}],["agent.dids.cr",{"_index":1119,"title":{},"content":{"553":{},"636":{}},"sidebarParentCategories":{}}],["agent.dids.create(connectioneventtypes.connectionstatechang",{"_index":1198,"title":{},"content":{"619":{},"631":{},"632":{}},"sidebarParentCategories":{}}],["agent.events.on(credentialeventtypes.credentialstatechang",{"_index":1322,"title":{},"content":{"643":{}},"sidebarParentCategories":{}}],["holderconfig",{"_index":1317,"title":{},"content":{"642":{}},"sidebarParentCategories":{}}],["home",{"_index":1598,"title":{},"content":{"659":{}},"sidebarParentCategories":{}}],["home/indy/docu",{"_index":1600,"title":{},"content":{"659":{}},"sidebarParentCategories":{}}],["homebrew",{"_index":519,"title":{},"content":{"455":{},"577":{}},"sidebarParentCategories":{}}],["hood",{"_index":1537,"title":{},"content":{"590":{}},"sidebarParentCategories":{}}],["hook",{"_index":304,"title":{"440":{},"463":{}},"content":{"438":{},"440":{},"463":{},"464":{},"465":{}},"sidebarParentCategories":{}}],["hooks@^0.5",{"_index":373,"title":{},"content":{"464":{}},"sidebarParentCategories":{}}],["hooray",{"_index":445,"title":{},"content":{"465":{}},"sidebarParentCategories":{}}],["hope",{"_index":2048,"title":{},"content":{"681":{}},"sidebarParentCategories":{}}],["host",{"_index":296,"title":{},"content":{"438":{},"467":{},"472":{},"503":{},"564":{}},"sidebarParentCategories":{}}],["http",{"_index":248,"title":{},"content":{"430":{},"438":{},"439":{},"450":{},"452":{},"477":{},"497":{},"611":{},"629":{},"632":{},"642":{}},"sidebarParentCategories":{}}],["http://localhost:${port}`,})console.log(mediatiorinvitationurl",{"_index":1411,"title":{},"content":{"612":{}},"sidebarParentCategories":{}}],["http://localhost:${port}`],}const",{"_index":1402,"title":{},"content":{"612":{}},"sidebarParentCategories":{}}],["http://localhost:3000/doc",{"_index":487,"title":{},"content":{"452":{}},"sidebarParentCategories":{}}],["http://localhost:3001",{"_index":1163,"title":{},"content":{"629":{},"632":{}},"sidebarParentCategories":{}}],["http://localhost:5000",{"_index":477,"title":{},"content":{"452":{}},"sidebarParentCategories":{}}],["httpinboundtransport",{"_index":665,"title":{},"content":{"497":{},"612":{},"629":{},"632":{},"642":{}},"sidebarParentCategories":{}}],["httpoutboundtransport",{"_index":663,"title":{},"content":{"497":{},"629":{},"632":{},"642":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())agent.registeroutboundtransport(new",{"_index":669,"title":{},"content":{"497":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())alice.registeroutboundtransport(new",{"_index":1426,"title":{},"content":{"613":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())mediator.registerinboundtransport(new",{"_index":1404,"title":{},"content":{"612":{}},"sidebarParentCategories":{}}],["https://afj.com",{"_index":1908,"title":{},"content":{"668":{}},"sidebarParentCategories":{}}],["https://crates.io/crates/env_logg",{"_index":1090,"title":{},"content":{"516":{}},"sidebarParentCategories":{}}],["https://deb.nodesource.com/setup_18.x",{"_index":532,"title":{},"content":{"455":{}},"sidebarParentCategories":{}}],["https://didcomm.org",{"_index":1042,"title":{},"content":{"567":{},"681":{}},"sidebarParentCategories":{}}],["https://didcomm.org/connections/1.0/invit",{"_index":1785,"title":{},"content":{"626":{}},"sidebarParentCategories":{}}],["https://didcomm.org/messagepickup/2.0",{"_index":1842,"title":{},"content":{"665":{}},"sidebarParentCategories":{}}],["https://didcomm.org/mi",{"_index":1726,"title":{},"content":{"620":{},"669":{}},"sidebarParentCategories":{}}],["https://example.com",{"_index":1685,"title":{},"content":{"619":{},"626":{}},"sidebarParentCategories":{}}],["https://example.com?c_i=eyxxx",{"_index":1694,"title":{},"content":{"619":{}},"sidebarParentCategories":{}}],["https://example.org",{"_index":1175,"title":{},"content":{"629":{},"632":{}},"sidebarParentCategories":{}}],["https://example.org:3000",{"_index":1013,"title":{},"content":{"564":{}},"sidebarParentCategories":{}}],["https://github.com/hyperledger/ari",{"_index":741,"title":{},"content":{"462":{},"512":{},"575":{}},"sidebarParentCategories":{}}],["https://github.com/hyperledger/indi",{"_index":875,"title":{},"content":{"477":{},"548":{},"580":{},"596":{},"680":{}},"sidebarParentCategories":{}}],["https://github.com/nod",{"_index":743,"title":{},"content":{"462":{},"512":{},"575":{}},"sidebarParentCategories":{}}],["https://google.com",{"_index":1906,"title":{},"content":{"668":{}},"sidebarParentCategories":{}}],["https://mediator.dev.animo.id/invite?oob=eyjadhlwzsi6imh0dhbzoi8vzglky29tbs5vcmcvb3v0lw9mlwjhbmqvms4xl2ludml0yxrpb24ilcjaawqioiiymdc1mdm4ys05zgu3ltrioditywuxyi1jnzbmndg4mjyzytcilcjsywjlbci6ikfuaw1vie1lzglhdg9yiiwiywnjzxb0ijpbimrpzgnvbw0vywlwmsisimrpzgnvbw0vywlwmjtlbny9cmzjmtkixswiagfuzhnoywtlx3byb3rvy29scyi6wyjodhrwczovl2rpzgnvbw0ub3jnl2rpzgv4y2hhbmdllzeumcisimh0dhbzoi8vzglky29tbs5vcmcvy29ubmvjdglvbnmvms4wil0sinnlcnzpy2vzijpbeyjpzci6iinpbmxpbmutmcisinnlcnzpy2vfbmrwb2ludci6imh0dhbzoi8vbwvkawf0b3iuzgv2lmfuaw1vlmlkiiwidhlwzsi6imrpzc1jb21tdw5py2f0aw9uiiwicmvjaxbpzw50s2v5cyi6wyjkawq6a2v5ono2twtvsg9rtuphdu5vue5ov1pqcew3rgs1szntq0ndmlbpndjgy3fwr25iampmcsjdlcjyb3v0aw5ns2v5cyi6w119lhsiawqioiijaw5saw5llteilcjzzxj2awnlrw5kcg9pbnqioij3c3m6ly9tzwrpyxrvci5kzxyuyw5pbw8uawqilcj0exblijoizglklwnvbw11bmljyxrpb24ilcjyzwnpcgllbnrlzxlzijpbimrpzdprzxk6ejzna29ib1fnsmf1tlvqtk5xwlbwtddeazvlm21dq0myugk0mkzjcxbhbmjqakxxil0sinjvdxrpbmdlzxlzijpbxx1dfq'const",{"_index":1422,"title":{},"content":{"613":{}},"sidebarParentCategories":{}}],["https://picsum.photos/200",{"_index":1058,"title":{},"content":{"569":{}},"sidebarParentCategories":{}}],["https://rand.in",{"_index":1139,"title":{},"content":{"554":{}},"sidebarParentCategories":{}}],["https://raw.githubusercontent.com/homebrew/install/head/install.sh",{"_index":524,"title":{},"content":{"455":{},"482":{},"487":{}},"sidebarParentCategories":{}}],["https://rpm.nodesource.com/setup_18.x",{"_index":539,"title":{},"content":{"455":{}},"sidebarParentCategories":{}}],["https://sh.rustup.r",{"_index":869,"title":{},"content":{"477":{}},"sidebarParentCategories":{}}],["hub",{"_index":196,"title":{},"content":{"424":{}},"sidebarParentCategories":{}}],["hyperledg",{"_index":42,"title":{},"content":{"420":{},"425":{},"466":{},"502":{},"511":{},"517":{},"521":{},"571":{},"572":{},"615":{},"634":{},"636":{},"680":{},"684":{},"689":{}},"sidebarParentCategories":{}}],["hyperledger/anoncr",{"_index":706,"title":{},"content":{"509":{},"510":{},"635":{}},"sidebarParentCategories":{}}],["hyperledger/ari",{"_index":719,"title":{},"content":{"460":{},"461":{},"481":{},"510":{},"573":{},"632":{},"635":{},"658":{}},"sidebarParentCategories":{}}],["hyperledger/indi",{"_index":922,"title":{},"content":{"572":{},"573":{},"574":{},"635":{}},"sidebarParentCategories":{}}],["hyperlegder/anoncr",{"_index":709,"title":{},"content":{"509":{}},"sidebarParentCategories":{}}],["hyperlegder/ari",{"_index":756,"title":{},"content":{"460":{}},"sidebarParentCategories":{}}],["hyperlegder/indi",{"_index":923,"title":{},"content":{"572":{}},"sidebarParentCategories":{}}],["i'd",{"_index":441,"title":{},"content":{"465":{}},"sidebarParentCategories":{}}],["i.",{"_index":1870,"title":{},"content":{"667":{}},"sidebarParentCategories":{}}],["id",{"_index":360,"title":{},"content":{"446":{},"452":{},"493":{},"553":{},"554":{},"559":{},"585":{},"612":{},"613":{},"618":{},"619":{},"622":{},"626":{},"629":{},"631":{},"632":{},"636":{},"643":{},"644":{},"669":{},"673":{},"677":{},"680":{},"683":{},"684":{},"686":{},"687":{},"689":{}},"sidebarParentCategories":{}}],["ident",{"_index":11,"title":{},"content":{"420":{},"422":{},"424":{},"428":{},"450":{},"466":{},"479":{},"494":{},"496":{}},"sidebarParentCategories":{}}],["identifi",{"_index":210,"title":{},"content":{"428":{},"552":{},"556":{},"560":{},"574":{},"591":{},"654":{},"655":{},"680":{},"684":{},"686":{}},"sidebarParentCategories":{}}],["illustr",{"_index":1429,"title":{},"content":{"614":{}},"sidebarParentCategories":{}}],["imag",{"_index":1056,"title":{},"content":{"569":{}},"sidebarParentCategories":{}}],["imoprt",{"_index":937,"title":{},"content":{"574":{}},"sidebarParentCategories":{}}],["implement",{"_index":111,"title":{"494":{}},"content":{"402":{},"403":{},"421":{},"438":{},"441":{},"443":{},"450":{},"459":{},"460":{},"466":{},"467":{},"480":{},"481":{},"490":{},"492":{},"494":{},"495":{},"496":{},"508":{},"509":{},"515":{},"516":{},"562":{},"565":{},"573":{},"574":{},"646":{},"665":{},"669":{},"674":{},"681":{},"683":{},"690":{}},"sidebarParentCategories":{}}],["import",{"_index":345,"title":{"636":{}},"content":{"443":{},"446":{},"461":{},"465":{},"473":{},"480":{},"481":{},"492":{},"493":{},"497":{},"510":{},"514":{},"515":{},"516":{},"559":{},"565":{},"566":{},"573":{},"574":{},"585":{},"588":{},"589":{},"590":{},"618":{},"619":{},"620":{},"621":{},"632":{},"635":{},"636":{},"637":{},"642":{},"646":{},"657":{},"658":{},"659":{},"664":{},"669":{},"670":{},"674":{},"676":{},"677":{},"679":{},"680":{},"681":{},"684":{},"685":{},"686":{},"687":{},"688":{},"689":{},"691":{}},"sidebarParentCategories":{}}],["imposs",{"_index":1378,"title":{},"content":{"611":{}},"sidebarParentCategories":{}}],["improv",{"_index":1487,"title":{},"content":{"591":{},"606":{}},"sidebarParentCategories":{}}],["inbound",{"_index":482,"title":{},"content":{"452":{},"497":{},"629":{},"632":{},"642":{}},"sidebarParentCategories":{}}],["inboundtransport",{"_index":1299,"title":{},"content":{"642":{}},"sidebarParentCategories":{}}],["includ",{"_index":255,"title":{},"content":{"432":{},"438":{},"492":{},"510":{},"517":{},"559":{},"591":{},"607":{},"631":{},"632":{},"669":{},"679":{},"685":{}},"sidebarParentCategories":{}}],["incom",{"_index":1188,"title":{"631":{},"643":{}},"content":{"643":{}},"sidebarParentCategories":{}}],["incorrect",{"_index":2103,"title":{},"content":{"687":{}},"sidebarParentCategories":{}}],["independ",{"_index":862,"title":{},"content":{"477":{},"681":{}},"sidebarParentCategories":{}}],["index.(js|ts|jsx|tsx",{"_index":596,"title":{},"content":{"492":{}},"sidebarParentCategories":{}}],["index.tsx",{"_index":598,"title":{},"content":{"492":{}},"sidebarParentCategories":{}}],["indi",{"_index":651,"title":{"466":{},"467":{},"473":{},"477":{},"485":{},"488":{},"496":{},"516":{},"524":{},"548":{},"571":{},"572":{},"573":{},"575":{},"580":{},"583":{},"596":{},"601":{},"646":{},"677":{},"689":{}},"content":{"459":{},"466":{},"467":{},"468":{},"469":{},"470":{},"471":{},"472":{},"473":{},"474":{},"475":{},"476":{},"477":{},"478":{},"481":{},"482":{},"483":{},"484":{},"485":{},"486":{},"487":{},"488":{},"489":{},"494":{},"496":{},"503":{},"504":{},"505":{},"506":{},"507":{},"508":{},"510":{},"511":{},"516":{},"517":{},"521":{},"547":{},"548":{},"549":{},"550":{},"571":{},"572":{},"573":{},"574":{},"575":{},"579":{},"580":{},"581":{},"582":{},"583":{},"585":{},"595":{},"596":{},"597":{},"599":{},"601":{},"609":{},"616":{},"618":{},"623":{},"625":{},"629":{},"632":{},"634":{},"635":{},"636":{},"644":{},"646":{},"649":{},"652":{},"654":{},"656":{},"659":{},"660":{},"667":{},"668":{},"674":{},"676":{},"677":{},"678":{},"679":{},"680":{},"684":{},"685":{},"686":{},"687":{},"689":{},"690":{}},"sidebarParentCategories":{"474":{},"475":{},"476":{},"477":{},"478":{},"482":{},"483":{},"484":{},"485":{},"486":{},"487":{},"488":{},"489":{},"503":{},"504":{},"505":{},"506":{},"507":{},"543":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"576":{},"577":{},"578":{},"579":{},"580":{},"581":{},"582":{},"592":{},"593":{},"594":{},"595":{},"596":{},"597":{},"598":{}}}],["indic",{"_index":1483,"title":{},"content":{"605":{},"618":{},"619":{},"667":{}},"sidebarParentCategories":{}}],["indy::credenti",{"_index":1573,"title":{},"content":{"655":{}},"sidebarParentCategories":{}}],["indy::key",{"_index":1560,"title":{},"content":{"651":{}},"sidebarParentCategories":{}}],["indy::mastersecret",{"_index":1567,"title":{},"content":{"654":{}},"sidebarParentCategories":{}}],["indy:(agentcontext",{"_index":1953,"title":{},"content":{"669":{}},"sidebarParentCategories":{}}],["this.loglevel",{"_index":1066,"title":{},"content":{"515":{}},"sidebarParentCategories":{}}],["this.messagesend",{"_index":1976,"title":{},"content":{"669":{}},"sidebarParentCategories":{}}],["this.messagesender.sendmessage(outboundmessag",{"_index":1965,"title":{},"content":{"669":{}},"sidebarParentCategories":{}}],["this.messagesender.sendmessage(outboundmessagecontext",{"_index":1969,"title":{},"content":{"669":{}},"sidebarParentCategories":{}}],["this.myrecordrepository.save(agentcontext",{"_index":1952,"title":{},"content":{"669":{}},"sidebarParentCategories":{}}],["this.myrecordrepository.save(record",{"_index":1942,"title":{},"content":{"669":{}},"sidebarParentCategories":{}}],["this.myrepository.save(messagecontext.agentcontext",{"_index":1955,"title":{},"content":{"669":{}},"sidebarParentCategories":{}}],["this.myrepository.save(record",{"_index":1950,"title":{},"content":{"669":{}},"sidebarParentCategories":{}}],["this.myservic",{"_index":1977,"title":{},"content":{"669":{}},"sidebarParentCategories":{}}],["this.registerhandlers(messagehandlerregistri",{"_index":1979,"title":{},"content":{"669":{}},"sidebarParentCategories":{}}],["those",{"_index":1051,"title":{},"content":{"568":{},"627":{},"685":{}},"sidebarParentCategories":{}}],["though",{"_index":1704,"title":{},"content":{"619":{}},"sidebarParentCategories":{}}],["threadid",{"_index":1940,"title":{},"content":{"669":{}},"sidebarParentCategories":{}}],["three",{"_index":126,"title":{},"content":{"422":{},"433":{},"465":{},"587":{},"690":{}},"sidebarParentCategories":{}}],["threshold",{"_index":1877,"title":{},"content":{"667":{}},"sidebarParentCategories":{}}],["through",{"_index":435,"title":{},"content":{"443":{},"465":{},"479":{},"516":{},"611":{},"614":{},"618":{},"667":{}},"sidebarParentCategories":{}}],["throughout",{"_index":1663,"title":{},"content":{"618":{},"667":{},"678":{}},"sidebarParentCategories":{}}],["throw",{"_index":1259,"title":{},"content":{"549":{},"581":{},"591":{},"597":{},"624":{},"637":{},"638":{},"684":{}},"sidebarParentCategories":{}}],["thrown",{"_index":1572,"title":{},"content":{"654":{},"669":{}},"sidebarParentCategories":{}}],["thu",{"_index":629,"title":{},"content":{"492":{},"611":{},"613":{},"679":{},"680":{},"690":{}},"sidebarParentCategories":{}}],["ti",{"_index":414,"title":{},"content":{"465":{},"668":{}},"sidebarParentCategories":{}}],["time",{"_index":680,"title":{},"content":{"499":{},"611":{},"657":{},"668":{},"680":{},"681":{},"690":{}},"sidebarParentCategories":{}}],["timestamp",{"_index":1541,"title":{},"content":{"591":{}},"sidebarParentCategories":{}}],["tip",{"_index":753,"title":{},"content":{"459":{},"611":{}},"sidebarParentCategories":{}}],["tlsv1.2",{"_index":867,"title":{},"content":{"477":{}},"sidebarParentCategories":{}}],["tmp",{"_index":1554,"title":{},"content":{"648":{}},"sidebarParentCategories":{}}],["todo",{"_index":1192,"title":{},"content":{"631":{},"691":{}},"sidebarParentCategories":{}}],["togeth",{"_index":100,"title":{},"content":{"420":{}},"sidebarParentCategories":{}}],["token",{"_index":333,"title":{},"content":{"438":{},"442":{},"445":{},"446":{},"479":{},"481":{}},"sidebarParentCategories":{}}],["tool",{"_index":47,"title":{},"content":{"420":{},"430":{},"621":{},"670":{},"691":{}},"sidebarParentCategories":{}}],["toolkit",{"_index":155,"title":{},"content":{"422":{},"438":{}},"sidebarParentCategories":{}}],["top",{"_index":79,"title":{},"content":{"420":{},"438":{}},"sidebarParentCategories":{}}],["topic",{"_index":1581,"title":{},"content":{"657":{}},"sidebarParentCategories":{}}],["toward",{"_index":737,"title":{},"content":{"462":{},"512":{},"575":{}},"sidebarParentCategories":{}}],["trace(messag",{"_index":1071,"title":{},"content":{"515":{}},"sidebarParentCategories":{}}],["traffic",{"_index":661,"title":{},"content":{"497":{}},"sidebarParentCategories":{}}],["transact",{"_index":915,"title":{},"content":{"571":{},"574":{},"635":{},"636":{},"642":{},"680":{}},"sidebarParentCategories":{}}],["transactionauthoragr",{"_index":947,"title":{},"content":{"574":{}},"sidebarParentCategories":{}}],["transactionauthoragreement.acceptancemechan",{"_index":959,"title":{},"content":{"574":{}},"sidebarParentCategories":{}}],["transactionauthoragreement.vers",{"_index":955,"title":{},"content":{"574":{}},"sidebarParentCategories":{}}],["transfer",{"_index":1577,"title":{},"content":{"656":{}},"sidebarParentCategories":{}}],["transform",{"_index":1558,"title":{},"content":{"619":{},"627":{},"650":{},"652":{}},"sidebarParentCategories":{}}],["transmit",{"_index":52,"title":{},"content":{"420":{},"630":{}},"sidebarParentCategories":{}}],["transport",{"_index":242,"title":{"497":{}},"content":{"430":{},"452":{},"497":{},"611":{},"629":{},"632":{},"642":{},"683":{}},"sidebarParentCategories":{}}],["transportholder.registerinboundtransport(new",{"_index":1319,"title":{},"content":{"642":{}},"sidebarParentCategories":{}}],["transportholder.registeroutboundtransport(new",{"_index":1318,"title":{},"content":{"642":{}},"sidebarParentCategories":{}}],["transportissuer.registerinboundtransport(new",{"_index":1316,"title":{},"content":{"642":{}},"sidebarParentCategories":{}}],["transportissuer.registeroutboundtransport(new",{"_index":1315,"title":{},"content":{"642":{}},"sidebarParentCategories":{}}],["transportsess",{"_index":2055,"title":{"683":{}},"content":{"683":{}},"sidebarParentCategories":{}}],["tri",{"_index":1492,"title":{"650":{}},"content":{"607":{},"617":{},"661":{},"675":{}},"sidebarParentCategories":{}}],["trick",{"_index":631,"title":{},"content":{"492":{}},"sidebarParentCategories":{}}],["true",{"_index":935,"title":{},"content":{"567":{},"568":{},"570":{},"573":{},"574":{},"590":{},"612":{},"626":{},"629":{},"630":{},"632":{},"635":{},"636":{},"642":{},"665":{},"668":{},"677":{},"679":{},"680":{},"681":{},"684":{},"686":{},"687":{}},"sidebarParentCategories":{}}],["ts",{"_index":607,"title":{},"content":{"492":{}},"sidebarParentCategories":{}}],["tsx",{"_index":608,"title":{},"content":{"492":{}},"sidebarParentCategories":{}}],["tsyring",{"_index":2053,"title":{},"content":{"682":{}},"sidebarParentCategories":{}}],["tunnel",{"_index":1302,"title":{},"content":{"642":{}},"sidebarParentCategories":{}}],["turn",{"_index":1582,"title":{},"content":{"658":{}},"sidebarParentCategories":{}}],["tutori",{"_index":87,"title":{"500":{},"517":{}},"content":{"420":{},"481":{},"493":{},"499":{},"501":{},"517":{},"519":{},"520":{},"521":{},"522":{},"551":{},"610":{},"614":{},"628":{},"629":{},"632":{},"634":{},"636":{},"639":{},"641":{},"642":{},"662":{}},"sidebarParentCategories":{"513":{},"514":{},"515":{},"516":{},"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":{},"570":{},"576":{},"577":{},"578":{},"579":{},"580":{},"581":{},"582":{},"583":{},"584":{},"585":{},"592":{},"593":{},"594":{},"595":{},"596":{},"597":{},"598":{},"610":{},"611":{},"612":{},"613":{},"614":{},"615":{},"628":{},"629":{},"630":{},"631":{},"632":{},"633":{},"634":{},"635":{},"636":{},"637":{},"638":{},"639":{},"640":{},"641":{},"642":{},"643":{},"644":{},"645":{}}}],["two",{"_index":168,"title":{},"content":{"423":{},"553":{},"606":{},"612":{},"614":{},"627":{},"664":{},"668":{}},"sidebarParentCategories":{}}],["type",{"_index":211,"title":{"556":{},"606":{},"620":{},"688":{}},"content":{"428":{},"467":{},"493":{},"514":{},"553":{},"554":{},"556":{},"558":{},"559":{},"560":{},"561":{},"562":{},"563":{},"564":{},"565":{},"566":{},"567":{},"568":{},"569":{},"570":{},"574":{},"585":{},"605":{},"611":{},"617":{},"618":{},"620":{},"626":{},"636":{},"667":{},"669":{},"672":{},"674":{},"678":{},"681":{},"688":{}},"sidebarParentCategories":{}}],["typedarrayencod",{"_index":2038,"title":{},"content":{"680":{},"684":{}},"sidebarParentCategories":{}}],["typedarrayencoder.fromstring('01eafa4de4e22ed4fc2ee522b6ce2731",{"_index":2041,"title":{},"content":{"680":{}},"sidebarParentCategories":{}}],["typedarrayencoder.fromstring(`(connectioneventtypes.connectionstatechang",{"_index":1198,"title":{},"content":{"645":{},"646":{},"651":{}},"sidebarParentCategories":{}}],["agent.events.on(credentialeventtypes.credentialstatechang",{"_index":1322,"title":{},"content":{"595":{}},"sidebarParentCategories":{}}],["holderconfig",{"_index":1317,"title":{},"content":{"594":{}},"sidebarParentCategories":{}}],["home",{"_index":1598,"title":{},"content":{"628":{}},"sidebarParentCategories":{}}],["home/indy/docu",{"_index":1600,"title":{},"content":{"628":{}},"sidebarParentCategories":{}}],["homebrew",{"_index":519,"title":{},"content":{"458":{},"580":{}},"sidebarParentCategories":{}}],["hood",{"_index":1537,"title":{},"content":{"640":{}},"sidebarParentCategories":{}}],["hook",{"_index":304,"title":{"414":{},"419":{}},"content":{"414":{},"415":{},"416":{},"417":{},"419":{}},"sidebarParentCategories":{}}],["hooks@^0.5",{"_index":373,"title":{},"content":{"415":{}},"sidebarParentCategories":{}}],["hooray",{"_index":445,"title":{},"content":{"416":{}},"sidebarParentCategories":{}}],["hope",{"_index":2048,"title":{},"content":{"681":{}},"sidebarParentCategories":{}}],["host",{"_index":296,"title":{},"content":{"417":{},"483":{},"488":{},"508":{},"531":{}},"sidebarParentCategories":{}}],["http",{"_index":248,"title":{},"content":{"403":{},"417":{},"418":{},"441":{},"443":{},"469":{},"493":{},"594":{},"610":{},"643":{},"646":{}},"sidebarParentCategories":{}}],["http://localhost:${port}`,})console.log(mediatiorinvitationurl",{"_index":1411,"title":{},"content":{"611":{}},"sidebarParentCategories":{}}],["http://localhost:${port}`],}const",{"_index":1402,"title":{},"content":{"611":{}},"sidebarParentCategories":{}}],["http://localhost:3000/doc",{"_index":487,"title":{},"content":{"443":{}},"sidebarParentCategories":{}}],["http://localhost:3001",{"_index":1163,"title":{},"content":{"643":{},"646":{}},"sidebarParentCategories":{}}],["http://localhost:5000",{"_index":477,"title":{},"content":{"443":{}},"sidebarParentCategories":{}}],["httpinboundtransport",{"_index":665,"title":{},"content":{"469":{},"594":{},"611":{},"643":{},"646":{}},"sidebarParentCategories":{}}],["httpoutboundtransport",{"_index":663,"title":{},"content":{"469":{},"594":{},"643":{},"646":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())agent.registeroutboundtransport(new",{"_index":669,"title":{},"content":{"469":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())alice.registeroutboundtransport(new",{"_index":1426,"title":{},"content":{"612":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())mediator.registerinboundtransport(new",{"_index":1404,"title":{},"content":{"611":{}},"sidebarParentCategories":{}}],["https://afj.com",{"_index":1908,"title":{},"content":{"668":{}},"sidebarParentCategories":{}}],["https://crates.io/crates/env_logg",{"_index":1090,"title":{},"content":{"541":{}},"sidebarParentCategories":{}}],["https://deb.nodesource.com/setup_18.x",{"_index":532,"title":{},"content":{"458":{}},"sidebarParentCategories":{}}],["https://didcomm.org",{"_index":1042,"title":{},"content":{"534":{},"681":{}},"sidebarParentCategories":{}}],["https://didcomm.org/connections/1.0/invit",{"_index":1785,"title":{},"content":{"658":{}},"sidebarParentCategories":{}}],["https://didcomm.org/messagepickup/2.0",{"_index":1842,"title":{},"content":{"665":{}},"sidebarParentCategories":{}}],["https://didcomm.org/mi",{"_index":1726,"title":{},"content":{"652":{},"669":{}},"sidebarParentCategories":{}}],["https://example.com",{"_index":1685,"title":{},"content":{"651":{},"658":{}},"sidebarParentCategories":{}}],["https://example.com?c_i=eyxxx",{"_index":1694,"title":{},"content":{"651":{}},"sidebarParentCategories":{}}],["https://example.org",{"_index":1175,"title":{},"content":{"643":{},"646":{}},"sidebarParentCategories":{}}],["https://example.org:3000",{"_index":1013,"title":{},"content":{"531":{}},"sidebarParentCategories":{}}],["https://github.com/hyperledger/ari",{"_index":741,"title":{},"content":{"481":{},"507":{},"523":{}},"sidebarParentCategories":{}}],["https://github.com/hyperledger/indi",{"_index":875,"title":{},"content":{"493":{},"576":{},"583":{},"590":{},"680":{}},"sidebarParentCategories":{}}],["https://github.com/nod",{"_index":743,"title":{},"content":{"481":{},"507":{},"523":{}},"sidebarParentCategories":{}}],["https://google.com",{"_index":1906,"title":{},"content":{"668":{}},"sidebarParentCategories":{}}],["https://mediator.dev.animo.id/invite?oob=eyjadhlwzsi6imh0dhbzoi8vzglky29tbs5vcmcvb3v0lw9mlwjhbmqvms4xl2ludml0yxrpb24ilcjaawqioiiymdc1mdm4ys05zgu3ltrioditywuxyi1jnzbmndg4mjyzytcilcjsywjlbci6ikfuaw1vie1lzglhdg9yiiwiywnjzxb0ijpbimrpzgnvbw0vywlwmsisimrpzgnvbw0vywlwmjtlbny9cmzjmtkixswiagfuzhnoywtlx3byb3rvy29scyi6wyjodhrwczovl2rpzgnvbw0ub3jnl2rpzgv4y2hhbmdllzeumcisimh0dhbzoi8vzglky29tbs5vcmcvy29ubmvjdglvbnmvms4wil0sinnlcnzpy2vzijpbeyjpzci6iinpbmxpbmutmcisinnlcnzpy2vfbmrwb2ludci6imh0dhbzoi8vbwvkawf0b3iuzgv2lmfuaw1vlmlkiiwidhlwzsi6imrpzc1jb21tdw5py2f0aw9uiiwicmvjaxbpzw50s2v5cyi6wyjkawq6a2v5ono2twtvsg9rtuphdu5vue5ov1pqcew3rgs1szntq0ndmlbpndjgy3fwr25iampmcsjdlcjyb3v0aw5ns2v5cyi6w119lhsiawqioiijaw5saw5llteilcjzzxj2awnlrw5kcg9pbnqioij3c3m6ly9tzwrpyxrvci5kzxyuyw5pbw8uawqilcj0exblijoizglklwnvbw11bmljyxrpb24ilcjyzwnpcgllbnrlzxlzijpbimrpzdprzxk6ejzna29ib1fnsmf1tlvqtk5xwlbwtddeazvlm21dq0myugk0mkzjcxbhbmjqakxxil0sinjvdxrpbmdlzxlzijpbxx1dfq'const",{"_index":1422,"title":{},"content":{"612":{}},"sidebarParentCategories":{}}],["https://picsum.photos/200",{"_index":1058,"title":{},"content":{"536":{}},"sidebarParentCategories":{}}],["https://rand.in",{"_index":1139,"title":{},"content":{"568":{}},"sidebarParentCategories":{}}],["https://raw.githubusercontent.com/homebrew/install/head/install.sh",{"_index":524,"title":{},"content":{"458":{},"495":{},"498":{}},"sidebarParentCategories":{}}],["https://rpm.nodesource.com/setup_18.x",{"_index":539,"title":{},"content":{"458":{}},"sidebarParentCategories":{}}],["https://sh.rustup.r",{"_index":869,"title":{},"content":{"493":{}},"sidebarParentCategories":{}}],["hub",{"_index":196,"title":{},"content":{"398":{}},"sidebarParentCategories":{}}],["hyperledg",{"_index":42,"title":{},"content":{"390":{},"399":{},"474":{},"482":{},"503":{},"504":{},"511":{},"515":{},"522":{},"614":{},"629":{},"631":{},"680":{},"684":{},"689":{}},"sidebarParentCategories":{}}],["hyperledger/anoncr",{"_index":706,"title":{},"content":{"520":{},"521":{},"630":{}},"sidebarParentCategories":{}}],["hyperledger/ari",{"_index":719,"title":{},"content":{"477":{},"479":{},"480":{},"505":{},"521":{},"627":{},"630":{},"646":{}},"sidebarParentCategories":{}}],["hyperledger/indi",{"_index":922,"title":{},"content":{"504":{},"505":{},"506":{},"630":{}},"sidebarParentCategories":{}}],["hyperlegder/anoncr",{"_index":709,"title":{},"content":{"520":{}},"sidebarParentCategories":{}}],["hyperlegder/ari",{"_index":756,"title":{},"content":{"479":{}},"sidebarParentCategories":{}}],["hyperlegder/indi",{"_index":923,"title":{},"content":{"504":{}},"sidebarParentCategories":{}}],["i'd",{"_index":441,"title":{},"content":{"416":{}},"sidebarParentCategories":{}}],["i.",{"_index":1870,"title":{},"content":{"667":{}},"sidebarParentCategories":{}}],["id",{"_index":360,"title":{},"content":{"413":{},"443":{},"465":{},"526":{},"564":{},"567":{},"568":{},"595":{},"596":{},"611":{},"612":{},"631":{},"643":{},"645":{},"646":{},"650":{},"651":{},"654":{},"658":{},"669":{},"673":{},"677":{},"680":{},"683":{},"684":{},"686":{},"687":{},"689":{}},"sidebarParentCategories":{}}],["ident",{"_index":11,"title":{},"content":{"390":{},"396":{},"398":{},"401":{},"441":{},"466":{},"468":{},"475":{},"482":{}},"sidebarParentCategories":{}}],["identifi",{"_index":210,"title":{},"content":{"401":{},"506":{},"527":{},"566":{},"570":{},"623":{},"624":{},"641":{},"680":{},"684":{},"686":{}},"sidebarParentCategories":{}}],["illustr",{"_index":1429,"title":{},"content":{"613":{}},"sidebarParentCategories":{}}],["imag",{"_index":1056,"title":{},"content":{"536":{}},"sidebarParentCategories":{}}],["imoprt",{"_index":937,"title":{},"content":{"506":{}},"sidebarParentCategories":{}}],["implement",{"_index":111,"title":{"466":{}},"content":{"391":{},"392":{},"395":{},"417":{},"420":{},"422":{},"441":{},"462":{},"464":{},"466":{},"467":{},"468":{},"476":{},"477":{},"478":{},"479":{},"482":{},"483":{},"505":{},"506":{},"519":{},"520":{},"529":{},"532":{},"540":{},"541":{},"615":{},"665":{},"669":{},"674":{},"681":{},"683":{},"690":{}},"sidebarParentCategories":{}}],["import",{"_index":345,"title":{"631":{}},"content":{"413":{},"416":{},"422":{},"464":{},"465":{},"469":{},"476":{},"477":{},"480":{},"489":{},"505":{},"506":{},"521":{},"526":{},"532":{},"533":{},"539":{},"540":{},"541":{},"564":{},"594":{},"615":{},"626":{},"627":{},"628":{},"630":{},"631":{},"632":{},"638":{},"639":{},"640":{},"646":{},"650":{},"651":{},"652":{},"653":{},"664":{},"669":{},"670":{},"674":{},"676":{},"677":{},"679":{},"680":{},"681":{},"684":{},"685":{},"686":{},"687":{},"688":{},"689":{},"691":{}},"sidebarParentCategories":{}}],["imposs",{"_index":1378,"title":{},"content":{"610":{}},"sidebarParentCategories":{}}],["improv",{"_index":1487,"title":{},"content":{"605":{},"641":{}},"sidebarParentCategories":{}}],["inbound",{"_index":482,"title":{},"content":{"443":{},"469":{},"594":{},"643":{},"646":{}},"sidebarParentCategories":{}}],["inboundtransport",{"_index":1299,"title":{},"content":{"594":{}},"sidebarParentCategories":{}}],["includ",{"_index":255,"title":{},"content":{"405":{},"417":{},"464":{},"511":{},"521":{},"526":{},"606":{},"641":{},"645":{},"646":{},"669":{},"679":{},"685":{}},"sidebarParentCategories":{}}],["incom",{"_index":1188,"title":{"595":{},"645":{}},"content":{"595":{}},"sidebarParentCategories":{}}],["incorrect",{"_index":2103,"title":{},"content":{"687":{}},"sidebarParentCategories":{}}],["independ",{"_index":862,"title":{},"content":{"493":{},"681":{}},"sidebarParentCategories":{}}],["index.(js|ts|jsx|tsx",{"_index":596,"title":{},"content":{"464":{}},"sidebarParentCategories":{}}],["index.tsx",{"_index":598,"title":{},"content":{"464":{}},"sidebarParentCategories":{}}],["indi",{"_index":651,"title":{"468":{},"482":{},"483":{},"489":{},"493":{},"496":{},"501":{},"503":{},"504":{},"505":{},"507":{},"518":{},"541":{},"562":{},"576":{},"583":{},"590":{},"600":{},"615":{},"677":{},"689":{}},"content":{"466":{},"468":{},"477":{},"478":{},"482":{},"483":{},"484":{},"485":{},"486":{},"487":{},"488":{},"489":{},"490":{},"491":{},"492":{},"493":{},"494":{},"495":{},"496":{},"497":{},"498":{},"499":{},"500":{},"501":{},"502":{},"503":{},"504":{},"505":{},"506":{},"507":{},"508":{},"509":{},"510":{},"511":{},"515":{},"519":{},"521":{},"522":{},"541":{},"542":{},"543":{},"562":{},"564":{},"575":{},"576":{},"577":{},"578":{},"582":{},"583":{},"584":{},"585":{},"589":{},"590":{},"591":{},"596":{},"598":{},"600":{},"608":{},"615":{},"618":{},"621":{},"623":{},"625":{},"628":{},"629":{},"630":{},"631":{},"643":{},"646":{},"648":{},"650":{},"655":{},"657":{},"660":{},"667":{},"668":{},"674":{},"676":{},"677":{},"678":{},"679":{},"680":{},"684":{},"685":{},"686":{},"687":{},"689":{},"690":{}},"sidebarParentCategories":{"490":{},"491":{},"492":{},"493":{},"494":{},"495":{},"496":{},"497":{},"498":{},"499":{},"500":{},"501":{},"502":{},"508":{},"509":{},"510":{},"542":{},"543":{},"571":{},"572":{},"573":{},"574":{},"575":{},"576":{},"577":{},"578":{},"579":{},"580":{},"581":{},"582":{},"583":{},"584":{},"585":{},"586":{},"587":{},"588":{},"589":{},"590":{},"591":{},"592":{}}}],["indic",{"_index":1483,"title":{},"content":{"604":{},"650":{},"651":{},"667":{}},"sidebarParentCategories":{}}],["indy::credenti",{"_index":1573,"title":{},"content":{"624":{}},"sidebarParentCategories":{}}],["indy::key",{"_index":1560,"title":{},"content":{"620":{}},"sidebarParentCategories":{}}],["indy::mastersecret",{"_index":1567,"title":{},"content":{"623":{}},"sidebarParentCategories":{}}],["indy:(agentcontext",{"_index":1953,"title":{},"content":{"669":{}},"sidebarParentCategories":{}}],["this.loglevel",{"_index":1066,"title":{},"content":{"540":{}},"sidebarParentCategories":{}}],["this.messagesend",{"_index":1976,"title":{},"content":{"669":{}},"sidebarParentCategories":{}}],["this.messagesender.sendmessage(outboundmessag",{"_index":1965,"title":{},"content":{"669":{}},"sidebarParentCategories":{}}],["this.messagesender.sendmessage(outboundmessagecontext",{"_index":1969,"title":{},"content":{"669":{}},"sidebarParentCategories":{}}],["this.myrecordrepository.save(agentcontext",{"_index":1952,"title":{},"content":{"669":{}},"sidebarParentCategories":{}}],["this.myrecordrepository.save(record",{"_index":1942,"title":{},"content":{"669":{}},"sidebarParentCategories":{}}],["this.myrepository.save(messagecontext.agentcontext",{"_index":1955,"title":{},"content":{"669":{}},"sidebarParentCategories":{}}],["this.myrepository.save(record",{"_index":1950,"title":{},"content":{"669":{}},"sidebarParentCategories":{}}],["this.myservic",{"_index":1977,"title":{},"content":{"669":{}},"sidebarParentCategories":{}}],["this.registerhandlers(messagehandlerregistri",{"_index":1979,"title":{},"content":{"669":{}},"sidebarParentCategories":{}}],["those",{"_index":1051,"title":{},"content":{"535":{},"659":{},"685":{}},"sidebarParentCategories":{}}],["though",{"_index":1704,"title":{},"content":{"651":{}},"sidebarParentCategories":{}}],["threadid",{"_index":1940,"title":{},"content":{"669":{}},"sidebarParentCategories":{}}],["three",{"_index":126,"title":{},"content":{"396":{},"406":{},"416":{},"637":{},"690":{}},"sidebarParentCategories":{}}],["threshold",{"_index":1877,"title":{},"content":{"667":{}},"sidebarParentCategories":{}}],["through",{"_index":435,"title":{},"content":{"416":{},"422":{},"475":{},"541":{},"610":{},"613":{},"650":{},"667":{}},"sidebarParentCategories":{}}],["throughout",{"_index":1663,"title":{},"content":{"650":{},"667":{},"678":{}},"sidebarParentCategories":{}}],["throw",{"_index":1259,"title":{},"content":{"577":{},"584":{},"591":{},"632":{},"633":{},"641":{},"656":{},"684":{}},"sidebarParentCategories":{}}],["thrown",{"_index":1572,"title":{},"content":{"623":{},"669":{}},"sidebarParentCategories":{}}],["thu",{"_index":629,"title":{},"content":{"464":{},"610":{},"612":{},"679":{},"680":{},"690":{}},"sidebarParentCategories":{}}],["ti",{"_index":414,"title":{},"content":{"416":{},"668":{}},"sidebarParentCategories":{}}],["time",{"_index":680,"title":{},"content":{"471":{},"610":{},"626":{},"668":{},"680":{},"681":{},"690":{}},"sidebarParentCategories":{}}],["timestamp",{"_index":1541,"title":{},"content":{"641":{}},"sidebarParentCategories":{}}],["tip",{"_index":753,"title":{},"content":{"478":{},"610":{}},"sidebarParentCategories":{}}],["tlsv1.2",{"_index":867,"title":{},"content":{"493":{}},"sidebarParentCategories":{}}],["tmp",{"_index":1554,"title":{},"content":{"617":{}},"sidebarParentCategories":{}}],["todo",{"_index":1192,"title":{},"content":{"645":{},"691":{}},"sidebarParentCategories":{}}],["togeth",{"_index":100,"title":{},"content":{"390":{}},"sidebarParentCategories":{}}],["token",{"_index":333,"title":{},"content":{"412":{},"413":{},"417":{},"421":{},"475":{},"477":{}},"sidebarParentCategories":{}}],["tool",{"_index":47,"title":{},"content":{"390":{},"403":{},"653":{},"670":{},"691":{}},"sidebarParentCategories":{}}],["toolkit",{"_index":155,"title":{},"content":{"396":{},"417":{}},"sidebarParentCategories":{}}],["top",{"_index":79,"title":{},"content":{"390":{},"417":{}},"sidebarParentCategories":{}}],["topic",{"_index":1581,"title":{},"content":{"626":{}},"sidebarParentCategories":{}}],["toward",{"_index":737,"title":{},"content":{"481":{},"507":{},"523":{}},"sidebarParentCategories":{}}],["trace(messag",{"_index":1071,"title":{},"content":{"540":{}},"sidebarParentCategories":{}}],["traffic",{"_index":661,"title":{},"content":{"469":{}},"sidebarParentCategories":{}}],["transact",{"_index":915,"title":{},"content":{"503":{},"506":{},"594":{},"630":{},"631":{},"680":{}},"sidebarParentCategories":{}}],["transactionauthoragr",{"_index":947,"title":{},"content":{"506":{}},"sidebarParentCategories":{}}],["transactionauthoragreement.acceptancemechan",{"_index":959,"title":{},"content":{"506":{}},"sidebarParentCategories":{}}],["transactionauthoragreement.vers",{"_index":955,"title":{},"content":{"506":{}},"sidebarParentCategories":{}}],["transfer",{"_index":1577,"title":{},"content":{"625":{}},"sidebarParentCategories":{}}],["transform",{"_index":1558,"title":{},"content":{"619":{},"621":{},"651":{},"659":{}},"sidebarParentCategories":{}}],["transmit",{"_index":52,"title":{},"content":{"390":{},"644":{}},"sidebarParentCategories":{}}],["transport",{"_index":242,"title":{"469":{}},"content":{"403":{},"443":{},"469":{},"594":{},"610":{},"643":{},"646":{},"683":{}},"sidebarParentCategories":{}}],["transportholder.registerinboundtransport(new",{"_index":1319,"title":{},"content":{"594":{}},"sidebarParentCategories":{}}],["transportholder.registeroutboundtransport(new",{"_index":1318,"title":{},"content":{"594":{}},"sidebarParentCategories":{}}],["transportissuer.registerinboundtransport(new",{"_index":1316,"title":{},"content":{"594":{}},"sidebarParentCategories":{}}],["transportissuer.registeroutboundtransport(new",{"_index":1315,"title":{},"content":{"594":{}},"sidebarParentCategories":{}}],["transportsess",{"_index":2055,"title":{"683":{}},"content":{"683":{}},"sidebarParentCategories":{}}],["tri",{"_index":1492,"title":{"619":{}},"content":{"606":{},"649":{},"661":{},"675":{}},"sidebarParentCategories":{}}],["trick",{"_index":631,"title":{},"content":{"464":{}},"sidebarParentCategories":{}}],["true",{"_index":935,"title":{},"content":{"505":{},"506":{},"534":{},"535":{},"537":{},"594":{},"611":{},"630":{},"631":{},"640":{},"643":{},"644":{},"646":{},"658":{},"665":{},"668":{},"677":{},"679":{},"680":{},"681":{},"684":{},"686":{},"687":{}},"sidebarParentCategories":{}}],["ts",{"_index":607,"title":{},"content":{"464":{}},"sidebarParentCategories":{}}],["tsx",{"_index":608,"title":{},"content":{"464":{}},"sidebarParentCategories":{}}],["tsyring",{"_index":2053,"title":{},"content":{"682":{}},"sidebarParentCategories":{}}],["tunnel",{"_index":1302,"title":{},"content":{"594":{}},"sidebarParentCategories":{}}],["turn",{"_index":1582,"title":{},"content":{"627":{}},"sidebarParentCategories":{}}],["tutori",{"_index":87,"title":{"472":{},"511":{}},"content":{"390":{},"465":{},"471":{},"473":{},"477":{},"511":{},"513":{},"514":{},"515":{},"516":{},"565":{},"593":{},"594":{},"609":{},"613":{},"629":{},"631":{},"634":{},"642":{},"643":{},"646":{},"662":{}},"sidebarParentCategories":{"524":{},"525":{},"526":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"533":{},"534":{},"535":{},"536":{},"537":{},"538":{},"539":{},"540":{},"541":{},"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":{},"592":{},"593":{},"594":{},"595":{},"596":{},"597":{},"609":{},"610":{},"611":{},"612":{},"613":{},"614":{},"629":{},"630":{},"631":{},"632":{},"633":{},"634":{},"635":{},"642":{},"643":{},"644":{},"645":{},"646":{},"647":{}}}],["two",{"_index":168,"title":{},"content":{"397":{},"567":{},"605":{},"611":{},"613":{},"659":{},"664":{},"668":{}},"sidebarParentCategories":{}}],["type",{"_index":211,"title":{"570":{},"605":{},"652":{},"688":{}},"content":{"401":{},"465":{},"483":{},"506":{},"525":{},"526":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"533":{},"534":{},"535":{},"536":{},"537":{},"539":{},"564":{},"567":{},"568":{},"570":{},"604":{},"610":{},"631":{},"649":{},"650":{},"652":{},"658":{},"667":{},"669":{},"672":{},"674":{},"678":{},"681":{},"688":{}},"sidebarParentCategories":{}}],["typedarrayencod",{"_index":2038,"title":{},"content":{"680":{},"684":{}},"sidebarParentCategories":{}}],["typedarrayencoder.fromstring('01eafa4de4e22ed4fc2ee522b6ce2731",{"_index":2041,"title":{},"content":{"680":{}},"sidebarParentCategories":{}}],["typedarrayencoder.fromstring(`(connectioneventtypes.connectionstatechang",{"_index":1160,"title":{},"content":{"387":{},"399":{},"400":{}},"sidebarParentCategories":{}}],["agent.events.on(credentialeventtypes.credentialstatechang",{"_index":1224,"title":{},"content":{"343":{}},"sidebarParentCategories":{}}],["holderconfig",{"_index":1218,"title":{},"content":{"342":{}},"sidebarParentCategories":{}}],["home",{"_index":1506,"title":{},"content":{"383":{}},"sidebarParentCategories":{}}],["home/indy/docu",{"_index":1509,"title":{},"content":{"383":{}},"sidebarParentCategories":{}}],["homebrew",{"_index":688,"title":{},"content":{"272":{}},"sidebarParentCategories":{}}],["hood",{"_index":1438,"title":{},"content":{"368":{}},"sidebarParentCategories":{}}],["hook",{"_index":318,"title":{"224":{},"227":{}},"content":{"222":{},"224":{},"227":{},"228":{},"229":{}},"sidebarParentCategories":{}}],["hooks@^0.5",{"_index":387,"title":{},"content":{"228":{}},"sidebarParentCategories":{}}],["hooray",{"_index":458,"title":{},"content":{"229":{}},"sidebarParentCategories":{}}],["hope",{"_index":1977,"title":{},"content":{"532":{}},"sidebarParentCategories":{}}],["host",{"_index":311,"title":{},"content":{"222":{},"315":{}},"sidebarParentCategories":{}}],["http",{"_index":259,"title":{},"content":{"192":{},"222":{},"223":{},"244":{},"246":{},"289":{},"336":{},"342":{},"397":{},"400":{}},"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":{"246":{}},"sidebarParentCategories":{}}],["http://localhost:3001",{"_index":1126,"title":{},"content":{"397":{},"400":{}},"sidebarParentCategories":{}}],["http://localhost:5000",{"_index":490,"title":{},"content":{"246":{}},"sidebarParentCategories":{}}],["httpinboundtransport",{"_index":797,"title":{},"content":{"289":{},"337":{},"342":{},"397":{},"400":{}},"sidebarParentCategories":{}}],["httpoutboundtransport",{"_index":795,"title":{},"content":{"289":{},"342":{},"397":{},"400":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())agent.registeroutboundtransport(new",{"_index":801,"title":{},"content":{"289":{}},"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":{"414":{}},"sidebarParentCategories":{}}],["https://deb.nodesource.com/setup_18.x",{"_index":700,"title":{},"content":{"272":{}},"sidebarParentCategories":{}}],["https://didcomm.org",{"_index":1028,"title":{},"content":{"318":{},"532":{}},"sidebarParentCategories":{}}],["https://didcomm.org/connections/1.0/invit",{"_index":1693,"title":{},"content":{"394":{}},"sidebarParentCategories":{}}],["https://didcomm.org/messagepickup/2.0",{"_index":1751,"title":{},"content":{"411":{}},"sidebarParentCategories":{}}],["https://didcomm.org/mi",{"_index":1632,"title":{},"content":{"388":{},"415":{}},"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":{"397":{},"400":{}},"sidebarParentCategories":{}}],["https://example.org:3000",{"_index":1000,"title":{},"content":{"315":{}},"sidebarParentCategories":{}}],["https://github.com/hyperledger/indi",{"_index":1966,"title":{},"content":{"531":{}},"sidebarParentCategories":{}}],["https://google.com",{"_index":1816,"title":{},"content":{"414":{}},"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":{"325":{}},"sidebarParentCategories":{}}],["https://raw.githubusercontent.com/homebrew/install/head/install.sh",{"_index":693,"title":{},"content":{"272":{}},"sidebarParentCategories":{}}],["https://rpm.nodesource.com/setup_18.x",{"_index":707,"title":{},"content":{"272":{}},"sidebarParentCategories":{}}],["hub",{"_index":210,"title":{},"content":{"197":{}},"sidebarParentCategories":{}}],["hyperledg",{"_index":38,"title":{"251":{},"255":{}},"content":{"180":{},"198":{},"250":{},"251":{},"255":{},"282":{},"294":{},"298":{},"302":{},"331":{},"332":{},"357":{},"359":{},"531":{},"535":{},"540":{}},"sidebarParentCategories":{}}],["hyperledger/anoncr",{"_index":823,"title":{},"content":{"280":{},"281":{},"297":{},"333":{},"358":{}},"sidebarParentCategories":{}}],["hyperledger/ari",{"_index":834,"title":{},"content":{"281":{},"297":{},"306":{},"307":{},"333":{},"358":{},"382":{},"400":{}},"sidebarParentCategories":{}}],["hyperledger/indi",{"_index":918,"title":{},"content":{"332":{},"333":{},"334":{},"358":{}},"sidebarParentCategories":{}}],["hyperlegder/anoncr",{"_index":825,"title":{},"content":{"280":{}},"sidebarParentCategories":{}}],["hyperlegder/ari",{"_index":846,"title":{},"content":{"306":{}},"sidebarParentCategories":{}}],["hyperlegder/indi",{"_index":919,"title":{},"content":{"332":{}},"sidebarParentCategories":{}}],["i'd",{"_index":454,"title":{},"content":{"229":{}},"sidebarParentCategories":{}}],["i.",{"_index":1780,"title":{},"content":{"413":{}},"sidebarParentCategories":{}}],["id",{"_index":374,"title":{},"content":{"246":{},"259":{},"262":{},"266":{},"286":{},"310":{},"324":{},"325":{},"337":{},"338":{},"343":{},"344":{},"359":{},"386":{},"387":{},"390":{},"394":{},"397":{},"399":{},"400":{},"415":{},"419":{},"528":{},"531":{},"534":{},"535":{},"537":{},"538":{},"540":{}},"sidebarParentCategories":{}}],["ideal",{"_index":581,"title":{},"content":{"258":{}},"sidebarParentCategories":{}}],["ident",{"_index":10,"title":{},"content":{"180":{},"190":{},"195":{},"197":{},"244":{},"255":{},"295":{}},"sidebarParentCategories":{}}],["identifi",{"_index":222,"title":{"253":{},"259":{}},"content":{"190":{},"250":{},"253":{},"258":{},"259":{},"311":{},"323":{},"327":{},"334":{},"369":{},"378":{},"379":{},"531":{},"535":{},"537":{}},"sidebarParentCategories":{}}],["ignor",{"_index":559,"title":{},"content":{"258":{}},"sidebarParentCategories":{}}],["illustr",{"_index":1325,"title":{},"content":{"339":{}},"sidebarParentCategories":{}}],["imag",{"_index":563,"title":{},"content":{"258":{},"320":{}},"sidebarParentCategories":{}}],["imageurl",{"_index":554,"title":{},"content":{"258":{}},"sidebarParentCategories":{}}],["immedi",{"_index":649,"title":{},"content":{"264":{}},"sidebarParentCategories":{}}],["imoprt",{"_index":932,"title":{},"content":{"334":{}},"sidebarParentCategories":{}}],["impact",{"_index":552,"title":{},"content":{"258":{}},"sidebarParentCategories":{}}],["implement",{"_index":126,"title":{"287":{}},"content":{"194":{},"199":{},"200":{},"222":{},"225":{},"244":{},"248":{},"250":{},"251":{},"255":{},"258":{},"259":{},"265":{},"266":{},"270":{},"279":{},"280":{},"285":{},"287":{},"288":{},"296":{},"297":{},"305":{},"306":{},"316":{},"330":{},"333":{},"334":{},"370":{},"411":{},"415":{},"525":{},"532":{},"534":{},"541":{}},"sidebarParentCategories":{}}],["import",{"_index":359,"title":{"359":{}},"content":{"229":{},"248":{},"259":{},"260":{},"262":{},"263":{},"281":{},"285":{},"286":{},"289":{},"296":{},"297":{},"307":{},"310":{},"316":{},"317":{},"329":{},"330":{},"333":{},"334":{},"342":{},"358":{},"359":{},"360":{},"366":{},"367":{},"368":{},"370":{},"381":{},"382":{},"383":{},"386":{},"387":{},"388":{},"389":{},"400":{},"410":{},"415":{},"416":{},"525":{},"527":{},"528":{},"530":{},"531":{},"532":{},"535":{},"536":{},"537":{},"538":{},"539":{},"540":{},"542":{}},"sidebarParentCategories":{}}],["imposs",{"_index":1277,"title":{},"content":{"336":{}},"sidebarParentCategories":{}}],["improv",{"_index":1387,"title":{},"content":{"353":{},"369":{}},"sidebarParentCategories":{}}],["inbound",{"_index":495,"title":{},"content":{"246":{},"289":{},"342":{},"397":{},"400":{}},"sidebarParentCategories":{}}],["inboundtransport",{"_index":1198,"title":{},"content":{"342":{}},"sidebarParentCategories":{}}],["includ",{"_index":266,"title":{},"content":{"204":{},"222":{},"258":{},"281":{},"285":{},"298":{},"310":{},"354":{},"369":{},"399":{},"400":{},"415":{},"530":{},"536":{}},"sidebarParentCategories":{}}],["incom",{"_index":1151,"title":{"343":{},"399":{}},"content":{"343":{}},"sidebarParentCategories":{}}],["incorrect",{"_index":2029,"title":{},"content":{"538":{}},"sidebarParentCategories":{}}],["independ",{"_index":1976,"title":{},"content":{"532":{}},"sidebarParentCategories":{}}],["index.(js|ts|jsx|tsx",{"_index":742,"title":{},"content":{"285":{}},"sidebarParentCategories":{}}],["index.tsx",{"_index":744,"title":{},"content":{"285":{}},"sidebarParentCategories":{}}],["indi",{"_index":526,"title":{"331":{},"332":{},"333":{},"348":{},"370":{},"528":{},"540":{}},"content":{"256":{},"281":{},"282":{},"297":{},"298":{},"302":{},"305":{},"331":{},"332":{},"333":{},"334":{},"344":{},"346":{},"348":{},"356":{},"357":{},"358":{},"359":{},"370":{},"373":{},"376":{},"378":{},"380":{},"383":{},"384":{},"386":{},"391":{},"393":{},"406":{},"413":{},"414":{},"525":{},"527":{},"528":{},"529":{},"530":{},"531":{},"535":{},"536":{},"537":{},"538":{},"540":{},"541":{}},"sidebarParentCategories":{}}],["indic",{"_index":1382,"title":{},"content":{"352":{},"386":{},"387":{},"413":{}},"sidebarParentCategories":{}}],["indicio",{"_index":1334,"title":{},"content":{"340":{}},"sidebarParentCategories":{}}],["indy::::(agentcontext",{"_index":1863,"title":{},"content":{"415":{}},"sidebarParentCategories":{}}],["this.loglevel",{"_index":1044,"title":{},"content":{"330":{}},"sidebarParentCategories":{}}],["this.messagesend",{"_index":1886,"title":{},"content":{"415":{}},"sidebarParentCategories":{}}],["this.messagesender.sendmessage(outboundmessag",{"_index":1875,"title":{},"content":{"415":{}},"sidebarParentCategories":{}}],["this.messagesender.sendmessage(outboundmessagecontext",{"_index":1879,"title":{},"content":{"415":{}},"sidebarParentCategories":{}}],["this.myrecordrepository.save(agentcontext",{"_index":1862,"title":{},"content":{"415":{}},"sidebarParentCategories":{}}],["this.myrecordrepository.save(record",{"_index":1852,"title":{},"content":{"415":{}},"sidebarParentCategories":{}}],["this.myrepository.save(messagecontext.agentcontext",{"_index":1865,"title":{},"content":{"415":{}},"sidebarParentCategories":{}}],["this.myrepository.save(record",{"_index":1860,"title":{},"content":{"415":{}},"sidebarParentCategories":{}}],["this.myservic",{"_index":1887,"title":{},"content":{"415":{}},"sidebarParentCategories":{}}],["this.registerhandlers(messagehandlerregistri",{"_index":1889,"title":{},"content":{"415":{}},"sidebarParentCategories":{}}],["those",{"_index":1033,"title":{},"content":{"319":{},"395":{},"536":{}},"sidebarParentCategories":{}}],["though",{"_index":572,"title":{},"content":{"258":{},"387":{}},"sidebarParentCategories":{}}],["thread_id",{"_index":575,"title":{},"content":{"258":{}},"sidebarParentCategories":{}}],["threadid",{"_index":1850,"title":{},"content":{"415":{}},"sidebarParentCategories":{}}],["three",{"_index":140,"title":{},"content":{"195":{},"229":{},"365":{},"541":{}},"sidebarParentCategories":{}}],["threshold",{"_index":1787,"title":{},"content":{"413":{}},"sidebarParentCategories":{}}],["through",{"_index":448,"title":{},"content":{"229":{},"248":{},"260":{},"295":{},"336":{},"339":{},"386":{},"413":{}},"sidebarParentCategories":{}}],["throughout",{"_index":1572,"title":{},"content":{"386":{},"413":{},"529":{}},"sidebarParentCategories":{}}],["throw",{"_index":1357,"title":{},"content":{"360":{},"361":{},"369":{},"392":{},"535":{}},"sidebarParentCategories":{}}],["thrown",{"_index":1479,"title":{},"content":{"378":{},"415":{}},"sidebarParentCategories":{}}],["thu",{"_index":516,"title":{},"content":{"255":{},"263":{},"285":{},"336":{},"338":{},"530":{},"531":{},"541":{}},"sidebarParentCategories":{}}],["ti",{"_index":46,"title":{},"content":{"180":{},"229":{},"414":{}},"sidebarParentCategories":{}}],["time",{"_index":811,"title":{},"content":{"291":{},"336":{},"381":{},"414":{},"531":{},"532":{},"541":{}},"sidebarParentCategories":{}}],["timestamp",{"_index":1443,"title":{},"content":{"369":{}},"sidebarParentCategories":{}}],["tip",{"_index":841,"title":{},"content":{"305":{},"336":{}},"sidebarParentCategories":{}}],["tmp",{"_index":1461,"title":{},"content":{"372":{}},"sidebarParentCategories":{}}],["todo",{"_index":1154,"title":{},"content":{"399":{},"542":{}},"sidebarParentCategories":{}}],["togeth",{"_index":114,"title":{},"content":{"180":{}},"sidebarParentCategories":{}}],["token",{"_index":347,"title":{},"content":{"222":{},"226":{},"259":{},"261":{},"262":{},"266":{},"268":{},"295":{},"297":{}},"sidebarParentCategories":{}}],["tool",{"_index":60,"title":{},"content":{"180":{},"192":{},"389":{},"416":{},"542":{}},"sidebarParentCategories":{}}],["toolkit",{"_index":169,"title":{},"content":{"195":{},"222":{}},"sidebarParentCategories":{}}],["top",{"_index":94,"title":{},"content":{"180":{},"205":{},"222":{}},"sidebarParentCategories":{}}],["topic",{"_index":1489,"title":{},"content":{"381":{}},"sidebarParentCategories":{}}],["trace(messag",{"_index":1049,"title":{},"content":{"330":{}},"sidebarParentCategories":{}}],["traffic",{"_index":793,"title":{},"content":{"289":{}},"sidebarParentCategories":{}}],["transact",{"_index":912,"title":{},"content":{"331":{},"334":{},"342":{},"358":{},"359":{},"531":{}},"sidebarParentCategories":{}}],["transactionauthoragr",{"_index":943,"title":{},"content":{"334":{}},"sidebarParentCategories":{}}],["transactionauthoragreement.acceptancemechan",{"_index":953,"title":{},"content":{"334":{}},"sidebarParentCategories":{}}],["transactionauthoragreement.vers",{"_index":950,"title":{},"content":{"334":{}},"sidebarParentCategories":{}}],["transfer",{"_index":1485,"title":{},"content":{"380":{}},"sidebarParentCategories":{}}],["transform",{"_index":1466,"title":{},"content":{"374":{},"376":{},"387":{},"395":{}},"sidebarParentCategories":{}}],["transmit",{"_index":65,"title":{},"content":{"180":{},"398":{}},"sidebarParentCategories":{}}],["transport",{"_index":253,"title":{"289":{}},"content":{"192":{},"246":{},"289":{},"336":{},"342":{},"397":{},"400":{},"534":{}},"sidebarParentCategories":{}}],["transportholder.registerinboundtransport(new",{"_index":1220,"title":{},"content":{"342":{}},"sidebarParentCategories":{}}],["transportholder.registeroutboundtransport(new",{"_index":1219,"title":{},"content":{"342":{}},"sidebarParentCategories":{}}],["transportissuer.registerinboundtransport(new",{"_index":1217,"title":{},"content":{"342":{}},"sidebarParentCategories":{}}],["transportissuer.registeroutboundtransport(new",{"_index":1216,"title":{},"content":{"342":{}},"sidebarParentCategories":{}}],["transportsess",{"_index":1984,"title":{"534":{}},"content":{"534":{}},"sidebarParentCategories":{}}],["tri",{"_index":504,"title":{"374":{}},"content":{"250":{},"258":{},"354":{},"385":{},"407":{},"526":{}},"sidebarParentCategories":{}}],["trick",{"_index":774,"title":{},"content":{"285":{}},"sidebarParentCategories":{}}],["true",{"_index":930,"title":{},"content":{"318":{},"319":{},"321":{},"333":{},"334":{},"337":{},"342":{},"358":{},"359":{},"368":{},"394":{},"397":{},"398":{},"400":{},"411":{},"414":{},"528":{},"530":{},"531":{},"532":{},"535":{},"537":{},"538":{}},"sidebarParentCategories":{}}],["trust",{"_index":567,"title":{},"content":{"258":{}},"sidebarParentCategories":{}}],["ts",{"_index":753,"title":{},"content":{"285":{}},"sidebarParentCategories":{}}],["ts/anoncr",{"_index":822,"title":{},"content":{"280":{}},"sidebarParentCategories":{}}],["ts/anoncreds'import",{"_index":836,"title":{},"content":{"281":{},"297":{},"333":{},"358":{}},"sidebarParentCategories":{}}],["ts/anoncreds@^0.5.0",{"_index":826,"title":{},"content":{"280":{}},"sidebarParentCategories":{}}],["ts/askar",{"_index":844,"title":{},"content":{"306":{},"382":{}},"sidebarParentCategories":{}}],["ts/askar'import",{"_index":832,"title":{},"content":{"281":{},"297":{},"307":{},"333":{},"358":{},"400":{}},"sidebarParentCategories":{}}],["ts/askar@^0.5.0",{"_index":847,"title":{},"content":{"306":{}},"sidebarParentCategories":{}}],["ts/bb",{"_index":729,"title":{},"content":{"283":{}},"sidebarParentCategories":{}}],["ts/cheqd",{"_index":625,"title":{},"content":{"260":{},"283":{},"296":{}},"sidebarParentCategories":{}}],["ts/cheqd'const",{"_index":1335,"title":{},"content":{"358":{}},"sidebarParentCategories":{}}],["ts/cheqd'import",{"_index":896,"title":{},"content":{"297":{}},"sidebarParentCategories":{}}],["ts/core",{"_index":350,"title":{},"content":{"227":{},"244":{},"248":{},"261":{},"262":{},"289":{},"310":{},"316":{},"317":{},"329":{},"330":{},"366":{},"367":{},"368":{}},"sidebarParentCategories":{}}],["ts/core'import",{"_index":783,"title":{},"content":{"281":{},"286":{},"289":{},"297":{},"307":{},"333":{},"358":{},"400":{}},"sidebarParentCategories":{}}],["ts/core@^0.5.0",{"_index":733,"title":{},"content":{"284":{}},"sidebarParentCategories":{}}],["ts/indi",{"_index":627,"title":{},"content":{"260":{},"281":{},"332":{},"333":{},"334":{},"358":{},"382":{}},"sidebarParentCategories":{}}],["ts/node",{"_index":798,"title":{},"content":{"289":{},"366":{},"367":{},"368":{}},"sidebarParentCategories":{}}],["ts/node'const",{"_index":785,"title":{},"content":{"286":{}},"sidebarParentCategories":{}}],["ts/node'import",{"_index":830,"title":{},"content":{"281":{},"307":{},"333":{},"358":{},"400":{}},"sidebarParentCategories":{}}],["ts/node@^0.5.0",{"_index":734,"title":{},"content":{"284":{}},"sidebarParentCategories":{}}],["ts/openid4vc",{"_index":725,"title":{},"content":{"283":{}},"sidebarParentCategories":{}}],["ts/push",{"_index":327,"title":{},"content":{"222":{},"261":{},"262":{}},"sidebarParentCategories":{}}],["ts/react",{"_index":325,"title":{},"content":{"222":{},"227":{},"228":{},"229":{},"281":{},"284":{},"286":{},"297":{},"307":{},"333":{},"342":{},"366":{},"367":{},"368":{},"382":{}},"sidebarParentCategories":{}}],["ts/redux",{"_index":322,"title":{},"content":{"222":{},"248":{},"249":{}},"sidebarParentCategories":{}}],["ts/rest",{"_index":324,"title":{},"content":{"222":{},"244":{},"246":{},"247":{}},"sidebarParentCategories":{}}],["ts/tenant",{"_index":727,"title":{},"content":{"283":{}},"sidebarParentCategories":{}}],["tsx",{"_index":754,"title":{},"content":{"285":{}},"sidebarParentCategories":{}}],["tsyring",{"_index":1982,"title":{},"content":{"533":{}},"sidebarParentCategories":{}}],["tunnel",{"_index":1202,"title":{},"content":{"342":{}},"sidebarParentCategories":{}}],["turn",{"_index":1490,"title":{},"content":{"382":{}},"sidebarParentCategories":{}}],["tutori",{"_index":103,"title":{"292":{},"298":{}},"content":{"180":{},"286":{},"291":{},"293":{},"297":{},"298":{},"300":{},"301":{},"302":{},"303":{},"322":{},"335":{},"339":{},"341":{},"342":{},"357":{},"359":{},"362":{},"396":{},"397":{},"400":{},"408":{}},"sidebarParentCategories":{"308":{},"309":{},"310":{},"311":{},"312":{},"313":{},"314":{},"315":{},"316":{},"317":{},"318":{},"319":{},"320":{},"321":{},"322":{},"323":{},"324":{},"325":{},"326":{},"327":{},"328":{},"329":{},"330":{},"335":{},"336":{},"337":{},"338":{},"339":{},"340":{},"341":{},"342":{},"343":{},"344":{},"345":{},"357":{},"358":{},"359":{},"360":{},"361":{},"362":{},"363":{},"396":{},"397":{},"398":{},"399":{},"400":{},"401":{}}}],["two",{"_index":182,"title":{},"content":{"196":{},"205":{},"324":{},"337":{},"339":{},"353":{},"395":{},"410":{},"414":{}},"sidebarParentCategories":{}}],["type",{"_index":223,"title":{"327":{},"353":{},"388":{},"539":{}},"content":{"190":{},"269":{},"286":{},"309":{},"310":{},"311":{},"312":{},"313":{},"314":{},"315":{},"316":{},"317":{},"318":{},"319":{},"320":{},"321":{},"324":{},"325":{},"327":{},"329":{},"334":{},"336":{},"352":{},"359":{},"385":{},"386":{},"388":{},"394":{},"413":{},"415":{},"418":{},"525":{},"529":{},"532":{},"539":{}},"sidebarParentCategories":{}}],["typedarrayencod",{"_index":1965,"title":{},"content":{"531":{},"535":{}},"sidebarParentCategories":{}}],["typedarrayencoder.fromstring('01eafa4de4e22ed4fc2ee522b6ce2731",{"_index":1969,"title":{},"content":{"531":{}},"sidebarParentCategories":{}}],["typedarrayencoder.fromstring(`(connectioneventtypes.connectionstatechang",{"_index":1160,"title":{},"content":{"367":{},"368":{},"448":{}},"sidebarParentCategories":{}}],["agent.events.on(credentialeventtypes.credentialstatechang",{"_index":1224,"title":{},"content":{"337":{}},"sidebarParentCategories":{}}],["holderconfig",{"_index":1218,"title":{},"content":{"336":{}},"sidebarParentCategories":{}}],["home",{"_index":1506,"title":{},"content":{"389":{}},"sidebarParentCategories":{}}],["home/indy/docu",{"_index":1509,"title":{},"content":{"389":{}},"sidebarParentCategories":{}}],["homebrew",{"_index":688,"title":{},"content":{"275":{}},"sidebarParentCategories":{}}],["hood",{"_index":1438,"title":{},"content":{"374":{}},"sidebarParentCategories":{}}],["hook",{"_index":318,"title":{"218":{},"268":{}},"content":{"216":{},"218":{},"268":{},"269":{},"270":{}},"sidebarParentCategories":{}}],["hooks@^0.5",{"_index":387,"title":{},"content":{"269":{}},"sidebarParentCategories":{}}],["hooray",{"_index":458,"title":{},"content":{"270":{}},"sidebarParentCategories":{}}],["hope",{"_index":1977,"title":{},"content":{"551":{}},"sidebarParentCategories":{}}],["host",{"_index":311,"title":{},"content":{"216":{},"318":{}},"sidebarParentCategories":{}}],["http",{"_index":259,"title":{},"content":{"213":{},"216":{},"217":{},"245":{},"247":{},"302":{},"336":{},"352":{},"365":{},"368":{}},"sidebarParentCategories":{}}],["http://localhost:${port}`,})console.log(mediatiorinvitationurl",{"_index":1307,"title":{},"content":{"353":{}},"sidebarParentCategories":{}}],["http://localhost:${port}`],}const",{"_index":1298,"title":{},"content":{"353":{}},"sidebarParentCategories":{}}],["http://localhost:3000/doc",{"_index":500,"title":{},"content":{"247":{}},"sidebarParentCategories":{}}],["http://localhost:3001",{"_index":1126,"title":{},"content":{"365":{},"368":{}},"sidebarParentCategories":{}}],["http://localhost:5000",{"_index":490,"title":{},"content":{"247":{}},"sidebarParentCategories":{}}],["httpinboundtransport",{"_index":797,"title":{},"content":{"302":{},"336":{},"353":{},"365":{},"368":{}},"sidebarParentCategories":{}}],["httpoutboundtransport",{"_index":795,"title":{},"content":{"302":{},"336":{},"365":{},"368":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())agent.registeroutboundtransport(new",{"_index":801,"title":{},"content":{"302":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())alice.registeroutboundtransport(new",{"_index":1322,"title":{},"content":{"354":{}},"sidebarParentCategories":{}}],["httpoutboundtransport())mediator.registerinboundtransport(new",{"_index":1300,"title":{},"content":{"353":{}},"sidebarParentCategories":{}}],["https://credo.com",{"_index":1818,"title":{},"content":{"432":{}},"sidebarParentCategories":{}}],["https://deb.nodesource.com/setup_18.x",{"_index":700,"title":{},"content":{"275":{}},"sidebarParentCategories":{}}],["https://didcomm.org",{"_index":1028,"title":{},"content":{"321":{},"551":{}},"sidebarParentCategories":{}}],["https://didcomm.org/connections/1.0/invit",{"_index":1693,"title":{},"content":{"455":{}},"sidebarParentCategories":{}}],["https://didcomm.org/messagepickup/2.0",{"_index":1751,"title":{},"content":{"429":{}},"sidebarParentCategories":{}}],["https://didcomm.org/mi",{"_index":1632,"title":{},"content":{"433":{},"449":{}},"sidebarParentCategories":{}}],["https://example.com",{"_index":1592,"title":{},"content":{"448":{},"455":{}},"sidebarParentCategories":{}}],["https://example.com?c_i=eyxxx",{"_index":1601,"title":{},"content":{"448":{}},"sidebarParentCategories":{}}],["https://example.org",{"_index":1138,"title":{},"content":{"365":{},"368":{}},"sidebarParentCategories":{}}],["https://example.org:3000",{"_index":1000,"title":{},"content":{"318":{}},"sidebarParentCategories":{}}],["https://github.com/hyperledger/indi",{"_index":1966,"title":{},"content":{"550":{}},"sidebarParentCategories":{}}],["https://google.com",{"_index":1816,"title":{},"content":{"432":{}},"sidebarParentCategories":{}}],["https://mediator.dev.animo.id/invite?oob=eyjadhlwzsi6imh0dhbzoi8vzglky29tbs5vcmcvb3v0lw9mlwjhbmqvms4xl2ludml0yxrpb24ilcjaawqioiiymdc1mdm4ys05zgu3ltrioditywuxyi1jnzbmndg4mjyzytcilcjsywjlbci6ikfuaw1vie1lzglhdg9yiiwiywnjzxb0ijpbimrpzgnvbw0vywlwmsisimrpzgnvbw0vywlwmjtlbny9cmzjmtkixswiagfuzhnoywtlx3byb3rvy29scyi6wyjodhrwczovl2rpzgnvbw0ub3jnl2rpzgv4y2hhbmdllzeumcisimh0dhbzoi8vzglky29tbs5vcmcvy29ubmvjdglvbnmvms4wil0sinnlcnzpy2vzijpbeyjpzci6iinpbmxpbmutmcisinnlcnzpy2vfbmrwb2ludci6imh0dhbzoi8vbwvkawf0b3iuzgv2lmfuaw1vlmlkiiwidhlwzsi6imrpzc1jb21tdw5py2f0aw9uiiwicmvjaxbpzw50s2v5cyi6wyjkawq6a2v5ono2twtvsg9rtuphdu5vue5ov1pqcew3rgs1szntq0ndmlbpndjgy3fwr25iampmcsjdlcjyb3v0aw5ns2v5cyi6w119lhsiawqioiijaw5saw5llteilcjzzxj2awnlrw5kcg9pbnqioij3c3m6ly9tzwrpyxrvci5kzxyuyw5pbw8uawqilcj0exblijoizglklwnvbw11bmljyxrpb24ilcjyzwnpcgllbnrlzxlzijpbimrpzdprzxk6ejzna29ib1fnsmf1tlvqtk5xwlbwtddeazvlm21dq0myugk0mkzjcxbhbmjqakxxil0sinjvdxrpbmdlzxlzijpbxx1dfq'const",{"_index":1318,"title":{},"content":{"354":{}},"sidebarParentCategories":{}}],["https://picsum.photos/200",{"_index":1038,"title":{},"content":{"323":{}},"sidebarParentCategories":{}}],["https://rand.in",{"_index":1100,"title":{},"content":{"328":{}},"sidebarParentCategories":{}}],["https://raw.githubusercontent.com/homebrew/install/head/install.sh",{"_index":693,"title":{},"content":{"275":{}},"sidebarParentCategories":{}}],["https://rpm.nodesource.com/setup_18.x",{"_index":707,"title":{},"content":{"275":{}},"sidebarParentCategories":{}}],["hub",{"_index":210,"title":{},"content":{"196":{}},"sidebarParentCategories":{}}],["hyperledg",{"_index":38,"title":{"250":{},"254":{}},"content":{"180":{},"197":{},"249":{},"250":{},"254":{},"288":{},"289":{},"293":{},"307":{},"331":{},"332":{},"357":{},"359":{},"550":{},"554":{},"559":{}},"sidebarParentCategories":{}}],["hyperledger/anoncr",{"_index":823,"title":{},"content":{"284":{},"286":{},"287":{},"333":{},"358":{}},"sidebarParentCategories":{}}],["hyperledger/ari",{"_index":834,"title":{},"content":{"280":{},"281":{},"284":{},"287":{},"333":{},"358":{},"368":{},"388":{}},"sidebarParentCategories":{}}],["hyperledger/indi",{"_index":918,"title":{},"content":{"332":{},"333":{},"334":{},"358":{}},"sidebarParentCategories":{}}],["hyperlegder/anoncr",{"_index":825,"title":{},"content":{"286":{}},"sidebarParentCategories":{}}],["hyperlegder/ari",{"_index":846,"title":{},"content":{"280":{}},"sidebarParentCategories":{}}],["hyperlegder/indi",{"_index":919,"title":{},"content":{"332":{}},"sidebarParentCategories":{}}],["i'd",{"_index":454,"title":{},"content":{"270":{}},"sidebarParentCategories":{}}],["i.",{"_index":1780,"title":{},"content":{"431":{}},"sidebarParentCategories":{}}],["id",{"_index":374,"title":{},"content":{"228":{},"247":{},"262":{},"267":{},"299":{},"313":{},"327":{},"328":{},"337":{},"338":{},"353":{},"354":{},"359":{},"365":{},"367":{},"368":{},"433":{},"437":{},"447":{},"448":{},"451":{},"455":{},"547":{},"550":{},"553":{},"554":{},"556":{},"557":{},"559":{}},"sidebarParentCategories":{}}],["ideal",{"_index":581,"title":{},"content":{"257":{}},"sidebarParentCategories":{}}],["ident",{"_index":10,"title":{},"content":{"180":{},"194":{},"196":{},"211":{},"245":{},"254":{},"282":{}},"sidebarParentCategories":{}}],["identifi",{"_index":222,"title":{"252":{},"262":{}},"content":{"211":{},"249":{},"252":{},"257":{},"262":{},"314":{},"326":{},"330":{},"334":{},"375":{},"384":{},"385":{},"550":{},"554":{},"556":{}},"sidebarParentCategories":{}}],["ignor",{"_index":559,"title":{},"content":{"257":{}},"sidebarParentCategories":{}}],["illustr",{"_index":1325,"title":{},"content":{"355":{}},"sidebarParentCategories":{}}],["imag",{"_index":563,"title":{},"content":{"257":{},"323":{}},"sidebarParentCategories":{}}],["imageurl",{"_index":554,"title":{},"content":{"257":{}},"sidebarParentCategories":{}}],["immedi",{"_index":649,"title":{},"content":{"265":{}},"sidebarParentCategories":{}}],["imoprt",{"_index":932,"title":{},"content":{"334":{}},"sidebarParentCategories":{}}],["impact",{"_index":552,"title":{},"content":{"257":{}},"sidebarParentCategories":{}}],["implement",{"_index":126,"title":{"300":{}},"content":{"189":{},"190":{},"193":{},"216":{},"219":{},"229":{},"245":{},"249":{},"250":{},"254":{},"257":{},"261":{},"262":{},"266":{},"267":{},"279":{},"280":{},"283":{},"284":{},"285":{},"286":{},"298":{},"300":{},"301":{},"310":{},"319":{},"333":{},"334":{},"376":{},"429":{},"433":{},"544":{},"551":{},"553":{},"560":{}},"sidebarParentCategories":{}}],["import",{"_index":359,"title":{"359":{}},"content":{"228":{},"229":{},"262":{},"263":{},"264":{},"270":{},"281":{},"283":{},"284":{},"287":{},"298":{},"299":{},"302":{},"309":{},"310":{},"313":{},"319":{},"320":{},"333":{},"334":{},"336":{},"358":{},"359":{},"360":{},"368":{},"372":{},"373":{},"374":{},"376":{},"387":{},"388":{},"389":{},"428":{},"433":{},"434":{},"447":{},"448":{},"449":{},"450":{},"544":{},"546":{},"547":{},"549":{},"550":{},"551":{},"554":{},"555":{},"556":{},"557":{},"558":{},"559":{},"561":{}},"sidebarParentCategories":{}}],["imposs",{"_index":1277,"title":{},"content":{"352":{}},"sidebarParentCategories":{}}],["improv",{"_index":1387,"title":{},"content":{"347":{},"375":{}},"sidebarParentCategories":{}}],["inbound",{"_index":495,"title":{},"content":{"247":{},"302":{},"336":{},"365":{},"368":{}},"sidebarParentCategories":{}}],["inboundtransport",{"_index":1198,"title":{},"content":{"336":{}},"sidebarParentCategories":{}}],["includ",{"_index":266,"title":{},"content":{"216":{},"221":{},"257":{},"287":{},"289":{},"298":{},"313":{},"348":{},"367":{},"368":{},"375":{},"433":{},"549":{},"555":{}},"sidebarParentCategories":{}}],["incom",{"_index":1151,"title":{"337":{},"367":{}},"content":{"337":{}},"sidebarParentCategories":{}}],["incorrect",{"_index":2029,"title":{},"content":{"557":{}},"sidebarParentCategories":{}}],["independ",{"_index":1976,"title":{},"content":{"551":{}},"sidebarParentCategories":{}}],["index.(js|ts|jsx|tsx",{"_index":742,"title":{},"content":{"298":{}},"sidebarParentCategories":{}}],["index.tsx",{"_index":744,"title":{},"content":{"298":{}},"sidebarParentCategories":{}}],["indi",{"_index":526,"title":{"331":{},"332":{},"333":{},"342":{},"376":{},"547":{},"559":{}},"content":{"255":{},"279":{},"284":{},"287":{},"288":{},"289":{},"293":{},"331":{},"332":{},"333":{},"334":{},"338":{},"340":{},"342":{},"350":{},"357":{},"358":{},"359":{},"376":{},"379":{},"382":{},"384":{},"386":{},"389":{},"424":{},"431":{},"432":{},"445":{},"447":{},"452":{},"454":{},"544":{},"546":{},"547":{},"548":{},"549":{},"550":{},"554":{},"555":{},"556":{},"557":{},"559":{},"560":{}},"sidebarParentCategories":{}}],["indic",{"_index":1382,"title":{},"content":{"346":{},"431":{},"447":{},"448":{}},"sidebarParentCategories":{}}],["indicio",{"_index":1334,"title":{},"content":{"356":{}},"sidebarParentCategories":{}}],["indy::::(agentcontext",{"_index":1863,"title":{},"content":{"433":{}},"sidebarParentCategories":{}}],["this.loglevel",{"_index":1044,"title":{},"content":{"310":{}},"sidebarParentCategories":{}}],["this.messagesend",{"_index":1886,"title":{},"content":{"433":{}},"sidebarParentCategories":{}}],["this.messagesender.sendmessage(outboundmessag",{"_index":1875,"title":{},"content":{"433":{}},"sidebarParentCategories":{}}],["this.messagesender.sendmessage(outboundmessagecontext",{"_index":1879,"title":{},"content":{"433":{}},"sidebarParentCategories":{}}],["this.myrecordrepository.save(agentcontext",{"_index":1862,"title":{},"content":{"433":{}},"sidebarParentCategories":{}}],["this.myrecordrepository.save(record",{"_index":1852,"title":{},"content":{"433":{}},"sidebarParentCategories":{}}],["this.myrepository.save(messagecontext.agentcontext",{"_index":1865,"title":{},"content":{"433":{}},"sidebarParentCategories":{}}],["this.myrepository.save(record",{"_index":1860,"title":{},"content":{"433":{}},"sidebarParentCategories":{}}],["this.myservic",{"_index":1887,"title":{},"content":{"433":{}},"sidebarParentCategories":{}}],["this.registerhandlers(messagehandlerregistri",{"_index":1889,"title":{},"content":{"433":{}},"sidebarParentCategories":{}}],["those",{"_index":1033,"title":{},"content":{"322":{},"456":{},"555":{}},"sidebarParentCategories":{}}],["though",{"_index":572,"title":{},"content":{"257":{},"448":{}},"sidebarParentCategories":{}}],["thread_id",{"_index":575,"title":{},"content":{"257":{}},"sidebarParentCategories":{}}],["threadid",{"_index":1850,"title":{},"content":{"433":{}},"sidebarParentCategories":{}}],["three",{"_index":140,"title":{},"content":{"194":{},"270":{},"371":{},"560":{}},"sidebarParentCategories":{}}],["threshold",{"_index":1787,"title":{},"content":{"431":{}},"sidebarParentCategories":{}}],["through",{"_index":448,"title":{},"content":{"229":{},"263":{},"270":{},"282":{},"352":{},"355":{},"431":{},"447":{}},"sidebarParentCategories":{}}],["throughout",{"_index":1572,"title":{},"content":{"431":{},"447":{},"548":{}},"sidebarParentCategories":{}}],["throw",{"_index":1357,"title":{},"content":{"360":{},"361":{},"375":{},"453":{},"554":{}},"sidebarParentCategories":{}}],["thrown",{"_index":1479,"title":{},"content":{"384":{},"433":{}},"sidebarParentCategories":{}}],["thu",{"_index":516,"title":{},"content":{"254":{},"264":{},"298":{},"352":{},"354":{},"549":{},"550":{},"560":{}},"sidebarParentCategories":{}}],["ti",{"_index":46,"title":{},"content":{"180":{},"270":{},"432":{}},"sidebarParentCategories":{}}],["time",{"_index":811,"title":{},"content":{"304":{},"352":{},"387":{},"432":{},"550":{},"551":{},"560":{}},"sidebarParentCategories":{}}],["timestamp",{"_index":1443,"title":{},"content":{"375":{}},"sidebarParentCategories":{}}],["tip",{"_index":841,"title":{},"content":{"279":{},"352":{}},"sidebarParentCategories":{}}],["tmp",{"_index":1461,"title":{},"content":{"378":{}},"sidebarParentCategories":{}}],["todo",{"_index":1154,"title":{},"content":{"367":{},"561":{}},"sidebarParentCategories":{}}],["togeth",{"_index":114,"title":{},"content":{"180":{}},"sidebarParentCategories":{}}],["token",{"_index":347,"title":{},"content":{"216":{},"220":{},"227":{},"228":{},"259":{},"262":{},"267":{},"282":{},"284":{}},"sidebarParentCategories":{}}],["tool",{"_index":60,"title":{},"content":{"180":{},"213":{},"434":{},"450":{},"561":{}},"sidebarParentCategories":{}}],["toolkit",{"_index":169,"title":{},"content":{"194":{},"216":{}},"sidebarParentCategories":{}}],["top",{"_index":94,"title":{},"content":{"180":{},"216":{},"222":{}},"sidebarParentCategories":{}}],["topic",{"_index":1489,"title":{},"content":{"387":{}},"sidebarParentCategories":{}}],["trace(messag",{"_index":1049,"title":{},"content":{"310":{}},"sidebarParentCategories":{}}],["traffic",{"_index":793,"title":{},"content":{"302":{}},"sidebarParentCategories":{}}],["transact",{"_index":912,"title":{},"content":{"331":{},"334":{},"336":{},"358":{},"359":{},"550":{}},"sidebarParentCategories":{}}],["transactionauthoragr",{"_index":943,"title":{},"content":{"334":{}},"sidebarParentCategories":{}}],["transactionauthoragreement.acceptancemechan",{"_index":953,"title":{},"content":{"334":{}},"sidebarParentCategories":{}}],["transactionauthoragreement.vers",{"_index":950,"title":{},"content":{"334":{}},"sidebarParentCategories":{}}],["transfer",{"_index":1485,"title":{},"content":{"386":{}},"sidebarParentCategories":{}}],["transform",{"_index":1466,"title":{},"content":{"380":{},"382":{},"448":{},"456":{}},"sidebarParentCategories":{}}],["transmit",{"_index":65,"title":{},"content":{"180":{},"366":{}},"sidebarParentCategories":{}}],["transport",{"_index":253,"title":{"302":{}},"content":{"213":{},"247":{},"302":{},"336":{},"352":{},"365":{},"368":{},"553":{}},"sidebarParentCategories":{}}],["transportholder.registerinboundtransport(new",{"_index":1220,"title":{},"content":{"336":{}},"sidebarParentCategories":{}}],["transportholder.registeroutboundtransport(new",{"_index":1219,"title":{},"content":{"336":{}},"sidebarParentCategories":{}}],["transportissuer.registerinboundtransport(new",{"_index":1217,"title":{},"content":{"336":{}},"sidebarParentCategories":{}}],["transportissuer.registeroutboundtransport(new",{"_index":1216,"title":{},"content":{"336":{}},"sidebarParentCategories":{}}],["transportsess",{"_index":1984,"title":{"553":{}},"content":{"553":{}},"sidebarParentCategories":{}}],["tri",{"_index":504,"title":{"380":{}},"content":{"249":{},"257":{},"348":{},"425":{},"446":{},"545":{}},"sidebarParentCategories":{}}],["trick",{"_index":774,"title":{},"content":{"298":{}},"sidebarParentCategories":{}}],["true",{"_index":930,"title":{},"content":{"321":{},"322":{},"324":{},"333":{},"334":{},"336":{},"353":{},"358":{},"359":{},"365":{},"366":{},"368":{},"374":{},"429":{},"432":{},"455":{},"547":{},"549":{},"550":{},"551":{},"554":{},"556":{},"557":{}},"sidebarParentCategories":{}}],["trust",{"_index":567,"title":{},"content":{"257":{}},"sidebarParentCategories":{}}],["ts",{"_index":753,"title":{},"content":{"298":{}},"sidebarParentCategories":{}}],["ts/anoncr",{"_index":822,"title":{},"content":{"286":{}},"sidebarParentCategories":{}}],["ts/anoncreds'import",{"_index":836,"title":{},"content":{"284":{},"287":{},"333":{},"358":{}},"sidebarParentCategories":{}}],["ts/anoncreds@^0.5.0",{"_index":826,"title":{},"content":{"286":{}},"sidebarParentCategories":{}}],["ts/askar",{"_index":844,"title":{},"content":{"280":{},"388":{}},"sidebarParentCategories":{}}],["ts/askar'import",{"_index":832,"title":{},"content":{"281":{},"284":{},"287":{},"333":{},"358":{},"368":{}},"sidebarParentCategories":{}}],["ts/askar@^0.5.0",{"_index":847,"title":{},"content":{"280":{}},"sidebarParentCategories":{}}],["ts/bb",{"_index":729,"title":{},"content":{"296":{}},"sidebarParentCategories":{}}],["ts/cheqd",{"_index":625,"title":{},"content":{"263":{},"283":{},"296":{}},"sidebarParentCategories":{}}],["ts/cheqd'const",{"_index":1335,"title":{},"content":{"358":{}},"sidebarParentCategories":{}}],["ts/cheqd'import",{"_index":896,"title":{},"content":{"284":{}},"sidebarParentCategories":{}}],["ts/core",{"_index":350,"title":{},"content":{"227":{},"228":{},"229":{},"245":{},"268":{},"302":{},"309":{},"310":{},"313":{},"319":{},"320":{},"372":{},"373":{},"374":{}},"sidebarParentCategories":{}}],["ts/core'import",{"_index":783,"title":{},"content":{"281":{},"284":{},"287":{},"299":{},"302":{},"333":{},"358":{},"368":{}},"sidebarParentCategories":{}}],["ts/core@^0.5.0",{"_index":733,"title":{},"content":{"297":{}},"sidebarParentCategories":{}}],["ts/indi",{"_index":627,"title":{},"content":{"263":{},"287":{},"332":{},"333":{},"334":{},"358":{},"388":{}},"sidebarParentCategories":{}}],["ts/node",{"_index":798,"title":{},"content":{"302":{},"372":{},"373":{},"374":{}},"sidebarParentCategories":{}}],["ts/node'const",{"_index":785,"title":{},"content":{"299":{}},"sidebarParentCategories":{}}],["ts/node'import",{"_index":830,"title":{},"content":{"281":{},"287":{},"333":{},"358":{},"368":{}},"sidebarParentCategories":{}}],["ts/node@^0.5.0",{"_index":734,"title":{},"content":{"297":{}},"sidebarParentCategories":{}}],["ts/openid4vc",{"_index":725,"title":{},"content":{"296":{}},"sidebarParentCategories":{}}],["ts/push",{"_index":327,"title":{},"content":{"216":{},"227":{},"228":{}},"sidebarParentCategories":{}}],["ts/react",{"_index":325,"title":{},"content":{"216":{},"268":{},"269":{},"270":{},"281":{},"284":{},"287":{},"297":{},"299":{},"333":{},"336":{},"372":{},"373":{},"374":{},"388":{}},"sidebarParentCategories":{}}],["ts/redux",{"_index":322,"title":{},"content":{"216":{},"229":{},"230":{}},"sidebarParentCategories":{}}],["ts/rest",{"_index":324,"title":{},"content":{"216":{},"245":{},"247":{},"248":{}},"sidebarParentCategories":{}}],["ts/tenant",{"_index":727,"title":{},"content":{"296":{}},"sidebarParentCategories":{}}],["tsx",{"_index":754,"title":{},"content":{"298":{}},"sidebarParentCategories":{}}],["tsyring",{"_index":1982,"title":{},"content":{"552":{}},"sidebarParentCategories":{}}],["tunnel",{"_index":1202,"title":{},"content":{"336":{}},"sidebarParentCategories":{}}],["turn",{"_index":1490,"title":{},"content":{"388":{}},"sidebarParentCategories":{}}],["tutori",{"_index":103,"title":{"289":{},"305":{}},"content":{"180":{},"284":{},"289":{},"291":{},"292":{},"293":{},"294":{},"299":{},"304":{},"306":{},"325":{},"335":{},"336":{},"351":{},"355":{},"357":{},"359":{},"362":{},"364":{},"365":{},"368":{},"426":{}},"sidebarParentCategories":{"308":{},"309":{},"310":{},"311":{},"312":{},"313":{},"314":{},"315":{},"316":{},"317":{},"318":{},"319":{},"320":{},"321":{},"322":{},"323":{},"324":{},"325":{},"326":{},"327":{},"328":{},"329":{},"330":{},"335":{},"336":{},"337":{},"338":{},"339":{},"351":{},"352":{},"353":{},"354":{},"355":{},"356":{},"357":{},"358":{},"359":{},"360":{},"361":{},"362":{},"363":{},"364":{},"365":{},"366":{},"367":{},"368":{},"369":{}}}],["two",{"_index":182,"title":{},"content":{"195":{},"222":{},"327":{},"347":{},"353":{},"355":{},"428":{},"432":{},"456":{}},"sidebarParentCategories":{}}],["type",{"_index":223,"title":{"330":{},"347":{},"449":{},"558":{}},"content":{"211":{},"260":{},"299":{},"309":{},"312":{},"313":{},"314":{},"315":{},"316":{},"317":{},"318":{},"319":{},"320":{},"321":{},"322":{},"323":{},"324":{},"327":{},"328":{},"330":{},"334":{},"346":{},"352":{},"359":{},"431":{},"433":{},"436":{},"446":{},"447":{},"449":{},"455":{},"544":{},"548":{},"551":{},"558":{}},"sidebarParentCategories":{}}],["typedarrayencod",{"_index":1965,"title":{},"content":{"550":{},"554":{}},"sidebarParentCategories":{}}],["typedarrayencoder.fromstring('01eafa4de4e22ed4fc2ee522b6ce2731",{"_index":1969,"title":{},"content":{"550":{}},"sidebarParentCategories":{}}],["typedarrayencoder.fromstring(`