From bec6221775786b16714e914efe415ee85c3650fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C5=A0vanda?= <46406259+Papooch@users.noreply.github.com> Date: Mon, 22 Jan 2024 18:29:04 +0100 Subject: [PATCH] Deploy website - based on 1d3cd280a33fe33693cfdbc3350311a8a12e978b --- .nojekyll | 0 404.html | 15 +- api.html | 16 +- api/module-options.html | 143 ++++++++++++++---- api/service-interface.html | 107 ++++++++++--- assets/css/styles.46bfc1df.css | 1 - assets/css/styles.bd300c91.css | 1 + assets/js/075c86f0.0a105794.js | 1 + assets/js/17896441.c5c50487.js | 1 + assets/js/17896441.ea3c4b97.js | 1 - assets/js/18c15bff.c5c7db9a.js | 1 + assets/js/1be78505.cee9dfcc.js | 1 - assets/js/2d4cceda.9ec420e4.js | 1 + assets/js/3ac8ff5d.22ee9ecc.js | 1 - assets/js/3ac8ff5d.a4c650c8.js | 1 + assets/js/3b39bba3.4068951c.js | 1 - assets/js/3b39bba3.b1845d7a.js | 1 + assets/js/471.006e7ee7.js | 1 + assets/js/49.c17c1426.js | 2 + ...LICENSE.txt => 49.c17c1426.js.LICENSE.txt} | 0 assets/js/4998a0a4.487f790a.js | 1 - assets/js/4998a0a4.8311d530.js | 1 + assets/js/4c9a797e.5a451edf.js | 1 + assets/js/4c9a797e.ac0c8500.js | 1 - assets/js/561.5fe53f02.js | 1 - assets/js/57c14adc.8d411baa.js | 1 + assets/js/57c14adc.b808beff.js | 1 - assets/js/592cbe55.9bb5699b.js | 1 + assets/js/592cbe55.e18bfa3e.js | 1 - assets/js/5e95c892.eba74bf1.js | 1 + assets/js/6212613f.4cda7fb0.js | 1 - assets/js/6212613f.570af20d.js | 1 + assets/js/67fa07c1.8b7b0bb2.js | 1 - assets/js/6bb5cc7f.b7a03c73.js | 1 + assets/js/6fbaaecb.c904afaa.js | 1 + assets/js/734.9c54f551.js | 2 - assets/js/739a1e5f.97c3a5dc.js | 1 + assets/js/75a2ce58.288a270b.js | 1 - assets/js/765.099e041d.js | 1 + assets/js/{77.6d8f1b9f.js => 807.e07e7e07.js} | 2 +- assets/js/81cbaa95.e887b585.js | 1 - assets/js/849c94ea.51e67d40.js | 1 - assets/js/86ea57e0.93a2d1c1.js | 1 - assets/js/86ea57e0.ff6330f0.js | 1 + assets/js/893.bb801cd0.js | 1 - assets/js/935f2afb.da867498.js | 1 - assets/js/935f2afb.ff295151.js | 1 + assets/js/94e5e920.1b12a2be.js | 1 - assets/js/94e5e920.d469aee9.js | 1 + assets/js/97d55a5e.1919b209.js | 1 - assets/js/97d55a5e.5ff21a4a.js | 1 + assets/js/a2c1fdb7.6caaee3d.js | 1 + assets/js/a2c1fdb7.de805607.js | 1 - assets/js/a7bd4aaa.6b9c6fa4.js | 1 + assets/js/a886e75a.d95036fe.js | 1 + assets/js/a8d12efa.0b5297db.js | 1 + assets/js/a8d12efa.ae0cc29a.js | 1 - assets/js/a94703ab.74e9a79f.js | 1 + assets/js/ae4976f8.5406cedc.js | 1 - assets/js/ae4976f8.fa94a518.js | 1 + assets/js/b09df872.558f0f47.js | 1 + assets/js/b09df872.6dc93e4a.js | 1 - assets/js/b67d68ed.2e3abcf2.js | 1 + assets/js/b787da23.6d6bf314.js | 1 + assets/js/b787da23.d6a197ad.js | 1 - assets/js/baa2f4d8.57f99fd1.js | 1 + assets/js/d459cca2.2e06c629.js | 1 - assets/js/d459cca2.51d3b722.js | 1 + assets/js/df604e10.30be9c5a.js | 1 - assets/js/df604e10.c9ad986f.js | 1 + assets/js/e2112352.413a0485.js | 1 + assets/js/e83b8e0a.c7551c54.js | 1 + assets/js/eb9c95da.97b9461c.js | 1 + assets/js/eca1a52a.c89c6ab1.js | 1 - assets/js/eca1a52a.cbfb27da.js | 1 + assets/js/ef9f7d37.246c8683.js | 1 - assets/js/ef9f7d37.a21a56ab.js | 1 + ...7469c.a8f155a8.js => effe0ec2.1d686911.js} | 2 +- assets/js/f83e606a.14966a77.js | 1 + assets/js/f83e606a.269bd854.js | 1 - assets/js/main.4229acf3.js | 2 - assets/js/main.ca4c7257.js | 2 + ...CENSE.txt => main.ca4c7257.js.LICENSE.txt} | 56 +++---- assets/js/runtime~main.4f1a7fee.js | 1 + assets/js/runtime~main.8a2e657e.js | 1 - considerations.html | 17 +-- considerations/compatibility.html | 51 +++++-- considerations/security.html | 22 +-- features-and-use-cases.html | 16 +- .../additional-cls-setup.html | 24 +-- features-and-use-cases/breakin-out-of-di.html | 16 -- .../breaking-out-of-di.html | 17 +++ features-and-use-cases/proxy-providers.html | 70 +++++++-- features-and-use-cases/request-id.html | 23 +-- .../type-safety-and-type-inference.html | 39 +++-- .../usage-outside-of-web-request.html | 20 +-- img/favicon.ico | Bin img/logo.png | Bin index.html | 47 ++++-- introduction/how-it-works.html | 17 +-- introduction/installation.html | 18 +-- introduction/quick-start.html | 41 +++-- lunr-index-1697660838110.json | 1 - lunr-index-1705944535620.json | 1 + lunr-index.json | 2 +- migration-guide.html | 16 +- migration-guide/v2x-v3x.html | 25 +-- migration-guide/v3x-v4x.html | 26 ++++ plugins.html | 23 +++ plugins/available-plugins.html | 17 +++ plugins/available-plugins/transactional.html | 86 +++++++++++ .../creating-custom-adapter.html | 14 ++ .../transactional/prisma-adapter.html | 25 +++ plugins/plugin-api.html | 17 +++ search-doc-1697660838110.json | 1 - search-doc-1705944535620.json | 1 + search-doc.json | 2 +- setting-up-cls-context.html | 22 +-- setting-up-cls-context/using-a-decorator.html | 18 +++ setting-up-cls-context/using-a-decurator.html | 16 -- setting-up-cls-context/using-a-guard.html | 26 ++-- .../using-a-middleware.html | 31 ++-- .../using-an-interceptor.html | 25 +-- setting-up-cls-context/using_cls_run.html | 16 ++ sitemap.xml | 2 +- 125 files changed, 929 insertions(+), 343 deletions(-) mode change 100755 => 100644 .nojekyll mode change 100755 => 100644 404.html mode change 100755 => 100644 api.html mode change 100755 => 100644 api/module-options.html mode change 100755 => 100644 api/service-interface.html delete mode 100755 assets/css/styles.46bfc1df.css create mode 100644 assets/css/styles.bd300c91.css create mode 100644 assets/js/075c86f0.0a105794.js create mode 100644 assets/js/17896441.c5c50487.js delete mode 100755 assets/js/17896441.ea3c4b97.js create mode 100644 assets/js/18c15bff.c5c7db9a.js delete mode 100755 assets/js/1be78505.cee9dfcc.js create mode 100644 assets/js/2d4cceda.9ec420e4.js delete mode 100755 assets/js/3ac8ff5d.22ee9ecc.js create mode 100644 assets/js/3ac8ff5d.a4c650c8.js delete mode 100755 assets/js/3b39bba3.4068951c.js create mode 100644 assets/js/3b39bba3.b1845d7a.js create mode 100644 assets/js/471.006e7ee7.js create mode 100644 assets/js/49.c17c1426.js rename assets/js/{734.9c54f551.js.LICENSE.txt => 49.c17c1426.js.LICENSE.txt} (100%) mode change 100755 => 100644 delete mode 100755 assets/js/4998a0a4.487f790a.js create mode 100644 assets/js/4998a0a4.8311d530.js create mode 100644 assets/js/4c9a797e.5a451edf.js delete mode 100755 assets/js/4c9a797e.ac0c8500.js delete mode 100755 assets/js/561.5fe53f02.js create mode 100644 assets/js/57c14adc.8d411baa.js delete mode 100755 assets/js/57c14adc.b808beff.js create mode 100644 assets/js/592cbe55.9bb5699b.js delete mode 100755 assets/js/592cbe55.e18bfa3e.js create mode 100644 assets/js/5e95c892.eba74bf1.js delete mode 100755 assets/js/6212613f.4cda7fb0.js create mode 100644 assets/js/6212613f.570af20d.js delete mode 100755 assets/js/67fa07c1.8b7b0bb2.js create mode 100644 assets/js/6bb5cc7f.b7a03c73.js create mode 100644 assets/js/6fbaaecb.c904afaa.js delete mode 100755 assets/js/734.9c54f551.js create mode 100644 assets/js/739a1e5f.97c3a5dc.js delete mode 100755 assets/js/75a2ce58.288a270b.js create mode 100644 assets/js/765.099e041d.js rename assets/js/{77.6d8f1b9f.js => 807.e07e7e07.js} (51%) mode change 100755 => 100644 delete mode 100755 assets/js/81cbaa95.e887b585.js delete mode 100755 assets/js/849c94ea.51e67d40.js delete mode 100755 assets/js/86ea57e0.93a2d1c1.js create mode 100644 assets/js/86ea57e0.ff6330f0.js delete mode 100755 assets/js/893.bb801cd0.js delete mode 100755 assets/js/935f2afb.da867498.js create mode 100644 assets/js/935f2afb.ff295151.js delete mode 100755 assets/js/94e5e920.1b12a2be.js create mode 100644 assets/js/94e5e920.d469aee9.js delete mode 100755 assets/js/97d55a5e.1919b209.js create mode 100644 assets/js/97d55a5e.5ff21a4a.js create mode 100644 assets/js/a2c1fdb7.6caaee3d.js delete mode 100755 assets/js/a2c1fdb7.de805607.js create mode 100644 assets/js/a7bd4aaa.6b9c6fa4.js create mode 100644 assets/js/a886e75a.d95036fe.js create mode 100644 assets/js/a8d12efa.0b5297db.js delete mode 100755 assets/js/a8d12efa.ae0cc29a.js create mode 100644 assets/js/a94703ab.74e9a79f.js delete mode 100755 assets/js/ae4976f8.5406cedc.js create mode 100644 assets/js/ae4976f8.fa94a518.js create mode 100644 assets/js/b09df872.558f0f47.js delete mode 100755 assets/js/b09df872.6dc93e4a.js create mode 100644 assets/js/b67d68ed.2e3abcf2.js create mode 100644 assets/js/b787da23.6d6bf314.js delete mode 100755 assets/js/b787da23.d6a197ad.js create mode 100644 assets/js/baa2f4d8.57f99fd1.js delete mode 100755 assets/js/d459cca2.2e06c629.js create mode 100644 assets/js/d459cca2.51d3b722.js delete mode 100755 assets/js/df604e10.30be9c5a.js create mode 100644 assets/js/df604e10.c9ad986f.js create mode 100644 assets/js/e2112352.413a0485.js create mode 100644 assets/js/e83b8e0a.c7551c54.js create mode 100644 assets/js/eb9c95da.97b9461c.js delete mode 100755 assets/js/eca1a52a.c89c6ab1.js create mode 100644 assets/js/eca1a52a.cbfb27da.js delete mode 100755 assets/js/ef9f7d37.246c8683.js create mode 100644 assets/js/ef9f7d37.a21a56ab.js rename assets/js/{1cd7469c.a8f155a8.js => effe0ec2.1d686911.js} (66%) mode change 100755 => 100644 create mode 100644 assets/js/f83e606a.14966a77.js delete mode 100755 assets/js/f83e606a.269bd854.js delete mode 100755 assets/js/main.4229acf3.js create mode 100644 assets/js/main.ca4c7257.js rename assets/js/{main.4229acf3.js.LICENSE.txt => main.ca4c7257.js.LICENSE.txt} (66%) mode change 100755 => 100644 create mode 100644 assets/js/runtime~main.4f1a7fee.js delete mode 100755 assets/js/runtime~main.8a2e657e.js mode change 100755 => 100644 considerations.html mode change 100755 => 100644 considerations/compatibility.html mode change 100755 => 100644 considerations/security.html mode change 100755 => 100644 features-and-use-cases.html mode change 100755 => 100644 features-and-use-cases/additional-cls-setup.html delete mode 100755 features-and-use-cases/breakin-out-of-di.html create mode 100644 features-and-use-cases/breaking-out-of-di.html mode change 100755 => 100644 features-and-use-cases/proxy-providers.html mode change 100755 => 100644 features-and-use-cases/request-id.html mode change 100755 => 100644 features-and-use-cases/type-safety-and-type-inference.html mode change 100755 => 100644 features-and-use-cases/usage-outside-of-web-request.html mode change 100755 => 100644 img/favicon.ico mode change 100755 => 100644 img/logo.png mode change 100755 => 100644 index.html mode change 100755 => 100644 introduction/how-it-works.html mode change 100755 => 100644 introduction/installation.html mode change 100755 => 100644 introduction/quick-start.html delete mode 100755 lunr-index-1697660838110.json create mode 100644 lunr-index-1705944535620.json mode change 100755 => 100644 lunr-index.json mode change 100755 => 100644 migration-guide.html mode change 100755 => 100644 migration-guide/v2x-v3x.html create mode 100644 migration-guide/v3x-v4x.html create mode 100644 plugins.html create mode 100644 plugins/available-plugins.html create mode 100644 plugins/available-plugins/transactional.html create mode 100644 plugins/available-plugins/transactional/creating-custom-adapter.html create mode 100644 plugins/available-plugins/transactional/prisma-adapter.html create mode 100644 plugins/plugin-api.html delete mode 100755 search-doc-1697660838110.json create mode 100644 search-doc-1705944535620.json mode change 100755 => 100644 search-doc.json mode change 100755 => 100644 setting-up-cls-context.html create mode 100644 setting-up-cls-context/using-a-decorator.html delete mode 100755 setting-up-cls-context/using-a-decurator.html mode change 100755 => 100644 setting-up-cls-context/using-a-guard.html mode change 100755 => 100644 setting-up-cls-context/using-a-middleware.html mode change 100755 => 100644 setting-up-cls-context/using-an-interceptor.html create mode 100644 setting-up-cls-context/using_cls_run.html mode change 100755 => 100644 sitemap.xml diff --git a/.nojekyll b/.nojekyll old mode 100755 new mode 100644 diff --git a/404.html b/404.html old mode 100755 new mode 100644 index 3d0f516..cca0bf5 --- a/404.html +++ b/404.html @@ -1,16 +1,13 @@ - + - -Page Not Found | NestJS CLS - - + +NestJS CLS + + -
-
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.

- - +
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/api.html b/api.html old mode 100755 new mode 100644 index 1ef4911..783c7ce --- a/api.html +++ b/api.html @@ -1,16 +1,14 @@ - + - -API | NestJS CLS - - + +API | NestJS CLS + + -
-
Skip to main content
- - +
Skip to main content
\ No newline at end of file diff --git a/api/module-options.html b/api/module-options.html old mode 100755 new mode 100644 index 5297bfb..fa2e335 --- a/api/module-options.html +++ b/api/module-options.html @@ -1,36 +1,121 @@ - + - -Module Options | NestJS CLS - - + +Module Options | NestJS CLS + + -
-
Skip to main content

Module Options

forRoot(Async)

The ClsModule.forRoot() method takes the following ClsModuleOptions:

  • middleware?: ClsMiddlewareOptions
    -An object with additional options for the ClsMiddleware, see below.

  • guard?: ClsGuardOptions
    -An object with additional options for the ClsGuard, see below.

  • interceptor?: ClsInterceptorOptions
    -An object with additional options for the ClsInterceptor, see below.

  • global?: boolean (default false)
    -Whether to make the module global, so you do not have to import ClsModule.forFeature() in other modules.

  • proxyProviders?: Type[]
    -Array of Proxy Providers that should be registered in the root module. Currently only accepts sync class Proxy providers, use ClsModule.forFeatureAsync() for more complex use-cases.

ClsModule.forRootAsync() is also available. You can supply the usual imports, inject and useFactory parameters as usual.

info

Please note: If you intend to use multiple enhancers at the same time (e.g. initialize the CLS context in a middleware and then set some CLS variables additional CLS variables in an interceptor), be aware that the only the first one in the chain will set the Request ID.

forFeature(Async)

The ClsModule.forFeature() method can be used to register a Proxy Providers. The Sync method only accepts Class Proxy providers.

The ClsModule.forFeatureAsync() method accepts either ClsModuleProxyClassProviderOptions or ClsModuleProxyFactoryProviderOptions that both accept these options:

  • provide?: any
    -Custom injection token to use for the provider. In case of a class provider, this parameter is optional, as the class reference passed to useClass will be used by default.

  • imports? any[]
    -Optional list of imported modules that export the providers which are required for the provider.

  • extraProviders?: Provider[] -Optional list of additional providers that should be available to the Proxy. Useful for passing configuration from a parent dynamic module.

The ClsModuleProxyClassProviderOptions interface further accepts:

  • useClass: Type
    The target class that will be used by this Proxy Provider. Make sure it is decorated with @InjectableProxy.

The ClsModuleProxyFactoryProviderOptions interface further accepts:

  • inject: any[]
    -An array of injection tokens for providers used in the useFactory.

  • useFactory: (...args: any[]) => any
    -Factory function that accepts an array of providers in the order of the according tokens in the inject array. Returns (or resolves with) an object (or a function) that will be used by this Proxy Provider.

Middleware & Enhancer options

All of the Cls{Middleware,Guard,Interceptor}Options take the following parameters (either in ClsModuleOptions or directly when instantiating them manually):

  • mount?: boolean (default false)
    -Whether to automatically mount the middleware/guard/interceptor to every route (not applicable when instantiating them manually)

  • generateId?: boolean (default false)
    -Whether to automatically generate a request ID. It will be available under the CLS_ID key.

  • idGenerator?: (req: Request) => string | Promise<string>
    -idGenerator?: (ctx: ExecutionContext) => string | Promise<string>
    -An optional function for generating the request ID. It takes the Request object (or the ExecutionContext in case of a Guard or Interceptor) as an argument and (synchronously or asynchronously) returns a string. The default implementation uses Math.random() to generate a string of 8 characters.

  • setup?: (cls: ClsService, req: Request) => void | Promise<void>;
    -setup?: (cls: ClsService, ctx: ExecutionContext) => void | Promise<void>;
    -Function that executes after the CLS context had been initialised. It can be used to put additional variables in the CLS context.

  • resolveProxyProviders?: boolean (default true)
    -Whether to automatically resolve Proxy Providers in the enhancer (if any are registered).

The ClsMiddlewareOptions additionally takes the following parameters:

  • saveReq?: boolean (default true)
    -Whether to store the Request object to the context. It will be available under the CLS_REQ key.

  • saveRes?: boolean (default false)
    -Whether to store the Response object to the context. It will be available under the CLS_RES key

  • useEnterWith?: boolean (default false)
    -Set to true to set up the context using a call to AsyncLocalStorage#enterWith instead of wrapping the next() call with the safer AsyncLocalStorage#run. Most of the time this should not be necessary, but some frameworks are known to lose the context with run.

- - +
Skip to main content

Module Options

+

forRoot(Async)

+

The ClsModule.forRoot() method takes the following ClsModuleOptions:

+
    +
  • +

    middleware?:ClsMiddlewareOptions
    +An object with additional options for the ClsMiddleware, see below.

    +
  • +
  • +

    guard?:ClsGuardOptions
    +An object with additional options for the ClsGuard, see below.

    +
  • +
  • +

    interceptor?:ClsInterceptorOptions
    +An object with additional options for the ClsInterceptor, see below.

    +
  • +
  • +

    global?:boolean** (default false)
    +Whether to make the module global, so you do not have to import ClsModule.forFeature() in other modules.

    +
  • +
  • +

    proxyProviders?:Type[]
    +Array of Proxy Providers that should be registered in the root module. Currently only accepts sync class Proxy providers, use ClsModule.forFeatureAsync() for more complex use-cases.

    +
  • +
+

ClsModule.forRootAsync() is also available. You can supply the usual imports, inject and useFactory parameters as usual.

+
info

Please note: If you intend to use multiple enhancers at the same time (e.g. initialize the CLS context in a middleware and then set some additional CLS variables in an interceptor), be aware that the only the first one in the chain will set the Request ID.

+

forFeature(Async)

+

The ClsModule.forFeature() method can be used to register a Proxy Providers. The Sync method only accepts Class Proxy providers.

+

The ClsModule.forFeatureAsync() method accepts either ClsModuleProxyClassProviderOptions or ClsModuleProxyFactoryProviderOptions that both accept these options:

+
    +
  • +

    provide?:any
    +Custom injection token to use for the provider. In case of a class provider, this parameter is optional, as the class reference passed to useClass will be used by default.

    +
  • +
  • +

    imports?any[]
    +Optional list of imported modules that export the providers which are required for the provider.

    +
  • +
  • +

    extraProviders?:Provider[]
    +Optional list of additional providers that should be available to the Proxy. Useful for passing configuration from a parent dynamic module.

    +
  • +
+

The ClsModuleProxyClassProviderOptions interface further accepts:

+
    +
  • useClass:Type
    +The target class that will be used by this Proxy Provider. Make sure it is decorated with @InjectableProxy.
  • +
+

The ClsModuleProxyFactoryProviderOptions interface further accepts:

+
    +
  • +

    inject:any[]
    +An array of injection tokens for providers used in the useFactory.

    +
  • +
  • +

    useFactory:(...args: any[]) => any
    +Factory function that accepts an array of providers in the order of the according tokens in the inject array. Returns (or resolves with) an object (or a function) that will be used by this Proxy Provider.

    +
  • +
  • +

    type?:'function' | 'object'
    +Whether the Proxy Provider should be a function or an object. Defaults to 'object'. See Caveats for more information.

    +
  • +
+

Middleware & Enhancer options

+

All of the Cls{Middleware,Guard,Interceptor}Options take the following parameters (either in ClsModuleOptions or directly when instantiating them manually):

+
    +
  • +

    mount?:boolean (default false)
    +Whether to automatically mount the middleware/guard/interceptor to every route (not applicable when instantiating them manually)

    +
  • +
  • +

    generateId?:boolean (default false)
    +Whether to automatically generate a request ID. It will be available under the CLS_ID key.

    +
  • +
  • +

    idGenerator?:(req: Request) => string | Promise<string>
    +idGenerator?:(ctx: ExecutionContext) => string | Promise<string>
    +An optional function for generating the request ID. It takes the Request object (or the ExecutionContext in case of a Guard or Interceptor) as an argument and (synchronously or asynchronously) returns a string. The default implementation uses Math.random() to generate a string of 8 characters.

    +
  • +
  • +

    setup?:(cls: ClsService, req: Request) => void | Promise<void>;
    +setup?:(cls: ClsService, ctx: ExecutionContext) => void | Promise<void>;
    +Function that executes after the CLS context had been initialised. It can be used to put additional variables in the CLS context.

    +
  • +
  • +

    resolveProxyProviders?:boolean (default true)
    +Whether to automatically resolve Proxy Providers in the enhancer (if any are registered).

    +
  • +
  • +

    initializePlugins?:boolean (default true)
    +Whether to run the onClsInit hook for plugins as a part of the CLS context registration (runs before resolveProxyProviders just after setup).

    +
  • +
+

The ClsMiddlewareOptions additionally takes the following parameters:

+
    +
  • +

    saveReq?:boolean (default true)
    +Whether to store the Request object to the context. It will be available under the CLS_REQ key.

    +
  • +
  • +

    saveRes?:boolean (default false)
    +Whether to store the Response object to the context. It will be available under the CLS_RES key

    +
  • +
  • +

    useEnterWith?:boolean (default false)
    +Set to true to set up the context using a call to AsyncLocalStorage#enterWith instead of wrapping the next() call with the safer AsyncLocalStorage#run. Most of the time this should not be necessary, but some frameworks are known to lose the context with run.

    +
  • +
\ No newline at end of file diff --git a/api/service-interface.html b/api/service-interface.html old mode 100755 new mode 100644 index b98cb8f..1f590ca --- a/api/service-interface.html +++ b/api/service-interface.html @@ -1,31 +1,94 @@ - + - -Service Interface | NestJS CLS - - + +Service Interface | NestJS CLS + + -
-
Skip to main content

Service Interface

ClsService

The injectable ClsService provides the following API to manipulate the cls context:

The S type parameter is used as the type of custom ClsStore.

  • get(): S
    -Get the entire CLS context.

  • get(key?: keyof S): S[key]
    -Retrieve a value from the CLS context by key.

  • getId(): string;
    -Retrieve the request ID (a shorthand for cls.get(CLS_ID))

  • has(key: keyof S): boolean
    -Check if a key is in the CLS context.

  • set(key: keyof S, value: S[key]): void
    -Set a value on the CLS context.

  • setIfUndefined(key: keyof S, value: S[key]): void
    -Set a value on the CLS context only if it hasn't been already set. Useful for ensuring idempotence if you have multiple entry points.

  • run(callback: () => T): T
    +

    Service Interface

    +

    ClsService

    +

    The injectable ClsService provides the following API to manipulate the cls context:

    +

    The S type parameter is used as the type of custom ClsStore.

    +
      +
    • +

      get(): S
      +Get the entire CLS context.

      +
    • +
    • +

      get(key?: keyof S): S[key]
      +Retrieve a value from the CLS context by key.

      +
    • +
    • +

      getId(): string;
      +Retrieve the request ID (a shorthand for cls.get(CLS_ID))

      +
    • +
    • +

      has(key: keyof S): boolean
      +Check if a key is in the CLS context.

      +
    • +
    • +

      set(key: keyof S, value: S[key]): void
      +Set a value on the CLS context.

      +
    • +
    • +

      setIfUndefined(key: keyof S, value: S[key]): void
      +Set a value on the CLS context only if it hasn't been already set. Useful for ensuring idempotence if you have multiple entry points.

      +
    • +
    • +

      run(callback: () => T): T
      run(options: ClsContextOptions, callback: () => T): T;
      -Run the callback in a shared CLS context. Optionally takes an options object as the first parameter.

    • runWith(store: S, callback: () => T): T
      -Run the callback in a new CLS context (while supplying the default store).

    • enter(): void;
      +Run the callback in a shared CLS context. Optionally takes an options object as the first parameter.

      +
    • +
    • +

      runWith(store: S, callback: () => T): T
      +Run the callback in a new CLS context (while supplying the default store).

      +
    • +
    • +

      enter(): void;
      enter(options: ClsContextOptions): void
      -Run any following code in a shared CLS context. Optionally takes an options object as the first parameter.

    • enterWith(store: S): void
      -Run any following code in a new CLS context (while supplying the default store).

    • exit(callback: () => T): T
      -Run the callback without access to a shared CLS context.

    • isActive(): boolean
      -Whether the current code runs within an active CLS context.

    • resolveProxyProviders(): Promise<void>
      -Manually trigger resolution of Proxy Providers.

    ClsContextOptions

    The run and enter methods can take an additional options object with the following settings:

    • ifNested?: 'override' | 'inherit' | 'reuse'
      Sets the behavior of nested CLS context creation in case the method is invoked in an existing context. It has no effect if no parent context exist.
      • override (default) - Run the callback with an new empty context.
        No values from the parent context will be accessible within the wrapped code.
      • inherit - Run the callback with a shallow copy of the parent context.
        Re-assignments of top-level properties will not be reflected in the parent context. However, modifications of existing properties will be reflected.
      • reuse - Reuse existing context without creating a new one. All modifications to the existing context will be reflected.
    - - +Run any following code in a shared CLS context. Optionally takes an options object as the first parameter.

    +
  • +
  • +

    enterWith(store: S): void
    +Run any following code in a new CLS context (while supplying the default store).

    +
  • +
  • +

    exit(callback: () => T): T
    +Run the callback without access to a shared CLS context.

    +
  • +
  • +

    isActive(): boolean
    +Whether the current code runs within an active CLS context.

    +
  • +
  • +

    resolveProxyProviders(): Promise<void>
    +Manually trigger resolution of Proxy Providers.

    +
  • +
  • +

    initializePlugins(): Promise<void>
    +Manually trigger onClsInit hooks of registered plugins.

    +
  • +
+

ClsContextOptions

+

The run and enter methods can take an additional options object with the following settings:

+
    +
  • ifNested?:'inherit' | 'reuse' | 'override'
    +Sets the behavior of nested CLS context creation in case the method is invoked in an existing context. It has no effect if no parent context exist. +
      +
    • inherit (default) - Run the callback with a shallow copy of the parent context.
      +Re-assignments of top-level properties will not be reflected in the parent context. However, modifications of existing properties will be reflected.
    • +
    • reuse - Reuse existing context without creating a new one. All modifications to the +existing context will be reflected.
    • +
    • override - Run the callback with an new empty context.
      +No values from the parent context will be accessible within the wrapped code.
    • +
    +
  • +
+

::: Note

+

Until v4, the default behavior was override. This was changed to inherit since v4 to make the behavior more intuitive.

+

:::

\ No newline at end of file diff --git a/assets/css/styles.46bfc1df.css b/assets/css/styles.46bfc1df.css deleted file mode 100755 index 0311e10..0000000 --- a/assets/css/styles.46bfc1df.css +++ /dev/null @@ -1 +0,0 @@ -.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}body,ol ol,ol ul,ul ol,ul ul{margin:0}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.toggleButton_MMFG,html{-webkit-tap-highlight-color:transparent}.clean-list,.containsTaskList_QWGu,.details_IpIu>summary,.dropdown__menu,.menu__list{list-style:none}.searchbox__reset:focus,.searchbox__submit:focus,body:not(.navigation-with-keyboard) :not(input):focus{outline:0}pre,table{overflow:auto}.markdown li,body{word-wrap:break-word}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:transparent;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:rgba(0,0,0,.05);--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 rgba(0,0,0,.1);--ifm-global-shadow-md:0 5px 40px rgba(0,0,0,.2);--ifm-global-shadow-tl:0 12px 28px 0 rgba(0,0,0,.2),0 2px 4px 0 rgba(0,0,0,.1);--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:transparent;--ifm-table-stripe-background:rgba(0,0,0,.03);--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#a51d2d;--ifm-color-primary-dark:#951a28;--ifm-color-primary-darker:#8c1926;--ifm-color-primary-darkest:#74141f;--ifm-color-primary-light:#b62031;--ifm-color-primary-lighter:#be2134;--ifm-color-primary-lightest:#d7263a;--ifm-code-font-size:95%;--docusaurus-highlighted-code-line-bg:rgba(0,0,0,.1);--docusaurus-announcement-bar-height:auto;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docusaurus-collapse-button-bg:transparent;--docusaurus-collapse-button-bg-hover:rgba(0,0,0,.1);--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:transparent}*,.algolia-autocomplete .ds-dropdown-menu *{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);text-rendering:optimizelegibility}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none,.tabItem_l0OV{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_BiEj,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid rgba(0,0,0,.1);border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:transparent;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul,.tabList_J5MA{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_XzR1 .wordWrapButtonIcon_HV9T{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_P5_N,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:rgba(53,120,229,.15);--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:rgba(235,237,240,.15);--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:rgba(0,164,0,.15);--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:rgba(84,199,236,.15);--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:rgba(255,186,0,.15);--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:rgba(250,56,62,.15);--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs__link:any-link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:transparent;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_BE9Z:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor transparent;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_tjFy article>:first-child,.docItemContainer_tjFy header+*,.footer__item{margin-top:0}.admonitionContent_yySL>:last-child,.collapsibleContent_Fd2D>:last-child,.footer__items,.tabItem_wHwb>:last-child{margin-bottom:0}.codeBlockStandalone_wQog,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_IpIu[data-collapsed=false].isBrowser_QD4r>summary:before,.details_IpIu[open]:not(.isBrowser_QD4r)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;filter:var(--ifm-menu-link-sublist-icon-filter);content:""}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;position:fixed;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;left:0;top:0;visibility:hidden}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_t7IR,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:hsla(0,0%,100%,.1);--ifm-navbar-search-input-placeholder-color:hsla(0,0%,100%,.5);color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:hsla(0,0%,100%,.05);--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:rgba(0,0,0,.6);right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover{text-decoration:none}.pagination-nav{grid-gap:var(--ifm-spacing-horizontal);display:grid;gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_QWGu>li)>.containsTaskList_QWGu{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid transparent;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:hsla(0,0%,100%,.05);--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:hsla(0,0%,100%,.1);--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:hsla(0,0%,100%,.07);--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}[data-theme=dark]{--ifm-color-primary:#fe6151;--ifm-color-primary-dark:#fe4330;--ifm-color-primary-darker:#fe341f;--ifm-color-primary-darkest:#e91701;--ifm-color-primary-light:#fe7f72;--ifm-color-primary-lighter:#fe8e83;--ifm-color-primary-lightest:#ffbcb5;--docusaurus-highlighted-code-line-bg:hsla(0,0%,100%,.08)}#__docusaurus-base-url-issue-banner-container,.themedImage_BQGR,[data-theme=dark] .lightToggleIcon_lgto,[data-theme=light] .darkToggleIcon_U96C,html[data-announcement-bar-initially-dismissed=true] .announcementBar_zJRd{display:none}.skipToContent_oPtH{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_oPtH:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_J5rP{line-height:0;padding:0}.content_bSb_{font-size:85%;padding:5px 0;text-align:center}.content_bSb_ a{color:inherit;text-decoration:underline}.announcementBar_zJRd{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_NpUd{flex:0 0 10px}.announcementBarClose_Jjdj{align-self:stretch;flex:0 0 30px}.toggle_ki11{height:2rem;width:2rem}.toggleButton_MMFG{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_MMFG:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_Uw7m{cursor:not-allowed}.darkNavbarColorModeToggle_m8pZ:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedImage--dark_bGx0,[data-theme=light] .themedImage--light_HAxW{display:initial}.iconExternalLink_nPrP{margin-left:.3rem}.iconLanguage_kvP7{margin-right:5px;vertical-align:text-bottom}.navbarHideable_hhpl{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_nmcs{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_WE6Q{color:red;white-space:pre-wrap}.footerLogoLink_tutC{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_tutC:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.mainWrapper_MB5r{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.iconEdit_bHB7{margin-right:.3em;vertical-align:sub}.tag_otG2{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_otG2:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_s0E1{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_PGyn{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_PGyn:after,.tagWithCount_PGyn:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_PGyn:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_PGyn:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_PGyn span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tags_Ow0B{display:inline}.tag_DFxh{display:inline-block;margin:0 .4rem .5rem 0}.lastUpdated_pbO5{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_iI2p{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_iI2p:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_cHjC:after,.tocCollapsibleExpanded_BbRn{transform:none}.tocCollapsible_wXna{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.buttonGroup_aaMX button,.codeBlockContainer_mQmQ{background:var(--prism-background-color);color:var(--prism-color)}.tocCollapsibleContent_vea0>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vea0 ul li{margin:.4rem .8rem}.tocCollapsibleContent_vea0 a{display:block}.tableOfContents_XG6w{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.anchorWithStickyNavbar_JmGV{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_pMLv{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.codeBlockContainer_mQmQ{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_D5yF{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_x_ju{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_RMoD{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_x_ju+.codeBlockContent_D5yF .codeBlock_RMoD{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_AclH{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_O625{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup_aaMX{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup_aaMX button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup_aaMX button:focus-visible,.buttonGroup_aaMX button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup_aaMX button{opacity:.4}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_FAqz{counter-increment:a;display:table-row}.codeLineNumber_BE9Z{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_BE9Z:before{content:counter(a);opacity:.4}.codeLineContent_EF2y{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_TYdd{opacity:1!important}.copyButtonIcons_z5j7{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_FoOz,.copyButtonSuccessIcon_L0B6{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_L0B6{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_TYdd .copyButtonIcon_FoOz{opacity:0;transform:scale(.33)}.copyButtonCopied_TYdd .copyButtonSuccessIcon_L0B6{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_HV9T{height:1.2rem;width:1.2rem}.details_IpIu{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_IpIu>summary{cursor:pointer;padding-left:1rem;position:relative}.details_IpIu>summary::-webkit-details-marker{display:none}.details_IpIu>summary:before{border-color:transparent transparent transparent var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_Fd2D{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_jERq{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.img_SS3x{height:auto}.admonition_uH4V{margin-bottom:1em}.admonitionHeading_P5_N{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.3rem}.admonitionHeading_P5_N code{text-transform:none}.admonitionIcon_MF44{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_MF44 svg{fill:var(--ifm-alert-foreground-color);display:inline-block;height:1.6em;width:1.6em}.breadcrumbHomeIcon_sfvy{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_T5ub{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.backToTopButton_iEvu{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_iEvu:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_DO8w{opacity:1;transform:scale(1);visibility:visible}[data-theme=dark]:root{--docusaurus-collapse-button-bg:hsla(0,0%,100%,.05);--docusaurus-collapse-button-bg-hover:hsla(0,0%,100%,.1)}.collapseSidebarButton_oTwn{display:none;margin:0}.docSidebarContainer_y0RQ,.sidebarLogo_CYvI{display:none}.docMainContainer_sTIZ,.docPage_KLoz{display:flex;width:100%}.docPage_KLoz{flex:1 0}.docsWrapper_ct1J{display:flex;flex:1 0 auto}.searchbox,.searchbox__input{box-sizing:border-box;display:inline-block}.algolia-docsearch-suggestion{border-bottom-color:#3a3dd1}.algolia-docsearch-suggestion--category-header{background-color:#4b54de}.algolia-docsearch-suggestion--highlight{color:#3a33d1}.algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--highlight{background-color:#4d47d5}.aa-cursor .algolia-docsearch-suggestion--content{color:#272296}.aa-cursor .algolia-docsearch-suggestion{background:#ebebfb}.searchbox{height:32px!important;position:relative;visibility:visible!important;white-space:nowrap;width:200px}.searchbox .algolia-autocomplete{display:block;height:100%;width:100%}.searchbox__wrapper{height:100%;position:relative;width:100%;z-index:999}.searchbox__input{-webkit-appearance:none;appearance:none;background:#fff!important;border:0;border-radius:16px;box-shadow:inset 0 0 0 1px #ccc;font-size:12px;height:100%;padding:0 26px 0 32px;transition:box-shadow .4s,background .4s;vertical-align:middle;white-space:normal;width:100%}.searchbox__input::-webkit-search-cancel-button,.searchbox__input::-webkit-search-decoration,.searchbox__input::-webkit-search-results-button,.searchbox__input::-webkit-search-results-decoration{display:none}.searchbox__input:hover{box-shadow:inset 0 0 0 1px #b3b3b3}.searchbox__input:active,.searchbox__input:focus{background:#fff;box-shadow:inset 0 0 0 1px #aaa;outline:0}.searchbox__input::placeholder{color:#aaa}.searchbox__submit{background-color:rgba(69,142,225,0);border:0;border-radius:16px 0 0 16px;font-size:inherit;height:100%;left:0;margin:0;padding:0;position:absolute;right:inherit;text-align:center;top:0;-webkit-user-select:none;user-select:none;vertical-align:middle;width:32px}.searchbox__submit:before{content:"";display:inline-block;height:100%;margin-right:-4px;vertical-align:middle}.algolia-autocomplete .ds-dropdown-menu .ds-suggestion,.searchbox__submit:active,.searchbox__submit:hover{cursor:pointer}.searchbox__submit svg{fill:#6d7e96;height:14px;vertical-align:middle;width:14px}.searchbox__reset{fill:rgba(0,0,0,.5);background:none;border:0;cursor:pointer;display:block;font-size:inherit;margin:0;padding:0;position:absolute;right:8px;top:8px;-webkit-user-select:none;user-select:none}.searchbox__reset.hide{display:none}.searchbox__reset svg{display:block;height:8px;margin:4px;width:8px}.searchbox__input:valid~.searchbox__reset{animation-duration:.15s;animation-name:a;display:block}@keyframes a{0%{opacity:0;transform:translate3d(-20%,0,0)}to{opacity:1;transform:none}}.algolia-autocomplete .ds-dropdown-menu:before{background:#373940;border-radius:2px;border-right:1px solid #373940;border-top:1px solid #373940;content:"";display:block;height:14px;position:absolute;top:-7px;transform:rotate(-45deg);width:14px;z-index:1000}.algolia-autocomplete .ds-dropdown-menu{box-shadow:0 1px 0 0 rgba(0,0,0,.2),0 2px 3px 0 rgba(0,0,0,.1)}.algolia-autocomplete .ds-dropdown-menu .ds-suggestions{position:relative;z-index:1000}.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-]{background:#fff;border-radius:4px;overflow:auto;padding:0;position:relative}.algolia-autocomplete .algolia-docsearch-suggestion{display:block;overflow:hidden;padding:0;position:relative;text-decoration:none}.algolia-autocomplete .ds-cursor .algolia-docsearch-suggestion--wrapper{background:#f1f1f1;box-shadow:inset -2px 0 0 #61dafb}.algolia-autocomplete .algolia-docsearch-suggestion--highlight{background:#ffe564;padding:.1em .05em}.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl0 .algolia-docsearch-suggestion--highlight,.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl1 .algolia-docsearch-suggestion--highlight{background:inherit;color:inherit}.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{background:inherit;box-shadow:inset 0 -2px 0 0 rgba(69,142,225,.8);color:inherit;padding:0 0 1px}.algolia-autocomplete .algolia-docsearch-suggestion--content{cursor:pointer;display:block;float:right;padding:5.33333px 0 5.33333px 10.66667px;position:relative;width:70%}.algolia-autocomplete .algolia-docsearch-suggestion--content:before{background:#ececec;content:"";display:block;height:100%;left:-1px;position:absolute;top:0;width:1px}.algolia-autocomplete .algolia-docsearch-suggestion--category-header{background-color:#373940;color:#fff;display:none;font-size:14px;font-weight:700;letter-spacing:.08em;margin:0;padding:5px 8px;position:relative;text-transform:uppercase}.algolia-autocomplete .algolia-docsearch-suggestion--wrapper{background-color:#fff;float:left;padding:8px 0 0;width:100%}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column{word-wrap:break-word;color:#777;display:none;float:left;font-size:.9em;padding:5.33333px 10.66667px;position:relative;text-align:right;width:30%}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column:before{background:#ececec;content:"";display:block;height:100%;position:absolute;right:0;top:0;width:1px}.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__main .algolia-docsearch-suggestion--category-header,.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__secondary{display:block}.algolia-autocomplete .algolia-docsearch-suggestion--no-results:before,.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-inline{display:none}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column .algolia-docsearch-suggestion--highlight{background-color:inherit;color:inherit}.algolia-autocomplete .algolia-docsearch-suggestion--title{color:#02060c;font-size:.9em;font-weight:700;margin-bottom:4px}.algolia-autocomplete .algolia-docsearch-suggestion--text{color:#63676d;display:block;font-size:.85em;line-height:1.2em;padding-right:2px}.algolia-autocomplete .algolia-docsearch-suggestion--no-results{background-color:#373940;font-size:1.2em;margin-top:-8px;padding:8px 0;text-align:center;width:100%}.algolia-autocomplete .algolia-docsearch-suggestion--no-results .algolia-docsearch-suggestion--text{color:#fff;margin-top:4px}.algolia-autocomplete .algolia-docsearch-suggestion code{background-color:#ebebeb;border:none;border-radius:3px;color:#222;font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace;font-size:90%;padding:1px 5px}.algolia-autocomplete .algolia-docsearch-suggestion code .algolia-docsearch-suggestion--highlight{background:none}.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__main .algolia-docsearch-suggestion--category-header{color:#fff;display:block}.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__secondary .algolia-docsearch-suggestion--subcategory-column{display:block}.algolia-autocomplete .algolia-docsearch-footer{background-color:#fff;float:right;font-size:0;height:30px;line-height:0;width:100%;z-index:2000}.algolia-autocomplete .algolia-docsearch-footer--logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 130 18'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath fill='url(%2523a)' d='M59.4.02h13.3a2.37 2.37 0 0 1 2.38 2.37V15.6a2.37 2.37 0 0 1-2.38 2.36H59.4a2.37 2.37 0 0 1-2.38-2.36V2.38A2.37 2.37 0 0 1 59.4.02z'/%3E%3Cpath fill='%2523FFF' d='M66.26 4.56c-2.82 0-5.1 2.27-5.1 5.08 0 2.8 2.28 5.07 5.1 5.07 2.8 0 5.1-2.26 5.1-5.07 0-2.8-2.28-5.07-5.1-5.07zm0 8.65c-2 0-3.6-1.6-3.6-3.56 0-1.97 1.6-3.58 3.6-3.58 1.98 0 3.6 1.6 3.6 3.58a3.58 3.58 0 0 1-3.6 3.57zm0-6.4v2.66c0 .07.08.13.15.1l2.4-1.24c.04-.02.06-.1.03-.14a2.96 2.96 0 0 0-2.46-1.5.1.1 0 0 0-.1.1zm-3.33-1.96-.3-.3a.78.78 0 0 0-1.12 0l-.36.36a.77.77 0 0 0 0 1.1l.3.3c.05.05.13.04.17 0 .2-.25.4-.5.6-.7.23-.23.46-.43.7-.6.07-.04.07-.1.03-.16zm5-.8V3.4a.78.78 0 0 0-.78-.78h-1.83a.78.78 0 0 0-.78.78v.63c0 .07.06.12.14.1a5.74 5.74 0 0 1 1.58-.22c.52 0 1.04.07 1.54.2a.1.1 0 0 0 .13-.1z'/%3E%3Cpath fill='%2523182359' d='M102.16 13.76c0 1.46-.37 2.52-1.12 3.2-.75.67-1.9 1-3.44 1-.56 0-1.74-.1-2.67-.3l.34-1.7c.78.17 1.82.2 2.36.2.86 0 1.48-.16 1.84-.5.37-.36.55-.88.55-1.57v-.35a6.37 6.37 0 0 1-.84.3 4.15 4.15 0 0 1-1.2.17 4.5 4.5 0 0 1-1.6-.28 3.38 3.38 0 0 1-1.26-.82 3.74 3.74 0 0 1-.8-1.35c-.2-.54-.3-1.5-.3-2.2 0-.67.1-1.5.3-2.06a3.92 3.92 0 0 1 .9-1.43 4.12 4.12 0 0 1 1.45-.92 5.3 5.3 0 0 1 1.94-.37c.7 0 1.35.1 1.97.2a15.86 15.86 0 0 1 1.6.33v8.46zm-5.95-4.2c0 .9.2 1.88.6 2.3.4.4.9.62 1.53.62.34 0 .66-.05.96-.15a2.75 2.75 0 0 0 .73-.33V6.7a8.53 8.53 0 0 0-1.42-.17c-.76-.02-1.36.3-1.77.8-.4.5-.62 1.4-.62 2.23zm16.13 0c0 .72-.1 1.26-.32 1.85a4.4 4.4 0 0 1-.9 1.53c-.38.42-.85.75-1.4.98-.54.24-1.4.37-1.8.37-.43 0-1.27-.13-1.8-.36a4.1 4.1 0 0 1-1.4-.97 4.5 4.5 0 0 1-.92-1.52 5.04 5.04 0 0 1-.33-1.84c0-.72.1-1.4.32-2 .22-.6.53-1.1.92-1.5.4-.43.86-.75 1.4-.98a4.55 4.55 0 0 1 1.78-.34 4.7 4.7 0 0 1 1.8.34c.54.23 1 .55 1.4.97.38.42.68.92.9 1.5.23.6.35 1.3.35 2zm-2.2 0c0-.92-.2-1.7-.6-2.22-.38-.54-.94-.8-1.64-.8-.72 0-1.27.26-1.67.8-.4.54-.58 1.3-.58 2.22 0 .93.2 1.56.6 2.1.38.54.94.8 1.64.8s1.25-.26 1.65-.8c.4-.55.6-1.17.6-2.1zm6.97 4.7c-3.5.02-3.5-2.8-3.5-3.27L113.57.92l2.15-.34v10c0 .25 0 1.87 1.37 1.88v1.8zm3.77 0h-2.15v-9.2l2.15-.33v9.54zM119.8 3.74c.7 0 1.3-.58 1.3-1.3 0-.7-.58-1.3-1.3-1.3-.73 0-1.3.6-1.3 1.3 0 .72.58 1.3 1.3 1.3zm6.43 1c.7 0 1.3.1 1.78.27.5.18.88.42 1.17.73.28.3.5.74.6 1.18.13.46.2.95.2 1.5v5.47a25.24 25.24 0 0 1-1.5.25c-.67.1-1.42.15-2.25.15a6.83 6.83 0 0 1-1.52-.16 3.2 3.2 0 0 1-1.18-.5 2.46 2.46 0 0 1-.76-.9c-.18-.37-.27-.9-.27-1.44 0-.52.1-.85.3-1.2.2-.37.48-.67.83-.9a3.6 3.6 0 0 1 1.23-.5 7.07 7.07 0 0 1 2.2-.1l.83.16V8.4c0-.25-.03-.48-.1-.7a1.5 1.5 0 0 0-.3-.58c-.15-.18-.34-.3-.58-.4a2.54 2.54 0 0 0-.92-.17c-.5 0-.94.06-1.35.13-.4.08-.75.16-1 .25l-.27-1.74c.27-.1.67-.18 1.2-.28a9.34 9.34 0 0 1 1.65-.14zm.18 7.74c.66 0 1.15-.04 1.5-.1V10.2a5.1 5.1 0 0 0-2-.1c-.23.03-.45.1-.64.2a1.17 1.17 0 0 0-.47.38c-.13.17-.18.26-.18.52 0 .5.17.8.5.98.32.2.74.3 1.3.3zM84.1 4.8c.72 0 1.3.08 1.8.26.48.17.87.42 1.15.73.3.3.5.72.6 1.17.14.45.2.94.2 1.47v5.48a25.24 25.24 0 0 1-1.5.26c-.67.1-1.42.14-2.25.14a6.83 6.83 0 0 1-1.52-.16 3.2 3.2 0 0 1-1.18-.5 2.46 2.46 0 0 1-.76-.9c-.18-.38-.27-.9-.27-1.44 0-.53.1-.86.3-1.22.2-.36.5-.65.84-.88a3.6 3.6 0 0 1 1.24-.5 7.07 7.07 0 0 1 2.2-.1c.26.03.54.08.84.15v-.35c0-.24-.03-.48-.1-.7a1.5 1.5 0 0 0-.3-.58c-.15-.17-.34-.3-.58-.4a2.54 2.54 0 0 0-.9-.15c-.5 0-.96.05-1.37.12-.4.07-.75.15-1 .24l-.26-1.75c.27-.08.67-.17 1.18-.26a8.9 8.9 0 0 1 1.66-.15zm.2 7.73c.65 0 1.14-.04 1.48-.1v-2.17a5.1 5.1 0 0 0-1.98-.1c-.24.03-.46.1-.65.18a1.17 1.17 0 0 0-.47.4c-.12.17-.17.26-.17.52 0 .5.18.8.5.98.32.2.75.3 1.3.3zm8.68 1.74c-3.5 0-3.5-2.82-3.5-3.28L89.45.92 91.6.6v10c0 .25 0 1.87 1.38 1.88v1.8z'/%3E%3Cpath fill='%25231D3657' d='M5.03 11.03c0 .7-.26 1.24-.76 1.64-.5.4-1.2.6-2.1.6-.88 0-1.6-.14-2.17-.42v-1.2c.36.16.74.3 1.14.38.4.1.78.15 1.13.15.5 0 .88-.1 1.12-.3a.94.94 0 0 0 .35-.77.98.98 0 0 0-.33-.74c-.22-.2-.68-.44-1.37-.72-.72-.3-1.22-.62-1.52-1C.23 8.27.1 7.82.1 7.3c0-.65.22-1.17.7-1.55.46-.37 1.08-.56 1.86-.56.76 0 1.5.16 2.25.48l-.4 1.05c-.7-.3-1.32-.44-1.87-.44-.4 0-.73.08-.94.26a.9.9 0 0 0-.33.72c0 .2.04.38.12.52.08.15.22.3.42.4.2.14.55.3 1.06.52.58.24 1 .47 1.27.67.27.2.47.44.6.7.12.26.18.57.18.92zM9 13.27c-.92 0-1.64-.27-2.16-.8-.52-.55-.78-1.3-.78-2.24 0-.97.24-1.73.72-2.3.5-.54 1.15-.82 2-.82.78 0 1.4.25 1.85.72.46.48.7 1.14.7 1.97v.67H7.35c0 .58.17 1.02.46 1.33.3.3.7.47 1.24.47.36 0 .68-.04.98-.1a5.1 5.1 0 0 0 .98-.33v1.02a3.87 3.87 0 0 1-.94.32 5.72 5.72 0 0 1-1.08.1zm-.22-5.2c-.4 0-.73.12-.97.38s-.37.62-.42 1.1h2.7c0-.48-.13-.85-.36-1.1-.23-.26-.54-.38-.94-.38zm7.7 5.1-.26-.84h-.05c-.28.36-.57.6-.86.74-.28.13-.65.2-1.1.2-.6 0-1.05-.16-1.38-.48-.32-.32-.5-.77-.5-1.34 0-.62.24-1.08.7-1.4.45-.3 1.14-.47 2.07-.5l1.02-.03V9.2c0-.37-.1-.65-.27-.84-.17-.2-.45-.28-.82-.28-.3 0-.6.04-.88.13a6.68 6.68 0 0 0-.8.33l-.4-.9a4.4 4.4 0 0 1 1.05-.4 4.86 4.86 0 0 1 1.08-.12c.76 0 1.33.18 1.7.5.4.33.6.85.6 1.56v4h-.9zm-1.9-.87c.47 0 .83-.13 1.1-.38.3-.26.43-.62.43-1.08v-.52l-.76.03c-.6.03-1.02.13-1.3.3s-.4.45-.4.82c0 .26.08.47.24.6.16.16.4.23.7.23zm7.57-5.2c.25 0 .46.03.62.06l-.12 1.18a2.38 2.38 0 0 0-.56-.06c-.5 0-.92.16-1.24.5-.3.32-.47.75-.47 1.27v3.1h-1.27V7.23h1l.16 1.05h.05c.2-.36.45-.64.77-.85a1.83 1.83 0 0 1 1.02-.3zm4.12 6.17c-.9 0-1.58-.27-2.05-.8-.47-.52-.7-1.27-.7-2.25 0-1 .24-1.77.73-2.3.5-.54 1.2-.8 2.12-.8.63 0 1.2.1 1.7.34l-.4 1c-.52-.2-.96-.3-1.3-.3-1.04 0-1.55.68-1.55 2.05 0 .67.13 1.17.38 1.5.26.34.64.5 1.13.5a3.23 3.23 0 0 0 1.6-.4v1.1a2.53 2.53 0 0 1-.73.28 4.36 4.36 0 0 1-.93.08zm8.28-.1h-1.27V9.5c0-.45-.1-.8-.28-1.02-.18-.23-.47-.34-.88-.34-.53 0-.9.16-1.16.48-.25.3-.38.85-.38 1.6v2.94h-1.26V4.8h1.26v2.12c0 .34-.02.7-.06 1.1h.08a1.76 1.76 0 0 1 .72-.67c.3-.16.66-.24 1.07-.24 1.43 0 2.15.74 2.15 2.2v3.86zM42.2 7.1c.74 0 1.32.28 1.73.82.4.53.62 1.3.62 2.26 0 .97-.2 1.73-.63 2.27-.42.54-1 .82-1.75.82s-1.33-.27-1.75-.8h-.08l-.23.7h-.94V4.8h1.26v2l-.02.64-.03.56h.05c.4-.6 1-.9 1.78-.9zm-.33 1.04c-.5 0-.88.15-1.1.45-.22.3-.34.8-.35 1.5v.08c0 .72.12 1.24.35 1.57.23.32.6.48 1.12.48.44 0 .78-.17 1-.53.24-.35.36-.87.36-1.53 0-1.35-.47-2.03-1.4-2.03zm3.24-.92h1.4l1.2 3.37c.18.47.3.92.36 1.34h.04l.18-.72 1.37-4H51l-2.53 6.73c-.46 1.23-1.23 1.85-2.3 1.85-.3 0-.56-.03-.83-.1v-1c.2.05.4.08.65.08.6 0 1.03-.36 1.28-1.06l.22-.56-2.4-5.94z'/%3E%3C/g%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100%;display:block;height:100%;margin-left:auto;margin-right:5px;overflow:hidden;text-indent:-9000px;width:110px}@media (min-width:601px){.algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu{left:inherit!important;right:0!important}.algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu:before{right:48px}.algolia-autocomplete .ds-dropdown-menu{background:0 0;border:none;border-radius:4px;height:auto;margin:6px 0 0;max-width:600px;min-width:500px;padding:0;position:relative;text-align:left;top:-6px;z-index:999}}@media (min-width:768px){.algolia-docsearch-suggestion{border-bottom-color:#7671df}.algolia-docsearch-suggestion--subcategory-column{border-right-color:#7671df;color:#4e4726}}@media (min-width:997px){.collapseSidebarButton_oTwn,.expandButton_YOoA{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_Jjdj,.announcementBarPlaceholder_NpUd{flex-basis:50px}.searchBox_WqAV{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.lastUpdated_pbO5{text-align:right}.tocMobile_Ojys{display:none}.docItemCol_Qr34{max-width:75%!important}.collapseSidebarButton_oTwn{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_pMEX{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_GZLG,[dir=rtl] .collapseSidebarButtonIcon_pMEX{transform:rotate(0)}.collapseSidebarButton_oTwn:focus,.collapseSidebarButton_oTwn:hover,.expandButton_YOoA:focus,.expandButton_YOoA:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_OniL{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_jmj1{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_jmj1{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_YufC{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_CUen{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_w4KB{padding-top:0}.sidebarHidden_k6VE{opacity:0;visibility:hidden}.sidebarLogo_CYvI{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_CYvI img{height:2rem;margin-right:.5rem}.expandButton_YOoA{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_GZLG{transform:rotate(180deg)}.docSidebarContainer_y0RQ{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_uArb{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_EJ1r{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_sTIZ{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_iSjt{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_PxMR{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_Hewu,.footer__link-separator,.navbar__item,.tableOfContents_XG6w{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.searchBox_WqAV{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_Tr6w{padding:0 .3rem}}@media (max-width:600px){.algolia-autocomplete .ds-dropdown-menu{display:block;left:auto!important;max-height:calc(100% - 5rem);max-width:calc(100% - 2rem);position:fixed!important;right:1rem!important;top:50px!important;width:600px;z-index:100}.algolia-autocomplete .ds-dropdown-menu:before{right:6rem}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}}@media (hover:hover){.backToTopButton_iEvu:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media print{.announcementBar_zJRd,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_Ojys{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_AclH{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/css/styles.bd300c91.css b/assets/css/styles.bd300c91.css new file mode 100644 index 0000000..0541a43 --- /dev/null +++ b/assets/css/styles.bd300c91.css @@ -0,0 +1 @@ +.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}body,ol ol,ol ul,ul ol,ul ul{margin:0}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.toggleButton_MMFG,html{-webkit-tap-highlight-color:transparent}.clean-list,.containsTaskList_QWGu,.details_IpIu>summary,.dropdown__menu,.menu__list{list-style:none}.searchbox__reset:focus,.searchbox__submit:focus,body:not(.navigation-with-keyboard) :not(input):focus{outline:0}pre,table{overflow:auto}.markdown li,body{word-wrap:break-word}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:transparent;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:rgba(0,0,0,.05);--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 rgba(0,0,0,.1);--ifm-global-shadow-md:0 5px 40px rgba(0,0,0,.2);--ifm-global-shadow-tl:0 12px 28px 0 rgba(0,0,0,.2),0 2px 4px 0 rgba(0,0,0,.1);--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:transparent;--ifm-table-stripe-background:rgba(0,0,0,.03);--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#a51d2d;--ifm-color-primary-dark:#951a28;--ifm-color-primary-darker:#8c1926;--ifm-color-primary-darkest:#74141f;--ifm-color-primary-light:#b62031;--ifm-color-primary-lighter:#be2134;--ifm-color-primary-lightest:#d7263a;--ifm-code-font-size:95%;--docusaurus-highlighted-code-line-bg:rgba(0,0,0,.1);--docusaurus-announcement-bar-height:auto;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docusaurus-collapse-button-bg:transparent;--docusaurus-collapse-button-bg-hover:rgba(0,0,0,.1);--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:transparent}*,.algolia-autocomplete .ds-dropdown-menu *{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);text-rendering:optimizelegibility}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none,.tabItem_l0OV{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_BiEj,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid rgba(0,0,0,.1);border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:transparent;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul,.tabList_J5MA{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_XzR1 .wordWrapButtonIcon_HV9T{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_GCBg,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:rgba(53,120,229,.15);--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:rgba(235,237,240,.15);--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:rgba(0,164,0,.15);--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:rgba(84,199,236,.15);--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:rgba(255,186,0,.15);--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:rgba(250,56,62,.15);--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs__link:any-link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:transparent;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_BE9Z:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor transparent;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_tjFy article>:first-child,.docItemContainer_tjFy header+*,.footer__item{margin-top:0}.admonitionContent_pbrs>:last-child,.collapsibleContent_Fd2D p:last-child,.details_IpIu>summary>p:last-child,.footer__items,.tabItem_wHwb>:last-child{margin-bottom:0}.codeBlockStandalone_wQog,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_IpIu[data-collapsed=false].isBrowser_QD4r>summary:before,.details_IpIu[open]:not(.isBrowser_QD4r)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{content:"";height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;position:fixed;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;left:0;top:0;visibility:hidden}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_t7IR,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:hsla(0,0%,100%,.1);--ifm-navbar-search-input-placeholder-color:hsla(0,0%,100%,.5);color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:hsla(0,0%,100%,.05);--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:rgba(0,0,0,.6);right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover{text-decoration:none}.pagination-nav{grid-gap:var(--ifm-spacing-horizontal);display:grid;gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_QWGu>li)>.containsTaskList_QWGu{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid transparent;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:hsla(0,0%,100%,.05);--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:hsla(0,0%,100%,.1);--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:hsla(0,0%,100%,.07);--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}[data-theme=dark]{--ifm-color-primary:#fe6151;--ifm-color-primary-dark:#fe4330;--ifm-color-primary-darker:#fe341f;--ifm-color-primary-darkest:#e91701;--ifm-color-primary-light:#fe7f72;--ifm-color-primary-lighter:#fe8e83;--ifm-color-primary-lightest:#ffbcb5;--docusaurus-highlighted-code-line-bg:hsla(0,0%,100%,.08)}#__docusaurus-base-url-issue-banner-container,.themedComponent_siVc,[data-theme=dark] .lightToggleIcon_lgto,[data-theme=light] .darkToggleIcon_U96C,html[data-announcement-bar-initially-dismissed=true] .announcementBar_zJRd{display:none}.skipToContent_oPtH{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_oPtH:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_J5rP{line-height:0;padding:0}.content_bSb_{font-size:85%;padding:5px 0;text-align:center}.content_bSb_ a{color:inherit;text-decoration:underline}.announcementBar_zJRd{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_NpUd{flex:0 0 10px}.announcementBarClose_Jjdj{align-self:stretch;flex:0 0 30px}.toggle_ki11{height:2rem;width:2rem}.toggleButton_MMFG{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_MMFG:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_Uw7m{cursor:not-allowed}.algolia-autocomplete .ds-dropdown-menu .ds-suggestion,.details_IpIu>summary,.dropdownNavbarItemMobile_MJ1i,.searchbox__reset,.searchbox__submit:active,.searchbox__submit:hover{cursor:pointer}.darkNavbarColorModeToggle_m8pZ:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedComponent--dark_yETr,[data-theme=light] .themedComponent--light_hHel,html:not([data-theme]) .themedComponent--light_hHel{display:initial}.iconExternalLink_nPrP{margin-left:.3rem}.iconLanguage_kvP7{margin-right:5px;vertical-align:text-bottom}@supports selector(:has(*)){.navbarSearchContainer_bzqh:not(:has(>*)){display:none}}.navbarHideable_hhpl{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_nmcs{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_WE6Q{color:red;white-space:pre-wrap}.errorBoundaryFallback_bdJX{color:red;padding:.55rem}.footerLogoLink_tutC{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_tutC:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.anchorWithStickyNavbar_JmGV{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_pMLv{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.mainWrapper_MB5r{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.iconEdit_bHB7{margin-right:.3em;vertical-align:sub}.tag_otG2{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_otG2:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_s0E1{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_PGyn{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_PGyn:after,.tagWithCount_PGyn:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_PGyn:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_PGyn:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_PGyn span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tags_Ow0B{display:inline}.tag_DFxh{display:inline-block;margin:0 .4rem .5rem 0}.lastUpdated_pbO5{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_iI2p{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_iI2p:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_cHjC:after,.tocCollapsibleExpanded_BbRn{transform:none}.tocCollapsible_wXna{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.buttonGroup_aaMX button,.codeBlockContainer_mQmQ{background:var(--prism-background-color);color:var(--prism-color)}.tocCollapsibleContent_vea0>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vea0 ul li{margin:.4rem .8rem}.tocCollapsibleContent_vea0 a{display:block}.tableOfContents_XG6w{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.codeBlockContainer_mQmQ{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_D5yF{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_x_ju{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_RMoD{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_x_ju+.codeBlockContent_D5yF .codeBlock_RMoD{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_AclH{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_O625{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup_aaMX{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup_aaMX button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup_aaMX button:focus-visible,.buttonGroup_aaMX button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup_aaMX button{opacity:.4}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_FAqz{counter-increment:a;display:table-row}.codeLineNumber_BE9Z{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_BE9Z:before{content:counter(a);opacity:.4}.codeLineContent_EF2y{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_TYdd{opacity:1!important}.copyButtonIcons_z5j7{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_FoOz,.copyButtonSuccessIcon_L0B6{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_L0B6{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_TYdd .copyButtonIcon_FoOz{opacity:0;transform:scale(.33)}.copyButtonCopied_TYdd .copyButtonSuccessIcon_L0B6{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_HV9T{height:1.2rem;width:1.2rem}.details_IpIu{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_IpIu>summary{padding-left:1rem;position:relative}.details_IpIu>summary::-webkit-details-marker{display:none}.details_IpIu>summary:before{border-color:transparent transparent transparent var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_Fd2D{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_jERq{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.img_SS3x{height:auto}.admonition_WCGJ{margin-bottom:1em}.admonitionHeading_GCBg{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family)}.admonitionHeading_GCBg:not(:last-child){margin-bottom:.3rem}.admonitionHeading_GCBg code{text-transform:none}.admonitionIcon_L39b{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_L39b svg{fill:var(--ifm-alert-foreground-color);display:inline-block;height:1.6em;width:1.6em}.breadcrumbHomeIcon_sfvy{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_T5ub{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.backToTopButton_iEvu{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_iEvu:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_DO8w{opacity:1;transform:scale(1);visibility:visible}[data-theme=dark]:root{--docusaurus-collapse-button-bg:hsla(0,0%,100%,.05);--docusaurus-collapse-button-bg-hover:hsla(0,0%,100%,.1)}.collapseSidebarButton_oTwn{display:none;margin:0}.docSidebarContainer_c7NB,.sidebarLogo_CYvI{display:none}.docMainContainer_a9sJ,.docRoot_DfVB{display:flex;width:100%}.docsWrapper__sE8{display:flex;flex:1 0 auto}.searchbox,.searchbox__input{box-sizing:border-box;display:inline-block}.algolia-docsearch-suggestion{border-bottom-color:#3a3dd1}.algolia-docsearch-suggestion--category-header{background-color:#4b54de}.algolia-docsearch-suggestion--highlight{color:#3a33d1}.algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--highlight{background-color:#4d47d5}.aa-cursor .algolia-docsearch-suggestion--content{color:#272296}.aa-cursor .algolia-docsearch-suggestion{background:#ebebfb}.searchbox{height:32px!important;position:relative;visibility:visible!important;white-space:nowrap;width:200px}.searchbox .algolia-autocomplete{display:block;height:100%;width:100%}.searchbox__wrapper{height:100%;position:relative;width:100%;z-index:999}.searchbox__input{-webkit-appearance:none;appearance:none;background:#fff!important;border:0;border-radius:16px;box-shadow:inset 0 0 0 1px #ccc;font-size:12px;height:100%;padding:0 26px 0 32px;transition:box-shadow .4s,background .4s;vertical-align:middle;white-space:normal;width:100%}.searchbox__input::-webkit-search-cancel-button,.searchbox__input::-webkit-search-decoration,.searchbox__input::-webkit-search-results-button,.searchbox__input::-webkit-search-results-decoration{display:none}.searchbox__input:hover{box-shadow:inset 0 0 0 1px #b3b3b3}.searchbox__input:active,.searchbox__input:focus{background:#fff;box-shadow:inset 0 0 0 1px #aaa;outline:0}.searchbox__input::placeholder{color:#aaa}.searchbox__submit{background-color:rgba(69,142,225,0);border:0;border-radius:16px 0 0 16px;font-size:inherit;height:100%;left:0;margin:0;padding:0;position:absolute;right:inherit;text-align:center;top:0;-webkit-user-select:none;user-select:none;vertical-align:middle;width:32px}.searchbox__submit:before{content:"";display:inline-block;height:100%;margin-right:-4px;vertical-align:middle}.searchbox__submit svg{fill:#6d7e96;height:14px;vertical-align:middle;width:14px}.searchbox__reset{fill:rgba(0,0,0,.5);background:none;border:0;display:block;font-size:inherit;margin:0;padding:0;position:absolute;right:8px;top:8px;-webkit-user-select:none;user-select:none}.searchbox__reset.hide{display:none}.searchbox__reset svg{display:block;height:8px;margin:4px;width:8px}.searchbox__input:valid~.searchbox__reset{animation-duration:.15s;animation-name:a;display:block}@keyframes a{0%{opacity:0;transform:translate3d(-20%,0,0)}to{opacity:1;transform:none}}.algolia-autocomplete .ds-dropdown-menu:before{background:#373940;border-radius:2px;border-right:1px solid #373940;border-top:1px solid #373940;content:"";display:block;height:14px;position:absolute;top:-7px;transform:rotate(-45deg);width:14px;z-index:1000}.algolia-autocomplete .ds-dropdown-menu{box-shadow:0 1px 0 0 rgba(0,0,0,.2),0 2px 3px 0 rgba(0,0,0,.1)}.algolia-autocomplete .ds-dropdown-menu .ds-suggestions{position:relative;z-index:1000}.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-]{background:#fff;border-radius:4px;overflow:auto;padding:0;position:relative}.algolia-autocomplete .algolia-docsearch-suggestion{display:block;overflow:hidden;padding:0;position:relative;text-decoration:none}.algolia-autocomplete .ds-cursor .algolia-docsearch-suggestion--wrapper{background:#f1f1f1;box-shadow:inset -2px 0 0 #61dafb}.algolia-autocomplete .algolia-docsearch-suggestion--highlight{background:#ffe564;padding:.1em .05em}.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl0 .algolia-docsearch-suggestion--highlight,.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl1 .algolia-docsearch-suggestion--highlight{background:inherit;color:inherit}.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{background:inherit;box-shadow:inset 0 -2px 0 0 rgba(69,142,225,.8);color:inherit;padding:0 0 1px}.algolia-autocomplete .algolia-docsearch-suggestion--content{cursor:pointer;display:block;float:right;padding:5.33333px 0 5.33333px 10.66667px;position:relative;width:70%}.algolia-autocomplete .algolia-docsearch-suggestion--content:before{background:#ececec;content:"";display:block;height:100%;left:-1px;position:absolute;top:0;width:1px}.algolia-autocomplete .algolia-docsearch-suggestion--category-header{background-color:#373940;color:#fff;display:none;font-size:14px;font-weight:700;letter-spacing:.08em;margin:0;padding:5px 8px;position:relative;text-transform:uppercase}.algolia-autocomplete .algolia-docsearch-suggestion--wrapper{background-color:#fff;float:left;padding:8px 0 0;width:100%}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column{word-wrap:break-word;color:#777;display:none;float:left;font-size:.9em;padding:5.33333px 10.66667px;position:relative;text-align:right;width:30%}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column:before{background:#ececec;content:"";display:block;height:100%;position:absolute;right:0;top:0;width:1px}.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__main .algolia-docsearch-suggestion--category-header,.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__secondary{display:block}.algolia-autocomplete .algolia-docsearch-suggestion--no-results:before,.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-inline{display:none}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column .algolia-docsearch-suggestion--highlight{background-color:inherit;color:inherit}.algolia-autocomplete .algolia-docsearch-suggestion--title{color:#02060c;font-size:.9em;font-weight:700;margin-bottom:4px}.algolia-autocomplete .algolia-docsearch-suggestion--text{color:#63676d;display:block;font-size:.85em;line-height:1.2em;padding-right:2px}.algolia-autocomplete .algolia-docsearch-suggestion--version{color:#a6aab1;display:block;font-size:.65em;padding-right:2px;padding-top:2px}.algolia-autocomplete .algolia-docsearch-suggestion--no-results{background-color:#373940;font-size:1.2em;margin-top:-8px;padding:8px 0;text-align:center;width:100%}.algolia-autocomplete .algolia-docsearch-suggestion--no-results .algolia-docsearch-suggestion--text{color:#fff;margin-top:4px}.algolia-autocomplete .algolia-docsearch-suggestion code{background-color:#ebebeb;border:none;border-radius:3px;color:#222;font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace;font-size:90%;padding:1px 5px}.algolia-autocomplete .algolia-docsearch-suggestion code .algolia-docsearch-suggestion--highlight{background:none}.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__main .algolia-docsearch-suggestion--category-header{color:#fff;display:block}.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__secondary .algolia-docsearch-suggestion--subcategory-column{display:block}.algolia-autocomplete .algolia-docsearch-footer{background-color:#fff;float:right;font-size:0;height:30px;line-height:0;width:100%;z-index:2000}.algolia-autocomplete .algolia-docsearch-footer--logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 130 18'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath fill='url(%2523a)' d='M59.4.02h13.3a2.37 2.37 0 0 1 2.38 2.37V15.6a2.37 2.37 0 0 1-2.38 2.36H59.4a2.37 2.37 0 0 1-2.38-2.36V2.38A2.37 2.37 0 0 1 59.4.02z'/%3E%3Cpath fill='%2523FFF' d='M66.26 4.56c-2.82 0-5.1 2.27-5.1 5.08 0 2.8 2.28 5.07 5.1 5.07 2.8 0 5.1-2.26 5.1-5.07 0-2.8-2.28-5.07-5.1-5.07zm0 8.65c-2 0-3.6-1.6-3.6-3.56 0-1.97 1.6-3.58 3.6-3.58 1.98 0 3.6 1.6 3.6 3.58a3.58 3.58 0 0 1-3.6 3.57zm0-6.4v2.66c0 .07.08.13.15.1l2.4-1.24c.04-.02.06-.1.03-.14a2.96 2.96 0 0 0-2.46-1.5.1.1 0 0 0-.1.1zm-3.33-1.96-.3-.3a.78.78 0 0 0-1.12 0l-.36.36a.77.77 0 0 0 0 1.1l.3.3c.05.05.13.04.17 0 .2-.25.4-.5.6-.7.23-.23.46-.43.7-.6.07-.04.07-.1.03-.16zm5-.8V3.4a.78.78 0 0 0-.78-.78h-1.83a.78.78 0 0 0-.78.78v.63c0 .07.06.12.14.1a5.74 5.74 0 0 1 1.58-.22c.52 0 1.04.07 1.54.2a.1.1 0 0 0 .13-.1z'/%3E%3Cpath fill='%2523182359' d='M102.16 13.76c0 1.46-.37 2.52-1.12 3.2-.75.67-1.9 1-3.44 1-.56 0-1.74-.1-2.67-.3l.34-1.7c.78.17 1.82.2 2.36.2.86 0 1.48-.16 1.84-.5.37-.36.55-.88.55-1.57v-.35a6.37 6.37 0 0 1-.84.3 4.15 4.15 0 0 1-1.2.17 4.5 4.5 0 0 1-1.6-.28 3.38 3.38 0 0 1-1.26-.82 3.74 3.74 0 0 1-.8-1.35c-.2-.54-.3-1.5-.3-2.2 0-.67.1-1.5.3-2.06a3.92 3.92 0 0 1 .9-1.43 4.12 4.12 0 0 1 1.45-.92 5.3 5.3 0 0 1 1.94-.37c.7 0 1.35.1 1.97.2a15.86 15.86 0 0 1 1.6.33v8.46zm-5.95-4.2c0 .9.2 1.88.6 2.3.4.4.9.62 1.53.62.34 0 .66-.05.96-.15a2.75 2.75 0 0 0 .73-.33V6.7a8.53 8.53 0 0 0-1.42-.17c-.76-.02-1.36.3-1.77.8-.4.5-.62 1.4-.62 2.23zm16.13 0c0 .72-.1 1.26-.32 1.85a4.4 4.4 0 0 1-.9 1.53c-.38.42-.85.75-1.4.98-.54.24-1.4.37-1.8.37-.43 0-1.27-.13-1.8-.36a4.1 4.1 0 0 1-1.4-.97 4.5 4.5 0 0 1-.92-1.52 5.04 5.04 0 0 1-.33-1.84c0-.72.1-1.4.32-2 .22-.6.53-1.1.92-1.5.4-.43.86-.75 1.4-.98a4.55 4.55 0 0 1 1.78-.34 4.7 4.7 0 0 1 1.8.34c.54.23 1 .55 1.4.97.38.42.68.92.9 1.5.23.6.35 1.3.35 2zm-2.2 0c0-.92-.2-1.7-.6-2.22-.38-.54-.94-.8-1.64-.8-.72 0-1.27.26-1.67.8-.4.54-.58 1.3-.58 2.22 0 .93.2 1.56.6 2.1.38.54.94.8 1.64.8s1.25-.26 1.65-.8c.4-.55.6-1.17.6-2.1zm6.97 4.7c-3.5.02-3.5-2.8-3.5-3.27L113.57.92l2.15-.34v10c0 .25 0 1.87 1.37 1.88v1.8zm3.77 0h-2.15v-9.2l2.15-.33v9.54zM119.8 3.74c.7 0 1.3-.58 1.3-1.3 0-.7-.58-1.3-1.3-1.3-.73 0-1.3.6-1.3 1.3 0 .72.58 1.3 1.3 1.3zm6.43 1c.7 0 1.3.1 1.78.27.5.18.88.42 1.17.73.28.3.5.74.6 1.18.13.46.2.95.2 1.5v5.47a25.24 25.24 0 0 1-1.5.25c-.67.1-1.42.15-2.25.15a6.83 6.83 0 0 1-1.52-.16 3.2 3.2 0 0 1-1.18-.5 2.46 2.46 0 0 1-.76-.9c-.18-.37-.27-.9-.27-1.44 0-.52.1-.85.3-1.2.2-.37.48-.67.83-.9a3.6 3.6 0 0 1 1.23-.5 7.07 7.07 0 0 1 2.2-.1l.83.16V8.4c0-.25-.03-.48-.1-.7a1.5 1.5 0 0 0-.3-.58c-.15-.18-.34-.3-.58-.4a2.54 2.54 0 0 0-.92-.17c-.5 0-.94.06-1.35.13-.4.08-.75.16-1 .25l-.27-1.74c.27-.1.67-.18 1.2-.28a9.34 9.34 0 0 1 1.65-.14zm.18 7.74c.66 0 1.15-.04 1.5-.1V10.2a5.1 5.1 0 0 0-2-.1c-.23.03-.45.1-.64.2a1.17 1.17 0 0 0-.47.38c-.13.17-.18.26-.18.52 0 .5.17.8.5.98.32.2.74.3 1.3.3zM84.1 4.8c.72 0 1.3.08 1.8.26.48.17.87.42 1.15.73.3.3.5.72.6 1.17.14.45.2.94.2 1.47v5.48a25.24 25.24 0 0 1-1.5.26c-.67.1-1.42.14-2.25.14a6.83 6.83 0 0 1-1.52-.16 3.2 3.2 0 0 1-1.18-.5 2.46 2.46 0 0 1-.76-.9c-.18-.38-.27-.9-.27-1.44 0-.53.1-.86.3-1.22.2-.36.5-.65.84-.88a3.6 3.6 0 0 1 1.24-.5 7.07 7.07 0 0 1 2.2-.1c.26.03.54.08.84.15v-.35c0-.24-.03-.48-.1-.7a1.5 1.5 0 0 0-.3-.58c-.15-.17-.34-.3-.58-.4a2.54 2.54 0 0 0-.9-.15c-.5 0-.96.05-1.37.12-.4.07-.75.15-1 .24l-.26-1.75c.27-.08.67-.17 1.18-.26a8.9 8.9 0 0 1 1.66-.15zm.2 7.73c.65 0 1.14-.04 1.48-.1v-2.17a5.1 5.1 0 0 0-1.98-.1c-.24.03-.46.1-.65.18a1.17 1.17 0 0 0-.47.4c-.12.17-.17.26-.17.52 0 .5.18.8.5.98.32.2.75.3 1.3.3zm8.68 1.74c-3.5 0-3.5-2.82-3.5-3.28L89.45.92 91.6.6v10c0 .25 0 1.87 1.38 1.88v1.8z'/%3E%3Cpath fill='%25231D3657' d='M5.03 11.03c0 .7-.26 1.24-.76 1.64-.5.4-1.2.6-2.1.6-.88 0-1.6-.14-2.17-.42v-1.2c.36.16.74.3 1.14.38.4.1.78.15 1.13.15.5 0 .88-.1 1.12-.3a.94.94 0 0 0 .35-.77.98.98 0 0 0-.33-.74c-.22-.2-.68-.44-1.37-.72-.72-.3-1.22-.62-1.52-1C.23 8.27.1 7.82.1 7.3c0-.65.22-1.17.7-1.55.46-.37 1.08-.56 1.86-.56.76 0 1.5.16 2.25.48l-.4 1.05c-.7-.3-1.32-.44-1.87-.44-.4 0-.73.08-.94.26a.9.9 0 0 0-.33.72c0 .2.04.38.12.52.08.15.22.3.42.4.2.14.55.3 1.06.52.58.24 1 .47 1.27.67.27.2.47.44.6.7.12.26.18.57.18.92zM9 13.27c-.92 0-1.64-.27-2.16-.8-.52-.55-.78-1.3-.78-2.24 0-.97.24-1.73.72-2.3.5-.54 1.15-.82 2-.82.78 0 1.4.25 1.85.72.46.48.7 1.14.7 1.97v.67H7.35c0 .58.17 1.02.46 1.33.3.3.7.47 1.24.47.36 0 .68-.04.98-.1a5.1 5.1 0 0 0 .98-.33v1.02a3.87 3.87 0 0 1-.94.32 5.72 5.72 0 0 1-1.08.1zm-.22-5.2c-.4 0-.73.12-.97.38s-.37.62-.42 1.1h2.7c0-.48-.13-.85-.36-1.1-.23-.26-.54-.38-.94-.38zm7.7 5.1-.26-.84h-.05c-.28.36-.57.6-.86.74-.28.13-.65.2-1.1.2-.6 0-1.05-.16-1.38-.48-.32-.32-.5-.77-.5-1.34 0-.62.24-1.08.7-1.4.45-.3 1.14-.47 2.07-.5l1.02-.03V9.2c0-.37-.1-.65-.27-.84-.17-.2-.45-.28-.82-.28-.3 0-.6.04-.88.13a6.68 6.68 0 0 0-.8.33l-.4-.9a4.4 4.4 0 0 1 1.05-.4 4.86 4.86 0 0 1 1.08-.12c.76 0 1.33.18 1.7.5.4.33.6.85.6 1.56v4h-.9zm-1.9-.87c.47 0 .83-.13 1.1-.38.3-.26.43-.62.43-1.08v-.52l-.76.03c-.6.03-1.02.13-1.3.3s-.4.45-.4.82c0 .26.08.47.24.6.16.16.4.23.7.23zm7.57-5.2c.25 0 .46.03.62.06l-.12 1.18a2.38 2.38 0 0 0-.56-.06c-.5 0-.92.16-1.24.5-.3.32-.47.75-.47 1.27v3.1h-1.27V7.23h1l.16 1.05h.05c.2-.36.45-.64.77-.85a1.83 1.83 0 0 1 1.02-.3zm4.12 6.17c-.9 0-1.58-.27-2.05-.8-.47-.52-.7-1.27-.7-2.25 0-1 .24-1.77.73-2.3.5-.54 1.2-.8 2.12-.8.63 0 1.2.1 1.7.34l-.4 1c-.52-.2-.96-.3-1.3-.3-1.04 0-1.55.68-1.55 2.05 0 .67.13 1.17.38 1.5.26.34.64.5 1.13.5a3.23 3.23 0 0 0 1.6-.4v1.1a2.53 2.53 0 0 1-.73.28 4.36 4.36 0 0 1-.93.08zm8.28-.1h-1.27V9.5c0-.45-.1-.8-.28-1.02-.18-.23-.47-.34-.88-.34-.53 0-.9.16-1.16.48-.25.3-.38.85-.38 1.6v2.94h-1.26V4.8h1.26v2.12c0 .34-.02.7-.06 1.1h.08a1.76 1.76 0 0 1 .72-.67c.3-.16.66-.24 1.07-.24 1.43 0 2.15.74 2.15 2.2v3.86zM42.2 7.1c.74 0 1.32.28 1.73.82.4.53.62 1.3.62 2.26 0 .97-.2 1.73-.63 2.27-.42.54-1 .82-1.75.82s-1.33-.27-1.75-.8h-.08l-.23.7h-.94V4.8h1.26v2l-.02.64-.03.56h.05c.4-.6 1-.9 1.78-.9zm-.33 1.04c-.5 0-.88.15-1.1.45-.22.3-.34.8-.35 1.5v.08c0 .72.12 1.24.35 1.57.23.32.6.48 1.12.48.44 0 .78-.17 1-.53.24-.35.36-.87.36-1.53 0-1.35-.47-2.03-1.4-2.03zm3.24-.92h1.4l1.2 3.37c.18.47.3.92.36 1.34h.04l.18-.72 1.37-4H51l-2.53 6.73c-.46 1.23-1.23 1.85-2.3 1.85-.3 0-.56-.03-.83-.1v-1c.2.05.4.08.65.08.6 0 1.03-.36 1.28-1.06l.22-.56-2.4-5.94z'/%3E%3C/g%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100%;display:block;height:100%;margin-left:auto;margin-right:5px;overflow:hidden;text-indent:-9000px;width:110px}html[data-theme=dark] .algolia-docsearch-footer,html[data-theme=dark] .algolia-docsearch-suggestion--category-header,html[data-theme=dark] .algolia-docsearch-suggestion--wrapper{background:var(--ifm-background-color)!important;color:var(--ifm-font-color-base)!important}html[data-theme=dark] .algolia-docsearch-suggestion--title{color:var(--ifm-font-color-base)!important}html[data-theme=dark] .ds-cursor .algolia-docsearch-suggestion--wrapper{background:var(--ifm-background-surface-color)!important}mark{background-color:#add8e6}@media (min-width:601px){.algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu{left:inherit!important;right:0!important}.algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu:before{right:48px}.algolia-autocomplete .ds-dropdown-menu{background:0 0;border:none;border-radius:4px;height:auto;margin:6px 0 0;max-width:600px;min-width:500px;padding:0;position:relative;text-align:left;top:-6px;z-index:999}}@media (min-width:768px){.algolia-docsearch-suggestion{border-bottom-color:#7671df}.algolia-docsearch-suggestion--subcategory-column{border-right-color:#7671df;color:#4e4726}}@media (min-width:997px){.collapseSidebarButton_oTwn,.expandButton_pLDq{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_Jjdj,.announcementBarPlaceholder_NpUd{flex-basis:50px}.navbarSearchContainer_bzqh{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.lastUpdated_pbO5{text-align:right}.tocMobile_Ojys{display:none}.docItemCol_Qr34{max-width:75%!important}.collapseSidebarButton_oTwn{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_pMEX{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_X5ff,[dir=rtl] .collapseSidebarButtonIcon_pMEX{transform:rotate(0)}.collapseSidebarButton_oTwn:focus,.collapseSidebarButton_oTwn:hover,.expandButton_pLDq:focus,.expandButton_pLDq:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_OniL{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_jmj1{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_jmj1{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_YufC{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_CUen{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_w4KB{padding-top:0}.sidebarHidden_k6VE{opacity:0;visibility:hidden}.sidebarLogo_CYvI{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_CYvI img{height:2rem;margin-right:.5rem}.expandButton_pLDq{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_X5ff{transform:rotate(180deg)}.docSidebarContainer_c7NB{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_P3S_{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_KYo0{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_a9sJ{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_grEJ{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_VqDq{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_Hewu,.footer__link-separator,.navbar__item,.tableOfContents_XG6w{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.navbarSearchContainer_bzqh{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_Tr6w{padding:0 .3rem}}@media (max-width:600px){.algolia-autocomplete .ds-dropdown-menu{display:block;left:auto!important;max-height:calc(100% - 5rem);max-width:calc(100% - 2rem);position:fixed!important;right:1rem!important;top:50px!important;width:600px;z-index:100}.algolia-autocomplete .ds-dropdown-menu:before{right:6rem}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}}@media (hover:hover){.backToTopButton_iEvu:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media print{.announcementBar_zJRd,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_Ojys{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_AclH{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/js/075c86f0.0a105794.js b/assets/js/075c86f0.0a105794.js new file mode 100644 index 0000000..2c29950 --- /dev/null +++ b/assets/js/075c86f0.0a105794.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[506],{9658:(e,o,s)=>{s.r(o),s.d(o,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>d,toc:()=>a});var n=s(4246),t=s(1670);const i={},r="v3.x \u2192 v4.x",d={id:"migration-guide/v3x-v4x",title:"v3.x \u2192 v4.x",description:"The v4 major version should be largely backwards compatible with v3. However, breaking changes were introduced in some less-used APIs that should be mentioned.",source:"@site/docs/10_migration-guide/01_v3x-v4x.md",sourceDirName:"10_migration-guide",slug:"/migration-guide/v3x-v4x",permalink:"/nestjs-cls/migration-guide/v3x-v4x",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/10_migration-guide/01_v3x-v4x.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Migration guide",permalink:"/nestjs-cls/migration-guide/"},next:{title:"v2.x \u2192 v3.x",permalink:"/nestjs-cls/migration-guide/v2x-v3x"}},c={},a=[{value:"Changed base type of Proxy Providers",id:"changed-base-type-of-proxy-providers",level:2},{value:"Changed default of ifNested option",id:"changed-default-of-ifnested-option",level:2},{value:"Changed default of resolveProxyProviders in UseCls decorator",id:"changed-default-of-resolveproxyproviders-in-usecls-decorator",level:2}];function l(e){const o={a:"a",code:"code",em:"em",h1:"h1",h2:"h2",p:"p",pre:"pre",...(0,t.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(o.h1,{id:"v3x--v4x",children:[(0,n.jsx)(o.code,{children:"v3.x"})," \u2192 ",(0,n.jsx)(o.code,{children:"v4.x"})]}),"\n",(0,n.jsxs)(o.p,{children:["The ",(0,n.jsx)(o.code,{children:"v4"})," major version should be largely backwards compatible with ",(0,n.jsx)(o.code,{children:"v3"}),". However, breaking changes were introduced in some less-used APIs that should be mentioned."]}),"\n",(0,n.jsx)(o.h2,{id:"changed-base-type-of-proxy-providers",children:"Changed base type of Proxy Providers"}),"\n",(0,n.jsxs)(o.p,{children:["The default underlying value of ",(0,n.jsx)(o.a,{href:"/nestjs-cls/features-and-use-cases/proxy-providers",children:"Proxy Providers"})," was changed to ",(0,n.jsx)(o.code,{children:"{}"}),". This means that the ",(0,n.jsx)(o.code,{children:"typeof"})," operator will now return ",(0,n.jsx)(o.code,{children:"'object'"}),", which is more intuitive. (",(0,n.jsx)(o.a,{href:"https://github.com/Papooch/nestjs-cls/issues/82",children:"Link to original discussion"}),")"]}),"\n",(0,n.jsxs)(o.p,{children:["The use-case of using a Proxy Provider as a function is still supported, but now requires the ",(0,n.jsx)(o.code,{children:"type"})," option to be set to ",(0,n.jsx)(o.code,{children:"'function'"}),"."]}),"\n",(0,n.jsx)(o.pre,{children:(0,n.jsx)(o.code,{className:"language-ts",children:"ClsModule.forFeature({\n provide: 'class-proxy',\n useClass: SomeClass,\n});\nClsModule.forFeature({\n provide: 'function-proxy',\n useFactory: () => someFunction,\n // highlight-start\n type: 'function',\n // highlight-end\n});\n"})}),"\n",(0,n.jsx)(o.pre,{children:(0,n.jsx)(o.code,{className:"language-ts",children:"@Injectable()\nclass SomeService {\n constructor(\n @Inject('class-proxy')\n private readonly someClass: SomeClass,\n @Inject('function-proxy')\n private readonly functionProvider: () => void,\n ) {\n console.log(typeof this.someClass); // 'object'\n console.log(typeof this.functionProvider); // 'function'\n }\n}\n"})}),"\n",(0,n.jsxs)(o.h2,{id:"changed-default-of-ifnested-option",children:["Changed default of ",(0,n.jsx)(o.code,{children:"ifNested"})," option"]}),"\n",(0,n.jsxs)(o.p,{children:["The default of the ",(0,n.jsx)(o.a,{href:"/nestjs-cls/api/service-interface#clscontextoptions",children:(0,n.jsx)(o.code,{children:"ifNested"})})," option was changed from ",(0,n.jsx)(o.code,{children:"override"})," to ",(0,n.jsx)(o.code,{children:"inherit"}),", which more closely aligns with ",(0,n.jsx)(o.em,{children:"most"})," real-world use-cases."]}),"\n",(0,n.jsxs)(o.p,{children:["If you used the ",(0,n.jsx)(o.code,{children:"ClsService#run"})," method ",(0,n.jsx)(o.em,{children:"without"})," explicitly setting the ",(0,n.jsx)(o.code,{children:"ifNested"})," option, you should check if the new default behavior is compatible with your use-case and adjust accordingly."]}),"\n",(0,n.jsx)(o.pre,{children:(0,n.jsx)(o.code,{className:"language-ts",children:"this.cls.run(\n // highlight-start\n { ifNested: 'override' },\n // highlight-end\n () => {\n // ... rest of the code\n },\n);\n"})}),"\n",(0,n.jsxs)(o.h2,{id:"changed-default-of-resolveproxyproviders-in-usecls-decorator",children:["Changed default of ",(0,n.jsx)(o.code,{children:"resolveProxyProviders"})," in ",(0,n.jsx)(o.code,{children:"UseCls"})," decorator"]}),"\n",(0,n.jsxs)(o.p,{children:["This value was undocumented in ",(0,n.jsx)(o.code,{children:"v3"}),", but the default was ",(0,n.jsx)(o.code,{children:"false"}),". It was changed to ",(0,n.jsx)(o.code,{children:"true"})," in ",(0,n.jsx)(o.code,{children:"v4"})," to align with the default behavior of other enhancers."]}),"\n",(0,n.jsxs)(o.p,{children:["This change should not affect most use-cases, because you either don't use Proxy Providers at all, or you use them and therefore had to set it to ",(0,n.jsx)(o.code,{children:"true"})," anyway. The only case where this might be a breaking change is if you used the ",(0,n.jsx)(o.code,{children:"@UseCls"})," in a module where you explicitly ",(0,n.jsx)(o.em,{children:"did not"})," want to resolve Proxy Providers and therefore did not import their dependencies. In that case, you should set the ",(0,n.jsx)(o.code,{children:"resolveProxyProviders"})," option to ",(0,n.jsx)(o.code,{children:"false"})," in the decorator."]})]})}function h(e={}){const{wrapper:o}={...(0,t.a)(),...e.components};return o?(0,n.jsx)(o,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},1670:(e,o,s)=>{s.d(o,{Z:()=>d,a:()=>r});var n=s(7378);const t={},i=n.createContext(t);function r(e){const o=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function d(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),n.createElement(i.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/17896441.c5c50487.js b/assets/js/17896441.c5c50487.js new file mode 100644 index 0000000..a873c1d --- /dev/null +++ b/assets/js/17896441.c5c50487.js @@ -0,0 +1 @@ +(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[918],{8135:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>$t});var s=n(7378),a=n(8836),o=n(3879),i=n(4246);const l=s.createContext(null);function c(e){let{children:t,content:n}=e;const a=function(e){return(0,s.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(n);return(0,i.jsx)(l.Provider,{value:a,children:t})}function r(){const e=(0,s.useContext)(l);if(null===e)throw new o.i6("DocProvider");return e}function d(){const{metadata:e,frontMatter:t,assets:n}=r();return(0,i.jsx)(a.d,{title:e.title,description:e.description,keywords:t.keywords,image:n.image??t.image})}var u=n(624),m=n(7980),h=n(7419),p=n(5237);function f(e){const{permalink:t,title:n,subLabel:s,isNext:a}=e;return(0,i.jsxs)(p.Z,{className:(0,u.Z)("pagination-nav__link",a?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[s&&(0,i.jsx)("div",{className:"pagination-nav__sublabel",children:s}),(0,i.jsx)("div",{className:"pagination-nav__label",children:n})]})}function x(e){const{previous:t,next:n}=e;return(0,i.jsxs)("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,h.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"}),children:[t&&(0,i.jsx)(f,{...t,subLabel:(0,i.jsx)(h.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc",children:"Previous"})}),n&&(0,i.jsx)(f,{...n,subLabel:(0,i.jsx)(h.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc",children:"Next"}),isNext:!0})]})}function b(){const{metadata:e}=r();return(0,i.jsx)(x,{previous:e.previous,next:e.next})}var g=n(9939),j=n(4924),v=n(5854),N=n(8072),C=n(2885);const k={unreleased:function(e){let{siteTitle:t,versionMetadata:n}=e;return(0,i.jsx)(h.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:(0,i.jsx)("b",{children:n.label})},children:"This is unreleased documentation for {siteTitle} {versionLabel} version."})},unmaintained:function(e){let{siteTitle:t,versionMetadata:n}=e;return(0,i.jsx)(h.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:(0,i.jsx)("b",{children:n.label})},children:"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained."})}};function L(e){const t=k[e.versionMetadata.banner];return(0,i.jsx)(t,{...e})}function y(e){let{versionLabel:t,to:n,onClick:s}=e;return(0,i.jsx)(h.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:(0,i.jsx)("b",{children:(0,i.jsx)(p.Z,{to:n,onClick:s,children:(0,i.jsx)(h.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label",children:"latest version"})})})},children:"For up-to-date documentation, see the {latestVersionLink} ({versionLabel})."})}function B(e){let{className:t,versionMetadata:n}=e;const{siteConfig:{title:s}}=(0,g.Z)(),{pluginId:a}=(0,j.gA)({failfast:!0}),{savePreferredVersionName:o}=(0,N.J)(a),{latestDocSuggestion:l,latestVersionSuggestion:c}=(0,j.Jo)(a),r=l??(d=c).docs.find((e=>e.id===d.mainDocId));var d;return(0,i.jsxs)("div",{className:(0,u.Z)(t,v.k.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert",children:[(0,i.jsx)("div",{children:(0,i.jsx)(L,{siteTitle:s,versionMetadata:n})}),(0,i.jsx)("div",{className:"margin-top--md",children:(0,i.jsx)(y,{versionLabel:c.label,to:r.path,onClick:()=>o(c.name)})})]})}function _(e){let{className:t}=e;const n=(0,C.E)();return n.banner?(0,i.jsx)(B,{className:t,versionMetadata:n}):null}function w(e){let{className:t}=e;const n=(0,C.E)();return n.badge?(0,i.jsx)("span",{className:(0,u.Z)(t,v.k.docs.docVersionBadge,"badge badge--secondary"),children:(0,i.jsx)(h.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label},children:"Version: {versionLabel}"})}):null}function Z(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n}=e;return(0,i.jsx)(h.Z,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:(0,i.jsx)("b",{children:(0,i.jsx)("time",{dateTime:new Date(1e3*t).toISOString(),children:n})})},children:" on {date}"})}function T(e){let{lastUpdatedBy:t}=e;return(0,i.jsx)(h.Z,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:(0,i.jsx)("b",{children:t})},children:" by {user}"})}function E(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n,lastUpdatedBy:s}=e;return(0,i.jsxs)("span",{className:v.k.common.lastUpdated,children:[(0,i.jsx)(h.Z,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t&&n?(0,i.jsx)(Z,{lastUpdatedAt:t,formattedLastUpdatedAt:n}):"",byUser:s?(0,i.jsx)(T,{lastUpdatedBy:s}):""},children:"Last updated{atDate}{byUser}"}),!1]})}const H={iconEdit:"iconEdit_bHB7"};function A(e){let{className:t,...n}=e;return(0,i.jsx)("svg",{fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,u.Z)(H.iconEdit,t),"aria-hidden":"true",...n,children:(0,i.jsx)("g",{children:(0,i.jsx)("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})})})}function I(e){let{editUrl:t}=e;return(0,i.jsxs)(p.Z,{to:t,className:v.k.common.editThisPage,children:[(0,i.jsx)(A,{}),(0,i.jsx)(h.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page",children:"Edit this page"})]})}const M={tag:"tag_otG2",tagRegular:"tagRegular_s0E1",tagWithCount:"tagWithCount_PGyn"};function U(e){let{permalink:t,label:n,count:s}=e;return(0,i.jsxs)(p.Z,{href:t,className:(0,u.Z)(M.tag,s?M.tagWithCount:M.tagRegular),children:[n,s&&(0,i.jsx)("span",{children:s})]})}const S={tags:"tags_Ow0B",tag:"tag_DFxh"};function z(e){let{tags:t}=e;return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("b",{children:(0,i.jsx)(h.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,i.jsx)("ul",{className:(0,u.Z)(S.tags,"padding--none","margin-left--sm"),children:t.map((e=>{let{label:t,permalink:n}=e;return(0,i.jsx)("li",{className:S.tag,children:(0,i.jsx)(U,{label:t,permalink:n})},n)}))})]})}const R={lastUpdated:"lastUpdated_pbO5"};function O(e){return(0,i.jsx)("div",{className:(0,u.Z)(v.k.docs.docFooterTagsRow,"row margin-bottom--sm"),children:(0,i.jsx)("div",{className:"col",children:(0,i.jsx)(z,{...e})})})}function V(e){let{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:s,formattedLastUpdatedAt:a}=e;return(0,i.jsxs)("div",{className:(0,u.Z)(v.k.docs.docFooterEditMetaRow,"row"),children:[(0,i.jsx)("div",{className:"col",children:t&&(0,i.jsx)(I,{editUrl:t})}),(0,i.jsx)("div",{className:(0,u.Z)("col",R.lastUpdated),children:(n||s)&&(0,i.jsx)(E,{lastUpdatedAt:n,formattedLastUpdatedAt:a,lastUpdatedBy:s})})]})}function D(){const{metadata:e}=r(),{editUrl:t,lastUpdatedAt:n,formattedLastUpdatedAt:s,lastUpdatedBy:a,tags:o}=e,l=o.length>0,c=!!(t||n||a);return l||c?(0,i.jsxs)("footer",{className:(0,u.Z)(v.k.docs.docFooter,"docusaurus-mt-lg"),children:[l&&(0,i.jsx)(O,{tags:o}),c&&(0,i.jsx)(V,{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:a,formattedLastUpdatedAt:s})]}):null}var P=n(4229),W=n(9899);function $(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const s=n.slice(2,e.level);e.parentIndex=Math.max(...s),n[e.level]=t}));const s=[];return t.forEach((e=>{const{parentIndex:n,...a}=e;n>=0?t[n].children.push(a):s.push(a)})),s}function F(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:s}=e;return t.flatMap((e=>{const t=F({toc:e.children,minHeadingLevel:n,maxHeadingLevel:s});return function(e){return e.level>=n&&e.level<=s}(e)?[{...e,children:t}]:t}))}function q(e){const t=e.getBoundingClientRect();return t.top===t.bottom?q(e.parentNode):t}function G(e,t){let{anchorTopOffset:n}=t;const s=e.find((e=>q(e).top>=n));if(s){return function(e){return e.top>0&&e.bottom{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function X(e){const t=(0,s.useRef)(void 0),n=Q();(0,s.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:s,linkActiveClassName:a,minHeadingLevel:o,maxHeadingLevel:i}=e;function l(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(s),l=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const s=[];for(let a=t;a<=n;a+=1)s.push(`h${a}.anchor`);return Array.from(document.querySelectorAll(s.join()))}({minHeadingLevel:o,maxHeadingLevel:i}),c=G(l,{anchorTopOffset:n.current}),r=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(a),e.classList.add(a),t.current=e):e.classList.remove(a)}(e,e===r)}))}return document.addEventListener("scroll",l),document.addEventListener("resize",l),l(),()=>{document.removeEventListener("scroll",l),document.removeEventListener("resize",l)}}),[e,n])}function J(e){let{toc:t,className:n,linkClassName:s,isChild:a}=e;return t.length?(0,i.jsx)("ul",{className:a?void 0:n,children:t.map((e=>(0,i.jsxs)("li",{children:[(0,i.jsx)(p.Z,{to:`#${e.id}`,className:s??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,i.jsx)(J,{isChild:!0,toc:e.children,className:n,linkClassName:s})]},e.id)))}):null}const Y=s.memo(J);function K(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:a="table-of-contents__link",linkActiveClassName:o,minHeadingLevel:l,maxHeadingLevel:c,...r}=e;const d=(0,W.L)(),u=l??d.tableOfContents.minHeadingLevel,m=c??d.tableOfContents.maxHeadingLevel,h=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return(0,s.useMemo)((()=>F({toc:$(t),minHeadingLevel:n,maxHeadingLevel:a})),[t,n,a])}({toc:t,minHeadingLevel:u,maxHeadingLevel:m});return X((0,s.useMemo)((()=>{if(a&&o)return{linkClassName:a,linkActiveClassName:o,minHeadingLevel:u,maxHeadingLevel:m}}),[a,o,u,m])),(0,i.jsx)(Y,{toc:h,className:n,linkClassName:a,...r})}const ee={tocCollapsibleButton:"tocCollapsibleButton_iI2p",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_cHjC"};function te(e){let{collapsed:t,...n}=e;return(0,i.jsx)("button",{type:"button",...n,className:(0,u.Z)("clean-btn",ee.tocCollapsibleButton,!t&&ee.tocCollapsibleButtonExpanded,n.className),children:(0,i.jsx)(h.Z,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component",children:"On this page"})})}const ne={tocCollapsible:"tocCollapsible_wXna",tocCollapsibleContent:"tocCollapsibleContent_vea0",tocCollapsibleExpanded:"tocCollapsibleExpanded_BbRn"};function se(e){let{toc:t,className:n,minHeadingLevel:s,maxHeadingLevel:a}=e;const{collapsed:o,toggleCollapsed:l}=(0,P.u)({initialState:!0});return(0,i.jsxs)("div",{className:(0,u.Z)(ne.tocCollapsible,!o&&ne.tocCollapsibleExpanded,n),children:[(0,i.jsx)(te,{collapsed:o,onClick:l}),(0,i.jsx)(P.z,{lazy:!0,className:ne.tocCollapsibleContent,collapsed:o,children:(0,i.jsx)(K,{toc:t,minHeadingLevel:s,maxHeadingLevel:a})})]})}const ae={tocMobile:"tocMobile_Ojys"};function oe(){const{toc:e,frontMatter:t}=r();return(0,i.jsx)(se,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,u.Z)(v.k.docs.docTocMobile,ae.tocMobile)})}const ie={tableOfContents:"tableOfContents_XG6w",docItemContainer:"docItemContainer_Tr6w"},le="table-of-contents__link toc-highlight",ce="table-of-contents__link--active";function re(e){let{className:t,...n}=e;return(0,i.jsx)("div",{className:(0,u.Z)(ie.tableOfContents,"thin-scrollbar",t),children:(0,i.jsx)(K,{...n,linkClassName:le,linkActiveClassName:ce})})}function de(){const{toc:e,frontMatter:t}=r();return(0,i.jsx)(re,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:v.k.docs.docTocDesktop})}var ue=n(8825),me=n(1670),he=n(2750),pe=n(362),fe=n(4561);function xe(){const{prism:e}=(0,W.L)(),{colorMode:t}=(0,fe.I)(),n=e.theme,s=e.darkTheme||n;return"dark"===t?s:n}var be=n(6324),ge=n.n(be);const je=/title=(?["'])(?.*?)\1/,ve=/\{(?<range>[\d,-]+)\}/,Ne={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}},Ce={...Ne,lua:{start:"--",end:""},wasm:{start:"\\;\\;",end:""},tex:{start:"%",end:""},vb:{start:"['\u2018\u2019]",end:""},rem:{start:"[Rr][Ee][Mm]\\b",end:""},f90:{start:"!",end:""},ml:{start:"\\(\\*",end:"\\*\\)"},cobol:{start:"\\*>",end:""}},ke=Object.keys(Ne);function Le(e,t){const n=e.map((e=>{const{start:n,end:s}=Ce[e];return`(?:${n}\\s*(${t.flatMap((e=>[e.line,e.block?.start,e.block?.end].filter(Boolean))).join("|")})\\s*${s})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function ye(e,t){let n=e.replace(/\n$/,"");const{language:s,magicComments:a,metastring:o}=t;if(o&&ve.test(o)){const e=o.match(ve).groups.range;if(0===a.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${o}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const t=a[0].className,s=ge()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(s),code:n}}if(void 0===s)return{lineClassNames:{},code:n};const i=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return Le(["js","jsBlock"],t);case"jsx":case"tsx":return Le(["js","jsBlock","jsx"],t);case"html":return Le(["js","jsBlock","html"],t);case"python":case"py":case"bash":return Le(["bash"],t);case"markdown":case"md":return Le(["html","jsx","bash"],t);case"tex":case"latex":case"matlab":return Le(["tex"],t);case"lua":case"haskell":case"sql":return Le(["lua"],t);case"wasm":return Le(["wasm"],t);case"vb":case"vbnet":case"vba":case"visual-basic":return Le(["vb","rem"],t);case"batch":return Le(["rem"],t);case"basic":return Le(["rem","f90"],t);case"fsharp":return Le(["js","ml"],t);case"ocaml":case"sml":return Le(["ml"],t);case"fortran":return Le(["f90"],t);case"cobol":return Le(["cobol"],t);default:return Le(ke,t)}}(s,a),l=n.split("\n"),c=Object.fromEntries(a.map((e=>[e.className,{start:0,range:""}]))),r=Object.fromEntries(a.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),d=Object.fromEntries(a.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),u=Object.fromEntries(a.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let h=0;h<l.length;){const e=l[h].match(i);if(!e){h+=1;continue}const t=e.slice(1).find((e=>void 0!==e));r[t]?c[r[t]].range+=`${h},`:d[t]?c[d[t]].start=h:u[t]&&(c[u[t]].range+=`${c[u[t]].start}-${h-1},`),l.splice(h,1)}n=l.join("\n");const m={};return Object.entries(c).forEach((e=>{let[t,{range:n}]=e;ge()(n).forEach((e=>{m[e]??=[],m[e].push(t)}))})),{lineClassNames:m,code:n}}const Be={codeBlockContainer:"codeBlockContainer_mQmQ"};function _e(e){let{as:t,...n}=e;const s=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[s,a]=e;const o=t[s];o&&"string"==typeof a&&(n[o]=a)})),n}(xe());return(0,i.jsx)(t,{...n,style:s,className:(0,u.Z)(n.className,Be.codeBlockContainer,v.k.common.codeBlock)})}const we={codeBlockContent:"codeBlockContent_D5yF",codeBlockTitle:"codeBlockTitle_x_ju",codeBlock:"codeBlock_RMoD",codeBlockStandalone:"codeBlockStandalone_wQog",codeBlockLines:"codeBlockLines_AclH",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_O625",buttonGroup:"buttonGroup_aaMX"};function Ze(e){let{children:t,className:n}=e;return(0,i.jsx)(_e,{as:"pre",tabIndex:0,className:(0,u.Z)(we.codeBlockStandalone,"thin-scrollbar",n),children:(0,i.jsx)("code",{className:we.codeBlockLines,children:t})})}const Te={attributes:!0,characterData:!0,childList:!0,subtree:!0};function Ee(e,t){const[n,a]=(0,s.useState)(),i=(0,s.useCallback)((()=>{a(e.current?.closest("[role=tabpanel][hidden]"))}),[e,a]);(0,s.useEffect)((()=>{i()}),[i]),function(e,t,n){void 0===n&&(n=Te);const a=(0,o.zX)(t),i=(0,o.Ql)(n);(0,s.useEffect)((()=>{const t=new MutationObserver(a);return e&&t.observe(e,i),()=>t.disconnect()}),[e,a,i])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),i())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}var He=n(6101);const Ae={codeLine:"codeLine_FAqz",codeLineNumber:"codeLineNumber_BE9Z",codeLineContent:"codeLineContent_EF2y"};function Ie(e){let{line:t,classNames:n,showLineNumbers:s,getLineProps:a,getTokenProps:o}=e;1===t.length&&"\n"===t[0].content&&(t[0].content="");const l=a({line:t,className:(0,u.Z)(n,s&&Ae.codeLine)}),c=t.map(((e,t)=>(0,i.jsx)("span",{...o({token:e,key:t})},t)));return(0,i.jsxs)("span",{...l,children:[s?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("span",{className:Ae.codeLineNumber}),(0,i.jsx)("span",{className:Ae.codeLineContent,children:c})]}):c,(0,i.jsx)("br",{})]})}function Me(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"})})}function Ue(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"})})}const Se={copyButtonCopied:"copyButtonCopied_TYdd",copyButtonIcons:"copyButtonIcons_z5j7",copyButtonIcon:"copyButtonIcon_FoOz",copyButtonSuccessIcon:"copyButtonSuccessIcon_L0B6"};function ze(e){let{code:t,className:n}=e;const[a,o]=(0,s.useState)(!1),l=(0,s.useRef)(void 0),c=(0,s.useCallback)((()=>{!function(e,t){let{target:n=document.body}=void 0===t?{}:t;if("string"!=typeof e)throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof e}\`.`);const s=document.createElement("textarea"),a=document.activeElement;s.value=e,s.setAttribute("readonly",""),s.style.contain="strict",s.style.position="absolute",s.style.left="-9999px",s.style.fontSize="12pt";const o=document.getSelection(),i=o.rangeCount>0&&o.getRangeAt(0);n.append(s),s.select(),s.selectionStart=0,s.selectionEnd=e.length;let l=!1;try{l=document.execCommand("copy")}catch{}s.remove(),i&&(o.removeAllRanges(),o.addRange(i)),a&&a.focus()}(t),o(!0),l.current=window.setTimeout((()=>{o(!1)}),1e3)}),[t]);return(0,s.useEffect)((()=>()=>window.clearTimeout(l.current)),[]),(0,i.jsx)("button",{type:"button","aria-label":a?(0,h.I)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,h.I)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,h.I)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,u.Z)("clean-btn",n,Se.copyButton,a&&Se.copyButtonCopied),onClick:c,children:(0,i.jsxs)("span",{className:Se.copyButtonIcons,"aria-hidden":"true",children:[(0,i.jsx)(Me,{className:Se.copyButtonIcon}),(0,i.jsx)(Ue,{className:Se.copyButtonSuccessIcon})]})})}function Re(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})})}const Oe={wordWrapButtonIcon:"wordWrapButtonIcon_HV9T",wordWrapButtonEnabled:"wordWrapButtonEnabled_XzR1"};function Ve(e){let{className:t,onClick:n,isEnabled:s}=e;const a=(0,h.I)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return(0,i.jsx)("button",{type:"button",onClick:n,className:(0,u.Z)("clean-btn",t,s&&Oe.wordWrapButtonEnabled),"aria-label":a,title:a,children:(0,i.jsx)(Re,{className:Oe.wordWrapButtonIcon,"aria-hidden":"true"})})}function De(e){let{children:t,className:n="",metastring:a,title:o,showLineNumbers:l,language:c}=e;const{prism:{defaultLanguage:r,magicComments:d}}=(0,W.L)(),m=function(e){return e?.toLowerCase()}(c??function(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return t?.replace(/language-/,"")}(n)??r),h=xe(),p=function(){const[e,t]=(0,s.useState)(!1),[n,a]=(0,s.useState)(!1),o=(0,s.useRef)(null),i=(0,s.useCallback)((()=>{const n=o.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[o,e]),l=(0,s.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=o.current,n=e>t||o.current.querySelector("code").hasAttribute("style");a(n)}),[o]);return Ee(o,l),(0,s.useEffect)((()=>{l()}),[e,l]),(0,s.useEffect)((()=>(window.addEventListener("resize",l,{passive:!0}),()=>{window.removeEventListener("resize",l)})),[l]),{codeBlockRef:o,isEnabled:e,isCodeScrollable:n,toggle:i}}(),f=function(e){return e?.match(je)?.groups.title??""}(a)||o,{lineClassNames:x,code:b}=ye(t,{metastring:a,language:m,magicComments:d}),g=l??function(e){return Boolean(e?.includes("showLineNumbers"))}(a);return(0,i.jsxs)(_e,{as:"div",className:(0,u.Z)(n,m&&!n.includes(`language-${m}`)&&`language-${m}`),children:[f&&(0,i.jsx)("div",{className:we.codeBlockTitle,children:f}),(0,i.jsxs)("div",{className:we.codeBlockContent,children:[(0,i.jsx)(He.y$,{theme:h,code:b,language:m??"text",children:e=>{let{className:t,style:n,tokens:s,getLineProps:a,getTokenProps:o}=e;return(0,i.jsx)("pre",{tabIndex:0,ref:p.codeBlockRef,className:(0,u.Z)(t,we.codeBlock,"thin-scrollbar"),style:n,children:(0,i.jsx)("code",{className:(0,u.Z)(we.codeBlockLines,g&&we.codeBlockLinesWithNumbering),children:s.map(((e,t)=>(0,i.jsx)(Ie,{line:e,getLineProps:a,getTokenProps:o,classNames:x[t],showLineNumbers:g},t)))})})}}),(0,i.jsxs)("div",{className:we.buttonGroup,children:[(p.isEnabled||p.isCodeScrollable)&&(0,i.jsx)(Ve,{className:we.codeButton,onClick:()=>p.toggle(),isEnabled:p.isEnabled}),(0,i.jsx)(ze,{className:we.codeButton,code:b})]})]})]})}function Pe(e){let{children:t,...n}=e;const a=(0,pe.Z)(),o=function(e){return s.Children.toArray(e).some((e=>(0,s.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(t),l="string"==typeof o?De:Ze;return(0,i.jsx)(l,{...n,children:o},String(a))}function We(e){return(0,i.jsx)("code",{...e})}const $e={details:"details_IpIu",isBrowser:"isBrowser_QD4r",collapsibleContent:"collapsibleContent_Fd2D"};function Fe(e){return!!e&&("SUMMARY"===e.tagName||Fe(e.parentElement))}function qe(e,t){return!!e&&(e===t||qe(e.parentElement,t))}function Ge(e){let{summary:t,children:n,...a}=e;const o=(0,pe.Z)(),l=(0,s.useRef)(null),{collapsed:c,setCollapsed:r}=(0,P.u)({initialState:!a.open}),[d,m]=(0,s.useState)(a.open),h=s.isValidElement(t)?t:(0,i.jsx)("summary",{children:t??"Details"});return(0,i.jsxs)("details",{...a,ref:l,open:d,"data-collapsed":c,className:(0,u.Z)($e.details,o&&$e.isBrowser,a.className),onMouseDown:e=>{Fe(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;Fe(t)&&qe(t,l.current)&&(e.preventDefault(),c?(r(!1),m(!0)):r(!0))},children:[h,(0,i.jsx)(P.z,{lazy:!1,collapsed:c,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{r(e),m(!e)},children:(0,i.jsx)("div",{className:$e.collapsibleContent,children:n})})]})}const Qe={details:"details_jERq"},Xe="alert alert--info";function Je(e){let{...t}=e;return(0,i.jsx)(Ge,{...t,className:(0,u.Z)(Xe,Qe.details,t.className)})}function Ye(e){const t=s.Children.toArray(e.children),n=t.find((e=>s.isValidElement(e)&&"summary"===e.type)),a=(0,i.jsx)(i.Fragment,{children:t.filter((e=>e!==n))});return(0,i.jsx)(Je,{...e,summary:n,children:a})}function Ke(e){return(0,i.jsx)(ue.Z,{...e})}const et={containsTaskList:"containsTaskList_QWGu"};function tt(e){if(void 0!==e)return(0,u.Z)(e,e?.includes("contains-task-list")&&et.containsTaskList)}const nt={img:"img_SS3x"};function st(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=s.Children.toArray(e),n=t.find((e=>s.isValidElement(e)&&"mdxAdmonitionTitle"===e.type)),a=t.filter((e=>e!==n)),o=n?.props.children;return{mdxAdmonitionTitle:o,rest:a.length>0?(0,i.jsx)(i.Fragment,{children:a}):null}}(e.children),a=e.title??t;return{...e,...a&&{title:a},children:n}}const at={admonition:"admonition_WCGJ",admonitionHeading:"admonitionHeading_GCBg",admonitionIcon:"admonitionIcon_L39b",admonitionContent:"admonitionContent_pbrs"};function ot(e){let{type:t,className:n,children:s}=e;return(0,i.jsx)("div",{className:(0,u.Z)(v.k.common.admonition,v.k.common.admonitionType(t),at.admonition,n),children:s})}function it(e){let{icon:t,title:n}=e;return(0,i.jsxs)("div",{className:at.admonitionHeading,children:[(0,i.jsx)("span",{className:at.admonitionIcon,children:t}),n]})}function lt(e){let{children:t}=e;return t?(0,i.jsx)("div",{className:at.admonitionContent,children:t}):null}function ct(e){const{type:t,icon:n,title:s,children:a,className:o}=e;return(0,i.jsxs)(ot,{type:t,className:o,children:[(0,i.jsx)(it,{title:s,icon:n}),(0,i.jsx)(lt,{children:a})]})}function rt(e){return(0,i.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"})})}const dt={icon:(0,i.jsx)(rt,{}),title:(0,i.jsx)(h.Z,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)",children:"note"})};function ut(e){return(0,i.jsx)(ct,{...dt,...e,className:(0,u.Z)("alert alert--secondary",e.className),children:e.children})}function mt(e){return(0,i.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"})})}const ht={icon:(0,i.jsx)(mt,{}),title:(0,i.jsx)(h.Z,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)",children:"tip"})};function pt(e){return(0,i.jsx)(ct,{...ht,...e,className:(0,u.Z)("alert alert--success",e.className),children:e.children})}function ft(e){return(0,i.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"})})}const xt={icon:(0,i.jsx)(ft,{}),title:(0,i.jsx)(h.Z,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)",children:"info"})};function bt(e){return(0,i.jsx)(ct,{...xt,...e,className:(0,u.Z)("alert alert--info",e.className),children:e.children})}function gt(e){return(0,i.jsx)("svg",{viewBox:"0 0 16 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"})})}const jt={icon:(0,i.jsx)(gt,{}),title:(0,i.jsx)(h.Z,{id:"theme.admonition.warning",description:"The default label used for the Warning admonition (:::warning)",children:"warning"})};function vt(e){return(0,i.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"})})}const Nt={icon:(0,i.jsx)(vt,{}),title:(0,i.jsx)(h.Z,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)",children:"danger"})};const Ct={icon:(0,i.jsx)(gt,{}),title:(0,i.jsx)(h.Z,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)",children:"caution"})};const kt={...{note:ut,tip:pt,info:bt,warning:function(e){return(0,i.jsx)(ct,{...jt,...e,className:(0,u.Z)("alert alert--warning",e.className),children:e.children})},danger:function(e){return(0,i.jsx)(ct,{...Nt,...e,className:(0,u.Z)("alert alert--danger",e.className),children:e.children})}},...{secondary:e=>(0,i.jsx)(ut,{title:"secondary",...e}),important:e=>(0,i.jsx)(bt,{title:"important",...e}),success:e=>(0,i.jsx)(pt,{title:"success",...e}),caution:function(e){return(0,i.jsx)(ct,{...Ct,...e,className:(0,u.Z)("alert alert--warning",e.className),children:e.children})}}};function Lt(e){const t=st(e),n=(s=t.type,kt[s]||(console.warn(`No admonition component found for admonition type "${s}". Using Info as fallback.`),kt.info));var s;return(0,i.jsx)(n,{...t})}const yt={Head:he.Z,details:Ye,Details:Ye,code:function(e){return function(e){return void 0!==e.children&&s.Children.toArray(e.children).every((e=>"string"==typeof e&&!e.includes("\n")))}(e)?(0,i.jsx)(We,{...e}):(0,i.jsx)(Pe,{...e})},a:function(e){return(0,i.jsx)(p.Z,{...e})},pre:function(e){return(0,i.jsx)(i.Fragment,{children:e.children})},ul:function(e){return(0,i.jsx)("ul",{...e,className:tt(e.className)})},img:function(e){return(0,i.jsx)("img",{loading:"lazy",...e,className:(t=e.className,(0,u.Z)(t,nt.img))});var t},h1:e=>(0,i.jsx)(Ke,{as:"h1",...e}),h2:e=>(0,i.jsx)(Ke,{as:"h2",...e}),h3:e=>(0,i.jsx)(Ke,{as:"h3",...e}),h4:e=>(0,i.jsx)(Ke,{as:"h4",...e}),h5:e=>(0,i.jsx)(Ke,{as:"h5",...e}),h6:e=>(0,i.jsx)(Ke,{as:"h6",...e}),admonition:Lt,mermaid:()=>null};function Bt(e){let{children:t}=e;return(0,i.jsx)(me.Z,{components:yt,children:t})}function _t(e){let{children:t}=e;const n=function(){const{metadata:e,frontMatter:t,contentTitle:n}=r();return t.hide_title||void 0!==n?null:e.title}();return(0,i.jsxs)("div",{className:(0,u.Z)(v.k.docs.docMarkdown,"markdown"),children:[n&&(0,i.jsx)("header",{children:(0,i.jsx)(ue.Z,{as:"h1",children:n})}),(0,i.jsx)(Bt,{children:t})]})}var wt=n(7470),Zt=n(6440),Tt=n(1847);function Et(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"})})}const Ht={breadcrumbHomeIcon:"breadcrumbHomeIcon_sfvy"};function At(){const e=(0,Tt.Z)("/");return(0,i.jsx)("li",{className:"breadcrumbs__item",children:(0,i.jsx)(p.Z,{"aria-label":(0,h.I)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e,children:(0,i.jsx)(Et,{className:Ht.breadcrumbHomeIcon})})})}const It={breadcrumbsContainer:"breadcrumbsContainer_T5ub"};function Mt(e){let{children:t,href:n,isLast:s}=e;const a="breadcrumbs__link";return s?(0,i.jsx)("span",{className:a,itemProp:"name",children:t}):n?(0,i.jsx)(p.Z,{className:a,href:n,itemProp:"item",children:(0,i.jsx)("span",{itemProp:"name",children:t})}):(0,i.jsx)("span",{className:a,children:t})}function Ut(e){let{children:t,active:n,index:s,addMicrodata:a}=e;return(0,i.jsxs)("li",{...a&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},className:(0,u.Z)("breadcrumbs__item",{"breadcrumbs__item--active":n}),children:[t,(0,i.jsx)("meta",{itemProp:"position",content:String(s+1)})]})}function St(){const e=(0,wt.s1)(),t=(0,Zt.Ns)();return e?(0,i.jsx)("nav",{className:(0,u.Z)(v.k.docs.docBreadcrumbs,It.breadcrumbsContainer),"aria-label":(0,h.I)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"}),children:(0,i.jsxs)("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList",children:[t&&(0,i.jsx)(At,{}),e.map(((t,n)=>{const s=n===e.length-1,a="category"===t.type&&t.linkUnlisted?void 0:t.href;return(0,i.jsx)(Ut,{active:s,index:n,addMicrodata:!!a,children:(0,i.jsx)(Mt,{href:a,isLast:s,children:t.label})},n)}))]})}):null}function zt(){return(0,i.jsx)(h.Z,{id:"theme.unlistedContent.title",description:"The unlisted content banner title",children:"Unlisted page"})}function Rt(){return(0,i.jsx)(h.Z,{id:"theme.unlistedContent.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function Ot(){return(0,i.jsx)(he.Z,{children:(0,i.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}function Vt(e){let{className:t}=e;return(0,i.jsx)(Lt,{type:"caution",title:(0,i.jsx)(zt,{}),className:(0,u.Z)(t,v.k.common.unlistedBanner),children:(0,i.jsx)(Rt,{})})}function Dt(e){return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(Ot,{}),(0,i.jsx)(Vt,{...e})]})}const Pt={docItemContainer:"docItemContainer_tjFy",docItemCol:"docItemCol_Qr34"};function Wt(e){let{children:t}=e;const n=function(){const{frontMatter:e,toc:t}=r(),n=(0,m.i)(),s=e.hide_table_of_contents,a=!s&&t.length>0;return{hidden:s,mobile:a?(0,i.jsx)(oe,{}):void 0,desktop:!a||"desktop"!==n&&"ssr"!==n?void 0:(0,i.jsx)(de,{})}}(),{metadata:{unlisted:s}}=r();return(0,i.jsxs)("div",{className:"row",children:[(0,i.jsxs)("div",{className:(0,u.Z)("col",!n.hidden&&Pt.docItemCol),children:[s&&(0,i.jsx)(Dt,{}),(0,i.jsx)(_,{}),(0,i.jsxs)("div",{className:Pt.docItemContainer,children:[(0,i.jsxs)("article",{children:[(0,i.jsx)(St,{}),(0,i.jsx)(w,{}),n.mobile,(0,i.jsx)(_t,{children:t}),(0,i.jsx)(D,{})]}),(0,i.jsx)(b,{})]})]}),n.desktop&&(0,i.jsx)("div",{className:"col col--3",children:n.desktop})]})}function $t(e){const t=`docs-doc-id-${e.content.metadata.id}`,n=e.content;return(0,i.jsx)(c,{content:e.content,children:(0,i.jsxs)(a.FG,{className:t,children:[(0,i.jsx)(d,{}),(0,i.jsx)(Wt,{children:(0,i.jsx)(n,{})})]})})}},6324:(e,t)=>{function n(e){let t,n=[];for(let s of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(s))n.push(parseInt(s,10));else if(t=s.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,s,a,o]=t;if(s&&o){s=parseInt(s),o=parseInt(o);const e=s<o?1:-1;"-"!==a&&".."!==a&&"\u2025"!==a||(o+=e);for(let t=s;t!==o;t+=e)n.push(t)}}return n}t.default=n,e.exports=n},1670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l,a:()=>i});var s=n(7378);const a={},o=s.createContext(a);function i(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/17896441.ea3c4b97.js b/assets/js/17896441.ea3c4b97.js deleted file mode 100755 index 66f86e7..0000000 --- a/assets/js/17896441.ea3c4b97.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[918],{5318:(e,t,n)=>{"use strict";n.d(t,{Zo:()=>d,kt:()=>f});var a=n(7378);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(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 l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},r=Object.keys(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=a.createContext({}),i=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=i(e.components);return a.createElement(s.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},p=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,s=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),m=i(n),p=o,f=m["".concat(s,".").concat(p)]||m[p]||u[p]||r;return n?a.createElement(f,l(l({ref:t},d),{},{components:n})):a.createElement(f,l({ref:t},d))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,l=new Array(r);l[0]=p;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[m]="string"==typeof e?e:o,l[1]=c;for(var i=2;i<r;i++)l[i]=n[i];return a.createElement.apply(null,l)}return a.createElement.apply(null,n)}p.displayName="MDXCreateElement"},6417:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>xt});var a=n(7378),o=n(8831),r=n(1763);const l=a.createContext(null);function c(e){let{children:t,content:n}=e;const o=function(e){return(0,a.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(n);return a.createElement(l.Provider,{value:o},t)}function s(){const e=(0,a.useContext)(l);if(null===e)throw new r.i6("DocProvider");return e}function i(){const{metadata:e,frontMatter:t,assets:n}=s();return a.createElement(o.d,{title:e.title,description:e.description,keywords:t.keywords,image:n.image??t.image})}var d=n(8944),m=n(8357),u=n(5773),p=n(9213),f=n(1884);function h(e){const{permalink:t,title:n,subLabel:o,isNext:r}=e;return a.createElement(f.Z,{className:(0,d.Z)("pagination-nav__link",r?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t},o&&a.createElement("div",{className:"pagination-nav__sublabel"},o),a.createElement("div",{className:"pagination-nav__label"},n))}function g(e){const{previous:t,next:n}=e;return a.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,p.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"})},t&&a.createElement(h,(0,u.Z)({},t,{subLabel:a.createElement(p.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")})),n&&a.createElement(h,(0,u.Z)({},n,{subLabel:a.createElement(p.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next"),isNext:!0})))}function b(){const{metadata:e}=s();return a.createElement(g,{previous:e.previous,next:e.next})}var v=n(353),E=n(6282),y=n(5484),k=n(4453),N=n(5611);const C={unreleased:function(e){let{siteTitle:t,versionMetadata:n}=e;return a.createElement(p.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:a.createElement("b",null,n.label)}},"This is unreleased documentation for {siteTitle} {versionLabel} version.")},unmaintained:function(e){let{siteTitle:t,versionMetadata:n}=e;return a.createElement(p.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:a.createElement("b",null,n.label)}},"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.")}};function L(e){const t=C[e.versionMetadata.banner];return a.createElement(t,e)}function _(e){let{versionLabel:t,to:n,onClick:o}=e;return a.createElement(p.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:a.createElement("b",null,a.createElement(f.Z,{to:n,onClick:o},a.createElement(p.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label"},"latest version")))}},"For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).")}function w(e){let{className:t,versionMetadata:n}=e;const{siteConfig:{title:o}}=(0,v.Z)(),{pluginId:r}=(0,E.gA)({failfast:!0}),{savePreferredVersionName:l}=(0,k.J)(r),{latestDocSuggestion:c,latestVersionSuggestion:s}=(0,E.Jo)(r),i=c??(m=s).docs.find((e=>e.id===m.mainDocId));var m;return a.createElement("div",{className:(0,d.Z)(t,y.k.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert"},a.createElement("div",null,a.createElement(L,{siteTitle:o,versionMetadata:n})),a.createElement("div",{className:"margin-top--md"},a.createElement(_,{versionLabel:s.label,to:i.path,onClick:()=>l(s.name)})))}function T(e){let{className:t}=e;const n=(0,N.E)();return n.banner?a.createElement(w,{className:t,versionMetadata:n}):null}function B(e){let{className:t}=e;const n=(0,N.E)();return n.badge?a.createElement("span",{className:(0,d.Z)(t,y.k.docs.docVersionBadge,"badge badge--secondary")},a.createElement(p.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label}},"Version: {versionLabel}")):null}function Z(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n}=e;return a.createElement(p.Z,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:a.createElement("b",null,a.createElement("time",{dateTime:new Date(1e3*t).toISOString()},n))}}," on {date}")}function x(e){let{lastUpdatedBy:t}=e;return a.createElement(p.Z,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:a.createElement("b",null,t)}}," by {user}")}function O(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n,lastUpdatedBy:o}=e;return a.createElement("span",{className:y.k.common.lastUpdated},a.createElement(p.Z,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t&&n?a.createElement(Z,{lastUpdatedAt:t,formattedLastUpdatedAt:n}):"",byUser:o?a.createElement(x,{lastUpdatedBy:o}):""}},"Last updated{atDate}{byUser}"),!1)}const H={iconEdit:"iconEdit_bHB7"};function j(e){let{className:t,...n}=e;return a.createElement("svg",(0,u.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,d.Z)(H.iconEdit,t),"aria-hidden":"true"},n),a.createElement("g",null,a.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))}function A(e){let{editUrl:t}=e;return a.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:y.k.common.editThisPage},a.createElement(j,null),a.createElement(p.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}const I={tag:"tag_otG2",tagRegular:"tagRegular_s0E1",tagWithCount:"tagWithCount_PGyn"};function M(e){let{permalink:t,label:n,count:o}=e;return a.createElement(f.Z,{href:t,className:(0,d.Z)(I.tag,o?I.tagWithCount:I.tagRegular)},n,o&&a.createElement("span",null,o))}const S={tags:"tags_Ow0B",tag:"tag_DFxh"};function P(e){let{tags:t}=e;return a.createElement(a.Fragment,null,a.createElement("b",null,a.createElement(p.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),a.createElement("ul",{className:(0,d.Z)(S.tags,"padding--none","margin-left--sm")},t.map((e=>{let{label:t,permalink:n}=e;return a.createElement("li",{key:n,className:S.tag},a.createElement(M,{label:t,permalink:n}))}))))}const z={lastUpdated:"lastUpdated_pbO5"};function U(e){return a.createElement("div",{className:(0,d.Z)(y.k.docs.docFooterTagsRow,"row margin-bottom--sm")},a.createElement("div",{className:"col"},a.createElement(P,e)))}function D(e){let{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:o,formattedLastUpdatedAt:r}=e;return a.createElement("div",{className:(0,d.Z)(y.k.docs.docFooterEditMetaRow,"row")},a.createElement("div",{className:"col"},t&&a.createElement(A,{editUrl:t})),a.createElement("div",{className:(0,d.Z)("col",z.lastUpdated)},(n||o)&&a.createElement(O,{lastUpdatedAt:n,formattedLastUpdatedAt:r,lastUpdatedBy:o})))}function R(){const{metadata:e}=s(),{editUrl:t,lastUpdatedAt:n,formattedLastUpdatedAt:o,lastUpdatedBy:r,tags:l}=e,c=l.length>0,i=!!(t||n||r);return c||i?a.createElement("footer",{className:(0,d.Z)(y.k.docs.docFooter,"docusaurus-mt-lg")},c&&a.createElement(U,{tags:l}),i&&a.createElement(D,{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:r,formattedLastUpdatedAt:o})):null}var V=n(376),W=n(624);function F(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const a=n.slice(2,e.level);e.parentIndex=Math.max(...a),n[e.level]=t}));const a=[];return t.forEach((e=>{const{parentIndex:n,...o}=e;n>=0?t[n].children.push(o):a.push(o)})),a}function $(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return t.flatMap((e=>{const t=$({toc:e.children,minHeadingLevel:n,maxHeadingLevel:a});return function(e){return e.level>=n&&e.level<=a}(e)?[{...e,children:t}]:t}))}function q(e){const t=e.getBoundingClientRect();return t.top===t.bottom?q(e.parentNode):t}function G(e,t){let{anchorTopOffset:n}=t;const a=e.find((e=>q(e).top>=n));if(a){return function(e){return e.top>0&&e.bottom<window.innerHeight/2}(q(a))?a:e[e.indexOf(a)-1]??null}return e[e.length-1]??null}function Q(){const e=(0,a.useRef)(0),{navbar:{hideOnScroll:t}}=(0,W.L)();return(0,a.useEffect)((()=>{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function X(e){const t=(0,a.useRef)(void 0),n=Q();(0,a.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:a,linkActiveClassName:o,minHeadingLevel:r,maxHeadingLevel:l}=e;function c(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(a),c=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const a=[];for(let o=t;o<=n;o+=1)a.push(`h${o}.anchor`);return Array.from(document.querySelectorAll(a.join()))}({minHeadingLevel:r,maxHeadingLevel:l}),s=G(c,{anchorTopOffset:n.current}),i=e.find((e=>s&&s.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(o),e.classList.add(o),t.current=e):e.classList.remove(o)}(e,e===i)}))}return document.addEventListener("scroll",c),document.addEventListener("resize",c),c(),()=>{document.removeEventListener("scroll",c),document.removeEventListener("resize",c)}}),[e,n])}function J(e){let{toc:t,className:n,linkClassName:o,isChild:r}=e;return t.length?a.createElement("ul",{className:r?void 0:n},t.map((e=>a.createElement("li",{key:e.id},a.createElement("a",{href:`#${e.id}`,className:o??void 0,dangerouslySetInnerHTML:{__html:e.value}}),a.createElement(J,{isChild:!0,toc:e.children,className:n,linkClassName:o}))))):null}const Y=a.memo(J);function K(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:o="table-of-contents__link",linkActiveClassName:r,minHeadingLevel:l,maxHeadingLevel:c,...s}=e;const i=(0,W.L)(),d=l??i.tableOfContents.minHeadingLevel,m=c??i.tableOfContents.maxHeadingLevel,p=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:o}=e;return(0,a.useMemo)((()=>$({toc:F(t),minHeadingLevel:n,maxHeadingLevel:o})),[t,n,o])}({toc:t,minHeadingLevel:d,maxHeadingLevel:m});return X((0,a.useMemo)((()=>{if(o&&r)return{linkClassName:o,linkActiveClassName:r,minHeadingLevel:d,maxHeadingLevel:m}}),[o,r,d,m])),a.createElement(Y,(0,u.Z)({toc:p,className:n,linkClassName:o},s))}const ee={tocCollapsibleButton:"tocCollapsibleButton_iI2p",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_cHjC"};function te(e){let{collapsed:t,...n}=e;return a.createElement("button",(0,u.Z)({type:"button"},n,{className:(0,d.Z)("clean-btn",ee.tocCollapsibleButton,!t&&ee.tocCollapsibleButtonExpanded,n.className)}),a.createElement(p.Z,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component"},"On this page"))}const ne={tocCollapsible:"tocCollapsible_wXna",tocCollapsibleContent:"tocCollapsibleContent_vea0",tocCollapsibleExpanded:"tocCollapsibleExpanded_BbRn"};function ae(e){let{toc:t,className:n,minHeadingLevel:o,maxHeadingLevel:r}=e;const{collapsed:l,toggleCollapsed:c}=(0,V.u)({initialState:!0});return a.createElement("div",{className:(0,d.Z)(ne.tocCollapsible,!l&&ne.tocCollapsibleExpanded,n)},a.createElement(te,{collapsed:l,onClick:c}),a.createElement(V.z,{lazy:!0,className:ne.tocCollapsibleContent,collapsed:l},a.createElement(K,{toc:t,minHeadingLevel:o,maxHeadingLevel:r})))}const oe={tocMobile:"tocMobile_Ojys"};function re(){const{toc:e,frontMatter:t}=s();return a.createElement(ae,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,d.Z)(y.k.docs.docTocMobile,oe.tocMobile)})}const le={tableOfContents:"tableOfContents_XG6w",docItemContainer:"docItemContainer_Tr6w"},ce="table-of-contents__link toc-highlight",se="table-of-contents__link--active";function ie(e){let{className:t,...n}=e;return a.createElement("div",{className:(0,d.Z)(le.tableOfContents,"thin-scrollbar",t)},a.createElement(K,(0,u.Z)({},n,{linkClassName:ce,linkActiveClassName:se})))}function de(){const{toc:e,frontMatter:t}=s();return a.createElement(ie,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:y.k.docs.docTocDesktop})}const me={anchorWithStickyNavbar:"anchorWithStickyNavbar_JmGV",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_pMLv"};function ue(e){let{as:t,id:n,...o}=e;const{navbar:{hideOnScroll:r}}=(0,W.L)();if("h1"===t||!n)return a.createElement(t,(0,u.Z)({},o,{id:void 0}));const l=(0,p.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof o.children?o.children:n});return a.createElement(t,(0,u.Z)({},o,{className:(0,d.Z)("anchor",r?me.anchorWithHideOnScrollNavbar:me.anchorWithStickyNavbar,o.className),id:n}),o.children,a.createElement(f.Z,{className:"hash-link",to:`#${n}`,"aria-label":l,title:l},"\u200b"))}var pe=n(5318),fe=n(7092);var he=n(6457),ge=n(5421);function be(){const{prism:e}=(0,W.L)(),{colorMode:t}=(0,ge.I)(),n=e.theme,a=e.darkTheme||n;return"dark"===t?a:n}var ve=n(6324),Ee=n.n(ve);const ye=/title=(?<quote>["'])(?<title>.*?)\1/,ke=/\{(?<range>[\d,-]+)\}/,Ne={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}};function Ce(e,t){const n=e.map((e=>{const{start:n,end:a}=Ne[e];return`(?:${n}\\s*(${t.flatMap((e=>[e.line,e.block?.start,e.block?.end].filter(Boolean))).join("|")})\\s*${a})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function Le(e,t){let n=e.replace(/\n$/,"");const{language:a,magicComments:o,metastring:r}=t;if(r&&ke.test(r)){const e=r.match(ke).groups.range;if(0===o.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${r}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const t=o[0].className,a=Ee()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(a),code:n}}if(void 0===a)return{lineClassNames:{},code:n};const l=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return Ce(["js","jsBlock"],t);case"jsx":case"tsx":return Ce(["js","jsBlock","jsx"],t);case"html":return Ce(["js","jsBlock","html"],t);case"python":case"py":case"bash":return Ce(["bash"],t);case"markdown":case"md":return Ce(["html","jsx","bash"],t);default:return Ce(Object.keys(Ne),t)}}(a,o),c=n.split("\n"),s=Object.fromEntries(o.map((e=>[e.className,{start:0,range:""}]))),i=Object.fromEntries(o.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),d=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),m=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let p=0;p<c.length;){const e=c[p].match(l);if(!e){p+=1;continue}const t=e.slice(1).find((e=>void 0!==e));i[t]?s[i[t]].range+=`${p},`:d[t]?s[d[t]].start=p:m[t]&&(s[m[t]].range+=`${s[m[t]].start}-${p-1},`),c.splice(p,1)}n=c.join("\n");const u={};return Object.entries(s).forEach((e=>{let[t,{range:n}]=e;Ee()(n).forEach((e=>{u[e]??=[],u[e].push(t)}))})),{lineClassNames:u,code:n}}const _e={codeBlockContainer:"codeBlockContainer_mQmQ"};function we(e){let{as:t,...n}=e;const o=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[a,o]=e;const r=t[a];r&&"string"==typeof o&&(n[r]=o)})),n}(be());return a.createElement(t,(0,u.Z)({},n,{style:o,className:(0,d.Z)(n.className,_e.codeBlockContainer,y.k.common.codeBlock)}))}const Te={codeBlockContent:"codeBlockContent_D5yF",codeBlockTitle:"codeBlockTitle_x_ju",codeBlock:"codeBlock_RMoD",codeBlockStandalone:"codeBlockStandalone_wQog",codeBlockLines:"codeBlockLines_AclH",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_O625",buttonGroup:"buttonGroup_aaMX"};function Be(e){let{children:t,className:n}=e;return a.createElement(we,{as:"pre",tabIndex:0,className:(0,d.Z)(Te.codeBlockStandalone,"thin-scrollbar",n)},a.createElement("code",{className:Te.codeBlockLines},t))}const Ze={attributes:!0,characterData:!0,childList:!0,subtree:!0};function xe(e,t){const[n,o]=(0,a.useState)(),l=(0,a.useCallback)((()=>{o(e.current?.closest("[role=tabpanel][hidden]"))}),[e,o]);(0,a.useEffect)((()=>{l()}),[l]),function(e,t,n){void 0===n&&(n=Ze);const o=(0,r.zX)(t),l=(0,r.Ql)(n);(0,a.useEffect)((()=>{const t=new MutationObserver(o);return e&&t.observe(e,l),()=>t.disconnect()}),[e,o,l])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),l())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}const Oe={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]};var He={Prism:n(2349).Z,theme:Oe};function je(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ae(){return Ae=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},Ae.apply(this,arguments)}var Ie=/\r\n|\r|\n/,Me=function(e){0===e.length?e.push({types:["plain"],content:"\n",empty:!0}):1===e.length&&""===e[0].content&&(e[0].content="\n",e[0].empty=!0)},Se=function(e,t){var n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)};function Pe(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&-1===t.indexOf(a)&&(n[a]=e[a]);return n}var ze=function(e){function t(){for(var t=this,n=[],a=arguments.length;a--;)n[a]=arguments[a];e.apply(this,n),je(this,"getThemeDict",(function(e){if(void 0!==t.themeDict&&e.theme===t.prevTheme&&e.language===t.prevLanguage)return t.themeDict;t.prevTheme=e.theme,t.prevLanguage=e.language;var n=e.theme?function(e,t){var n=e.plain,a=Object.create(null),o=e.styles.reduce((function(e,n){var a=n.languages,o=n.style;return a&&!a.includes(t)||n.types.forEach((function(t){var n=Ae({},e[t],o);e[t]=n})),e}),a);return o.root=n,o.plain=Ae({},n,{backgroundColor:null}),o}(e.theme,e.language):void 0;return t.themeDict=n})),je(this,"getLineProps",(function(e){var n=e.key,a=e.className,o=e.style,r=Ae({},Pe(e,["key","className","style","line"]),{className:"token-line",style:void 0,key:void 0}),l=t.getThemeDict(t.props);return void 0!==l&&(r.style=l.plain),void 0!==o&&(r.style=void 0!==r.style?Ae({},r.style,o):o),void 0!==n&&(r.key=n),a&&(r.className+=" "+a),r})),je(this,"getStyleForToken",(function(e){var n=e.types,a=e.empty,o=n.length,r=t.getThemeDict(t.props);if(void 0!==r){if(1===o&&"plain"===n[0])return a?{display:"inline-block"}:void 0;if(1===o&&!a)return r[n[0]];var l=a?{display:"inline-block"}:{},c=n.map((function(e){return r[e]}));return Object.assign.apply(Object,[l].concat(c))}})),je(this,"getTokenProps",(function(e){var n=e.key,a=e.className,o=e.style,r=e.token,l=Ae({},Pe(e,["key","className","style","token"]),{className:"token "+r.types.join(" "),children:r.content,style:t.getStyleForToken(r),key:void 0});return void 0!==o&&(l.style=void 0!==l.style?Ae({},l.style,o):o),void 0!==n&&(l.key=n),a&&(l.className+=" "+a),l})),je(this,"tokenize",(function(e,t,n,a){var o={code:t,grammar:n,language:a,tokens:[]};e.hooks.run("before-tokenize",o);var r=o.tokens=e.tokenize(o.code,o.grammar,o.language);return e.hooks.run("after-tokenize",o),r}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.render=function(){var e=this.props,t=e.Prism,n=e.language,a=e.code,o=e.children,r=this.getThemeDict(this.props),l=t.languages[n];return o({tokens:function(e){for(var t=[[]],n=[e],a=[0],o=[e.length],r=0,l=0,c=[],s=[c];l>-1;){for(;(r=a[l]++)<o[l];){var i=void 0,d=t[l],m=n[l][r];if("string"==typeof m?(d=l>0?d:["plain"],i=m):(d=Se(d,m.type),m.alias&&(d=Se(d,m.alias)),i=m.content),"string"==typeof i){var u=i.split(Ie),p=u.length;c.push({types:d,content:u[0]});for(var f=1;f<p;f++)Me(c),s.push(c=[]),c.push({types:d,content:u[f]})}else l++,t.push(d),n.push(i),a.push(0),o.push(i.length)}l--,t.pop(),n.pop(),a.pop(),o.pop()}return Me(c),s}(void 0!==l?this.tokenize(t,a,l,n):[a]),className:"prism-code language-"+n,style:void 0!==r?r.root:{},getLineProps:this.getLineProps,getTokenProps:this.getTokenProps})},t}(a.Component);const Ue=ze,De={codeLine:"codeLine_FAqz",codeLineNumber:"codeLineNumber_BE9Z",codeLineContent:"codeLineContent_EF2y"};function Re(e){let{line:t,classNames:n,showLineNumbers:o,getLineProps:r,getTokenProps:l}=e;1===t.length&&"\n"===t[0].content&&(t[0].content="");const c=r({line:t,className:(0,d.Z)(n,o&&De.codeLine)}),s=t.map(((e,t)=>a.createElement("span",(0,u.Z)({key:t},l({token:e,key:t})))));return a.createElement("span",c,o?a.createElement(a.Fragment,null,a.createElement("span",{className:De.codeLineNumber}),a.createElement("span",{className:De.codeLineContent},s)):s,a.createElement("br",null))}function Ve(e){return a.createElement("svg",(0,u.Z)({viewBox:"0 0 24 24"},e),a.createElement("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"}))}function We(e){return a.createElement("svg",(0,u.Z)({viewBox:"0 0 24 24"},e),a.createElement("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"}))}const Fe={copyButtonCopied:"copyButtonCopied_TYdd",copyButtonIcons:"copyButtonIcons_z5j7",copyButtonIcon:"copyButtonIcon_FoOz",copyButtonSuccessIcon:"copyButtonSuccessIcon_L0B6"};function $e(e){let{code:t,className:n}=e;const[o,r]=(0,a.useState)(!1),l=(0,a.useRef)(void 0),c=(0,a.useCallback)((()=>{!function(e,t){let{target:n=document.body}=void 0===t?{}:t;if("string"!=typeof e)throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof e}\`.`);const a=document.createElement("textarea"),o=document.activeElement;a.value=e,a.setAttribute("readonly",""),a.style.contain="strict",a.style.position="absolute",a.style.left="-9999px",a.style.fontSize="12pt";const r=document.getSelection(),l=r.rangeCount>0&&r.getRangeAt(0);n.append(a),a.select(),a.selectionStart=0,a.selectionEnd=e.length;let c=!1;try{c=document.execCommand("copy")}catch{}a.remove(),l&&(r.removeAllRanges(),r.addRange(l)),o&&o.focus()}(t),r(!0),l.current=window.setTimeout((()=>{r(!1)}),1e3)}),[t]);return(0,a.useEffect)((()=>()=>window.clearTimeout(l.current)),[]),a.createElement("button",{type:"button","aria-label":o?(0,p.I)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,p.I)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,p.I)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,d.Z)("clean-btn",n,Fe.copyButton,o&&Fe.copyButtonCopied),onClick:c},a.createElement("span",{className:Fe.copyButtonIcons,"aria-hidden":"true"},a.createElement(Ve,{className:Fe.copyButtonIcon}),a.createElement(We,{className:Fe.copyButtonSuccessIcon})))}function qe(e){return a.createElement("svg",(0,u.Z)({viewBox:"0 0 24 24"},e),a.createElement("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"}))}const Ge={wordWrapButtonIcon:"wordWrapButtonIcon_HV9T",wordWrapButtonEnabled:"wordWrapButtonEnabled_XzR1"};function Qe(e){let{className:t,onClick:n,isEnabled:o}=e;const r=(0,p.I)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return a.createElement("button",{type:"button",onClick:n,className:(0,d.Z)("clean-btn",t,o&&Ge.wordWrapButtonEnabled),"aria-label":r,title:r},a.createElement(qe,{className:Ge.wordWrapButtonIcon,"aria-hidden":"true"}))}function Xe(e){let{children:t,className:n="",metastring:o,title:r,showLineNumbers:l,language:c}=e;const{prism:{defaultLanguage:s,magicComments:i}}=(0,W.L)(),m=c??function(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return t?.replace(/language-/,"")}(n)??s,p=be(),f=function(){const[e,t]=(0,a.useState)(!1),[n,o]=(0,a.useState)(!1),r=(0,a.useRef)(null),l=(0,a.useCallback)((()=>{const n=r.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[r,e]),c=(0,a.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=r.current,n=e>t||r.current.querySelector("code").hasAttribute("style");o(n)}),[r]);return xe(r,c),(0,a.useEffect)((()=>{c()}),[e,c]),(0,a.useEffect)((()=>(window.addEventListener("resize",c,{passive:!0}),()=>{window.removeEventListener("resize",c)})),[c]),{codeBlockRef:r,isEnabled:e,isCodeScrollable:n,toggle:l}}(),h=function(e){return e?.match(ye)?.groups.title??""}(o)||r,{lineClassNames:g,code:b}=Le(t,{metastring:o,language:m,magicComments:i}),v=l??function(e){return Boolean(e?.includes("showLineNumbers"))}(o);return a.createElement(we,{as:"div",className:(0,d.Z)(n,m&&!n.includes(`language-${m}`)&&`language-${m}`)},h&&a.createElement("div",{className:Te.codeBlockTitle},h),a.createElement("div",{className:Te.codeBlockContent},a.createElement(Ue,(0,u.Z)({},He,{theme:p,code:b,language:m??"text"}),(e=>{let{className:t,tokens:n,getLineProps:o,getTokenProps:r}=e;return a.createElement("pre",{tabIndex:0,ref:f.codeBlockRef,className:(0,d.Z)(t,Te.codeBlock,"thin-scrollbar")},a.createElement("code",{className:(0,d.Z)(Te.codeBlockLines,v&&Te.codeBlockLinesWithNumbering)},n.map(((e,t)=>a.createElement(Re,{key:t,line:e,getLineProps:o,getTokenProps:r,classNames:g[t],showLineNumbers:v})))))})),a.createElement("div",{className:Te.buttonGroup},(f.isEnabled||f.isCodeScrollable)&&a.createElement(Qe,{className:Te.codeButton,onClick:()=>f.toggle(),isEnabled:f.isEnabled}),a.createElement($e,{className:Te.codeButton,code:b}))))}function Je(e){let{children:t,...n}=e;const o=(0,he.Z)(),r=function(e){return a.Children.toArray(e).some((e=>(0,a.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(t),l="string"==typeof r?Xe:Be;return a.createElement(l,(0,u.Z)({key:String(o)},n),r)}const Ye={details:"details_IpIu",isBrowser:"isBrowser_QD4r",collapsibleContent:"collapsibleContent_Fd2D"};function Ke(e){return!!e&&("SUMMARY"===e.tagName||Ke(e.parentElement))}function et(e,t){return!!e&&(e===t||et(e.parentElement,t))}function tt(e){let{summary:t,children:n,...o}=e;const r=(0,he.Z)(),l=(0,a.useRef)(null),{collapsed:c,setCollapsed:s}=(0,V.u)({initialState:!o.open}),[i,m]=(0,a.useState)(o.open),p=a.isValidElement(t)?t:a.createElement("summary",null,t??"Details");return a.createElement("details",(0,u.Z)({},o,{ref:l,open:i,"data-collapsed":c,className:(0,d.Z)(Ye.details,r&&Ye.isBrowser,o.className),onMouseDown:e=>{Ke(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;Ke(t)&&et(t,l.current)&&(e.preventDefault(),c?(s(!1),m(!0)):s(!0))}}),p,a.createElement(V.z,{lazy:!1,collapsed:c,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{s(e),m(!e)}},a.createElement("div",{className:Ye.collapsibleContent},n)))}const nt={details:"details_jERq"},at="alert alert--info";function ot(e){let{...t}=e;return a.createElement(tt,(0,u.Z)({},t,{className:(0,d.Z)(at,nt.details,t.className)}))}function rt(e){return a.createElement(ue,e)}const lt={containsTaskList:"containsTaskList_QWGu"};const ct={img:"img_SS3x"};const st="admonition_uH4V",it="admonitionHeading_P5_N",dt="admonitionIcon_MF44",mt="admonitionContent_yySL";const ut={note:{infimaClassName:"secondary",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 14 16"},a.createElement("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))},label:a.createElement(p.Z,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)"},"note")},tip:{infimaClassName:"success",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 12 16"},a.createElement("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))},label:a.createElement(p.Z,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)"},"tip")},danger:{infimaClassName:"danger",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 12 16"},a.createElement("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))},label:a.createElement(p.Z,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)"},"danger")},info:{infimaClassName:"info",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 14 16"},a.createElement("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))},label:a.createElement(p.Z,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)"},"info")},caution:{infimaClassName:"warning",iconComponent:function(){return a.createElement("svg",{viewBox:"0 0 16 16"},a.createElement("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))},label:a.createElement(p.Z,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)"},"caution")}},pt={secondary:"note",important:"info",success:"tip",warning:"danger"};function ft(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=a.Children.toArray(e),n=t.find((e=>a.isValidElement(e)&&"mdxAdmonitionTitle"===e.props?.mdxType)),o=a.createElement(a.Fragment,null,t.filter((e=>e!==n)));return{mdxAdmonitionTitle:n,rest:o}}(e.children);return{...e,title:e.title??t,children:n}}const ht={head:function(e){const t=a.Children.map(e.children,(e=>a.isValidElement(e)?function(e){if(e.props?.mdxType&&e.props.originalType){const{mdxType:t,originalType:n,...o}=e.props;return a.createElement(e.props.originalType,o)}return e}(e):e));return a.createElement(fe.Z,e,t)},code:function(e){const t=["a","abbr","b","br","button","cite","code","del","dfn","em","i","img","input","ins","kbd","label","object","output","q","ruby","s","small","span","strong","sub","sup","time","u","var","wbr"];return a.Children.toArray(e.children).every((e=>"string"==typeof e&&!e.includes("\n")||(0,a.isValidElement)(e)&&t.includes(e.props?.mdxType)))?a.createElement("code",e):a.createElement(Je,e)},a:function(e){return a.createElement(f.Z,e)},pre:function(e){return a.createElement(Je,(0,a.isValidElement)(e.children)&&"code"===e.children.props?.originalType?e.children.props:{...e})},details:function(e){const t=a.Children.toArray(e.children),n=t.find((e=>a.isValidElement(e)&&"summary"===e.props?.mdxType)),o=a.createElement(a.Fragment,null,t.filter((e=>e!==n)));return a.createElement(ot,(0,u.Z)({},e,{summary:n}),o)},ul:function(e){return a.createElement("ul",(0,u.Z)({},e,{className:(t=e.className,(0,d.Z)(t,t?.includes("contains-task-list")&<.containsTaskList))}));var t},img:function(e){return a.createElement("img",(0,u.Z)({loading:"lazy"},e,{className:(t=e.className,(0,d.Z)(t,ct.img))}));var t},h1:e=>a.createElement(rt,(0,u.Z)({as:"h1"},e)),h2:e=>a.createElement(rt,(0,u.Z)({as:"h2"},e)),h3:e=>a.createElement(rt,(0,u.Z)({as:"h3"},e)),h4:e=>a.createElement(rt,(0,u.Z)({as:"h4"},e)),h5:e=>a.createElement(rt,(0,u.Z)({as:"h5"},e)),h6:e=>a.createElement(rt,(0,u.Z)({as:"h6"},e)),admonition:function(e){const{children:t,type:n,title:o,icon:r}=ft(e),l=function(e){const t=pt[e]??e,n=ut[t];return n||(console.warn(`No admonition config found for admonition type "${t}". Using Info as fallback.`),ut.info)}(n),c=o??l.label,{iconComponent:s}=l,i=r??a.createElement(s,null);return a.createElement("div",{className:(0,d.Z)(y.k.common.admonition,y.k.common.admonitionType(e.type),"alert",`alert--${l.infimaClassName}`,st)},a.createElement("div",{className:it},a.createElement("span",{className:dt},i),c),a.createElement("div",{className:mt},t))},mermaid:()=>null};function gt(e){let{children:t}=e;return a.createElement(pe.Zo,{components:ht},t)}function bt(e){let{children:t}=e;const n=function(){const{metadata:e,frontMatter:t,contentTitle:n}=s();return t.hide_title||void 0!==n?null:e.title}();return a.createElement("div",{className:(0,d.Z)(y.k.docs.docMarkdown,"markdown")},n&&a.createElement("header",null,a.createElement(ue,{as:"h1"},n)),a.createElement(gt,null,t))}var vt=n(5161),Et=n(8862),yt=n(8948);function kt(e){return a.createElement("svg",(0,u.Z)({viewBox:"0 0 24 24"},e),a.createElement("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"}))}const Nt={breadcrumbHomeIcon:"breadcrumbHomeIcon_sfvy"};function Ct(){const e=(0,yt.Z)("/");return a.createElement("li",{className:"breadcrumbs__item"},a.createElement(f.Z,{"aria-label":(0,p.I)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e},a.createElement(kt,{className:Nt.breadcrumbHomeIcon})))}const Lt={breadcrumbsContainer:"breadcrumbsContainer_T5ub"};function _t(e){let{children:t,href:n,isLast:o}=e;const r="breadcrumbs__link";return o?a.createElement("span",{className:r,itemProp:"name"},t):n?a.createElement(f.Z,{className:r,href:n,itemProp:"item"},a.createElement("span",{itemProp:"name"},t)):a.createElement("span",{className:r},t)}function wt(e){let{children:t,active:n,index:o,addMicrodata:r}=e;return a.createElement("li",(0,u.Z)({},r&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},{className:(0,d.Z)("breadcrumbs__item",{"breadcrumbs__item--active":n})}),t,a.createElement("meta",{itemProp:"position",content:String(o+1)}))}function Tt(){const e=(0,vt.s1)(),t=(0,Et.Ns)();return e?a.createElement("nav",{className:(0,d.Z)(y.k.docs.docBreadcrumbs,Lt.breadcrumbsContainer),"aria-label":(0,p.I)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"})},a.createElement("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList"},t&&a.createElement(Ct,null),e.map(((t,n)=>{const o=n===e.length-1;return a.createElement(wt,{key:n,active:o,index:n,addMicrodata:!!t.href},a.createElement(_t,{href:t.href,isLast:o},t.label))})))):null}const Bt={docItemContainer:"docItemContainer_tjFy",docItemCol:"docItemCol_Qr34"};function Zt(e){let{children:t}=e;const n=function(){const{frontMatter:e,toc:t}=s(),n=(0,m.i)(),o=e.hide_table_of_contents,r=!o&&t.length>0;return{hidden:o,mobile:r?a.createElement(re,null):void 0,desktop:!r||"desktop"!==n&&"ssr"!==n?void 0:a.createElement(de,null)}}();return a.createElement("div",{className:"row"},a.createElement("div",{className:(0,d.Z)("col",!n.hidden&&Bt.docItemCol)},a.createElement(T,null),a.createElement("div",{className:Bt.docItemContainer},a.createElement("article",null,a.createElement(Tt,null),a.createElement(B,null),n.mobile,a.createElement(bt,null,t),a.createElement(R,null)),a.createElement(b,null))),n.desktop&&a.createElement("div",{className:"col col--3"},n.desktop))}function xt(e){const t=`docs-doc-id-${e.content.metadata.unversionedId}`,n=e.content;return a.createElement(c,{content:e.content},a.createElement(o.FG,{className:t},a.createElement(i,null),a.createElement(Zt,null,a.createElement(n,null))))}},5611:(e,t,n)=>{"use strict";n.d(t,{E:()=>c,q:()=>l});var a=n(7378),o=n(1763);const r=a.createContext(null);function l(e){let{children:t,version:n}=e;return a.createElement(r.Provider,{value:n},t)}function c(){const e=(0,a.useContext)(r);if(null===e)throw new o.i6("DocsVersionProvider");return e}},6324:(e,t)=>{function n(e){let t,n=[];for(let a of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(a))n.push(parseInt(a,10));else if(t=a.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,a,o,r]=t;if(a&&r){a=parseInt(a),r=parseInt(r);const e=a<r?1:-1;"-"!==o&&".."!==o&&"\u2025"!==o||(r+=e);for(let t=a;t!==r;t+=e)n.push(t)}}return n}t.default=n,e.exports=n}}]); \ No newline at end of file diff --git a/assets/js/18c15bff.c5c7db9a.js b/assets/js/18c15bff.c5c7db9a.js new file mode 100644 index 0000000..5c7c46a --- /dev/null +++ b/assets/js/18c15bff.c5c7db9a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[399],{6752:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>a,contentTitle:()=>r,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>l});var n=s(4246),c=s(1670);const o={},r="Using the ClsService Instance",i={id:"setting-up-cls-context/using_cls_run",title:"Using the ClsService Instance",description:"All other methods of setting up the CLS context ultimately use the ClsService#run or ClsService#enter methods.",source:"@site/docs/02_setting-up-cls-context/05_using_cls_run.md",sourceDirName:"02_setting-up-cls-context",slug:"/setting-up-cls-context/using_cls_run",permalink:"/nestjs-cls/setting-up-cls-context/using_cls_run",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/02_setting-up-cls-context/05_using_cls_run.md",tags:[],version:"current",sidebarPosition:5,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Using a Decorator",permalink:"/nestjs-cls/setting-up-cls-context/using-a-decorator"},next:{title:"Features and use cases",permalink:"/nestjs-cls/features-and-use-cases/"}},a={},l=[];function u(e){const t={a:"a",code:"code",h1:"h1",p:"p",...(0,c.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"using-the-clsservice-instance",children:"Using the ClsService Instance"}),"\n",(0,n.jsxs)(t.p,{children:["All other methods of setting up the CLS context ultimately use the ",(0,n.jsx)(t.code,{children:"ClsService#run"})," or ",(0,n.jsx)(t.code,{children:"ClsService#enter"})," methods."]}),"\n",(0,n.jsxs)(t.p,{children:["If all other attempts fail or you want to have a more fine-grained control over the CLS context, you can use ",(0,n.jsx)(t.code,{children:"ClsService"})," instance to wrap any piece of code in a CLS context."]}),"\n",(0,n.jsxs)(t.p,{children:["An example is available in the ",(0,n.jsx)(t.a,{href:"/nestjs-cls/features-and-use-cases/usage-outside-of-web-request",children:"Usage outside of web request"})," section."]})]})}function d(e={}){const{wrapper:t}={...(0,c.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}},1670:(e,t,s)=>{s.d(t,{Z:()=>i,a:()=>r});var n=s(7378);const c={},o=n.createContext(c);function r(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:r(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1be78505.cee9dfcc.js b/assets/js/1be78505.cee9dfcc.js deleted file mode 100755 index 0a8fced..0000000 --- a/assets/js/1be78505.cee9dfcc.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[514,893],{5553:(e,t,n)=>{n.r(t),n.d(t,{default:()=>ge});var a=n(7378),o=n(8944),l=n(8831),r=n(5484),c=n(3149),i=n(5161),s=n(5611),d=n(2095),m=n(9176),u=n(9213),b=n(3457),p=n(4993);const h={backToTopButton:"backToTopButton_iEvu",backToTopButtonShow:"backToTopButtonShow_DO8w"};function E(){const{shown:e,scrollToTop:t}=function(e){let{threshold:t}=e;const[n,o]=(0,a.useState)(!1),l=(0,a.useRef)(!1),{startScroll:r,cancelScroll:c}=(0,b.Ct)();return(0,b.RF)(((e,n)=>{let{scrollY:a}=e;const r=n?.scrollY;r&&(l.current?l.current=!1:a>=r?(c(),o(!1)):a<t?o(!1):a+window.innerHeight<document.documentElement.scrollHeight&&o(!0))})),(0,p.S)((e=>{e.location.hash&&(l.current=!0,o(!1))})),{shown:n,scrollToTop:()=>r(0)}}({threshold:300});return a.createElement("button",{"aria-label":(0,u.I)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,o.Z)("clean-btn",r.k.common.backToTopButton,h.backToTopButton,e&&h.backToTopButtonShow),type:"button",onClick:t})}var f=n(6903),g=n(3620),v=n(8357),k=n(624),_=n(898),C=n(5773);function I(e){return a.createElement("svg",(0,C.Z)({width:"20",height:"20","aria-hidden":"true"},e),a.createElement("g",{fill:"#7a7a7a"},a.createElement("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),a.createElement("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})))}const S={collapseSidebarButton:"collapseSidebarButton_oTwn",collapseSidebarButtonIcon:"collapseSidebarButtonIcon_pMEX"};function N(e){let{onClick:t}=e;return a.createElement("button",{type:"button",title:(0,u.I)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,u.I)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,o.Z)("button button--secondary button--outline",S.collapseSidebarButton),onClick:t},a.createElement(I,{className:S.collapseSidebarButtonIcon}))}var T=n(10),Z=n(1763);const x=Symbol("EmptyContext"),B=a.createContext(x);function w(e){let{children:t}=e;const[n,o]=(0,a.useState)(null),l=(0,a.useMemo)((()=>({expandedItem:n,setExpandedItem:o})),[n]);return a.createElement(B.Provider,{value:l},t)}var y=n(376),L=n(8862),A=n(1884),M=n(6457);function H(e){let{categoryLabel:t,onClick:n}=e;return a.createElement("button",{"aria-label":(0,u.I)({id:"theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel",message:"Toggle the collapsible sidebar category '{label}'",description:"The ARIA label to toggle the collapsible sidebar category"},{label:t}),type:"button",className:"clean-btn menu__caret",onClick:n})}function P(e){let{item:t,onItemClick:n,activePath:l,level:c,index:s,...d}=e;const{items:m,label:u,collapsible:b,className:p,href:h}=t,{docs:{sidebar:{autoCollapseCategories:E}}}=(0,k.L)(),f=function(e){const t=(0,M.Z)();return(0,a.useMemo)((()=>e.href?e.href:!t&&e.collapsible?(0,i.Wl)(e):void 0),[e,t])}(t),g=(0,i._F)(t,l),v=(0,L.Mg)(h,l),{collapsed:_,setCollapsed:I}=(0,y.u)({initialState:()=>!!b&&(!g&&t.collapsed)}),{expandedItem:S,setExpandedItem:N}=function(){const e=(0,a.useContext)(B);if(e===x)throw new Z.i6("DocSidebarItemsExpandedStateProvider");return e}(),T=function(e){void 0===e&&(e=!_),N(e?null:s),I(e)};return function(e){let{isActive:t,collapsed:n,updateCollapsed:o}=e;const l=(0,Z.D9)(t);(0,a.useEffect)((()=>{t&&!l&&n&&o(!1)}),[t,l,n,o])}({isActive:g,collapsed:_,updateCollapsed:T}),(0,a.useEffect)((()=>{b&&null!=S&&S!==s&&E&&I(!0)}),[b,S,s,I,E]),a.createElement("li",{className:(0,o.Z)(r.k.docs.docSidebarItemCategory,r.k.docs.docSidebarItemCategoryLevel(c),"menu__list-item",{"menu__list-item--collapsed":_},p)},a.createElement("div",{className:(0,o.Z)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":v})},a.createElement(A.Z,(0,C.Z)({className:(0,o.Z)("menu__link",{"menu__link--sublist":b,"menu__link--sublist-caret":!h&&b,"menu__link--active":g}),onClick:b?e=>{n?.(t),h?T(!1):(e.preventDefault(),T())}:()=>{n?.(t)},"aria-current":v?"page":void 0,"aria-expanded":b?!_:void 0,href:b?f??"#":f},d),u),h&&b&&a.createElement(H,{categoryLabel:u,onClick:e=>{e.preventDefault(),T()}})),a.createElement(y.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:_},a.createElement(O,{items:m,tabIndex:_?-1:0,onItemClick:n,activePath:l,level:c+1})))}var F=n(5626),W=n(6125);const R={menuExternalLink:"menuExternalLink_BiEj"};function D(e){let{item:t,onItemClick:n,activePath:l,level:c,index:s,...d}=e;const{href:m,label:u,className:b,autoAddBaseUrl:p}=t,h=(0,i._F)(t,l),E=(0,F.Z)(m);return a.createElement("li",{className:(0,o.Z)(r.k.docs.docSidebarItemLink,r.k.docs.docSidebarItemLinkLevel(c),"menu__list-item",b),key:u},a.createElement(A.Z,(0,C.Z)({className:(0,o.Z)("menu__link",!E&&R.menuExternalLink,{"menu__link--active":h}),autoAddBaseUrl:p,"aria-current":h?"page":void 0,to:m},E&&{onClick:n?()=>n(t):void 0},d),u,!E&&a.createElement(W.Z,null)))}const V={menuHtmlItem:"menuHtmlItem_OniL"};function j(e){let{item:t,level:n,index:l}=e;const{value:c,defaultStyle:i,className:s}=t;return a.createElement("li",{className:(0,o.Z)(r.k.docs.docSidebarItemLink,r.k.docs.docSidebarItemLinkLevel(n),i&&[V.menuHtmlItem,"menu__list-item"],s),key:l,dangerouslySetInnerHTML:{__html:c}})}function Y(e){let{item:t,...n}=e;switch(t.type){case"category":return a.createElement(P,(0,C.Z)({item:t},n));case"html":return a.createElement(j,(0,C.Z)({item:t},n));default:return a.createElement(D,(0,C.Z)({item:t},n))}}function z(e){let{items:t,...n}=e;return a.createElement(w,null,t.map(((e,t)=>a.createElement(Y,(0,C.Z)({key:t,item:e,index:t},n)))))}const O=(0,a.memo)(z),U={menu:"menu_jmj1",menuWithAnnouncementBar:"menuWithAnnouncementBar_YufC"};function G(e){let{path:t,sidebar:n,className:l}=e;const c=function(){const{isActive:e}=(0,T.nT)(),[t,n]=(0,a.useState)(e);return(0,b.RF)((t=>{let{scrollY:a}=t;e&&n(0===a)}),[e]),e&&t}();return a.createElement("nav",{"aria-label":(0,u.I)({id:"theme.docs.sidebar.navAriaLabel",message:"Docs sidebar",description:"The ARIA label for the sidebar navigation"}),className:(0,o.Z)("menu thin-scrollbar",U.menu,c&&U.menuWithAnnouncementBar,l)},a.createElement("ul",{className:(0,o.Z)(r.k.docs.docSidebarMenu,"menu__list")},a.createElement(O,{items:n,activePath:t,level:1})))}const K="sidebar_CUen",q="sidebarWithHideableNavbar_w4KB",J="sidebarHidden_k6VE",Q="sidebarLogo_CYvI";function X(e){let{path:t,sidebar:n,onCollapse:l,isHidden:r}=e;const{navbar:{hideOnScroll:c},docs:{sidebar:{hideable:i}}}=(0,k.L)();return a.createElement("div",{className:(0,o.Z)(K,c&&q,r&&J)},c&&a.createElement(_.Z,{tabIndex:-1,className:Q}),a.createElement(G,{path:t,sidebar:n}),i&&a.createElement(N,{onClick:l}))}const $=a.memo(X);var ee=n(3471),te=n(5536);const ne=e=>{let{sidebar:t,path:n}=e;const l=(0,te.e)();return a.createElement("ul",{className:(0,o.Z)(r.k.docs.docSidebarMenu,"menu__list")},a.createElement(O,{items:t,activePath:n,onItemClick:e=>{"category"===e.type&&e.href&&l.toggle(),"link"===e.type&&l.toggle()},level:1}))};function ae(e){return a.createElement(ee.Zo,{component:ne,props:e})}const oe=a.memo(ae);function le(e){const t=(0,v.i)(),n="desktop"===t||"ssr"===t,o="mobile"===t;return a.createElement(a.Fragment,null,n&&a.createElement($,e),o&&a.createElement(oe,e))}const re={expandButton:"expandButton_YOoA",expandButtonIcon:"expandButtonIcon_GZLG"};function ce(e){let{toggleSidebar:t}=e;return a.createElement("div",{className:re.expandButton,title:(0,u.I)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,u.I)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:t,onClick:t},a.createElement(I,{className:re.expandButtonIcon}))}const ie={docSidebarContainer:"docSidebarContainer_y0RQ",docSidebarContainerHidden:"docSidebarContainerHidden_uArb",sidebarViewport:"sidebarViewport_EJ1r"};function se(e){let{children:t}=e;const n=(0,d.V)();return a.createElement(a.Fragment,{key:n?.name??"noSidebar"},t)}function de(e){let{sidebar:t,hiddenSidebarContainer:n,setHiddenSidebarContainer:l}=e;const{pathname:c}=(0,g.TH)(),[i,s]=(0,a.useState)(!1),d=(0,a.useCallback)((()=>{i&&s(!1),!i&&(0,f.n)()&&s(!0),l((e=>!e))}),[l,i]);return a.createElement("aside",{className:(0,o.Z)(r.k.docs.docSidebarContainer,ie.docSidebarContainer,n&&ie.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(ie.docSidebarContainer)&&n&&s(!0)}},a.createElement(se,null,a.createElement("div",{className:(0,o.Z)(ie.sidebarViewport,i&&ie.sidebarViewportHidden)},a.createElement(le,{sidebar:t,path:c,onCollapse:d,isHidden:i}),i&&a.createElement(ce,{toggleSidebar:d}))))}const me={docMainContainer:"docMainContainer_sTIZ",docMainContainerEnhanced:"docMainContainerEnhanced_iSjt",docItemWrapperEnhanced:"docItemWrapperEnhanced_PxMR"};function ue(e){let{hiddenSidebarContainer:t,children:n}=e;const l=(0,d.V)();return a.createElement("main",{className:(0,o.Z)(me.docMainContainer,(t||!l)&&me.docMainContainerEnhanced)},a.createElement("div",{className:(0,o.Z)("container padding-top--md padding-bottom--lg",me.docItemWrapper,t&&me.docItemWrapperEnhanced)},n))}const be={docPage:"docPage_KLoz",docsWrapper:"docsWrapper_ct1J"};function pe(e){let{children:t}=e;const n=(0,d.V)(),[o,l]=(0,a.useState)(!1);return a.createElement(m.Z,{wrapperClassName:be.docsWrapper},a.createElement(E,null),a.createElement("div",{className:be.docPage},n&&a.createElement(de,{sidebar:n.items,hiddenSidebarContainer:o,setHiddenSidebarContainer:l}),a.createElement(ue,{hiddenSidebarContainer:o},t)))}var he=n(3893),Ee=n(505);function fe(e){const{versionMetadata:t}=e;return a.createElement(a.Fragment,null,a.createElement(Ee.Z,{version:t.version,tag:(0,c.os)(t.pluginId,t.version)}),a.createElement(l.d,null,t.noIndex&&a.createElement("meta",{name:"robots",content:"noindex, nofollow"})))}function ge(e){const{versionMetadata:t}=e,n=(0,i.hI)(e);if(!n)return a.createElement(he.default,null);const{docElement:c,sidebarName:m,sidebarItems:u}=n;return a.createElement(a.Fragment,null,a.createElement(fe,e),a.createElement(l.FG,{className:(0,o.Z)(r.k.wrapper.docsPages,r.k.page.docsDocPage,e.versionMetadata.className)},a.createElement(s.q,{version:t},a.createElement(d.b,{name:m,items:u},a.createElement(pe,null,c)))))}},3893:(e,t,n)=>{n.r(t),n.d(t,{default:()=>c});var a=n(7378),o=n(9213),l=n(8831),r=n(9176);function c(){return a.createElement(a.Fragment,null,a.createElement(l.d,{title:(0,o.I)({id:"theme.NotFound.title",message:"Page Not Found"})}),a.createElement(r.Z,null,a.createElement("main",{className:"container margin-vert--xl"},a.createElement("div",{className:"row"},a.createElement("div",{className:"col col--6 col--offset-3"},a.createElement("h1",{className:"hero__title"},a.createElement(o.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),a.createElement("p",null,a.createElement(o.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),a.createElement("p",null,a.createElement(o.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"Please contact the owner of the site that linked you to the original URL and let them know their link is broken.")))))))}},5611:(e,t,n)=>{n.d(t,{E:()=>c,q:()=>r});var a=n(7378),o=n(1763);const l=a.createContext(null);function r(e){let{children:t,version:n}=e;return a.createElement(l.Provider,{value:n},t)}function c(){const e=(0,a.useContext)(l);if(null===e)throw new o.i6("DocsVersionProvider");return e}}}]); \ No newline at end of file diff --git a/assets/js/2d4cceda.9ec420e4.js b/assets/js/2d4cceda.9ec420e4.js new file mode 100644 index 0000000..aa85757 --- /dev/null +++ b/assets/js/2d4cceda.9ec420e4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[285],{2599:(e,t,n)=>{n.d(t,{Z:()=>i});n(7378);var a=n(624);const r={tabItem:"tabItem_wHwb"};var s=n(4246);function i(e){let{children:t,hidden:n,className:i}=e;return(0,s.jsx)("div",{role:"tabpanel",className:(0,a.Z)(r.tabItem,i),hidden:n,children:t})}},8447:(e,t,n)=>{n.d(t,{Z:()=>w});var a=n(7378),r=n(624),s=n(9169),i=n(3620),l=n(9749),o=n(8981),c=n(56),u=n(8796);function d(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:t,children:n}=e;return(0,a.useMemo)((()=>{const e=t??function(e){return d(e).map((e=>{let{props:{value:t,label:n,attributes:a,default:r}}=e;return{value:t,label:n,attributes:a,default:r}}))}(n);return function(e){const t=(0,c.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,n])}function h(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function m(e){let{queryString:t=!1,groupId:n}=e;const r=(0,i.k6)(),s=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,o._X)(s),(0,a.useCallback)((e=>{if(!s)return;const t=new URLSearchParams(r.location.search);t.set(s,e),r.replace({...r.location,search:t.toString()})}),[s,r])]}function g(e){const{defaultValue:t,queryString:n=!1,groupId:r}=e,s=p(e),[i,o]=(0,a.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!h({value:t,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const a=n.find((e=>e.default))??n[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:t,tabValues:s}))),[c,d]=m({queryString:n,groupId:r}),[g,b]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[r,s]=(0,u.Nk)(n);return[r,(0,a.useCallback)((e=>{n&&s.set(e)}),[n,s])]}({groupId:r}),f=(()=>{const e=c??g;return h({value:e,tabValues:s})?e:null})();(0,l.Z)((()=>{f&&o(f)}),[f]);return{selectedValue:i,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);o(e),d(e),b(e)}),[d,b,s]),tabValues:s}}var b=n(362);const f={tabList:"tabList_J5MA",tabItem:"tabItem_l0OV"};var v=n(4246);function x(e){let{className:t,block:n,selectedValue:a,selectValue:i,tabValues:l}=e;const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,s.o5)(),u=e=>{const t=e.currentTarget,n=o.indexOf(t),r=l[n].value;r!==a&&(c(t),i(r))},d=e=>{let t=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const n=o.indexOf(e.currentTarget)+1;t=o[n]??o[0];break}case"ArrowLeft":{const n=o.indexOf(e.currentTarget)-1;t=o[n]??o[o.length-1];break}}t?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.Z)("tabs",{"tabs--block":n},t),children:l.map((e=>{let{value:t,label:n,attributes:s}=e;return(0,v.jsx)("li",{role:"tab",tabIndex:a===t?0:-1,"aria-selected":a===t,ref:e=>o.push(e),onKeyDown:d,onClick:u,...s,className:(0,r.Z)("tabs__item",f.tabItem,s?.className,{"tabs__item--active":a===t}),children:n??t},t)}))})}function j(e){let{lazy:t,children:n,selectedValue:r}=e;const s=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:s.map(((e,t)=>(0,a.cloneElement)(e,{key:t,hidden:e.props.value!==r})))})}function y(e){const t=g(e);return(0,v.jsxs)("div",{className:(0,r.Z)("tabs-container",f.tabList),children:[(0,v.jsx)(x,{...e,...t}),(0,v.jsx)(j,{...e,...t})]})}function w(e){const t=(0,b.Z)();return(0,v.jsx)(y,{...e,children:d(e.children)},String(t))}},2822:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>h,frontMatter:()=>l,metadata:()=>c,toc:()=>d});var a=n(4246),r=n(1670),s=n(8447),i=n(2599);const l={},o="Prisma adapter",c={id:"plugins/available-plugins/transactional/prisma-adapter",title:"Prisma adapter",description:"Installation",source:"@site/docs/06_plugins/01_available-plugins/01-transactional/01-prisma-adapter.md",sourceDirName:"06_plugins/01_available-plugins/01-transactional",slug:"/plugins/available-plugins/transactional/prisma-adapter",permalink:"/nestjs-cls/plugins/available-plugins/transactional/prisma-adapter",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/06_plugins/01_available-plugins/01-transactional/01-prisma-adapter.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"@nestjs-cls/transactional",permalink:"/nestjs-cls/plugins/available-plugins/transactional/"},next:{title:"Creating a custom adapter",permalink:"/nestjs-cls/plugins/available-plugins/transactional/creating-custom-adapter"}},u={},d=[{value:"Installation",id:"installation",level:2},{value:"Registration",id:"registration",level:2},{value:"Typing & usage",id:"typing--usage",level:2},{value:"Example",id:"example",level:2},{value:"Caveats",id:"caveats",level:2}];function p(e){const t={code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",...(0,r.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.h1,{id:"prisma-adapter",children:"Prisma adapter"}),"\n",(0,a.jsx)(t.h2,{id:"installation",children:"Installation"}),"\n",(0,a.jsxs)(s.Z,{children:[(0,a.jsx)(i.Z,{value:"npm",label:"npm",default:!0,children:(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-bash",children:"npm install @nestjs-cls/transactional-adapter-prisma\n"})})}),(0,a.jsx)(i.Z,{value:"yarn",label:"yarn",children:(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-bash",children:"yarn add @nestjs-cls/transactional-adapter-prisma\n"})})}),(0,a.jsx)(i.Z,{value:"pnpm",label:"pnpm",children:(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-bash",children:"pnpm add @nestjs-cls/transactional-adapter-prisma\n"})})})]}),"\n",(0,a.jsx)(t.h2,{id:"registration",children:"Registration"}),"\n",(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-ts",children:"ClsModule.forRoot({\n plugins: [\n new ClsPluginTransactional({\n imports: [\n // module in which the PrismaClient is provided\n PrismaModule\n ],\n adapter: new TransactionalAdapterPrisma({\n // the injection token of the PrismaClient\n prismaInjectionToken: PrismaService,\n }),\n }),\n ],\n}),\n"})}),"\n",(0,a.jsx)(t.h2,{id:"typing--usage",children:"Typing & usage"}),"\n",(0,a.jsxs)(t.p,{children:["The ",(0,a.jsx)(t.code,{children:"tx"})," property on the ",(0,a.jsx)(t.code,{children:"TransactionHost<TransactionalAdapterPrisma>"})," refers to the transactional ",(0,a.jsx)(t.code,{children:"PrismaClient"})," instance when used in a transactional context. It is the instance that is passed to the ",(0,a.jsx)(t.code,{children:"prisma.$transaction(( tx ) => { ... })"})," callback."]}),"\n",(0,a.jsxs)(t.p,{children:["Outside of a transactional context, it refers to the regular ",(0,a.jsx)(t.code,{children:"PrismaClient"})," instance (but is typed as the transactional one)."]}),"\n",(0,a.jsx)(t.h2,{id:"example",children:"Example"}),"\n",(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-ts",metastring:'title="user.service.ts"',children:"@Injectable()\nclass UserService {\n constructor(private readonly userRepository: UserRepository) {}\n\n @Transactional()\n async runTransaction() {\n // highlight-start\n // both methods are executed in the same transaction\n const user = await this.userRepository.createUser('John');\n const foundUser = await this.userRepository.getUserById(r1.id);\n // highlight-end\n assert(foundUser.id === user.id);\n }\n}\n"})}),"\n",(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-ts",metastring:'title="user.repository.ts"',children:"@Injectable()\nclass UserRepository {\n constructor(\n private readonly txHost: TransactionHost<TransactionalAdapterPrisma>,\n ) {}\n\n async getUserById(id: number) {\n // highlight-start\n // txHost.tx is typed as the transactional PrismaClient\n return this.txHost.tx.user.findUnique({ where: { id } });\n // highlight-end\n }\n\n async createUser(name: string) {\n return this.txHost.tx.user.create({\n data: { name: name, email: `${name}@email.com` },\n });\n }\n}\n"})}),"\n",(0,a.jsx)(t.h2,{id:"caveats",children:"Caveats"}),"\n",(0,a.jsxs)(t.p,{children:["Since Prisma generates its own client to ",(0,a.jsx)(t.code,{children:"node_modules"}),", this plugin works with the assumption that the types for the client are available as ",(0,a.jsx)(t.code,{children:"@prisma/client"}),". If you have a different setup, you might need to use ",(0,a.jsx)(t.code,{children:"declare module '@prisma/client'"})," to make typescript happy."]})]})}function h(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}},1670:(e,t,n)=>{n.d(t,{Z:()=>l,a:()=>i});var a=n(7378);const r={},s=a.createContext(r);function i(e){const t=a.useContext(s);return a.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),a.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3ac8ff5d.22ee9ecc.js b/assets/js/3ac8ff5d.22ee9ecc.js deleted file mode 100755 index 23d5e45..0000000 --- a/assets/js/3ac8ff5d.22ee9ecc.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[332],{5318:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>h});var n=r(7378);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},u=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=l(r),f=o,h=p["".concat(c,".").concat(f)]||p[f]||d[f]||i;return r?n.createElement(h,a(a({ref:t},u),{},{components:r})):n.createElement(h,a({ref:t},u))}));function h(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=f;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[p]="string"==typeof e?e:o,a[1]=s;for(var l=2;l<i;l++)a[l]=r[l];return n.createElement.apply(null,a)}return n.createElement.apply(null,r)}f.displayName="MDXCreateElement"},5948:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>l});var n=r(5773),o=(r(7378),r(5318));const i={},a="How it works",s={unversionedId:"introduction/how-it-works",id:"introduction/how-it-works",title:"How it works",description:"Continuation-local storage provides a common space for storing and retrieving data throughout the life of a function/callback call chain. In NestJS, this allows for sharing request data across the lifetime of a single request - without the need for request-scoped providers. It also makes it easy to track and log request ids throughout the whole application.",source:"@site/docs/01_introduction/03_how-it-works.md",sourceDirName:"01_introduction",slug:"/introduction/how-it-works",permalink:"/nestjs-cls/introduction/how-it-works",draft:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/01_introduction/03_how-it-works.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Quick Start",permalink:"/nestjs-cls/introduction/quick-start"},next:{title:"Setting up the CLS context",permalink:"/nestjs-cls/setting-up-cls-context/"}},c={},l=[],u={toc:l},p="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(p,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"how-it-works"},"How it works"),(0,o.kt)("p",null,"Continuation-local storage provides a common space for storing and retrieving data throughout the life of a function/callback call chain. In NestJS, this allows for sharing request data across the lifetime of a single request - without the need for request-scoped providers. It also makes it easy to track and log request ids throughout the whole application."),(0,o.kt)("p",null,"To make CLS work, it is required to set up the CLS context first. This is done by calling ",(0,o.kt)("inlineCode",{parentName:"p"},"cls.run()")," (or ",(0,o.kt)("inlineCode",{parentName:"p"},"cls.enter()"),", see ",(0,o.kt)("a",{parentName:"p",href:"/nestjs-cls/considerations/security"},"Security considerations")," for more info) somewhere in the app. Once that is set up, anything that is called within the same callback chain has access to the same storage with ",(0,o.kt)("inlineCode",{parentName:"p"},"cls.set()")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"cls.get()"),"."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3ac8ff5d.a4c650c8.js b/assets/js/3ac8ff5d.a4c650c8.js new file mode 100644 index 0000000..2f7235b --- /dev/null +++ b/assets/js/3ac8ff5d.a4c650c8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[332],{4760:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var s=o(4246),n=o(1670);const i={},r="How it works",c={id:"introduction/how-it-works",title:"How it works",description:"Continuation-local storage provides a common space for storing and retrieving data throughout the life of a function/callback call chain. In NestJS, this allows for sharing request data across the lifetime of a single request - without the need for request-scoped providers. It also makes it easy to track and log request ids throughout the whole application.",source:"@site/docs/01_introduction/03_how-it-works.md",sourceDirName:"01_introduction",slug:"/introduction/how-it-works",permalink:"/nestjs-cls/introduction/how-it-works",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/01_introduction/03_how-it-works.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Quick Start",permalink:"/nestjs-cls/introduction/quick-start"},next:{title:"Setting up the CLS context",permalink:"/nestjs-cls/setting-up-cls-context/"}},a={},l=[];function d(t){const e={a:"a",code:"code",h1:"h1",p:"p",...(0,n.a)(),...t.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(e.h1,{id:"how-it-works",children:"How it works"}),"\n",(0,s.jsx)(e.p,{children:"Continuation-local storage provides a common space for storing and retrieving data throughout the life of a function/callback call chain. In NestJS, this allows for sharing request data across the lifetime of a single request - without the need for request-scoped providers. It also makes it easy to track and log request ids throughout the whole application."}),"\n",(0,s.jsxs)(e.p,{children:["To make CLS work, it is required to set up the CLS context first. This is done by calling ",(0,s.jsx)(e.code,{children:"cls.run()"})," (or ",(0,s.jsx)(e.code,{children:"cls.enter()"}),", see ",(0,s.jsx)(e.a,{href:"/nestjs-cls/considerations/security",children:"Security considerations"})," for more info) somewhere in the app. Once that is set up, anything that is called within the same callback chain has access to the same storage with ",(0,s.jsx)(e.code,{children:"cls.set()"})," and ",(0,s.jsx)(e.code,{children:"cls.get()"}),"."]})]})}function h(t={}){const{wrapper:e}={...(0,n.a)(),...t.components};return e?(0,s.jsx)(e,{...t,children:(0,s.jsx)(d,{...t})}):d(t)}},1670:(t,e,o)=>{o.d(e,{Z:()=>c,a:()=>r});var s=o(7378);const n={},i=s.createContext(n);function r(t){const e=s.useContext(i);return s.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function c(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(n):t.components||n:r(t.components),s.createElement(i.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/3b39bba3.4068951c.js b/assets/js/3b39bba3.4068951c.js deleted file mode 100755 index 24ba4cf..0000000 --- a/assets/js/3b39bba3.4068951c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[546],{5318:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(7378);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},l=Object.keys(e);for(r=0;r<l.length;r++)n=l[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r<l.length;r++)n=l[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var u=r.createContext({}),i=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=i(e.components);return r.createElement(u.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,u=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=i(n),m=a,f=p["".concat(u,".").concat(m)]||p[m]||d[m]||l;return n?r.createElement(f,o(o({ref:t},c),{},{components:n})):r.createElement(f,o({ref:t},c))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,o=new Array(l);o[0]=m;var s={};for(var u in t)hasOwnProperty.call(t,u)&&(s[u]=t[u]);s.originalType=e,s[p]="string"==typeof e?e:a,o[1]=s;for(var i=2;i<l;i++)o[i]=n[i];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},864:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>x,contentTitle:()=>I,default:()=>_,frontMatter:()=>j,metadata:()=>N,toc:()=>V});var r=n(5773),a=n(7378),l=n(5318),o=n(8944),s=n(3457),u=n(3620),i=n(654),c=n(784),p=n(1819);function d(e){return function(e){return a.Children.map(e,(e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:a}}=e;return{value:t,label:n,attributes:r,default:a}}))}function m(e){const{values:t,children:n}=e;return(0,a.useMemo)((()=>{const e=t??d(n);return function(e){const t=(0,c.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,n])}function f(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function b(e){let{queryString:t=!1,groupId:n}=e;const r=(0,u.k6)(),l=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,i._X)(l),(0,a.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(r.location.search);t.set(l,e),r.replace({...r.location,search:t.toString()})}),[l,r])]}function y(e){const{defaultValue:t,queryString:n=!1,groupId:r}=e,l=m(e),[o,s]=(0,a.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!f({value:t,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:l}))),[u,i]=b({queryString:n,groupId:r}),[c,d]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[r,l]=(0,p.Nk)(n);return[r,(0,a.useCallback)((e=>{n&&l.set(e)}),[n,l])]}({groupId:r}),y=(()=>{const e=u??c;return f({value:e,tabValues:l})?e:null})();(0,a.useLayoutEffect)((()=>{y&&s(y)}),[y]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!f({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);s(e),i(e),d(e)}),[i,d,l]),tabValues:l}}var h=n(6457);const v={tabList:"tabList_J5MA",tabItem:"tabItem_l0OV"};function g(e){let{className:t,block:n,selectedValue:l,selectValue:u,tabValues:i}=e;const c=[],{blockElementScrollPositionUntilNextRender:p}=(0,s.o5)(),d=e=>{const t=e.currentTarget,n=c.indexOf(t),r=i[n].value;r!==l&&(p(t),u(r))},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 a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":n},t)},i.map((e=>{let{value:t,label:n,attributes:s}=e;return a.createElement("li",(0,r.Z)({role:"tab",tabIndex:l===t?0:-1,"aria-selected":l===t,key:t,ref:e=>c.push(e),onKeyDown:m,onClick:d},s,{className:(0,o.Z)("tabs__item",v.tabItem,s?.className,{"tabs__item--active":l===t})}),n??t)})))}function k(e){let{lazy:t,children:n,selectedValue:r}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return a.createElement("div",{className:"margin-top--md"},l.map(((e,t)=>(0,a.cloneElement)(e,{key:t,hidden:e.props.value!==r}))))}function w(e){const t=y(e);return a.createElement("div",{className:(0,o.Z)("tabs-container",v.tabList)},a.createElement(g,(0,r.Z)({},e,t)),a.createElement(k,(0,r.Z)({},e,t)))}function E(e){const t=(0,h.Z)();return a.createElement(w,(0,r.Z)({key:String(t)},e))}const T={tabItem:"tabItem_wHwb"};function O(e){let{children:t,hidden:n,className:r}=e;return a.createElement("div",{role:"tabpanel",className:(0,o.Z)(T.tabItem,r),hidden:n},t)}const j={},I="Installation",N={unversionedId:"introduction/installation",id:"introduction/installation",title:"Installation",description:"Install as any other NPM package using your favorite package manager.",source:"@site/docs/01_introduction/01_installation.md",sourceDirName:"01_introduction",slug:"/introduction/installation",permalink:"/nestjs-cls/introduction/installation",draft:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/01_introduction/01_installation.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Introduction",permalink:"/nestjs-cls/"},next:{title:"Quick Start",permalink:"/nestjs-cls/introduction/quick-start"}},x={},V=[],P={toc:V},S="wrapper";function _(e){let{components:t,...n}=e;return(0,l.kt)(S,(0,r.Z)({},P,n,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h1",{id:"installation"},"Installation"),(0,l.kt)("p",null,"Install as any other NPM package using your favorite package manager."),(0,l.kt)(E,{mdxType:"Tabs"},(0,l.kt)(O,{value:"apple",label:"npm",default:!0,mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-sh"},"npm install nestjs-cls\n"))),(0,l.kt)(O,{value:"orange",label:"yarn",mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-sh"},"yarn add nestjs-cls\n"))),(0,l.kt)(O,{value:"banana",label:"pnpm",mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-sh"},"pnpm add nestjs-cls\n")))),(0,l.kt)("admonition",{type:"info"},(0,l.kt)("p",{parentName:"admonition"},"This module requires additional peer deps, like the ",(0,l.kt)("inlineCode",{parentName:"p"},"@nestjs/core")," and ",(0,l.kt)("inlineCode",{parentName:"p"},"@nestjs/common")," libraries, but it is assumed those are already installed.")))}_.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3b39bba3.b1845d7a.js b/assets/js/3b39bba3.b1845d7a.js new file mode 100644 index 0000000..f9a038b --- /dev/null +++ b/assets/js/3b39bba3.b1845d7a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[546],{2599:(e,t,n)=>{n.d(t,{Z:()=>l});n(7378);var a=n(624);const r={tabItem:"tabItem_wHwb"};var s=n(4246);function l(e){let{children:t,hidden:n,className:l}=e;return(0,s.jsx)("div",{role:"tabpanel",className:(0,a.Z)(r.tabItem,l),hidden:n,children:t})}},8447:(e,t,n)=>{n.d(t,{Z:()=>k});var a=n(7378),r=n(624),s=n(9169),l=n(3620),o=n(9749),i=n(8981),u=n(56),c=n(8796);function d(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:t,children:n}=e;return(0,a.useMemo)((()=>{const e=t??function(e){return d(e).map((e=>{let{props:{value:t,label:n,attributes:a,default:r}}=e;return{value:t,label:n,attributes:a,default:r}}))}(n);return function(e){const t=(0,u.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,n])}function h(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function m(e){let{queryString:t=!1,groupId:n}=e;const r=(0,l.k6)(),s=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,i._X)(s),(0,a.useCallback)((e=>{if(!s)return;const t=new URLSearchParams(r.location.search);t.set(s,e),r.replace({...r.location,search:t.toString()})}),[s,r])]}function f(e){const{defaultValue:t,queryString:n=!1,groupId:r}=e,s=p(e),[l,i]=(0,a.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!h({value:t,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const a=n.find((e=>e.default))??n[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:t,tabValues:s}))),[u,d]=m({queryString:n,groupId:r}),[f,b]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[r,s]=(0,c.Nk)(n);return[r,(0,a.useCallback)((e=>{n&&s.set(e)}),[n,s])]}({groupId:r}),v=(()=>{const e=u??f;return h({value:e,tabValues:s})?e:null})();(0,o.Z)((()=>{v&&i(v)}),[v]);return{selectedValue:l,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),b(e)}),[d,b,s]),tabValues:s}}var b=n(362);const v={tabList:"tabList_J5MA",tabItem:"tabItem_l0OV"};var g=n(4246);function j(e){let{className:t,block:n,selectedValue:a,selectValue:l,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:u}=(0,s.o5)(),c=e=>{const t=e.currentTarget,n=i.indexOf(t),r=o[n].value;r!==a&&(u(t),l(r))},d=e=>{let t=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const n=i.indexOf(e.currentTarget)+1;t=i[n]??i[0];break}case"ArrowLeft":{const n=i.indexOf(e.currentTarget)-1;t=i[n]??i[i.length-1];break}}t?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.Z)("tabs",{"tabs--block":n},t),children:o.map((e=>{let{value:t,label:n,attributes:s}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===t?0:-1,"aria-selected":a===t,ref:e=>i.push(e),onKeyDown:d,onClick:c,...s,className:(0,r.Z)("tabs__item",v.tabItem,s?.className,{"tabs__item--active":a===t}),children:n??t},t)}))})}function x(e){let{lazy:t,children:n,selectedValue:r}=e;const s=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:s.map(((e,t)=>(0,a.cloneElement)(e,{key:t,hidden:e.props.value!==r})))})}function y(e){const t=f(e);return(0,g.jsxs)("div",{className:(0,r.Z)("tabs-container",v.tabList),children:[(0,g.jsx)(j,{...e,...t}),(0,g.jsx)(x,{...e,...t})]})}function k(e){const t=(0,b.Z)();return(0,g.jsx)(y,{...e,children:d(e.children)},String(t))}},7309:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>u,toc:()=>d});var a=n(4246),r=n(1670),s=n(8447),l=n(2599);const o={},i="Installation",u={id:"introduction/installation",title:"Installation",description:"Install as any other NPM package using your favorite package manager.",source:"@site/docs/01_introduction/01_installation.md",sourceDirName:"01_introduction",slug:"/introduction/installation",permalink:"/nestjs-cls/introduction/installation",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/01_introduction/01_installation.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Introduction",permalink:"/nestjs-cls/"},next:{title:"Quick Start",permalink:"/nestjs-cls/introduction/quick-start"}},c={},d=[];function p(e){const t={admonition:"admonition",code:"code",h1:"h1",p:"p",pre:"pre",...(0,r.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.h1,{id:"installation",children:"Installation"}),"\n",(0,a.jsx)(t.p,{children:"Install as any other NPM package using your favorite package manager."}),"\n",(0,a.jsxs)(s.Z,{children:[(0,a.jsx)(l.Z,{value:"npm",label:"npm",default:!0,children:(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-sh",children:"npm install nestjs-cls\n"})})}),(0,a.jsx)(l.Z,{value:"yarn",label:"yarn",children:(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-sh",children:"yarn add nestjs-cls\n"})})}),(0,a.jsx)(l.Z,{value:"pnpm",label:"pnpm",children:(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-sh",children:"pnpm add nestjs-cls\n"})})})]}),"\n",(0,a.jsx)(t.admonition,{type:"info",children:(0,a.jsxs)(t.p,{children:["This module requires additional peer deps, like the ",(0,a.jsx)(t.code,{children:"@nestjs/core"})," and ",(0,a.jsx)(t.code,{children:"@nestjs/common"})," libraries, but it is assumed those are already installed."]})})]})}function h(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}},1670:(e,t,n)=>{n.d(t,{Z:()=>o,a:()=>l});var a=n(7378);const r={},s=a.createContext(r);function l(e){const t=a.useContext(s);return a.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:l(e.components),a.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/471.006e7ee7.js b/assets/js/471.006e7ee7.js new file mode 100644 index 0000000..3275300 --- /dev/null +++ b/assets/js/471.006e7ee7.js @@ -0,0 +1 @@ +(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[471],{5911:(s,c,e)=>{"use strict";e.d(c,{Z:()=>t});var n=e(8230);const t=n},5352:()=>{}}]); \ No newline at end of file diff --git a/assets/js/49.c17c1426.js b/assets/js/49.c17c1426.js new file mode 100644 index 0000000..0d6c4a7 --- /dev/null +++ b/assets/js/49.c17c1426.js @@ -0,0 +1,2 @@ +/*! For license information please see 49.c17c1426.js.LICENSE.txt */ +(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[49],{2082:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var i=n(1273),r=n.n(i),s=n(5911);s.Z.tokenizer.separator=/[\s\-/]+/;const o=class{constructor(e,t,n,i){void 0===n&&(n="/"),this.searchDocs=e,this.lunrIndex=s.Z.Index.load(t),this.baseUrl=n,this.maxHits=i}getLunrResult(e){return this.lunrIndex.query((function(t){const n=s.Z.tokenizer(e);t.term(n,{boost:10}),t.term(n,{wildcard:s.Z.Query.wildcard.TRAILING})}))}getHit(e,t,n){return{hierarchy:{lvl0:e.pageTitle||e.title,lvl1:0===e.type?null:e.title},url:e.url,version:e.version,_snippetResult:n?{content:{value:n,matchLevel:"full"}}:null,_highlightResult:{hierarchy:{lvl0:{value:0===e.type?t||e.title:e.pageTitle},lvl1:0===e.type?null:{value:t||e.title}}}}}getTitleHit(e,t,n){const i=t[0],r=t[0]+n;let s=e.title.substring(0,i)+'<span class="algolia-docsearch-suggestion--highlight">'+e.title.substring(i,r)+"</span>"+e.title.substring(r,e.title.length);return this.getHit(e,s)}getKeywordHit(e,t,n){const i=t[0],r=t[0]+n;let s=e.title+"<br /><i>Keywords: "+e.keywords.substring(0,i)+'<span class="algolia-docsearch-suggestion--highlight">'+e.keywords.substring(i,r)+"</span>"+e.keywords.substring(r,e.keywords.length)+"</i>";return this.getHit(e,s)}getContentHit(e,t){const n=t[0],i=t[0]+t[1];let r=n,s=i,o=!0,a=!0;for(let c=0;c<3;c++){const t=e.content.lastIndexOf(" ",r-2),n=e.content.lastIndexOf(".",r-2);if(n>0&&n>t){r=n+1,o=!1;break}if(t<0){r=0,o=!1;break}r=t+1}for(let c=0;c<10;c++){const t=e.content.indexOf(" ",s+1),n=e.content.indexOf(".",s+1);if(n>0&&n<t){s=n,a=!1;break}if(t<0){s=e.content.length,a=!1;break}s=t}let u=e.content.substring(r,n);return o&&(u="... "+u),u+='<span class="algolia-docsearch-suggestion--highlight">'+e.content.substring(n,i)+"</span>",u+=e.content.substring(i,s),a&&(u+=" ..."),this.getHit(e,null,u)}search(e){return new Promise(((t,n)=>{const i=this.getLunrResult(e),r=[];i.length>this.maxHits&&(i.length=this.maxHits),this.titleHitsRes=[],this.contentHitsRes=[],i.forEach((t=>{const n=this.searchDocs[t.ref],{metadata:i}=t.matchData;for(let s in i)if(i[s].title){if(!this.titleHitsRes.includes(t.ref)){const o=i[s].title.position[0];r.push(this.getTitleHit(n,o,e.length)),this.titleHitsRes.push(t.ref)}}else if(i[s].content){const e=i[s].content.position[0];r.push(this.getContentHit(n,e))}else if(i[s].keywords){const o=i[s].keywords.position[0];r.push(this.getKeywordHit(n,o,e.length)),this.titleHitsRes.push(t.ref)}})),r.length>this.maxHits&&(r.length=this.maxHits),t(r)}))}};var a=n(2500),u=n.n(a);const c="algolia-docsearch",l=`${c}-suggestion`,h={suggestion:`\n <a class="${l}\n {{#isCategoryHeader}}${l}__main{{/isCategoryHeader}}\n {{#isSubCategoryHeader}}${l}__secondary{{/isSubCategoryHeader}}\n "\n aria-label="Link to the result"\n href="{{{url}}}"\n >\n <div class="${l}--category-header">\n <span class="${l}--category-header-lvl0">{{{category}}}</span>\n </div>\n <div class="${l}--wrapper">\n <div class="${l}--subcategory-column">\n <span class="${l}--subcategory-column-text">{{{subcategory}}}</span>\n </div>\n {{#isTextOrSubcategoryNonEmpty}}\n <div class="${l}--content">\n <div class="${l}--subcategory-inline">{{{subcategory}}}</div>\n <div class="${l}--title">{{{title}}}</div>\n {{#text}}<div class="${l}--text">{{{text}}}</div>{{/text}}\n {{#version}}<div class="${l}--version">{{version}}</div>{{/version}}\n </div>\n {{/isTextOrSubcategoryNonEmpty}}\n </div>\n </a>\n `,suggestionSimple:`\n <div class="${l}\n {{#isCategoryHeader}}${l}__main{{/isCategoryHeader}}\n {{#isSubCategoryHeader}}${l}__secondary{{/isSubCategoryHeader}}\n suggestion-layout-simple\n ">\n <div class="${l}--category-header">\n {{^isLvl0}}\n <span class="${l}--category-header-lvl0 ${l}--category-header-item">{{{category}}}</span>\n {{^isLvl1}}\n {{^isLvl1EmptyOrDuplicate}}\n <span class="${l}--category-header-lvl1 ${l}--category-header-item">\n {{{subcategory}}}\n </span>\n {{/isLvl1EmptyOrDuplicate}}\n {{/isLvl1}}\n {{/isLvl0}}\n <div class="${l}--title ${l}--category-header-item">\n {{#isLvl2}}\n {{{title}}}\n {{/isLvl2}}\n {{#isLvl1}}\n {{{subcategory}}}\n {{/isLvl1}}\n {{#isLvl0}}\n {{{category}}}\n {{/isLvl0}}\n </div>\n </div>\n <div class="${l}--wrapper">\n {{#text}}\n <div class="${l}--content">\n <div class="${l}--text">{{{text}}}</div>\n </div>\n {{/text}}\n </div>\n </div>\n `,footer:`\n <div class="${`${c}-footer`}">\n </div>\n `,empty:`\n <div class="${l}">\n <div class="${l}--wrapper">\n <div class="${l}--content ${l}--no-results">\n <div class="${l}--title">\n <div class="${l}--text">\n No results found for query <b>"{{query}}"</b>\n </div>\n </div>\n </div>\n </div>\n </div>\n `,searchBox:'\n <form novalidate="novalidate" onsubmit="return false;" class="searchbox">\n <div role="search" class="searchbox__wrapper">\n <input id="docsearch" type="search" name="search" placeholder="Search the docs" autocomplete="off" required="required" class="searchbox__input"/>\n <button type="submit" title="Submit your search query." class="searchbox__submit" >\n <svg width=12 height=12 role="img" aria-label="Search">\n <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sbx-icon-search-13"></use>\n </svg>\n </button>\n <button type="reset" title="Clear the search query." class="searchbox__reset hide">\n <svg width=12 height=12 role="img" aria-label="Reset">\n <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sbx-icon-clear-3"></use>\n </svg>\n </button>\n </div>\n</form>\n\n<div class="svg-icons" style="height: 0; width: 0; position: absolute; visibility: hidden">\n <svg xmlns="http://www.w3.org/2000/svg">\n <symbol id="sbx-icon-clear-3" viewBox="0 0 40 40"><path d="M16.228 20L1.886 5.657 0 3.772 3.772 0l1.885 1.886L20 16.228 34.343 1.886 36.228 0 40 3.772l-1.886 1.885L23.772 20l14.342 14.343L40 36.228 36.228 40l-1.885-1.886L20 23.772 5.657 38.114 3.772 40 0 36.228l1.886-1.885L16.228 20z" fill-rule="evenodd"></symbol>\n <symbol id="sbx-icon-search-13" viewBox="0 0 40 40"><path d="M26.806 29.012a16.312 16.312 0 0 1-10.427 3.746C7.332 32.758 0 25.425 0 16.378 0 7.334 7.333 0 16.38 0c9.045 0 16.378 7.333 16.378 16.38 0 3.96-1.406 7.593-3.746 10.426L39.547 37.34c.607.608.61 1.59-.004 2.203a1.56 1.56 0 0 1-2.202.004L26.807 29.012zm-10.427.627c7.322 0 13.26-5.938 13.26-13.26 0-7.324-5.938-13.26-13.26-13.26-7.324 0-13.26 5.936-13.26 13.26 0 7.322 5.936 13.26 13.26 13.26z" fill-rule="evenodd"></symbol>\n </svg>\n</div>\n '};var p=n(3847),d=n.n(p);const f={mergeKeyWithParent(e,t){if(void 0===e[t])return e;if("object"!=typeof e[t])return e;const n=d().extend({},e,e[t]);return delete n[t],n},groupBy(e,t){const n={};return d().each(e,((e,i)=>{if(void 0===i[t])throw new Error(`[groupBy]: Object has no key ${t}`);let r=i[t];"string"==typeof r&&(r=r.toLowerCase()),Object.prototype.hasOwnProperty.call(n,r)||(n[r]=[]),n[r].push(i)})),n},values:e=>Object.keys(e).map((t=>e[t])),flatten(e){const t=[];return e.forEach((e=>{Array.isArray(e)?e.forEach((e=>{t.push(e)})):t.push(e)})),t},flattenAndFlagFirst(e,t){const n=this.values(e).map((e=>e.map(((e,n)=>(e[t]=0===n,e)))));return this.flatten(n)},compact(e){const t=[];return e.forEach((e=>{e&&t.push(e)})),t},getHighlightedValue:(e,t)=>e._highlightResult&&e._highlightResult.hierarchy_camel&&e._highlightResult.hierarchy_camel[t]&&e._highlightResult.hierarchy_camel[t].matchLevel&&"none"!==e._highlightResult.hierarchy_camel[t].matchLevel&&e._highlightResult.hierarchy_camel[t].value?e._highlightResult.hierarchy_camel[t].value:e._highlightResult&&e._highlightResult&&e._highlightResult[t]&&e._highlightResult[t].value?e._highlightResult[t].value:e[t],getSnippetedValue(e,t){if(!e._snippetResult||!e._snippetResult[t]||!e._snippetResult[t].value)return e[t];let n=e._snippetResult[t].value;return n[0]!==n[0].toUpperCase()&&(n=`\u2026${n}`),-1===[".","!","?"].indexOf(n[n.length-1])&&(n=`${n}\u2026`),n},deepClone:e=>JSON.parse(JSON.stringify(e))};class g{constructor(e){let{searchDocs:t,searchIndex:n,inputSelector:i,debug:r=!1,baseUrl:s="/",queryDataCallback:a=null,autocompleteOptions:c={debug:!1,hint:!1,autoselect:!0},transformData:l=!1,queryHook:p=!1,handleSelected:f=!1,enhancedSearchInput:m=!1,layout:y="column",maxHits:v=5}=e;this.input=g.getInputFromSelector(i),this.queryDataCallback=a||null;const x=!(!c||!c.debug)&&c.debug;c.debug=r||x,this.autocompleteOptions=c,this.autocompleteOptions.cssClasses=this.autocompleteOptions.cssClasses||{},this.autocompleteOptions.cssClasses.prefix=this.autocompleteOptions.cssClasses.prefix||"ds";const b=this.input&&"function"==typeof this.input.attr&&this.input.attr("aria-label");this.autocompleteOptions.ariaLabel=this.autocompleteOptions.ariaLabel||b||"search input",this.isSimpleLayout="simple"===y,this.client=new o(t,n,s,v),m&&(this.input=g.injectSearchBox(this.input)),this.autocomplete=u()(this.input,c,[{source:this.getAutocompleteSource(l,p),templates:{suggestion:g.getSuggestionTemplate(this.isSimpleLayout),footer:h.footer,empty:g.getEmptyTemplate()}}]);const w=f;this.handleSelected=w||this.handleSelected,w&&d()(".algolia-autocomplete").on("click",".ds-suggestions a",(e=>{e.preventDefault()})),this.autocomplete.on("autocomplete:selected",this.handleSelected.bind(null,this.autocomplete.autocomplete)),this.autocomplete.on("autocomplete:shown",this.handleShown.bind(null,this.input)),m&&g.bindSearchBoxEvent(),document.addEventListener("keydown",(e=>{(e.ctrlKey||e.metaKey)&&"k"==e.key&&(this.input.focus(),e.preventDefault())}))}static injectSearchBox(e){e.before(h.searchBox);const t=e.prev().prev().find("input");return e.remove(),t}static bindSearchBoxEvent(){d()('.searchbox [type="reset"]').on("click",(function(){d()("input#docsearch").focus(),d()(this).addClass("hide"),u().autocomplete.setVal("")})),d()("input#docsearch").on("keyup",(()=>{const e=document.querySelector("input#docsearch"),t=document.querySelector('.searchbox [type="reset"]');t.className="searchbox__reset",0===e.value.length&&(t.className+=" hide")}))}static getInputFromSelector(e){const t=d()(e).filter("input");return t.length?d()(t[0]):null}getAutocompleteSource(e,t){return(n,i)=>{t&&(n=t(n)||n),this.client.search(n).then((t=>{this.queryDataCallback&&"function"==typeof this.queryDataCallback&&this.queryDataCallback(t),e&&(t=e(t)||t),i(g.formatHits(t))}))}}static formatHits(e){const t=f.deepClone(e).map((e=>(e._highlightResult&&(e._highlightResult=f.mergeKeyWithParent(e._highlightResult,"hierarchy")),f.mergeKeyWithParent(e,"hierarchy"))));let n=f.groupBy(t,"lvl0");return d().each(n,((e,t)=>{const i=f.groupBy(t,"lvl1"),r=f.flattenAndFlagFirst(i,"isSubCategoryHeader");n[e]=r})),n=f.flattenAndFlagFirst(n,"isCategoryHeader"),n.map((e=>{const t=g.formatURL(e),n=f.getHighlightedValue(e,"lvl0"),i=f.getHighlightedValue(e,"lvl1")||n,r=f.compact([f.getHighlightedValue(e,"lvl2")||i,f.getHighlightedValue(e,"lvl3"),f.getHighlightedValue(e,"lvl4"),f.getHighlightedValue(e,"lvl5"),f.getHighlightedValue(e,"lvl6")]).join('<span class="aa-suggestion-title-separator" aria-hidden="true"> \u203a </span>'),s=f.getSnippetedValue(e,"content"),o=i&&""!==i||r&&""!==r,a=!i||""===i||i===n,u=r&&""!==r&&r!==i,c=!u&&i&&""!==i&&i!==n,l=!c&&!u,h=e.version;return{isLvl0:l,isLvl1:c,isLvl2:u,isLvl1EmptyOrDuplicate:a,isCategoryHeader:e.isCategoryHeader,isSubCategoryHeader:e.isSubCategoryHeader,isTextOrSubcategoryNonEmpty:o,category:n,subcategory:i,title:r,text:s,url:t,version:h}}))}static formatURL(e){const{url:t,anchor:n}=e;if(t){return-1!==t.indexOf("#")?t:n?`${e.url}#${e.anchor}`:t}return n?`#${e.anchor}`:(console.warn("no anchor nor url for : ",JSON.stringify(e)),null)}static getEmptyTemplate(){return e=>r().compile(h.empty).render(e)}static getSuggestionTemplate(e){const t=e?h.suggestionSimple:h.suggestion,n=r().compile(t);return e=>n.render(e)}handleSelected(e,t,n,i,r){void 0===r&&(r={}),"click"!==r.selectionMethod&&(e.setVal(""),window.location.assign(n.url))}handleShown(e){const t=e.offset().left+e.width()/2;let n=d()(document).width()/2;isNaN(n)&&(n=900);const i=t-n>=0?"algolia-autocomplete-right":"algolia-autocomplete-left",r=t-n<0?"algolia-autocomplete-right":"algolia-autocomplete-left",s=d()(".algolia-autocomplete");s.hasClass(i)||s.addClass(i),s.hasClass(r)&&s.removeClass(r)}}const m=g},2500:(e,t,n)=>{"use strict";e.exports=n(2587)},7360:(e,t,n)=>{"use strict";var i=n(5567),r={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none",opacity:"1"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},dropdown:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},suggestions:{display:"block"},suggestion:{whiteSpace:"nowrap",cursor:"pointer"},suggestionChild:{whiteSpace:"normal"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:"0"},defaultClasses:{root:"algolia-autocomplete",prefix:"aa",noPrefix:!1,dropdownMenu:"dropdown-menu",input:"input",hint:"hint",suggestions:"suggestions",suggestion:"suggestion",cursor:"cursor",dataset:"dataset",empty:"empty"},appendTo:{wrapper:{position:"absolute",zIndex:"100",display:"none"},input:{},inputWithNoHint:{},dropdown:{display:"block"}}};i.isMsie()&&i.mixin(r.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),i.isMsie()&&i.isMsie()<=7&&i.mixin(r.input,{marginTop:"-1px"}),e.exports=r},3039:(e,t,n)=>{"use strict";var i="aaDataset",r="aaValue",s="aaDatum",o=n(5567),a=n(7294),u=n(4534),c=n(7360),l=n(8222);function h(e){var t;(e=e||{}).templates=e.templates||{},e.source||o.error("missing source"),e.name&&(t=e.name,!/^[_a-zA-Z0-9-]+$/.test(t))&&o.error("invalid dataset name: "+e.name),this.query=null,this._isEmpty=!0,this.highlight=!!e.highlight,this.name=void 0===e.name||null===e.name?o.getUniqueId():e.name,this.source=e.source,this.displayFn=function(e){return e=e||"value",o.isFunction(e)?e:t;function t(t){return t[e]}}(e.display||e.displayKey),this.debounce=e.debounce,this.cache=!1!==e.cache,this.templates=function(e,t){return{empty:e.empty&&o.templatify(e.empty),header:e.header&&o.templatify(e.header),footer:e.footer&&o.templatify(e.footer),suggestion:e.suggestion||n};function n(e){return"<p>"+t(e)+"</p>"}}(e.templates,this.displayFn),this.css=o.mixin({},c,e.appendTo?c.appendTo:{}),this.cssClasses=e.cssClasses=o.mixin({},c.defaultClasses,e.cssClasses||{}),this.cssClasses.prefix=e.cssClasses.formattedPrefix||o.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix);var n=o.className(this.cssClasses.prefix,this.cssClasses.dataset);this.$el=e.$menu&&e.$menu.find(n+"-"+this.name).length>0?a.element(e.$menu.find(n+"-"+this.name)[0]):a.element(u.dataset.replace("%CLASS%",this.name).replace("%PREFIX%",this.cssClasses.prefix).replace("%DATASET%",this.cssClasses.dataset)),this.$menu=e.$menu,this.clearCachedSuggestions()}h.extractDatasetName=function(e){return a.element(e).data(i)},h.extractValue=function(e){return a.element(e).data(r)},h.extractDatum=function(e){var t=a.element(e).data(s);return"string"==typeof t&&(t=JSON.parse(t)),t},o.mixin(h.prototype,l,{_render:function(e,t){if(this.$el){var n,c=this,l=[].slice.call(arguments,2);if(this.$el.empty(),n=t&&t.length,this._isEmpty=!n,!n&&this.templates.empty)this.$el.html(function(){var t=[].slice.call(arguments,0);return t=[{query:e,isEmpty:!0}].concat(t),c.templates.empty.apply(this,t)}.apply(this,l)).prepend(c.templates.header?h.apply(this,l):null).append(c.templates.footer?p.apply(this,l):null);else if(n)this.$el.html(function(){var e,n,l=[].slice.call(arguments,0),h=this,p=u.suggestions.replace("%PREFIX%",this.cssClasses.prefix).replace("%SUGGESTIONS%",this.cssClasses.suggestions);return e=a.element(p).css(this.css.suggestions),n=o.map(t,d),e.append.apply(e,n),e;function d(e){var t,n=u.suggestion.replace("%PREFIX%",h.cssClasses.prefix).replace("%SUGGESTION%",h.cssClasses.suggestion);return(t=a.element(n).attr({role:"option",id:["option",Math.floor(1e8*Math.random())].join("-")}).append(c.templates.suggestion.apply(this,[e].concat(l)))).data(i,c.name),t.data(r,c.displayFn(e)||void 0),t.data(s,JSON.stringify(e)),t.children().each((function(){a.element(this).css(h.css.suggestionChild)})),t}}.apply(this,l)).prepend(c.templates.header?h.apply(this,l):null).append(c.templates.footer?p.apply(this,l):null);else if(t&&!Array.isArray(t))throw new TypeError("suggestions must be an array");this.$menu&&this.$menu.addClass(this.cssClasses.prefix+(n?"with":"without")+"-"+this.name).removeClass(this.cssClasses.prefix+(n?"without":"with")+"-"+this.name),this.trigger("rendered",e)}function h(){var t=[].slice.call(arguments,0);return t=[{query:e,isEmpty:!n}].concat(t),c.templates.header.apply(this,t)}function p(){var t=[].slice.call(arguments,0);return t=[{query:e,isEmpty:!n}].concat(t),c.templates.footer.apply(this,t)}},getRoot:function(){return this.$el},update:function(e){function t(t){if(!this.canceled&&e===this.query){var n=[].slice.call(arguments,1);this.cacheSuggestions(e,t,n),this._render.apply(this,[e,t].concat(n))}}if(this.query=e,this.canceled=!1,this.shouldFetchFromCache(e))t.apply(this,[this.cachedSuggestions].concat(this.cachedRenderExtraArgs));else{var n=this,i=function(){n.canceled||n.source(e,t.bind(n))};if(this.debounce){clearTimeout(this.debounceTimeout),this.debounceTimeout=setTimeout((function(){n.debounceTimeout=null,i()}),this.debounce)}else i()}},cacheSuggestions:function(e,t,n){this.cachedQuery=e,this.cachedSuggestions=t,this.cachedRenderExtraArgs=n},shouldFetchFromCache:function(e){return this.cache&&this.cachedQuery===e&&this.cachedSuggestions&&this.cachedSuggestions.length},clearCachedSuggestions:function(){delete this.cachedQuery,delete this.cachedSuggestions,delete this.cachedRenderExtraArgs},cancel:function(){this.canceled=!0},clear:function(){this.$el&&(this.cancel(),this.$el.empty(),this.trigger("rendered",""))},isEmpty:function(){return this._isEmpty},destroy:function(){this.clearCachedSuggestions(),this.$el=null}}),e.exports=h},2570:(e,t,n)=>{"use strict";var i=n(5567),r=n(7294),s=n(8222),o=n(3039),a=n(7360);function u(e){var t,n,s,o=this;(e=e||{}).menu||i.error("menu is required"),i.isArray(e.datasets)||i.isObject(e.datasets)||i.error("1 or more datasets required"),e.datasets||i.error("datasets is required"),this.isOpen=!1,this.isEmpty=!0,this.minLength=e.minLength||0,this.templates={},this.appendTo=e.appendTo||!1,this.css=i.mixin({},a,e.appendTo?a.appendTo:{}),this.cssClasses=e.cssClasses=i.mixin({},a.defaultClasses,e.cssClasses||{}),this.cssClasses.prefix=e.cssClasses.formattedPrefix||i.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),t=i.bind(this._onSuggestionClick,this),n=i.bind(this._onSuggestionMouseEnter,this),s=i.bind(this._onSuggestionMouseLeave,this);var c=i.className(this.cssClasses.prefix,this.cssClasses.suggestion);this.$menu=r.element(e.menu).on("mouseenter.aa",c,n).on("mouseleave.aa",c,s).on("click.aa",c,t),this.$container=e.appendTo?e.wrapper:this.$menu,e.templates&&e.templates.header&&(this.templates.header=i.templatify(e.templates.header),this.$menu.prepend(this.templates.header())),e.templates&&e.templates.empty&&(this.templates.empty=i.templatify(e.templates.empty),this.$empty=r.element('<div class="'+i.className(this.cssClasses.prefix,this.cssClasses.empty,!0)+'"></div>'),this.$menu.append(this.$empty),this.$empty.hide()),this.datasets=i.map(e.datasets,(function(t){return function(e,t,n){return new u.Dataset(i.mixin({$menu:e,cssClasses:n},t))}(o.$menu,t,e.cssClasses)})),i.each(this.datasets,(function(e){var t=e.getRoot();t&&0===t.parent().length&&o.$menu.append(t),e.onSync("rendered",o._onRendered,o)})),e.templates&&e.templates.footer&&(this.templates.footer=i.templatify(e.templates.footer),this.$menu.append(this.templates.footer()));var l=this;r.element(window).resize((function(){l._redraw()}))}i.mixin(u.prototype,s,{_onSuggestionClick:function(e){this.trigger("suggestionClicked",r.element(e.currentTarget))},_onSuggestionMouseEnter:function(e){var t=r.element(e.currentTarget);if(!t.hasClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0))){this._removeCursor();var n=this;setTimeout((function(){n._setCursor(t,!1)}),0)}},_onSuggestionMouseLeave:function(e){if(e.relatedTarget&&r.element(e.relatedTarget).closest("."+i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).length>0)return;this._removeCursor(),this.trigger("cursorRemoved")},_onRendered:function(e,t){if(this.isEmpty=i.every(this.datasets,(function(e){return e.isEmpty()})),this.isEmpty)if(t.length>=this.minLength&&this.trigger("empty"),this.$empty)if(t.length<this.minLength)this._hide();else{var n=this.templates.empty({query:this.datasets[0]&&this.datasets[0].query});this.$empty.html(n),this.$empty.show(),this._show()}else i.any(this.datasets,(function(e){return e.templates&&e.templates.empty}))?t.length<this.minLength?this._hide():this._show():this._hide();else this.isOpen&&(this.$empty&&(this.$empty.empty(),this.$empty.hide()),t.length>=this.minLength?this._show():this._hide());this.trigger("datasetRendered")},_hide:function(){this.$container.hide()},_show:function(){this.$container.css("display","block"),this._redraw(),this.trigger("shown")},_redraw:function(){this.isOpen&&this.appendTo&&this.trigger("redrawn")},_getSuggestions:function(){return this.$menu.find(i.className(this.cssClasses.prefix,this.cssClasses.suggestion))},_getCursor:function(){return this.$menu.find(i.className(this.cssClasses.prefix,this.cssClasses.cursor)).first()},_setCursor:function(e,t){e.first().addClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).attr("aria-selected","true"),this.trigger("cursorMoved",t)},_removeCursor:function(){this._getCursor().removeClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).removeAttr("aria-selected")},_moveCursor:function(e){var t,n,i,r;this.isOpen&&(n=this._getCursor(),t=this._getSuggestions(),this._removeCursor(),-1!==(i=((i=t.index(n)+e)+1)%(t.length+1)-1)?(i<-1&&(i=t.length-1),this._setCursor(r=t.eq(i),!0),this._ensureVisible(r)):this.trigger("cursorRemoved"))},_ensureVisible:function(e){var t,n,i,r;n=(t=e.position().top)+e.height()+parseInt(e.css("margin-top"),10)+parseInt(e.css("margin-bottom"),10),i=this.$menu.scrollTop(),r=this.$menu.height()+parseInt(this.$menu.css("padding-top"),10)+parseInt(this.$menu.css("padding-bottom"),10),t<0?this.$menu.scrollTop(i+t):r<n&&this.$menu.scrollTop(i+(n-r))},close:function(){this.isOpen&&(this.isOpen=!1,this._removeCursor(),this._hide(),this.trigger("closed"))},open:function(){this.isOpen||(this.isOpen=!0,this.isEmpty||this._show(),this.trigger("opened"))},setLanguageDirection:function(e){this.$menu.css("ltr"===e?this.css.ltr:this.css.rtl)},moveCursorUp:function(){this._moveCursor(-1)},moveCursorDown:function(){this._moveCursor(1)},getDatumForSuggestion:function(e){var t=null;return e.length&&(t={raw:o.extractDatum(e),value:o.extractValue(e),datasetName:o.extractDatasetName(e)}),t},getCurrentCursor:function(){return this._getCursor().first()},getDatumForCursor:function(){return this.getDatumForSuggestion(this._getCursor().first())},getDatumForTopSuggestion:function(){return this.getDatumForSuggestion(this._getSuggestions().first())},cursorTopSuggestion:function(){this._setCursor(this._getSuggestions().first(),!1)},update:function(e){i.each(this.datasets,(function(t){t.update(e)}))},empty:function(){i.each(this.datasets,(function(e){e.clear()})),this.isEmpty=!0},isVisible:function(){return this.isOpen&&!this.isEmpty},destroy:function(){this.$menu.off(".aa"),this.$menu=null,i.each(this.datasets,(function(e){e.destroy()}))}}),u.Dataset=o,e.exports=u},8924:(e,t,n)=>{"use strict";var i=n(5567),r=n(7294);function s(e){e&&e.el||i.error("EventBus initialized without el"),this.$el=r.element(e.el)}i.mixin(s.prototype,{trigger:function(e,t,n,r){var s=i.Event("autocomplete:"+e);return this.$el.trigger(s,[t,n,r]),s}}),e.exports=s},8222:(e,t,n)=>{"use strict";var i=n(8194),r=/\s+/;function s(e,t,n,i){var s;if(!n)return this;for(t=t.split(r),n=i?function(e,t){return e.bind?e.bind(t):function(){e.apply(t,[].slice.call(arguments,0))}}(n,i):n,this._callbacks=this._callbacks||{};s=t.shift();)this._callbacks[s]=this._callbacks[s]||{sync:[],async:[]},this._callbacks[s][e].push(n);return this}function o(e,t,n){return function(){for(var i,r=0,s=e.length;!i&&r<s;r+=1)i=!1===e[r].apply(t,n);return!i}}e.exports={onSync:function(e,t,n){return s.call(this,"sync",e,t,n)},onAsync:function(e,t,n){return s.call(this,"async",e,t,n)},off:function(e){var t;if(!this._callbacks)return this;e=e.split(r);for(;t=e.shift();)delete this._callbacks[t];return this},trigger:function(e){var t,n,s,a,u;if(!this._callbacks)return this;e=e.split(r),s=[].slice.call(arguments,1);for(;(t=e.shift())&&(n=this._callbacks[t]);)a=o(n.sync,this,[t].concat(s)),u=o(n.async,this,[t].concat(s)),a()&&i(u);return this}}},4534:e=>{"use strict";e.exports={wrapper:'<span class="%ROOT%"></span>',dropdown:'<span class="%PREFIX%%DROPDOWN_MENU%"></span>',dataset:'<div class="%PREFIX%%DATASET%-%CLASS%"></div>',suggestions:'<span class="%PREFIX%%SUGGESTIONS%"></span>',suggestion:'<div class="%PREFIX%%SUGGESTION%"></div>'}},2981:(e,t,n)=>{"use strict";var i;i={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"};var r=n(5567),s=n(7294),o=n(8222);function a(e){var t,n,o,a,u,c=this;(e=e||{}).input||r.error("input is missing"),t=r.bind(this._onBlur,this),n=r.bind(this._onFocus,this),o=r.bind(this._onKeydown,this),a=r.bind(this._onInput,this),this.$hint=s.element(e.hint),this.$input=s.element(e.input).on("blur.aa",t).on("focus.aa",n).on("keydown.aa",o),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=r.noop),r.isMsie()?this.$input.on("keydown.aa keypress.aa cut.aa paste.aa",(function(e){i[e.which||e.keyCode]||r.defer(r.bind(c._onInput,c,e))})):this.$input.on("input.aa",a),this.query=this.$input.val(),this.$overflowHelper=(u=this.$input,s.element('<pre aria-hidden="true"></pre>').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:u.css("font-family"),fontSize:u.css("font-size"),fontStyle:u.css("font-style"),fontVariant:u.css("font-variant"),fontWeight:u.css("font-weight"),wordSpacing:u.css("word-spacing"),letterSpacing:u.css("letter-spacing"),textIndent:u.css("text-indent"),textRendering:u.css("text-rendering"),textTransform:u.css("text-transform")}).insertAfter(u))}function u(e){return e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}a.normalizeQuery=function(e){return(e||"").replace(/^\s*/g,"").replace(/\s{2,}/g," ")},r.mixin(a.prototype,o,{_onBlur:function(){this.resetInputValue(),this.$input.removeAttr("aria-activedescendant"),this.trigger("blurred")},_onFocus:function(){this.trigger("focused")},_onKeydown:function(e){var t=i[e.which||e.keyCode];this._managePreventDefault(t,e),t&&this._shouldTrigger(t,e)&&this.trigger(t+"Keyed",e)},_onInput:function(){this._checkInputValue()},_managePreventDefault:function(e,t){var n,i,r;switch(e){case"tab":i=this.getHint(),r=this.getInputValue(),n=i&&i!==r&&!u(t);break;case"up":case"down":n=!u(t);break;default:n=!1}n&&t.preventDefault()},_shouldTrigger:function(e,t){var n;if("tab"===e)n=!u(t);else n=!0;return n},_checkInputValue:function(){var e,t,n,i,r;e=this.getInputValue(),i=e,r=this.query,n=!(!(t=a.normalizeQuery(i)===a.normalizeQuery(r))||!this.query)&&this.query.length!==e.length,this.query=e,t?n&&this.trigger("whitespaceChanged",this.query):this.trigger("queryChanged",this.query)},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getQuery:function(){return this.query},setQuery:function(e){this.query=e},getInputValue:function(){return this.$input.val()},setInputValue:function(e,t){void 0===e&&(e=this.query),this.$input.val(e),t?this.clearHint():this._checkInputValue()},expand:function(){this.$input.attr("aria-expanded","true")},collapse:function(){this.$input.attr("aria-expanded","false")},setActiveDescendant:function(e){this.$input.attr("aria-activedescendant",e)},removeActiveDescendant:function(){this.$input.removeAttr("aria-activedescendant")},resetInputValue:function(){this.setInputValue(this.query,!0)},getHint:function(){return this.$hint.val()},setHint:function(e){this.$hint.val(e)},clearHint:function(){this.setHint("")},clearHintIfInvalid:function(){var e,t,n;n=(e=this.getInputValue())!==(t=this.getHint())&&0===t.indexOf(e),""!==e&&n&&!this.hasOverflow()||this.clearHint()},getLanguageDirection:function(){return(this.$input.css("direction")||"ltr").toLowerCase()},hasOverflow:function(){var e=this.$input.width()-2;return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>=e},isCursorAtEnd:function(){var e,t,n;return e=this.$input.val().length,t=this.$input[0].selectionStart,r.isNumber(t)?t===e:!document.selection||((n=document.selection.createRange()).moveStart("character",-e),e===n.text.length)},destroy:function(){this.$hint.off(".aa"),this.$input.off(".aa"),this.$hint=this.$input=this.$overflowHelper=null}}),e.exports=a},4015:(e,t,n)=>{"use strict";var i="aaAttrs",r=n(5567),s=n(7294),o=n(8924),a=n(2981),u=n(2570),c=n(4534),l=n(7360);function h(e){var t,n;if((e=e||{}).input||r.error("missing input"),this.isActivated=!1,this.debug=!!e.debug,this.autoselect=!!e.autoselect,this.autoselectOnBlur=!!e.autoselectOnBlur,this.openOnFocus=!!e.openOnFocus,this.minLength=r.isNumber(e.minLength)?e.minLength:1,this.autoWidth=void 0===e.autoWidth||!!e.autoWidth,this.clearOnSelected=!!e.clearOnSelected,this.tabAutocomplete=void 0===e.tabAutocomplete||!!e.tabAutocomplete,e.hint=!!e.hint,e.hint&&e.appendTo)throw new Error("[autocomplete.js] hint and appendTo options can't be used at the same time");this.css=e.css=r.mixin({},l,e.appendTo?l.appendTo:{}),this.cssClasses=e.cssClasses=r.mixin({},l.defaultClasses,e.cssClasses||{}),this.cssClasses.prefix=e.cssClasses.formattedPrefix=r.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),this.listboxId=e.listboxId=[this.cssClasses.root,"listbox",r.getUniqueId()].join("-");var a=function(e){var t,n,o,a;t=s.element(e.input),n=s.element(c.wrapper.replace("%ROOT%",e.cssClasses.root)).css(e.css.wrapper),e.appendTo||"block"!==t.css("display")||"table"!==t.parent().css("display")||n.css("display","table-cell");var u=c.dropdown.replace("%PREFIX%",e.cssClasses.prefix).replace("%DROPDOWN_MENU%",e.cssClasses.dropdownMenu);o=s.element(u).css(e.css.dropdown).attr({role:"listbox",id:e.listboxId}),e.templates&&e.templates.dropdownMenu&&o.html(r.templatify(e.templates.dropdownMenu)());a=t.clone().css(e.css.hint).css(function(e){return{backgroundAttachment:e.css("background-attachment"),backgroundClip:e.css("background-clip"),backgroundColor:e.css("background-color"),backgroundImage:e.css("background-image"),backgroundOrigin:e.css("background-origin"),backgroundPosition:e.css("background-position"),backgroundRepeat:e.css("background-repeat"),backgroundSize:e.css("background-size")}}(t)),a.val("").addClass(r.className(e.cssClasses.prefix,e.cssClasses.hint,!0)).removeAttr("id name placeholder required").prop("readonly",!0).attr({"aria-hidden":"true",autocomplete:"off",spellcheck:"false",tabindex:-1}),a.removeData&&a.removeData();t.data(i,{"aria-autocomplete":t.attr("aria-autocomplete"),"aria-expanded":t.attr("aria-expanded"),"aria-owns":t.attr("aria-owns"),autocomplete:t.attr("autocomplete"),dir:t.attr("dir"),role:t.attr("role"),spellcheck:t.attr("spellcheck"),style:t.attr("style"),type:t.attr("type")}),t.addClass(r.className(e.cssClasses.prefix,e.cssClasses.input,!0)).attr({autocomplete:"off",spellcheck:!1,role:"combobox","aria-autocomplete":e.datasets&&e.datasets[0]&&e.datasets[0].displayKey?"both":"list","aria-expanded":"false","aria-label":e.ariaLabel,"aria-owns":e.listboxId}).css(e.hint?e.css.input:e.css.inputWithNoHint);try{t.attr("dir")||t.attr("dir","auto")}catch(l){}return n=e.appendTo?n.appendTo(s.element(e.appendTo).eq(0)).eq(0):t.wrap(n).parent(),n.prepend(e.hint?a:null).append(o),{wrapper:n,input:t,hint:a,menu:o}}(e);this.$node=a.wrapper;var u=this.$input=a.input;t=a.menu,n=a.hint,e.dropdownMenuContainer&&s.element(e.dropdownMenuContainer).css("position","relative").append(t.css("top","0")),u.on("blur.aa",(function(e){var n=document.activeElement;r.isMsie()&&(t[0]===n||t[0].contains(n))&&(e.preventDefault(),e.stopImmediatePropagation(),r.defer((function(){u.focus()})))})),t.on("mousedown.aa",(function(e){e.preventDefault()})),this.eventBus=e.eventBus||new o({el:u}),this.dropdown=new h.Dropdown({appendTo:e.appendTo,wrapper:this.$node,menu:t,datasets:e.datasets,templates:e.templates,cssClasses:e.cssClasses,minLength:this.minLength}).onSync("suggestionClicked",this._onSuggestionClicked,this).onSync("cursorMoved",this._onCursorMoved,this).onSync("cursorRemoved",this._onCursorRemoved,this).onSync("opened",this._onOpened,this).onSync("closed",this._onClosed,this).onSync("shown",this._onShown,this).onSync("empty",this._onEmpty,this).onSync("redrawn",this._onRedrawn,this).onAsync("datasetRendered",this._onDatasetRendered,this),this.input=new h.Input({input:u,hint:n}).onSync("focused",this._onFocused,this).onSync("blurred",this._onBlurred,this).onSync("enterKeyed",this._onEnterKeyed,this).onSync("tabKeyed",this._onTabKeyed,this).onSync("escKeyed",this._onEscKeyed,this).onSync("upKeyed",this._onUpKeyed,this).onSync("downKeyed",this._onDownKeyed,this).onSync("leftKeyed",this._onLeftKeyed,this).onSync("rightKeyed",this._onRightKeyed,this).onSync("queryChanged",this._onQueryChanged,this).onSync("whitespaceChanged",this._onWhitespaceChanged,this),this._bindKeyboardShortcuts(e),this._setLanguageDirection()}r.mixin(h.prototype,{_bindKeyboardShortcuts:function(e){if(e.keyboardShortcuts){var t=this.$input,n=[];r.each(e.keyboardShortcuts,(function(e){"string"==typeof e&&(e=e.toUpperCase().charCodeAt(0)),n.push(e)})),s.element(document).keydown((function(e){var i=e.target||e.srcElement,r=i.tagName;if(!i.isContentEditable&&"INPUT"!==r&&"SELECT"!==r&&"TEXTAREA"!==r){var s=e.which||e.keyCode;-1!==n.indexOf(s)&&(t.focus(),e.stopPropagation(),e.preventDefault())}}))}},_onSuggestionClicked:function(e,t){var n;(n=this.dropdown.getDatumForSuggestion(t))&&this._select(n,{selectionMethod:"click"})},_onCursorMoved:function(e,t){var n=this.dropdown.getDatumForCursor(),i=this.dropdown.getCurrentCursor().attr("id");this.input.setActiveDescendant(i),n&&(t&&this.input.setInputValue(n.value,!0),this.eventBus.trigger("cursorchanged",n.raw,n.datasetName))},_onCursorRemoved:function(){this.input.resetInputValue(),this._updateHint(),this.eventBus.trigger("cursorremoved")},_onDatasetRendered:function(){this._updateHint(),this.eventBus.trigger("updated")},_onOpened:function(){this._updateHint(),this.input.expand(),this.eventBus.trigger("opened")},_onEmpty:function(){this.eventBus.trigger("empty")},_onRedrawn:function(){this.$node.css("top","0px"),this.$node.css("left","0px");var e=this.$input[0].getBoundingClientRect();this.autoWidth&&this.$node.css("width",e.width+"px");var t=this.$node[0].getBoundingClientRect(),n=e.bottom-t.top;this.$node.css("top",n+"px");var i=e.left-t.left;this.$node.css("left",i+"px"),this.eventBus.trigger("redrawn")},_onShown:function(){this.eventBus.trigger("shown"),this.autoselect&&this.dropdown.cursorTopSuggestion()},_onClosed:function(){this.input.clearHint(),this.input.removeActiveDescendant(),this.input.collapse(),this.eventBus.trigger("closed")},_onFocused:function(){if(this.isActivated=!0,this.openOnFocus){var e=this.input.getQuery();e.length>=this.minLength?this.dropdown.update(e):this.dropdown.empty(),this.dropdown.open()}},_onBlurred:function(){var e,t;e=this.dropdown.getDatumForCursor(),t=this.dropdown.getDatumForTopSuggestion();var n={selectionMethod:"blur"};this.debug||(this.autoselectOnBlur&&e?this._select(e,n):this.autoselectOnBlur&&t?this._select(t,n):(this.isActivated=!1,this.dropdown.empty(),this.dropdown.close()))},_onEnterKeyed:function(e,t){var n,i;n=this.dropdown.getDatumForCursor(),i=this.dropdown.getDatumForTopSuggestion();var r={selectionMethod:"enterKey"};n?(this._select(n,r),t.preventDefault()):this.autoselect&&i&&(this._select(i,r),t.preventDefault())},_onTabKeyed:function(e,t){if(this.tabAutocomplete){var n;(n=this.dropdown.getDatumForCursor())?(this._select(n,{selectionMethod:"tabKey"}),t.preventDefault()):this._autocomplete(!0)}else this.dropdown.close()},_onEscKeyed:function(){this.dropdown.close(),this.input.resetInputValue()},_onUpKeyed:function(){var e=this.input.getQuery();this.dropdown.isEmpty&&e.length>=this.minLength?this.dropdown.update(e):this.dropdown.moveCursorUp(),this.dropdown.open()},_onDownKeyed:function(){var e=this.input.getQuery();this.dropdown.isEmpty&&e.length>=this.minLength?this.dropdown.update(e):this.dropdown.moveCursorDown(),this.dropdown.open()},_onLeftKeyed:function(){"rtl"===this.dir&&this._autocomplete()},_onRightKeyed:function(){"ltr"===this.dir&&this._autocomplete()},_onQueryChanged:function(e,t){this.input.clearHintIfInvalid(),t.length>=this.minLength?this.dropdown.update(t):this.dropdown.empty(),this.dropdown.open(),this._setLanguageDirection()},_onWhitespaceChanged:function(){this._updateHint(),this.dropdown.open()},_setLanguageDirection:function(){var e=this.input.getLanguageDirection();this.dir!==e&&(this.dir=e,this.$node.css("direction",e),this.dropdown.setLanguageDirection(e))},_updateHint:function(){var e,t,n,i,s;(e=this.dropdown.getDatumForTopSuggestion())&&this.dropdown.isVisible()&&!this.input.hasOverflow()?(t=this.input.getInputValue(),n=a.normalizeQuery(t),i=r.escapeRegExChars(n),(s=new RegExp("^(?:"+i+")(.+$)","i").exec(e.value))?this.input.setHint(t+s[1]):this.input.clearHint()):this.input.clearHint()},_autocomplete:function(e){var t,n,i,r;t=this.input.getHint(),n=this.input.getQuery(),i=e||this.input.isCursorAtEnd(),t&&n!==t&&i&&((r=this.dropdown.getDatumForTopSuggestion())&&this.input.setInputValue(r.value),this.eventBus.trigger("autocompleted",r.raw,r.datasetName))},_select:function(e,t){void 0!==e.value&&this.input.setQuery(e.value),this.clearOnSelected?this.setVal(""):this.input.setInputValue(e.value,!0),this._setLanguageDirection(),!1===this.eventBus.trigger("selected",e.raw,e.datasetName,t).isDefaultPrevented()&&(this.dropdown.close(),r.defer(r.bind(this.dropdown.empty,this.dropdown)))},open:function(){if(!this.isActivated){var e=this.input.getInputValue();e.length>=this.minLength?this.dropdown.update(e):this.dropdown.empty()}this.dropdown.open()},close:function(){this.dropdown.close()},setVal:function(e){e=r.toStr(e),this.isActivated?this.input.setInputValue(e):(this.input.setQuery(e),this.input.setInputValue(e,!0)),this._setLanguageDirection()},getVal:function(){return this.input.getQuery()},destroy:function(){this.input.destroy(),this.dropdown.destroy(),function(e,t){var n=e.find(r.className(t.prefix,t.input));r.each(n.data(i),(function(e,t){void 0===e?n.removeAttr(t):n.attr(t,e)})),n.detach().removeClass(r.className(t.prefix,t.input,!0)).insertAfter(e),n.removeData&&n.removeData(i);e.remove()}(this.$node,this.cssClasses),this.$node=null},getWrapper:function(){return this.dropdown.$container[0]}}),h.Dropdown=u,h.Input=a,h.sources=n(7514),e.exports=h},7294:e=>{"use strict";e.exports={element:null}},2314:e=>{"use strict";e.exports=function(e){var t=e.match(/Algolia for JavaScript \((\d+\.)(\d+\.)(\d+)\)/)||e.match(/Algolia for vanilla JavaScript (\d+\.)(\d+\.)(\d+)/);if(t)return[t[1],t[2],t[3]]}},5567:(e,t,n)=>{"use strict";var i,r=n(7294);function s(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}e.exports={isArray:null,isFunction:null,isObject:null,bind:null,each:null,map:null,mixin:null,isMsie:function(e){if(void 0===e&&(e=navigator.userAgent),/(msie|trident)/i.test(e)){var t=e.match(/(msie |rv:)(\d+(.\d+)?)/i);if(t)return t[2]}return!1},escapeRegExChars:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isNumber:function(e){return"number"==typeof e},toStr:function(e){return null==e?"":e+""},cloneDeep:function(e){var t=this.mixin({},e),n=this;return this.each(t,(function(e,i){e&&(n.isArray(e)?t[i]=[].concat(e):n.isObject(e)&&(t[i]=n.cloneDeep(e)))})),t},error:function(e){throw new Error(e)},every:function(e,t){var n=!0;return e?(this.each(e,(function(i,r){n&&(n=t.call(null,i,r,e)&&n)})),!!n):n},any:function(e,t){var n=!1;return e?(this.each(e,(function(i,r){if(t.call(null,i,r,e))return n=!0,!1})),n):n},getUniqueId:(i=0,function(){return i++}),templatify:function(e){if(this.isFunction(e))return e;var t=r.element(e);return"SCRIPT"===t.prop("tagName")?function(){return t.text()}:function(){return String(e)}},defer:function(e){setTimeout(e,0)},noop:function(){},formatPrefix:function(e,t){return t?"":e+"-"},className:function(e,t,n){return(n?"":".")+e+t},escapeHighlightedString:function(e,t,n){t=t||"<em>";var i=document.createElement("div");i.appendChild(document.createTextNode(t)),n=n||"</em>";var r=document.createElement("div");r.appendChild(document.createTextNode(n));var o=document.createElement("div");return o.appendChild(document.createTextNode(e)),o.innerHTML.replace(RegExp(s(i.innerHTML),"g"),t).replace(RegExp(s(r.innerHTML),"g"),n)}}},9529:(e,t,n)=>{"use strict";var i=n(5567),r=n(5293),s=n(2314);e.exports=function(e,t){var n=s(e.as._ua);return n&&n[0]>=3&&n[1]>20&&((t=t||{}).additionalUA="autocomplete.js "+r),function(n,r){e.search(n,t,(function(e,t){e?i.error(e.message):r(t.hits,t)}))}}},7514:(e,t,n)=>{"use strict";e.exports={hits:n(9529),popularIn:n(3692)}},3692:(e,t,n)=>{"use strict";var i=n(5567),r=n(5293),s=n(2314);e.exports=function(e,t,n,o){var a=s(e.as._ua);if(a&&a[0]>=3&&a[1]>20&&((t=t||{}).additionalUA="autocomplete.js "+r),!n.source)return i.error("Missing 'source' key");var u=i.isFunction(n.source)?n.source:function(e){return e[n.source]};if(!n.index)return i.error("Missing 'index' key");var c=n.index;return o=o||{},function(a,l){e.search(a,t,(function(e,a){if(e)i.error(e.message);else{if(a.hits.length>0){var h=a.hits[0],p=i.mixin({hitsPerPage:0},n);delete p.source,delete p.index;var d=s(c.as._ua);return d&&d[0]>=3&&d[1]>20&&(t.additionalUA="autocomplete.js "+r),void c.search(u(h),p,(function(e,t){if(e)i.error(e.message);else{var n=[];if(o.includeAll){var r=o.allTitle||"All departments";n.push(i.mixin({facet:{value:r,count:t.nbHits}},i.cloneDeep(h)))}i.each(t.facets,(function(e,t){i.each(e,(function(e,r){n.push(i.mixin({facet:{facet:t,value:r,count:e}},i.cloneDeep(h)))}))}));for(var s=1;s<a.hits.length;++s)n.push(a.hits[s]);l(n,a)}}))}l([])}}))}}},2587:(e,t,n)=>{"use strict";var i=n(3847);n(7294).element=i;var r=n(5567);r.isArray=i.isArray,r.isFunction=i.isFunction,r.isObject=i.isPlainObject,r.bind=i.proxy,r.each=function(e,t){i.each(e,(function(e,n){return t(n,e)}))},r.map=i.map,r.mixin=i.extend,r.Event=i.Event;var s="aaAutocomplete",o=n(4015),a=n(8924);function u(e,t,n,u){n=r.isArray(n)?n:[].slice.call(arguments,2);var c=i(e).each((function(e,r){var c=i(r),l=new a({el:c}),h=u||new o({input:c,eventBus:l,dropdownMenuContainer:t.dropdownMenuContainer,hint:void 0===t.hint||!!t.hint,minLength:t.minLength,autoselect:t.autoselect,autoselectOnBlur:t.autoselectOnBlur,tabAutocomplete:t.tabAutocomplete,openOnFocus:t.openOnFocus,templates:t.templates,debug:t.debug,clearOnSelected:t.clearOnSelected,cssClasses:t.cssClasses,datasets:n,keyboardShortcuts:t.keyboardShortcuts,appendTo:t.appendTo,autoWidth:t.autoWidth,ariaLabel:t.ariaLabel||r.getAttribute("aria-label")});c.data(s,h)}));return c.autocomplete={},r.each(["open","close","getVal","setVal","destroy","getWrapper"],(function(e){c.autocomplete[e]=function(){var t,n=arguments;return c.each((function(r,o){var a=i(o).data(s);t=a[e].apply(a,n)})),t}})),c}u.sources=o.sources,u.escapeHighlightedString=r.escapeHighlightedString;var c="autocomplete"in window,l=window.autocomplete;u.noConflict=function(){return c?window.autocomplete=l:delete window.autocomplete,u},e.exports=u},5293:e=>{e.exports="0.37.1"},3847:e=>{var t;t=window,e.exports=function(e){var t,n,i=function(){var t,n,i,r,s,o,a=[],u=a.concat,c=a.filter,l=a.slice,h=e.document,p={},d={},f={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},g=/^\s*<(\w+|!)[^>]*>/,m=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,v=/^(?:body|html)$/i,x=/([A-Z])/g,b=["val","css","html","text","data","width","height","offset"],w=["after","prepend","before","append"],S=h.createElement("table"),C=h.createElement("tr"),E={tr:h.createElement("tbody"),tbody:S,thead:S,tfoot:S,td:C,th:C,"*":h.createElement("div")},k=/complete|loaded|interactive/,_=/^[\w-]*$/,T={},L=T.toString,O={},A=h.createElement("div"),$={tabindex:"tabIndex",readonly:"readOnly",for:"htmlFor",class:"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},P=Array.isArray||function(e){return e instanceof Array};function I(e){return null==e?String(e):T[L.call(e)]||"object"}function Q(e){return"function"==I(e)}function R(e){return null!=e&&e==e.window}function N(e){return null!=e&&e.nodeType==e.DOCUMENT_NODE}function D(e){return"object"==I(e)}function F(e){return D(e)&&!R(e)&&Object.getPrototypeOf(e)==Object.prototype}function j(e){var t=!!e&&"length"in e&&e.length,n=i.type(e);return"function"!=n&&!R(e)&&("array"==n||0===t||"number"==typeof t&&t>0&&t-1 in e)}function H(e){return c.call(e,(function(e){return null!=e}))}function V(e){return e.length>0?i.fn.concat.apply([],e):e}function B(e){return e.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function M(e){return e in d?d[e]:d[e]=new RegExp("(^|\\s)"+e+"(\\s|$)")}function q(e,t){return"number"!=typeof t||f[B(e)]?t:t+"px"}function z(e){var t,n;return p[e]||(t=h.createElement(e),h.body.appendChild(t),n=getComputedStyle(t,"").getPropertyValue("display"),t.parentNode.removeChild(t),"none"==n&&(n="block"),p[e]=n),p[e]}function K(e){return"children"in e?l.call(e.children):i.map(e.childNodes,(function(e){if(1==e.nodeType)return e}))}function W(e,t){var n,i=e?e.length:0;for(n=0;n<i;n++)this[n]=e[n];this.length=i,this.selector=t||""}function U(e,i,r){for(n in i)r&&(F(i[n])||P(i[n]))?(F(i[n])&&!F(e[n])&&(e[n]={}),P(i[n])&&!P(e[n])&&(e[n]=[]),U(e[n],i[n],r)):i[n]!==t&&(e[n]=i[n])}function Z(e,t){return null==t?i(e):i(e).filter(t)}function G(e,t,n,i){return Q(t)?t.call(e,n,i):t}function J(e,t,n){null==n?e.removeAttribute(t):e.setAttribute(t,n)}function X(e,n){var i=e.className||"",r=i&&i.baseVal!==t;if(n===t)return r?i.baseVal:i;r?i.baseVal=n:e.className=n}function Y(e){try{return e?"true"==e||"false"!=e&&("null"==e?null:+e+""==e?+e:/^[\[\{]/.test(e)?i.parseJSON(e):e):e}catch(t){return e}}function ee(e,t){t(e);for(var n=0,i=e.childNodes.length;n<i;n++)ee(e.childNodes[n],t)}return O.matches=function(e,t){if(!t||!e||1!==e.nodeType)return!1;var n=e.matches||e.webkitMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.matchesSelector;if(n)return n.call(e,t);var i,r=e.parentNode,s=!r;return s&&(r=A).appendChild(e),i=~O.qsa(r,t).indexOf(e),s&&A.removeChild(e),i},s=function(e){return e.replace(/-+(.)?/g,(function(e,t){return t?t.toUpperCase():""}))},o=function(e){return c.call(e,(function(t,n){return e.indexOf(t)==n}))},O.fragment=function(e,n,r){var s,o,a;return m.test(e)&&(s=i(h.createElement(RegExp.$1))),s||(e.replace&&(e=e.replace(y,"<$1></$2>")),n===t&&(n=g.test(e)&&RegExp.$1),n in E||(n="*"),(a=E[n]).innerHTML=""+e,s=i.each(l.call(a.childNodes),(function(){a.removeChild(this)}))),F(r)&&(o=i(s),i.each(r,(function(e,t){b.indexOf(e)>-1?o[e](t):o.attr(e,t)}))),s},O.Z=function(e,t){return new W(e,t)},O.isZ=function(e){return e instanceof O.Z},O.init=function(e,n){var r;if(!e)return O.Z();if("string"==typeof e)if("<"==(e=e.trim())[0]&&g.test(e))r=O.fragment(e,RegExp.$1,n),e=null;else{if(n!==t)return i(n).find(e);r=O.qsa(h,e)}else{if(Q(e))return i(h).ready(e);if(O.isZ(e))return e;if(P(e))r=H(e);else if(D(e))r=[e],e=null;else if(g.test(e))r=O.fragment(e.trim(),RegExp.$1,n),e=null;else{if(n!==t)return i(n).find(e);r=O.qsa(h,e)}}return O.Z(r,e)},(i=function(e,t){return O.init(e,t)}).extend=function(e){var t,n=l.call(arguments,1);return"boolean"==typeof e&&(t=e,e=n.shift()),n.forEach((function(n){U(e,n,t)})),e},O.qsa=function(e,t){var n,i="#"==t[0],r=!i&&"."==t[0],s=i||r?t.slice(1):t,o=_.test(s);return e.getElementById&&o&&i?(n=e.getElementById(s))?[n]:[]:1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType?[]:l.call(o&&!i&&e.getElementsByClassName?r?e.getElementsByClassName(s):e.getElementsByTagName(t):e.querySelectorAll(t))},i.contains=h.documentElement.contains?function(e,t){return e!==t&&e.contains(t)}:function(e,t){for(;t&&(t=t.parentNode);)if(t===e)return!0;return!1},i.type=I,i.isFunction=Q,i.isWindow=R,i.isArray=P,i.isPlainObject=F,i.isEmptyObject=function(e){var t;for(t in e)return!1;return!0},i.isNumeric=function(e){var t=Number(e),n=typeof e;return null!=e&&"boolean"!=n&&("string"!=n||e.length)&&!isNaN(t)&&isFinite(t)||!1},i.inArray=function(e,t,n){return a.indexOf.call(t,e,n)},i.camelCase=s,i.trim=function(e){return null==e?"":String.prototype.trim.call(e)},i.uuid=0,i.support={},i.expr={},i.noop=function(){},i.map=function(e,t){var n,i,r,s=[];if(j(e))for(i=0;i<e.length;i++)null!=(n=t(e[i],i))&&s.push(n);else for(r in e)null!=(n=t(e[r],r))&&s.push(n);return V(s)},i.each=function(e,t){var n,i;if(j(e)){for(n=0;n<e.length;n++)if(!1===t.call(e[n],n,e[n]))return e}else for(i in e)if(!1===t.call(e[i],i,e[i]))return e;return e},i.grep=function(e,t){return c.call(e,t)},e.JSON&&(i.parseJSON=JSON.parse),i.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),(function(e,t){T["[object "+t+"]"]=t.toLowerCase()})),i.fn={constructor:O.Z,length:0,forEach:a.forEach,reduce:a.reduce,push:a.push,sort:a.sort,splice:a.splice,indexOf:a.indexOf,concat:function(){var e,t,n=[];for(e=0;e<arguments.length;e++)t=arguments[e],n[e]=O.isZ(t)?t.toArray():t;return u.apply(O.isZ(this)?this.toArray():this,n)},map:function(e){return i(i.map(this,(function(t,n){return e.call(t,n,t)})))},slice:function(){return i(l.apply(this,arguments))},ready:function(e){return k.test(h.readyState)&&h.body?e(i):h.addEventListener("DOMContentLoaded",(function(){e(i)}),!1),this},get:function(e){return e===t?l.call(this):this[e>=0?e:e+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each((function(){null!=this.parentNode&&this.parentNode.removeChild(this)}))},each:function(e){return a.every.call(this,(function(t,n){return!1!==e.call(t,n,t)})),this},filter:function(e){return Q(e)?this.not(this.not(e)):i(c.call(this,(function(t){return O.matches(t,e)})))},add:function(e,t){return i(o(this.concat(i(e,t))))},is:function(e){return this.length>0&&O.matches(this[0],e)},not:function(e){var n=[];if(Q(e)&&e.call!==t)this.each((function(t){e.call(this,t)||n.push(this)}));else{var r="string"==typeof e?this.filter(e):j(e)&&Q(e.item)?l.call(e):i(e);this.forEach((function(e){r.indexOf(e)<0&&n.push(e)}))}return i(n)},has:function(e){return this.filter((function(){return D(e)?i.contains(this,e):i(this).find(e).size()}))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},first:function(){var e=this[0];return e&&!D(e)?e:i(e)},last:function(){var e=this[this.length-1];return e&&!D(e)?e:i(e)},find:function(e){var t=this;return e?"object"==typeof e?i(e).filter((function(){var e=this;return a.some.call(t,(function(t){return i.contains(t,e)}))})):1==this.length?i(O.qsa(this[0],e)):this.map((function(){return O.qsa(this,e)})):i()},closest:function(e,t){var n=[],r="object"==typeof e&&i(e);return this.each((function(i,s){for(;s&&!(r?r.indexOf(s)>=0:O.matches(s,e));)s=s!==t&&!N(s)&&s.parentNode;s&&n.indexOf(s)<0&&n.push(s)})),i(n)},parents:function(e){for(var t=[],n=this;n.length>0;)n=i.map(n,(function(e){if((e=e.parentNode)&&!N(e)&&t.indexOf(e)<0)return t.push(e),e}));return Z(t,e)},parent:function(e){return Z(o(this.pluck("parentNode")),e)},children:function(e){return Z(this.map((function(){return K(this)})),e)},contents:function(){return this.map((function(){return this.contentDocument||l.call(this.childNodes)}))},siblings:function(e){return Z(this.map((function(e,t){return c.call(K(t.parentNode),(function(e){return e!==t}))})),e)},empty:function(){return this.each((function(){this.innerHTML=""}))},pluck:function(e){return i.map(this,(function(t){return t[e]}))},show:function(){return this.each((function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=z(this.nodeName))}))},replaceWith:function(e){return this.before(e).remove()},wrap:function(e){var t=Q(e);if(this[0]&&!t)var n=i(e).get(0),r=n.parentNode||this.length>1;return this.each((function(s){i(this).wrapAll(t?e.call(this,s):r?n.cloneNode(!0):n)}))},wrapAll:function(e){if(this[0]){var t;for(i(this[0]).before(e=i(e));(t=e.children()).length;)e=t.first();i(e).append(this)}return this},wrapInner:function(e){var t=Q(e);return this.each((function(n){var r=i(this),s=r.contents(),o=t?e.call(this,n):e;s.length?s.wrapAll(o):r.append(o)}))},unwrap:function(){return this.parent().each((function(){i(this).replaceWith(i(this).children())})),this},clone:function(){return this.map((function(){return this.cloneNode(!0)}))},hide:function(){return this.css("display","none")},toggle:function(e){return this.each((function(){var n=i(this);(e===t?"none"==n.css("display"):e)?n.show():n.hide()}))},prev:function(e){return i(this.pluck("previousElementSibling")).filter(e||"*")},next:function(e){return i(this.pluck("nextElementSibling")).filter(e||"*")},html:function(e){return 0 in arguments?this.each((function(t){var n=this.innerHTML;i(this).empty().append(G(this,e,t,n))})):0 in this?this[0].innerHTML:null},text:function(e){return 0 in arguments?this.each((function(t){var n=G(this,e,t,this.textContent);this.textContent=null==n?"":""+n})):0 in this?this.pluck("textContent").join(""):null},attr:function(e,i){var r;return"string"!=typeof e||1 in arguments?this.each((function(t){if(1===this.nodeType)if(D(e))for(n in e)J(this,n,e[n]);else J(this,e,G(this,i,t,this.getAttribute(e)))})):0 in this&&1==this[0].nodeType&&null!=(r=this[0].getAttribute(e))?r:t},removeAttr:function(e){return this.each((function(){1===this.nodeType&&e.split(" ").forEach((function(e){J(this,e)}),this)}))},prop:function(e,t){return e=$[e]||e,1 in arguments?this.each((function(n){this[e]=G(this,t,n,this[e])})):this[0]&&this[0][e]},removeProp:function(e){return e=$[e]||e,this.each((function(){delete this[e]}))},data:function(e,n){var i="data-"+e.replace(x,"-$1").toLowerCase(),r=1 in arguments?this.attr(i,n):this.attr(i);return null!==r?Y(r):t},val:function(e){return 0 in arguments?(null==e&&(e=""),this.each((function(t){this.value=G(this,e,t,this.value)}))):this[0]&&(this[0].multiple?i(this[0]).find("option").filter((function(){return this.selected})).pluck("value"):this[0].value)},offset:function(t){if(t)return this.each((function(e){var n=i(this),r=G(this,t,e,n.offset()),s=n.offsetParent().offset(),o={top:r.top-s.top,left:r.left-s.left};"static"==n.css("position")&&(o.position="relative"),n.css(o)}));if(!this.length)return null;if(h.documentElement!==this[0]&&!i.contains(h.documentElement,this[0]))return{top:0,left:0};var n=this[0].getBoundingClientRect();return{left:n.left+e.pageXOffset,top:n.top+e.pageYOffset,width:Math.round(n.width),height:Math.round(n.height)}},css:function(e,t){if(arguments.length<2){var r=this[0];if("string"==typeof e){if(!r)return;return r.style[s(e)]||getComputedStyle(r,"").getPropertyValue(e)}if(P(e)){if(!r)return;var o={},a=getComputedStyle(r,"");return i.each(e,(function(e,t){o[t]=r.style[s(t)]||a.getPropertyValue(t)})),o}}var u="";if("string"==I(e))t||0===t?u=B(e)+":"+q(e,t):this.each((function(){this.style.removeProperty(B(e))}));else for(n in e)e[n]||0===e[n]?u+=B(n)+":"+q(n,e[n])+";":this.each((function(){this.style.removeProperty(B(n))}));return this.each((function(){this.style.cssText+=";"+u}))},index:function(e){return e?this.indexOf(i(e)[0]):this.parent().children().indexOf(this[0])},hasClass:function(e){return!!e&&a.some.call(this,(function(e){return this.test(X(e))}),M(e))},addClass:function(e){return e?this.each((function(t){if("className"in this){r=[];var n=X(this);G(this,e,t,n).split(/\s+/g).forEach((function(e){i(this).hasClass(e)||r.push(e)}),this),r.length&&X(this,n+(n?" ":"")+r.join(" "))}})):this},removeClass:function(e){return this.each((function(n){if("className"in this){if(e===t)return X(this,"");r=X(this),G(this,e,n,r).split(/\s+/g).forEach((function(e){r=r.replace(M(e)," ")})),X(this,r.trim())}}))},toggleClass:function(e,n){return e?this.each((function(r){var s=i(this);G(this,e,r,X(this)).split(/\s+/g).forEach((function(e){(n===t?!s.hasClass(e):n)?s.addClass(e):s.removeClass(e)}))})):this},scrollTop:function(e){if(this.length){var n="scrollTop"in this[0];return e===t?n?this[0].scrollTop:this[0].pageYOffset:this.each(n?function(){this.scrollTop=e}:function(){this.scrollTo(this.scrollX,e)})}},scrollLeft:function(e){if(this.length){var n="scrollLeft"in this[0];return e===t?n?this[0].scrollLeft:this[0].pageXOffset:this.each(n?function(){this.scrollLeft=e}:function(){this.scrollTo(e,this.scrollY)})}},position:function(){if(this.length){var e=this[0],t=this.offsetParent(),n=this.offset(),r=v.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(i(e).css("margin-top"))||0,n.left-=parseFloat(i(e).css("margin-left"))||0,r.top+=parseFloat(i(t[0]).css("border-top-width"))||0,r.left+=parseFloat(i(t[0]).css("border-left-width"))||0,{top:n.top-r.top,left:n.left-r.left}}},offsetParent:function(){return this.map((function(){for(var e=this.offsetParent||h.body;e&&!v.test(e.nodeName)&&"static"==i(e).css("position");)e=e.offsetParent;return e}))}},i.fn.detach=i.fn.remove,["width","height"].forEach((function(e){var n=e.replace(/./,(function(e){return e[0].toUpperCase()}));i.fn[e]=function(r){var s,o=this[0];return r===t?R(o)?o["inner"+n]:N(o)?o.documentElement["scroll"+n]:(s=this.offset())&&s[e]:this.each((function(t){(o=i(this)).css(e,G(this,r,t,o[e]()))}))}})),w.forEach((function(n,r){var s=r%2;i.fn[n]=function(){var n,o,a=i.map(arguments,(function(e){var r=[];return"array"==(n=I(e))?(e.forEach((function(e){return e.nodeType!==t?r.push(e):i.zepto.isZ(e)?r=r.concat(e.get()):void(r=r.concat(O.fragment(e)))})),r):"object"==n||null==e?e:O.fragment(e)})),u=this.length>1;return a.length<1?this:this.each((function(t,n){o=s?n:n.parentNode,n=0==r?n.nextSibling:1==r?n.firstChild:2==r?n:null;var c=i.contains(h.documentElement,o);a.forEach((function(t){if(u)t=t.cloneNode(!0);else if(!o)return i(t).remove();o.insertBefore(t,n),c&&ee(t,(function(t){if(!(null==t.nodeName||"SCRIPT"!==t.nodeName.toUpperCase()||t.type&&"text/javascript"!==t.type||t.src)){var n=t.ownerDocument?t.ownerDocument.defaultView:e;n.eval.call(n,t.innerHTML)}}))}))}))},i.fn[s?n+"To":"insert"+(r?"Before":"After")]=function(e){return i(e)[n](this),this}})),O.Z.prototype=W.prototype=i.fn,O.uniq=o,O.deserializeValue=Y,i.zepto=O,i}();return function(t){var n,i=1,r=Array.prototype.slice,s=t.isFunction,o=function(e){return"string"==typeof e},a={},u={},c="onfocusin"in e,l={focus:"focusin",blur:"focusout"},h={mouseenter:"mouseover",mouseleave:"mouseout"};function p(e){return e._zid||(e._zid=i++)}function d(e,t,n,i){if((t=f(t)).ns)var r=g(t.ns);return(a[p(e)]||[]).filter((function(e){return e&&(!t.e||e.e==t.e)&&(!t.ns||r.test(e.ns))&&(!n||p(e.fn)===p(n))&&(!i||e.sel==i)}))}function f(e){var t=(""+e).split(".");return{e:t[0],ns:t.slice(1).sort().join(" ")}}function g(e){return new RegExp("(?:^| )"+e.replace(" "," .* ?")+"(?: |$)")}function m(e,t){return e.del&&!c&&e.e in l||!!t}function y(e){return h[e]||c&&l[e]||e}function v(e,i,r,s,o,u,c){var l=p(e),d=a[l]||(a[l]=[]);i.split(/\s/).forEach((function(i){if("ready"==i)return t(document).ready(r);var a=f(i);a.fn=r,a.sel=o,a.e in h&&(r=function(e){var n=e.relatedTarget;if(!n||n!==this&&!t.contains(this,n))return a.fn.apply(this,arguments)}),a.del=u;var l=u||r;a.proxy=function(t){if(!(t=E(t)).isImmediatePropagationStopped()){try{var i=Object.getOwnPropertyDescriptor(t,"data");i&&!i.writable||(t.data=s)}catch(t){}var r=l.apply(e,t._args==n?[t]:[t].concat(t._args));return!1===r&&(t.preventDefault(),t.stopPropagation()),r}},a.i=d.length,d.push(a),"addEventListener"in e&&e.addEventListener(y(a.e),a.proxy,m(a,c))}))}function x(e,t,n,i,r){var s=p(e);(t||"").split(/\s/).forEach((function(t){d(e,t,n,i).forEach((function(t){delete a[s][t.i],"removeEventListener"in e&&e.removeEventListener(y(t.e),t.proxy,m(t,r))}))}))}u.click=u.mousedown=u.mouseup=u.mousemove="MouseEvents",t.event={add:v,remove:x},t.proxy=function(e,n){var i=2 in arguments&&r.call(arguments,2);if(s(e)){var a=function(){return e.apply(n,i?i.concat(r.call(arguments)):arguments)};return a._zid=p(e),a}if(o(n))return i?(i.unshift(e[n],e),t.proxy.apply(null,i)):t.proxy(e[n],e);throw new TypeError("expected function")},t.fn.bind=function(e,t,n){return this.on(e,t,n)},t.fn.unbind=function(e,t){return this.off(e,t)},t.fn.one=function(e,t,n,i){return this.on(e,t,n,i,1)};var b=function(){return!0},w=function(){return!1},S=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,C={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};function E(e,i){if(i||!e.isDefaultPrevented){i||(i=e),t.each(C,(function(t,n){var r=i[t];e[t]=function(){return this[n]=b,r&&r.apply(i,arguments)},e[n]=w}));try{e.timeStamp||(e.timeStamp=Date.now())}catch(r){}(i.defaultPrevented!==n?i.defaultPrevented:"returnValue"in i?!1===i.returnValue:i.getPreventDefault&&i.getPreventDefault())&&(e.isDefaultPrevented=b)}return e}function k(e){var t,i={originalEvent:e};for(t in e)S.test(t)||e[t]===n||(i[t]=e[t]);return E(i,e)}t.fn.delegate=function(e,t,n){return this.on(t,e,n)},t.fn.undelegate=function(e,t,n){return this.off(t,e,n)},t.fn.live=function(e,n){return t(document.body).delegate(this.selector,e,n),this},t.fn.die=function(e,n){return t(document.body).undelegate(this.selector,e,n),this},t.fn.on=function(e,i,a,u,c){var l,h,p=this;return e&&!o(e)?(t.each(e,(function(e,t){p.on(e,i,a,t,c)})),p):(o(i)||s(u)||!1===u||(u=a,a=i,i=n),u!==n&&!1!==a||(u=a,a=n),!1===u&&(u=w),p.each((function(n,s){c&&(l=function(e){return x(s,e.type,u),u.apply(this,arguments)}),i&&(h=function(e){var n,o=t(e.target).closest(i,s).get(0);if(o&&o!==s)return n=t.extend(k(e),{currentTarget:o,liveFired:s}),(l||u).apply(o,[n].concat(r.call(arguments,1)))}),v(s,e,u,a,i,h||l)})))},t.fn.off=function(e,i,r){var a=this;return e&&!o(e)?(t.each(e,(function(e,t){a.off(e,i,t)})),a):(o(i)||s(r)||!1===r||(r=i,i=n),!1===r&&(r=w),a.each((function(){x(this,e,r,i)})))},t.fn.trigger=function(e,n){return(e=o(e)||t.isPlainObject(e)?t.Event(e):E(e))._args=n,this.each((function(){e.type in l&&"function"==typeof this[e.type]?this[e.type]():"dispatchEvent"in this?this.dispatchEvent(e):t(this).triggerHandler(e,n)}))},t.fn.triggerHandler=function(e,n){var i,r;return this.each((function(s,a){(i=k(o(e)?t.Event(e):e))._args=n,i.target=a,t.each(d(a,e.type||e),(function(e,t){if(r=t.proxy(i),i.isImmediatePropagationStopped())return!1}))})),r},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach((function(e){t.fn[e]=function(t){return 0 in arguments?this.bind(e,t):this.trigger(e)}})),t.Event=function(e,t){o(e)||(e=(t=e).type);var n=document.createEvent(u[e]||"Events"),i=!0;if(t)for(var r in t)"bubbles"==r?i=!!t[r]:n[r]=t[r];return n.initEvent(e,i,!0),E(n)}}(i),n=[],i.fn.remove=function(){return this.each((function(){this.parentNode&&("IMG"===this.tagName&&(n.push(this),this.src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",t&&clearTimeout(t),t=setTimeout((function(){n=[]}),6e4)),this.parentNode.removeChild(this))}))},function(e){var t={},n=e.fn.data,i=e.camelCase,r=e.expando="Zepto"+ +new Date,s=[];function o(s,o){var u=s[r],c=u&&t[u];if(void 0===o)return c||a(s);if(c){if(o in c)return c[o];var l=i(o);if(l in c)return c[l]}return n.call(e(s),o)}function a(n,s,o){var a=n[r]||(n[r]=++e.uuid),c=t[a]||(t[a]=u(n));return void 0!==s&&(c[i(s)]=o),c}function u(t){var n={};return e.each(t.attributes||s,(function(t,r){0==r.name.indexOf("data-")&&(n[i(r.name.replace("data-",""))]=e.zepto.deserializeValue(r.value))})),n}e.fn.data=function(t,n){return void 0===n?e.isPlainObject(t)?this.each((function(n,i){e.each(t,(function(e,t){a(i,e,t)}))})):0 in this?o(this[0],t):void 0:this.each((function(){a(this,t,n)}))},e.data=function(t,n,i){return e(t).data(n,i)},e.hasData=function(n){var i=n[r],s=i&&t[i];return!!s&&!e.isEmptyObject(s)},e.fn.removeData=function(n){return"string"==typeof n&&(n=n.split(/\s+/)),this.each((function(){var s=this[r],o=s&&t[s];o&&e.each(n||o,(function(e){delete o[n?i(this):e]}))}))},["remove","empty"].forEach((function(t){var n=e.fn[t];e.fn[t]=function(){var e=this.find("*");return"remove"===t&&(e=e.add(this)),e.removeData(),n.call(this)}}))}(i),i}(t)},8897:(e,t)=>{!function(e){var t=/\S/,n=/\"/g,i=/\n/g,r=/\r/g,s=/\\/g,o=/\u2028/,a=/\u2029/;function u(e){"}"===e.n.substr(e.n.length-1)&&(e.n=e.n.substring(0,e.n.length-1))}function c(e){return e.trim?e.trim():e.replace(/^\s*|\s*$/g,"")}function l(e,t,n){if(t.charAt(n)!=e.charAt(0))return!1;for(var i=1,r=e.length;i<r;i++)if(t.charAt(n+i)!=e.charAt(i))return!1;return!0}e.tags={"#":1,"^":2,"<":3,$:4,"/":5,"!":6,">":7,"=":8,_v:9,"{":10,"&":11,_t:12},e.scan=function(n,i){var r=n.length,s=0,o=null,a=null,h="",p=[],d=!1,f=0,g=0,m="{{",y="}}";function v(){h.length>0&&(p.push({tag:"_t",text:new String(h)}),h="")}function x(n,i){if(v(),n&&function(){for(var n=!0,i=g;i<p.length;i++)if(!(n=e.tags[p[i].tag]<e.tags._v||"_t"==p[i].tag&&null===p[i].text.match(t)))return!1;return n}())for(var r,s=g;s<p.length;s++)p[s].text&&((r=p[s+1])&&">"==r.tag&&(r.indent=p[s].text.toString()),p.splice(s,1));else i||p.push({tag:"\n"});d=!1,g=p.length}function b(e,t){var n="="+y,i=e.indexOf(n,t),r=c(e.substring(e.indexOf("=",t)+1,i)).split(" ");return m=r[0],y=r[r.length-1],i+n.length-1}for(i&&(i=i.split(" "),m=i[0],y=i[1]),f=0;f<r;f++)0==s?l(m,n,f)?(--f,v(),s=1):"\n"==n.charAt(f)?x(d):h+=n.charAt(f):1==s?(f+=m.length-1,"="==(o=(a=e.tags[n.charAt(f+1)])?n.charAt(f+1):"_v")?(f=b(n,f),s=0):(a&&f++,s=2),d=f):l(y,n,f)?(p.push({tag:o,n:c(h),otag:m,ctag:y,i:"/"==o?d-m.length:f+y.length}),h="",f+=y.length-1,s=0,"{"==o&&("}}"==y?f++:u(p[p.length-1]))):h+=n.charAt(f);return x(d,!0),p};var h={_t:!0,"\n":!0,$:!0,"/":!0};function p(t,n,i,r){var s,o=[],a=null,u=null;for(s=i[i.length-1];t.length>0;){if(u=t.shift(),s&&"<"==s.tag&&!(u.tag in h))throw new Error("Illegal content in < super tag.");if(e.tags[u.tag]<=e.tags.$||d(u,r))i.push(u),u.nodes=p(t,u.tag,i,r);else{if("/"==u.tag){if(0===i.length)throw new Error("Closing tag without opener: /"+u.n);if(a=i.pop(),u.n!=a.n&&!f(u.n,a.n,r))throw new Error("Nesting error: "+a.n+" vs. "+u.n);return a.end=u.i,o}"\n"==u.tag&&(u.last=0==t.length||"\n"==t[0].tag)}o.push(u)}if(i.length>0)throw new Error("missing closing tag: "+i.pop().n);return o}function d(e,t){for(var n=0,i=t.length;n<i;n++)if(t[n].o==e.n)return e.tag="#",!0}function f(e,t,n){for(var i=0,r=n.length;i<r;i++)if(n[i].c==e&&n[i].o==t)return!0}function g(e){var t=[];for(var n in e.partials)t.push('"'+y(n)+'":{name:"'+y(e.partials[n].name)+'", '+g(e.partials[n])+"}");return"partials: {"+t.join(",")+"}, subs: "+function(e){var t=[];for(var n in e)t.push('"'+y(n)+'": function(c,p,t,i) {'+e[n]+"}");return"{ "+t.join(",")+" }"}(e.subs)}e.stringify=function(t,n,i){return"{code: function (c,p,i) { "+e.wrapMain(t.code)+" },"+g(t)+"}"};var m=0;function y(e){return e.replace(s,"\\\\").replace(n,'\\"').replace(i,"\\n").replace(r,"\\r").replace(o,"\\u2028").replace(a,"\\u2029")}function v(e){return~e.indexOf(".")?"d":"f"}function x(e,t){var n="<"+(t.prefix||"")+e.n+m++;return t.partials[n]={name:e.n,partials:{}},t.code+='t.b(t.rp("'+y(n)+'",c,p,"'+(e.indent||"")+'"));',n}function b(e,t){t.code+="t.b(t.t(t."+v(e.n)+'("'+y(e.n)+'",c,p,0)));'}function w(e){return"t.b("+e+");"}e.generate=function(t,n,i){m=0;var r={code:"",subs:{},partials:{}};return e.walk(t,r),i.asString?this.stringify(r,n,i):this.makeTemplate(r,n,i)},e.wrapMain=function(e){return'var t=this;t.b(i=i||"");'+e+"return t.fl();"},e.template=e.Template,e.makeTemplate=function(e,t,n){var i=this.makePartials(e);return i.code=new Function("c","p","i",this.wrapMain(e.code)),new this.template(i,t,this,n)},e.makePartials=function(e){var t,n={subs:{},partials:e.partials,name:e.name};for(t in n.partials)n.partials[t]=this.makePartials(n.partials[t]);for(t in e.subs)n.subs[t]=new Function("c","p","t","i",e.subs[t]);return n},e.codegen={"#":function(t,n){n.code+="if(t.s(t."+v(t.n)+'("'+y(t.n)+'",c,p,1),c,p,0,'+t.i+","+t.end+',"'+t.otag+" "+t.ctag+'")){t.rs(c,p,function(c,p,t){',e.walk(t.nodes,n),n.code+="});c.pop();}"},"^":function(t,n){n.code+="if(!t.s(t."+v(t.n)+'("'+y(t.n)+'",c,p,1),c,p,1,0,0,"")){',e.walk(t.nodes,n),n.code+="};"},">":x,"<":function(t,n){var i={partials:{},code:"",subs:{},inPartial:!0};e.walk(t.nodes,i);var r=n.partials[x(t,n)];r.subs=i.subs,r.partials=i.partials},$:function(t,n){var i={subs:{},code:"",partials:n.partials,prefix:t.n};e.walk(t.nodes,i),n.subs[t.n]=i.code,n.inPartial||(n.code+='t.sub("'+y(t.n)+'",c,p,i);')},"\n":function(e,t){t.code+=w('"\\n"'+(e.last?"":" + i"))},_v:function(e,t){t.code+="t.b(t.v(t."+v(e.n)+'("'+y(e.n)+'",c,p,0)));'},_t:function(e,t){t.code+=w('"'+y(e.text)+'"')},"{":b,"&":b},e.walk=function(t,n){for(var i,r=0,s=t.length;r<s;r++)(i=e.codegen[t[r].tag])&&i(t[r],n);return n},e.parse=function(e,t,n){return p(e,0,[],(n=n||{}).sectionTags||[])},e.cache={},e.cacheKey=function(e,t){return[e,!!t.asString,!!t.disableLambda,t.delimiters,!!t.modelGet].join("||")},e.compile=function(t,n){n=n||{};var i=e.cacheKey(t,n),r=this.cache[i];if(r){var s=r.partials;for(var o in s)delete s[o].instance;return r}return r=this.generate(this.parse(this.scan(t,n.delimiters),t,n),t,n),this.cache[i]=r}}(t)},1273:(e,t,n)=>{var i=n(8897);i.Template=n(3067).Template,i.template=i.Template,e.exports=i},3067:(e,t)=>{!function(e){function t(e,t,n){var i;return t&&"object"==typeof t&&(void 0!==t[e]?i=t[e]:n&&t.get&&"function"==typeof t.get&&(i=t.get(e))),i}e.Template=function(e,t,n,i){e=e||{},this.r=e.code||this.r,this.c=n,this.options=i||{},this.text=t||"",this.partials=e.partials||{},this.subs=e.subs||{},this.buf=""},e.Template.prototype={r:function(e,t,n){return""},v:function(e){return e=u(e),a.test(e)?e.replace(n,"&").replace(i,"<").replace(r,">").replace(s,"'").replace(o,"""):e},t:u,render:function(e,t,n){return this.ri([e],t||{},n)},ri:function(e,t,n){return this.r(e,t,n)},ep:function(e,t){var n=this.partials[e],i=t[n.name];if(n.instance&&n.base==i)return n.instance;if("string"==typeof i){if(!this.c)throw new Error("No compiler available.");i=this.c.compile(i,this.options)}if(!i)return null;if(this.partials[e].base=i,n.subs){for(key in t.stackText||(t.stackText={}),n.subs)t.stackText[key]||(t.stackText[key]=void 0!==this.activeSub&&t.stackText[this.activeSub]?t.stackText[this.activeSub]:this.text);i=function(e,t,n,i,r,s){function o(){}function a(){}var u;o.prototype=e,a.prototype=e.subs;var c=new o;for(u in c.subs=new a,c.subsText={},c.buf="",i=i||{},c.stackSubs=i,c.subsText=s,t)i[u]||(i[u]=t[u]);for(u in i)c.subs[u]=i[u];for(u in r=r||{},c.stackPartials=r,n)r[u]||(r[u]=n[u]);for(u in r)c.partials[u]=r[u];return c}(i,n.subs,n.partials,this.stackSubs,this.stackPartials,t.stackText)}return this.partials[e].instance=i,i},rp:function(e,t,n,i){var r=this.ep(e,n);return r?r.ri(t,n,i):""},rs:function(e,t,n){var i=e[e.length-1];if(c(i))for(var r=0;r<i.length;r++)e.push(i[r]),n(e,t,this),e.pop();else n(e,t,this)},s:function(e,t,n,i,r,s,o){var a;return(!c(e)||0!==e.length)&&("function"==typeof e&&(e=this.ms(e,t,n,i,r,s,o)),a=!!e,!i&&a&&t&&t.push("object"==typeof e?e:t[t.length-1]),a)},d:function(e,n,i,r){var s,o=e.split("."),a=this.f(o[0],n,i,r),u=this.options.modelGet,l=null;if("."===e&&c(n[n.length-2]))a=n[n.length-1];else for(var h=1;h<o.length;h++)void 0!==(s=t(o[h],a,u))?(l=a,a=s):a="";return!(r&&!a)&&(r||"function"!=typeof a||(n.push(l),a=this.mv(a,n,i),n.pop()),a)},f:function(e,n,i,r){for(var s=!1,o=!1,a=this.options.modelGet,u=n.length-1;u>=0;u--)if(void 0!==(s=t(e,n[u],a))){o=!0;break}return o?(r||"function"!=typeof s||(s=this.mv(s,n,i)),s):!r&&""},ls:function(e,t,n,i,r){var s=this.options.delimiters;return this.options.delimiters=r,this.b(this.ct(u(e.call(t,i)),t,n)),this.options.delimiters=s,!1},ct:function(e,t,n){if(this.options.disableLambda)throw new Error("Lambda features disabled.");return this.c.compile(e,this.options).render(t,n)},b:function(e){this.buf+=e},fl:function(){var e=this.buf;return this.buf="",e},ms:function(e,t,n,i,r,s,o){var a,u=t[t.length-1],c=e.call(u);return"function"==typeof c?!!i||(a=this.activeSub&&this.subsText&&this.subsText[this.activeSub]?this.subsText[this.activeSub]:this.text,this.ls(c,u,n,a.substring(r,s),o)):c},mv:function(e,t,n){var i=t[t.length-1],r=e.call(i);return"function"==typeof r?this.ct(u(r.call(i)),i,n):r},sub:function(e,t,n,i){var r=this.subs[e];r&&(this.activeSub=e,r(t,n,this,i),this.activeSub=!1)}};var n=/&/g,i=/</g,r=/>/g,s=/\'/g,o=/\"/g,a=/[&<>\"\']/;function u(e){return String(null==e?"":e)}var c=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}}(t)},8194:(e,t,n)=>{"use strict";var i,r,s,o=[n(5352),n(717),n(4752),n(2696),n(4206),n(8842)],a=-1,u=[],c=!1;function l(){i&&r&&(i=!1,r.length?u=r.concat(u):a=-1,u.length&&h())}function h(){if(!i){c=!1,i=!0;for(var e=u.length,t=setTimeout(l);e;){for(r=u,u=[];r&&++a<e;)r[a].run();a=-1,e=u.length}r=null,a=-1,i=!1,clearTimeout(t)}}for(var p=-1,d=o.length;++p<d;)if(o[p]&&o[p].test&&o[p].test()){s=o[p].install(h);break}function f(e,t){this.fun=e,this.array=t}f.prototype.run=function(){var e=this.fun,t=this.array;switch(t.length){case 0:return e();case 1:return e(t[0]);case 2:return e(t[0],t[1]);case 3:return e(t[0],t[1],t[2]);default:return e.apply(null,t)}},e.exports=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];u.push(new f(e,t)),c||i||(c=!0,s())}},2696:(e,t,n)=>{"use strict";t.test=function(){return!n.g.setImmediate&&void 0!==n.g.MessageChannel},t.install=function(e){var t=new n.g.MessageChannel;return t.port1.onmessage=e,function(){t.port2.postMessage(0)}}},4752:(e,t,n)=>{"use strict";var i=n.g.MutationObserver||n.g.WebKitMutationObserver;t.test=function(){return i},t.install=function(e){var t=0,r=new i(e),s=n.g.document.createTextNode("");return r.observe(s,{characterData:!0}),function(){s.data=t=++t%2}}},717:(e,t,n)=>{"use strict";t.test=function(){return"function"==typeof n.g.queueMicrotask},t.install=function(e){return function(){n.g.queueMicrotask(e)}}},4206:(e,t,n)=>{"use strict";t.test=function(){return"document"in n.g&&"onreadystatechange"in n.g.document.createElement("script")},t.install=function(e){return function(){var t=n.g.document.createElement("script");return t.onreadystatechange=function(){e(),t.onreadystatechange=null,t.parentNode.removeChild(t),t=null},n.g.document.documentElement.appendChild(t),e}}},8842:(e,t)=>{"use strict";t.test=function(){return!0},t.install=function(e){return function(){setTimeout(e,0)}}},8230:(e,t,n)=>{var i,r;!function(){var s,o,a,u,c,l,h,p,d,f,g,m,y,v,x,b,w,S,C,E,k,_,T,L,O,A,$,P,I,Q,R=function(e){var t=new R.Builder;return t.pipeline.add(R.trimmer,R.stopWordFilter,R.stemmer),t.searchPipeline.add(R.stemmer),e.call(t,t),t.build()};R.version="2.3.9",R.utils={},R.utils.warn=(s=this,function(e){s.console&&console.warn&&console.warn(e)}),R.utils.asString=function(e){return null==e?"":e.toString()},R.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),n=Object.keys(e),i=0;i<n.length;i++){var r=n[i],s=e[r];if(Array.isArray(s))t[r]=s.slice();else{if("string"!=typeof s&&"number"!=typeof s&&"boolean"!=typeof s)throw new TypeError("clone is not deep and does not support nested objects");t[r]=s}}return t},R.FieldRef=function(e,t,n){this.docRef=e,this.fieldName=t,this._stringValue=n},R.FieldRef.joiner="/",R.FieldRef.fromString=function(e){var t=e.indexOf(R.FieldRef.joiner);if(-1===t)throw"malformed field ref string";var n=e.slice(0,t),i=e.slice(t+1);return new R.FieldRef(i,n,e)},R.FieldRef.prototype.toString=function(){return null==this._stringValue&&(this._stringValue=this.fieldName+R.FieldRef.joiner+this.docRef),this._stringValue},R.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},R.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},R.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},R.Set.prototype.contains=function(e){return!!this.elements[e]},R.Set.prototype.intersect=function(e){var t,n,i,r=[];if(e===R.Set.complete)return this;if(e===R.Set.empty)return e;this.length<e.length?(t=this,n=e):(t=e,n=this),i=Object.keys(t.elements);for(var s=0;s<i.length;s++){var o=i[s];o in n.elements&&r.push(o)}return new R.Set(r)},R.Set.prototype.union=function(e){return e===R.Set.complete?R.Set.complete:e===R.Set.empty?this:new R.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},R.idf=function(e,t){var n=0;for(var i in e)"_index"!=i&&(n+=Object.keys(e[i]).length);var r=(t-n+.5)/(n+.5);return Math.log(1+Math.abs(r))},R.Token=function(e,t){this.str=e||"",this.metadata=t||{}},R.Token.prototype.toString=function(){return this.str},R.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},R.Token.prototype.clone=function(e){return e=e||function(e){return e},new R.Token(e(this.str,this.metadata),this.metadata)},R.tokenizer=function(e,t){if(null==e||null==e)return[];if(Array.isArray(e))return e.map((function(e){return new R.Token(R.utils.asString(e).toLowerCase(),R.utils.clone(t))}));for(var n=e.toString().toLowerCase(),i=n.length,r=[],s=0,o=0;s<=i;s++){var a=s-o;if(n.charAt(s).match(R.tokenizer.separator)||s==i){if(a>0){var u=R.utils.clone(t)||{};u.position=[o,a],u.index=r.length,r.push(new R.Token(n.slice(o,s),u))}o=s+1}}return r},R.tokenizer.separator=/[\s\-]+/,R.Pipeline=function(){this._stack=[]},R.Pipeline.registeredFunctions=Object.create(null),R.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&R.utils.warn("Overwriting existing registered function: "+t),e.label=t,R.Pipeline.registeredFunctions[e.label]=e},R.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||R.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},R.Pipeline.load=function(e){var t=new R.Pipeline;return e.forEach((function(e){var n=R.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)})),t},R.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach((function(e){R.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},R.Pipeline.prototype.after=function(e,t){R.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");n+=1,this._stack.splice(n,0,t)},R.Pipeline.prototype.before=function(e,t){R.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},R.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},R.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n<t;n++){for(var i=this._stack[n],r=[],s=0;s<e.length;s++){var o=i(e[s],s,e);if(null!=o&&""!==o)if(Array.isArray(o))for(var a=0;a<o.length;a++)r.push(o[a]);else r.push(o)}e=r}return e},R.Pipeline.prototype.runString=function(e,t){var n=new R.Token(e,t);return this.run([n]).map((function(e){return e.toString()}))},R.Pipeline.prototype.reset=function(){this._stack=[]},R.Pipeline.prototype.toJSON=function(){return this._stack.map((function(e){return R.Pipeline.warnIfFunctionNotRegistered(e),e.label}))},R.Vector=function(e){this._magnitude=0,this.elements=e||[]},R.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,n=this.elements.length/2,i=n-t,r=Math.floor(i/2),s=this.elements[2*r];i>1&&(s<e&&(t=r),s>e&&(n=r),s!=e);)i=n-t,r=t+Math.floor(i/2),s=this.elements[2*r];return s==e||s>e?2*r:s<e?2*(r+1):void 0},R.Vector.prototype.insert=function(e,t){this.upsert(e,t,(function(){throw"duplicate index"}))},R.Vector.prototype.upsert=function(e,t,n){this._magnitude=0;var i=this.positionForIndex(e);this.elements[i]==e?this.elements[i+1]=n(this.elements[i+1],t):this.elements.splice(i,0,e,t)},R.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,n=1;n<t;n+=2){var i=this.elements[n];e+=i*i}return this._magnitude=Math.sqrt(e)},R.Vector.prototype.dot=function(e){for(var t=0,n=this.elements,i=e.elements,r=n.length,s=i.length,o=0,a=0,u=0,c=0;u<r&&c<s;)(o=n[u])<(a=i[c])?u+=2:o>a?c+=2:o==a&&(t+=n[u+1]*i[c+1],u+=2,c+=2);return t},R.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},R.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,n=0;t<this.elements.length;t+=2,n++)e[n]=this.elements[t];return e},R.Vector.prototype.toJSON=function(){return this.elements},R.stemmer=(o={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},a={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},h="^("+(c="[^aeiou][^aeiouy]*")+")?"+(l=(u="[aeiouy]")+"[aeiou]*")+c+"("+l+")?$",p="^("+c+")?"+l+c+l+c,d="^("+c+")?"+u,f=new RegExp("^("+c+")?"+l+c),g=new RegExp(p),m=new RegExp(h),y=new RegExp(d),v=/^(.+?)(ss|i)es$/,x=/^(.+?)([^s])s$/,b=/^(.+?)eed$/,w=/^(.+?)(ed|ing)$/,S=/.$/,C=/(at|bl|iz)$/,E=new RegExp("([^aeiouylsz])\\1$"),k=new RegExp("^"+c+u+"[^aeiouwxy]$"),_=/^(.+?[^aeiou])y$/,T=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,L=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,O=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,A=/^(.+?)(s|t)(ion)$/,$=/^(.+?)e$/,P=/ll$/,I=new RegExp("^"+c+u+"[^aeiouwxy]$"),Q=function(e){var t,n,i,r,s,u,c;if(e.length<3)return e;if("y"==(i=e.substr(0,1))&&(e=i.toUpperCase()+e.substr(1)),s=x,(r=v).test(e)?e=e.replace(r,"$1$2"):s.test(e)&&(e=e.replace(s,"$1$2")),s=w,(r=b).test(e)){var l=r.exec(e);(r=f).test(l[1])&&(r=S,e=e.replace(r,""))}else s.test(e)&&(t=(l=s.exec(e))[1],(s=y).test(t)&&(u=E,c=k,(s=C).test(e=t)?e+="e":u.test(e)?(r=S,e=e.replace(r,"")):c.test(e)&&(e+="e")));return(r=_).test(e)&&(e=(t=(l=r.exec(e))[1])+"i"),(r=T).test(e)&&(t=(l=r.exec(e))[1],n=l[2],(r=f).test(t)&&(e=t+o[n])),(r=L).test(e)&&(t=(l=r.exec(e))[1],n=l[2],(r=f).test(t)&&(e=t+a[n])),s=A,(r=O).test(e)?(t=(l=r.exec(e))[1],(r=g).test(t)&&(e=t)):s.test(e)&&(t=(l=s.exec(e))[1]+l[2],(s=g).test(t)&&(e=t)),(r=$).test(e)&&(t=(l=r.exec(e))[1],s=m,u=I,((r=g).test(t)||s.test(t)&&!u.test(t))&&(e=t)),s=g,(r=P).test(e)&&s.test(e)&&(r=S,e=e.replace(r,"")),"y"==i&&(e=i.toLowerCase()+e.substr(1)),e},function(e){return e.update(Q)}),R.Pipeline.registerFunction(R.stemmer,"stemmer"),R.generateStopWordFilter=function(e){var t=e.reduce((function(e,t){return e[t]=t,e}),{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},R.stopWordFilter=R.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),R.Pipeline.registerFunction(R.stopWordFilter,"stopWordFilter"),R.trimmer=function(e){return e.update((function(e){return e.replace(/^\W+/,"").replace(/\W+$/,"")}))},R.Pipeline.registerFunction(R.trimmer,"trimmer"),R.TokenSet=function(){this.final=!1,this.edges={},this.id=R.TokenSet._nextId,R.TokenSet._nextId+=1},R.TokenSet._nextId=1,R.TokenSet.fromArray=function(e){for(var t=new R.TokenSet.Builder,n=0,i=e.length;n<i;n++)t.insert(e[n]);return t.finish(),t.root},R.TokenSet.fromClause=function(e){return"editDistance"in e?R.TokenSet.fromFuzzyString(e.term,e.editDistance):R.TokenSet.fromString(e.term)},R.TokenSet.fromFuzzyString=function(e,t){for(var n=new R.TokenSet,i=[{node:n,editsRemaining:t,str:e}];i.length;){var r=i.pop();if(r.str.length>0){var s,o=r.str.charAt(0);o in r.node.edges?s=r.node.edges[o]:(s=new R.TokenSet,r.node.edges[o]=s),1==r.str.length&&(s.final=!0),i.push({node:s,editsRemaining:r.editsRemaining,str:r.str.slice(1)})}if(0!=r.editsRemaining){if("*"in r.node.edges)var a=r.node.edges["*"];else{a=new R.TokenSet;r.node.edges["*"]=a}if(0==r.str.length&&(a.final=!0),i.push({node:a,editsRemaining:r.editsRemaining-1,str:r.str}),r.str.length>1&&i.push({node:r.node,editsRemaining:r.editsRemaining-1,str:r.str.slice(1)}),1==r.str.length&&(r.node.final=!0),r.str.length>=1){if("*"in r.node.edges)var u=r.node.edges["*"];else{u=new R.TokenSet;r.node.edges["*"]=u}1==r.str.length&&(u.final=!0),i.push({node:u,editsRemaining:r.editsRemaining-1,str:r.str.slice(1)})}if(r.str.length>1){var c,l=r.str.charAt(0),h=r.str.charAt(1);h in r.node.edges?c=r.node.edges[h]:(c=new R.TokenSet,r.node.edges[h]=c),1==r.str.length&&(c.final=!0),i.push({node:c,editsRemaining:r.editsRemaining-1,str:l+r.str.slice(2)})}}}return n},R.TokenSet.fromString=function(e){for(var t=new R.TokenSet,n=t,i=0,r=e.length;i<r;i++){var s=e[i],o=i==r-1;if("*"==s)t.edges[s]=t,t.final=o;else{var a=new R.TokenSet;a.final=o,t.edges[s]=a,t=a}}return n},R.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var n=t.pop(),i=Object.keys(n.node.edges),r=i.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var s=0;s<r;s++){var o=i[s];t.push({prefix:n.prefix.concat(o),node:n.node.edges[o]})}}return e},R.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",t=Object.keys(this.edges).sort(),n=t.length,i=0;i<n;i++){var r=t[i];e=e+r+this.edges[r].id}return e},R.TokenSet.prototype.intersect=function(e){for(var t=new R.TokenSet,n=void 0,i=[{qNode:e,output:t,node:this}];i.length;){n=i.pop();for(var r=Object.keys(n.qNode.edges),s=r.length,o=Object.keys(n.node.edges),a=o.length,u=0;u<s;u++)for(var c=r[u],l=0;l<a;l++){var h=o[l];if(h==c||"*"==c){var p=n.node.edges[h],d=n.qNode.edges[c],f=p.final&&d.final,g=void 0;h in n.output.edges?(g=n.output.edges[h]).final=g.final||f:((g=new R.TokenSet).final=f,n.output.edges[h]=g),i.push({qNode:d,output:g,node:p})}}}return t},R.TokenSet.Builder=function(){this.previousWord="",this.root=new R.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},R.TokenSet.Builder.prototype.insert=function(e){var t,n=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var i=0;i<e.length&&i<this.previousWord.length&&e[i]==this.previousWord[i];i++)n++;this.minimize(n),t=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(i=n;i<e.length;i++){var r=new R.TokenSet,s=e[i];t.edges[s]=r,this.uncheckedNodes.push({parent:t,char:s,child:r}),t=r}t.final=!0,this.previousWord=e},R.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},R.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;t>=e;t--){var n=this.uncheckedNodes[t],i=n.child.toString();i in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[i]:(n.child._str=i,this.minimizedNodes[i]=n.child),this.uncheckedNodes.pop()}},R.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},R.Index.prototype.search=function(e){return this.query((function(t){new R.QueryParser(e,t).parse()}))},R.Index.prototype.query=function(e){for(var t=new R.Query(this.fields),n=Object.create(null),i=Object.create(null),r=Object.create(null),s=Object.create(null),o=Object.create(null),a=0;a<this.fields.length;a++)i[this.fields[a]]=new R.Vector;e.call(t,t);for(a=0;a<t.clauses.length;a++){var u=t.clauses[a],c=null,l=R.Set.empty;c=u.usePipeline?this.pipeline.runString(u.term,{fields:u.fields}):[u.term];for(var h=0;h<c.length;h++){var p=c[h];u.term=p;var d=R.TokenSet.fromClause(u),f=this.tokenSet.intersect(d).toArray();if(0===f.length&&u.presence===R.Query.presence.REQUIRED){for(var g=0;g<u.fields.length;g++){s[$=u.fields[g]]=R.Set.empty}break}for(var m=0;m<f.length;m++){var y=f[m],v=this.invertedIndex[y],x=v._index;for(g=0;g<u.fields.length;g++){var b=v[$=u.fields[g]],w=Object.keys(b),S=y+"/"+$,C=new R.Set(w);if(u.presence==R.Query.presence.REQUIRED&&(l=l.union(C),void 0===s[$]&&(s[$]=R.Set.complete)),u.presence!=R.Query.presence.PROHIBITED){if(i[$].upsert(x,u.boost,(function(e,t){return e+t})),!r[S]){for(var E=0;E<w.length;E++){var k,_=w[E],T=new R.FieldRef(_,$),L=b[_];void 0===(k=n[T])?n[T]=new R.MatchData(y,$,L):k.add(y,$,L)}r[S]=!0}}else void 0===o[$]&&(o[$]=R.Set.empty),o[$]=o[$].union(C)}}}if(u.presence===R.Query.presence.REQUIRED)for(g=0;g<u.fields.length;g++){s[$=u.fields[g]]=s[$].intersect(l)}}var O=R.Set.complete,A=R.Set.empty;for(a=0;a<this.fields.length;a++){var $;s[$=this.fields[a]]&&(O=O.intersect(s[$])),o[$]&&(A=A.union(o[$]))}var P=Object.keys(n),I=[],Q=Object.create(null);if(t.isNegated()){P=Object.keys(this.fieldVectors);for(a=0;a<P.length;a++){T=P[a];var N=R.FieldRef.fromString(T);n[T]=new R.MatchData}}for(a=0;a<P.length;a++){var D=(N=R.FieldRef.fromString(P[a])).docRef;if(O.contains(D)&&!A.contains(D)){var F,j=this.fieldVectors[N],H=i[N.fieldName].similarity(j);if(void 0!==(F=Q[D]))F.score+=H,F.matchData.combine(n[N]);else{var V={ref:D,score:H,matchData:n[N]};Q[D]=V,I.push(V)}}}return I.sort((function(e,t){return t.score-e.score}))},R.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map((function(e){return[e,this.invertedIndex[e]]}),this),t=Object.keys(this.fieldVectors).map((function(e){return[e,this.fieldVectors[e].toJSON()]}),this);return{version:R.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},R.Index.load=function(e){var t={},n={},i=e.fieldVectors,r=Object.create(null),s=e.invertedIndex,o=new R.TokenSet.Builder,a=R.Pipeline.load(e.pipeline);e.version!=R.version&&R.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+R.version+"' does not match serialized index '"+e.version+"'");for(var u=0;u<i.length;u++){var c=(h=i[u])[0],l=h[1];n[c]=new R.Vector(l)}for(u=0;u<s.length;u++){var h,p=(h=s[u])[0],d=h[1];o.insert(p),r[p]=d}return o.finish(),t.fields=e.fields,t.fieldVectors=n,t.invertedIndex=r,t.tokenSet=o.root,t.pipeline=a,new R.Index(t)},R.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=R.tokenizer,this.pipeline=new R.Pipeline,this.searchPipeline=new R.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},R.Builder.prototype.ref=function(e){this._ref=e},R.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},R.Builder.prototype.b=function(e){this._b=e<0?0:e>1?1:e},R.Builder.prototype.k1=function(e){this._k1=e},R.Builder.prototype.add=function(e,t){var n=e[this._ref],i=Object.keys(this._fields);this._documents[n]=t||{},this.documentCount+=1;for(var r=0;r<i.length;r++){var s=i[r],o=this._fields[s].extractor,a=o?o(e):e[s],u=this.tokenizer(a,{fields:[s]}),c=this.pipeline.run(u),l=new R.FieldRef(n,s),h=Object.create(null);this.fieldTermFrequencies[l]=h,this.fieldLengths[l]=0,this.fieldLengths[l]+=c.length;for(var p=0;p<c.length;p++){var d=c[p];if(null==h[d]&&(h[d]=0),h[d]+=1,null==this.invertedIndex[d]){var f=Object.create(null);f._index=this.termIndex,this.termIndex+=1;for(var g=0;g<i.length;g++)f[i[g]]=Object.create(null);this.invertedIndex[d]=f}null==this.invertedIndex[d][s][n]&&(this.invertedIndex[d][s][n]=Object.create(null));for(var m=0;m<this.metadataWhitelist.length;m++){var y=this.metadataWhitelist[m],v=d.metadata[y];null==this.invertedIndex[d][s][n][y]&&(this.invertedIndex[d][s][n][y]=[]),this.invertedIndex[d][s][n][y].push(v)}}}},R.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,n={},i={},r=0;r<t;r++){var s=R.FieldRef.fromString(e[r]),o=s.fieldName;i[o]||(i[o]=0),i[o]+=1,n[o]||(n[o]=0),n[o]+=this.fieldLengths[s]}var a=Object.keys(this._fields);for(r=0;r<a.length;r++){var u=a[r];n[u]=n[u]/i[u]}this.averageFieldLength=n},R.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),n=t.length,i=Object.create(null),r=0;r<n;r++){for(var s=R.FieldRef.fromString(t[r]),o=s.fieldName,a=this.fieldLengths[s],u=new R.Vector,c=this.fieldTermFrequencies[s],l=Object.keys(c),h=l.length,p=this._fields[o].boost||1,d=this._documents[s.docRef].boost||1,f=0;f<h;f++){var g,m,y,v=l[f],x=c[v],b=this.invertedIndex[v]._index;void 0===i[v]?(g=R.idf(this.invertedIndex[v],this.documentCount),i[v]=g):g=i[v],m=g*((this._k1+1)*x)/(this._k1*(1-this._b+this._b*(a/this.averageFieldLength[o]))+x),m*=p,m*=d,y=Math.round(1e3*m)/1e3,u.insert(b,y)}e[s]=u}this.fieldVectors=e},R.Builder.prototype.createTokenSet=function(){this.tokenSet=R.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},R.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new R.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},R.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},R.MatchData=function(e,t,n){for(var i=Object.create(null),r=Object.keys(n||{}),s=0;s<r.length;s++){var o=r[s];i[o]=n[o].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=i)},R.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),n=0;n<t.length;n++){var i=t[n],r=Object.keys(e.metadata[i]);null==this.metadata[i]&&(this.metadata[i]=Object.create(null));for(var s=0;s<r.length;s++){var o=r[s],a=Object.keys(e.metadata[i][o]);null==this.metadata[i][o]&&(this.metadata[i][o]=Object.create(null));for(var u=0;u<a.length;u++){var c=a[u];null==this.metadata[i][o][c]?this.metadata[i][o][c]=e.metadata[i][o][c]:this.metadata[i][o][c]=this.metadata[i][o][c].concat(e.metadata[i][o][c])}}}},R.MatchData.prototype.add=function(e,t,n){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=n);if(t in this.metadata[e])for(var i=Object.keys(n),r=0;r<i.length;r++){var s=i[r];s in this.metadata[e][t]?this.metadata[e][t][s]=this.metadata[e][t][s].concat(n[s]):this.metadata[e][t][s]=n[s]}else this.metadata[e][t]=n},R.Query=function(e){this.clauses=[],this.allFields=e},R.Query.wildcard=new String("*"),R.Query.wildcard.NONE=0,R.Query.wildcard.LEADING=1,R.Query.wildcard.TRAILING=2,R.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},R.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=R.Query.wildcard.NONE),e.wildcard&R.Query.wildcard.LEADING&&e.term.charAt(0)!=R.Query.wildcard&&(e.term="*"+e.term),e.wildcard&R.Query.wildcard.TRAILING&&e.term.slice(-1)!=R.Query.wildcard&&(e.term=e.term+"*"),"presence"in e||(e.presence=R.Query.presence.OPTIONAL),this.clauses.push(e),this},R.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=R.Query.presence.PROHIBITED)return!1;return!0},R.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach((function(e){this.term(e,R.utils.clone(t))}),this),this;var n=t||{};return n.term=e.toString(),this.clause(n),this},R.QueryParseError=function(e,t,n){this.name="QueryParseError",this.message=e,this.start=t,this.end=n},R.QueryParseError.prototype=new Error,R.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},R.QueryLexer.prototype.run=function(){for(var e=R.QueryLexer.lexText;e;)e=e(this)},R.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,n=this.pos,i=0;i<this.escapeCharPositions.length;i++)n=this.escapeCharPositions[i],e.push(this.str.slice(t,n)),t=n+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join("")},R.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},R.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},R.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return R.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},R.QueryLexer.prototype.width=function(){return this.pos-this.start},R.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},R.QueryLexer.prototype.backup=function(){this.pos-=1},R.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=R.QueryLexer.EOS&&this.backup()},R.QueryLexer.prototype.more=function(){return this.pos<this.length},R.QueryLexer.EOS="EOS",R.QueryLexer.FIELD="FIELD",R.QueryLexer.TERM="TERM",R.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",R.QueryLexer.BOOST="BOOST",R.QueryLexer.PRESENCE="PRESENCE",R.QueryLexer.lexField=function(e){return e.backup(),e.emit(R.QueryLexer.FIELD),e.ignore(),R.QueryLexer.lexText},R.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(R.QueryLexer.TERM)),e.ignore(),e.more())return R.QueryLexer.lexText},R.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(R.QueryLexer.EDIT_DISTANCE),R.QueryLexer.lexText},R.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(R.QueryLexer.BOOST),R.QueryLexer.lexText},R.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(R.QueryLexer.TERM)},R.QueryLexer.termSeparator=R.tokenizer.separator,R.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==R.QueryLexer.EOS)return R.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return R.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(R.QueryLexer.TERM),R.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(R.QueryLexer.TERM),R.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(R.QueryLexer.PRESENCE),R.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(R.QueryLexer.PRESENCE),R.QueryLexer.lexText;if(t.match(R.QueryLexer.termSeparator))return R.QueryLexer.lexTerm}else e.escapeCharacter()}},R.QueryParser=function(e,t){this.lexer=new R.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},R.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=R.QueryParser.parseClause;e;)e=e(this);return this.query},R.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},R.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},R.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},R.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case R.QueryLexer.PRESENCE:return R.QueryParser.parsePresence;case R.QueryLexer.FIELD:return R.QueryParser.parseField;case R.QueryLexer.TERM:return R.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(n+=" with value '"+t.str+"'"),new R.QueryParseError(n,t.start,t.end)}},R.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=R.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=R.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new R.QueryParseError(n,t.start,t.end)}var i=e.peekLexeme();if(null==i){n="expecting term or field, found nothing";throw new R.QueryParseError(n,t.start,t.end)}switch(i.type){case R.QueryLexer.FIELD:return R.QueryParser.parseField;case R.QueryLexer.TERM:return R.QueryParser.parseTerm;default:n="expecting term or field, found '"+i.type+"'";throw new R.QueryParseError(n,i.start,i.end)}}},R.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var n=e.query.allFields.map((function(e){return"'"+e+"'"})).join(", "),i="unrecognised field '"+t.str+"', possible fields: "+n;throw new R.QueryParseError(i,t.start,t.end)}e.currentClause.fields=[t.str];var r=e.peekLexeme();if(null==r){i="expecting term, found nothing";throw new R.QueryParseError(i,t.start,t.end)}if(r.type===R.QueryLexer.TERM)return R.QueryParser.parseTerm;i="expecting term, found '"+r.type+"'";throw new R.QueryParseError(i,r.start,r.end)}},R.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(null!=n)switch(n.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+n.type+"'";throw new R.QueryParseError(i,n.start,n.end)}else e.nextClause()}},R.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var i="edit distance must be numeric";throw new R.QueryParseError(i,t.start,t.end)}e.currentClause.editDistance=n;var r=e.peekLexeme();if(null!=r)switch(r.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:i="Unexpected lexeme type '"+r.type+"'";throw new R.QueryParseError(i,r.start,r.end)}else e.nextClause()}},R.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var i="boost must be numeric";throw new R.QueryParseError(i,t.start,t.end)}e.currentClause.boost=n;var r=e.peekLexeme();if(null!=r)switch(r.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:i="Unexpected lexeme type '"+r.type+"'";throw new R.QueryParseError(i,r.start,r.end)}else e.nextClause()}},void 0===(r="function"==typeof(i=function(){return R})?i.call(t,n,t,e):i)||(e.exports=r)}()}}]); \ No newline at end of file diff --git a/assets/js/734.9c54f551.js.LICENSE.txt b/assets/js/49.c17c1426.js.LICENSE.txt old mode 100755 new mode 100644 similarity index 100% rename from assets/js/734.9c54f551.js.LICENSE.txt rename to assets/js/49.c17c1426.js.LICENSE.txt diff --git a/assets/js/4998a0a4.487f790a.js b/assets/js/4998a0a4.487f790a.js deleted file mode 100755 index 412a024..0000000 --- a/assets/js/4998a0a4.487f790a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[872],{5318:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});var r=n(7378);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},s=Object.keys(e);for(r=0;r<s.length;r++)n=s[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r<s.length;r++)n=s[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},y=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,s=e.originalType,l=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),u=p(n),y=a,m=u["".concat(l,".").concat(y)]||u[y]||d[y]||s;return n?r.createElement(m,i(i({ref:t},c),{},{components:n})):r.createElement(m,i({ref:t},c))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var s=n.length,i=new Array(s);i[0]=y;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[u]="string"==typeof e?e:a,i[1]=o;for(var p=2;p<s;p++)i[p]=n[p];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}y.displayName="MDXCreateElement"},15:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>s,metadata:()=>o,toc:()=>p});var r=n(5773),a=(n(7378),n(5318));const s={},i="Type safety and type inference",o={unversionedId:"features-and-use-cases/type-safety-and-type-inference",id:"features-and-use-cases/type-safety-and-type-inference",title:"Type safety and type inference",description:"Since v2.0",source:"@site/docs/03_features-and-use-cases/05_type-safety-and-type-inference.md",sourceDirName:"03_features-and-use-cases",slug:"/features-and-use-cases/type-safety-and-type-inference",permalink:"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference",draft:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/03_features-and-use-cases/05_type-safety-and-type-inference.md",tags:[],version:"current",sidebarPosition:5,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Usage outside of web request",permalink:"/nestjs-cls/features-and-use-cases/usage-outside-of-web-request"},next:{title:"Proxy Providers",permalink:"/nestjs-cls/features-and-use-cases/proxy-providers"}},l={},p=[{value:"Type-safe ClsService",id:"type-safe-clsservice",level:2},{value:"Using a type parameter",id:"using-a-type-parameter",level:3},{value:"Using Typescript module augmentation",id:"using-typescript-module-augmentation",level:3},{value:"Using a custom provider",id:"using-a-custom-provider",level:3},{value:"Terminal Type",id:"terminal-type",level:2}],c={toc:p},u="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"type-safety-and-type-inference"},"Type safety and type inference"),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"Since ",(0,a.kt)("inlineCode",{parentName:"p"},"v2.0"))),(0,a.kt)("p",null,"By default the CLS context is untyped and allows setting and retrieving any ",(0,a.kt)("inlineCode",{parentName:"p"},"string")," or ",(0,a.kt)("inlineCode",{parentName:"p"},"symbol")," keys from the context. Some safety can be enforced by using ",(0,a.kt)("inlineCode",{parentName:"p"},"CONSTANTS")," instead of magic strings, but that might not be enough."),(0,a.kt)("h2",{id:"type-safe-clsservice"},"Type-safe ClsService"),(0,a.kt)("p",null,"It is possible to specify a custom interface for the ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsService")," and get proper typing and automatic type inference when retrieving or setting values. This works even for ",(0,a.kt)("em",{parentName:"p"},"nested objects")," using a dot notation."),(0,a.kt)("p",null,"To create a typed CLS Store, start by creating an interface that extends ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsStore"),"."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-ts",metastring:"title=my-cls-service.interface.ts",title:"my-cls-service.interface.ts"},"export interface MyClsStore extends ClsStore {\n tenantId: string;\n user: {\n id: number;\n authorized: boolean;\n };\n}\n")),(0,a.kt)("h3",{id:"using-a-type-parameter"},"Using a type parameter"),(0,a.kt)("p",null,"Then you can inject the ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsService")," with a type parameter ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsService<MyClsStore>")," to make use of the safe typing."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-ts"},"export class MyService {\n // highlight-start\n constructor(private readonly cls: ClsService<MyClsStore>) {}\n // highlight-end\n\n doTheThing() {\n // a boolean type will be enforced here\n this.cls.set('user.authorized', true);\n\n // tenantId will be inferred as a string\n const tenantId = this.cls.get('tenantId');\n\n // userId will be inferred as a number\n const userId = this.cls.get('user.id');\n\n // user will be inferred as { id: number, authorized: boolean }\n const user = this.cls.get('user');\n\n // you'll even get intellisense for the keys, because the type\n // will be inferred as:\n // symbol | 'tenantId\u02d9 | 'user' | 'user.id' | 'user.authorized'\n\n // alternatively, since the `get` method returns the whole store\n // when called without arguments, you can use object destructuring\n const { tenantId, user } = this.cls.get();\n\n // accessing a nonexistent property will result in a type error\n const notExist = this.cls.get('user.name');\n }\n}\n")),(0,a.kt)("h3",{id:"using-typescript-module-augmentation"},"Using Typescript module augmentation"),(0,a.kt)("p",null,"Alternatively, if you feel like using ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsService<MyClsStore>")," everywhere is tedious, you can instead globally ",(0,a.kt)("a",{parentName:"p",href:"https://www.typescriptlang.org/docs/handbook/declaration-merging.html"},"augment the ",(0,a.kt)("inlineCode",{parentName:"a"},"ClsStore interface")),"."),(0,a.kt)("p",null,"Now you don't need to specify the type parameter on ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsService")," to still get the string typing."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-ts"},"declare module 'nestjs-cls' {\n interface ClsStore {\n tenantId: string;\n user: {\n id: number;\n authorized: boolean;\n };\n }\n}\n")),(0,a.kt)("h3",{id:"using-a-custom-provider"},"Using a custom provider"),(0,a.kt)("p",null,"For even more transparent approach without augmenting the declaration, you can create a typed ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsService")," by extending it and creating a custom provider out of it:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-ts"},"export class MyClsService extends ClsService<MyClsStore> {}\n\n@Module({\n imports: [ClsModule.forFeature()],\n providers: [\n {\n provide: MyClsService,\n useExisting: ClsService,\n },\n ],\n exports: [MyClsService],\n})\nclass MyClsModule {}\n")),(0,a.kt)("p",null,"Now you can inject ",(0,a.kt)("inlineCode",{parentName:"p"},"MyClsService")," as an alias for ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsService<MyClsStore>"),' without "polluting" the global type space.'),(0,a.kt)("h2",{id:"terminal-type"},"Terminal Type"),(0,a.kt)("p",null,"It can happen, that the object you want to store in the context is too complex, or contains cyclic references."),(0,a.kt)("p",null,"In that case, typescript might complain that ",(0,a.kt)("em",{parentName:"p"},"type instantiation is too deep, possibly infinite"),". That is due to the fact that it tries to generate all possible paths inside the ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsStore"),". If that's the case, you can use the ",(0,a.kt)("inlineCode",{parentName:"p"},"Terminal")," type to stop generating the paths for a certain subtree:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-ts"},"interface ClsStore {\n tenantId: string;\n // highlight-start\n user: Terminal<{\n id: number;\n authorized: boolean;\n }>;\n // highlight-end\n}\n")),(0,a.kt)("p",null,"This will only generate the paths ",(0,a.kt)("inlineCode",{parentName:"p"},"tenantId | user")," and won't allow directly accessing nested keys (like ",(0,a.kt)("inlineCode",{parentName:"p"},"cls.get('user.id')"),", but you'll still get fully typing for things like ",(0,a.kt)("inlineCode",{parentName:"p"},"const { id } = cls.get('user')"),"). See issue ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/Papooch/nestjs-cls/issues/22"},"#22")," for more details."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4998a0a4.8311d530.js b/assets/js/4998a0a4.8311d530.js new file mode 100644 index 0000000..8e9afbd --- /dev/null +++ b/assets/js/4998a0a4.8311d530.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[872],{5436:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var s=t(4246),r=t(1670);const i={},a="Type safety and type inference",c={id:"features-and-use-cases/type-safety-and-type-inference",title:"Type safety and type inference",description:"Since v2.0",source:"@site/docs/03_features-and-use-cases/05_type-safety-and-type-inference.md",sourceDirName:"03_features-and-use-cases",slug:"/features-and-use-cases/type-safety-and-type-inference",permalink:"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/03_features-and-use-cases/05_type-safety-and-type-inference.md",tags:[],version:"current",sidebarPosition:5,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Usage outside of web request",permalink:"/nestjs-cls/features-and-use-cases/usage-outside-of-web-request"},next:{title:"Proxy Providers",permalink:"/nestjs-cls/features-and-use-cases/proxy-providers"}},o={},l=[{value:"Type-safe ClsService",id:"type-safe-clsservice",level:2},{value:"Using a type parameter",id:"using-a-type-parameter",level:3},{value:"Using Typescript module augmentation",id:"using-typescript-module-augmentation",level:3},{value:"Using a custom provider",id:"using-a-custom-provider",level:3},{value:"Terminal Type",id:"terminal-type",level:2}];function d(e){const n={a:"a",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"type-safety-and-type-inference",children:"Type safety and type inference"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:["Since ",(0,s.jsx)(n.code,{children:"v2.0"})]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["By default the CLS context is untyped and allows setting and retrieving any ",(0,s.jsx)(n.code,{children:"string"})," or ",(0,s.jsx)(n.code,{children:"symbol"})," keys from the context. Some safety can be enforced by using ",(0,s.jsx)(n.code,{children:"CONSTANTS"})," instead of magic strings, but that might not be enough."]}),"\n",(0,s.jsx)(n.h2,{id:"type-safe-clsservice",children:"Type-safe ClsService"}),"\n",(0,s.jsxs)(n.p,{children:["It is possible to specify a custom interface for the ",(0,s.jsx)(n.code,{children:"ClsService"})," and get proper typing and automatic type inference when retrieving or setting values. This works even for ",(0,s.jsx)(n.em,{children:"nested objects"})," using a dot notation."]}),"\n",(0,s.jsxs)(n.p,{children:["To create a typed CLS Store, start by creating an interface that extends ",(0,s.jsx)(n.code,{children:"ClsStore"}),"."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:"title=my-cls-service.interface.ts",children:"export interface MyClsStore extends ClsStore {\n tenantId: string;\n user: {\n id: number;\n authorized: boolean;\n };\n}\n"})}),"\n",(0,s.jsx)(n.h3,{id:"using-a-type-parameter",children:"Using a type parameter"}),"\n",(0,s.jsxs)(n.p,{children:["Then you can inject the ",(0,s.jsx)(n.code,{children:"ClsService"})," with a type parameter ",(0,s.jsx)(n.code,{children:"ClsService<MyClsStore>"})," to make use of the safe typing."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"export class MyService {\n // highlight-start\n constructor(private readonly cls: ClsService<MyClsStore>) {}\n // highlight-end\n\n doTheThing() {\n // a boolean type will be enforced here\n this.cls.set('user.authorized', true);\n\n // tenantId will be inferred as a string\n const tenantId = this.cls.get('tenantId');\n\n // userId will be inferred as a number\n const userId = this.cls.get('user.id');\n\n // user will be inferred as { id: number, authorized: boolean }\n const user = this.cls.get('user');\n\n // you'll even get intellisense for the keys, because the type\n // will be inferred as:\n // symbol | 'tenantId\u02d9 | 'user' | 'user.id' | 'user.authorized'\n\n // alternatively, since the `get` method returns the whole store\n // when called without arguments, you can use object destructuring\n const { tenantId, user } = this.cls.get();\n\n // accessing a nonexistent property will result in a type error\n const notExist = this.cls.get('user.name');\n }\n}\n"})}),"\n",(0,s.jsx)(n.h3,{id:"using-typescript-module-augmentation",children:"Using Typescript module augmentation"}),"\n",(0,s.jsxs)(n.p,{children:["Alternatively, if you feel like using ",(0,s.jsx)(n.code,{children:"ClsService<MyClsStore>"})," everywhere is tedious, you can instead globally ",(0,s.jsxs)(n.a,{href:"https://www.typescriptlang.org/docs/handbook/declaration-merging.html",children:["augment the ",(0,s.jsx)(n.code,{children:"ClsStore interface"})]}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Now you don't need to specify the type parameter on ",(0,s.jsx)(n.code,{children:"ClsService"})," to still get the string typing."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"declare module 'nestjs-cls' {\n interface ClsStore {\n tenantId: string;\n user: {\n id: number;\n authorized: boolean;\n };\n }\n}\n"})}),"\n",(0,s.jsx)(n.h3,{id:"using-a-custom-provider",children:"Using a custom provider"}),"\n",(0,s.jsxs)(n.p,{children:["For even more transparent approach without augmenting the declaration, you can create a typed ",(0,s.jsx)(n.code,{children:"ClsService"})," by extending it and creating a custom provider out of it:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"export class MyClsService extends ClsService<MyClsStore> {}\n\n@Module({\n imports: [ClsModule.forFeature()],\n providers: [\n {\n provide: MyClsService,\n useExisting: ClsService,\n },\n ],\n exports: [MyClsService],\n})\nclass MyClsModule {}\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Now you can inject ",(0,s.jsx)(n.code,{children:"MyClsService"})," as an alias for ",(0,s.jsx)(n.code,{children:"ClsService<MyClsStore>"}),' without "polluting" the global type space.']}),"\n",(0,s.jsx)(n.h2,{id:"terminal-type",children:"Terminal Type"}),"\n",(0,s.jsx)(n.p,{children:"It can happen, that the object you want to store in the context is too complex, or contains cyclic references."}),"\n",(0,s.jsxs)(n.p,{children:["In that case, typescript might complain that ",(0,s.jsx)(n.em,{children:"type instantiation is too deep, possibly infinite"}),". That is due to the fact that it tries to generate all possible paths inside the ",(0,s.jsx)(n.code,{children:"ClsStore"}),". If that's the case, you can use the ",(0,s.jsx)(n.code,{children:"Terminal"})," type to stop generating the paths for a certain subtree:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"interface ClsStore {\n tenantId: string;\n // highlight-start\n user: Terminal<{\n id: number;\n authorized: boolean;\n }>;\n // highlight-end\n}\n"})}),"\n",(0,s.jsxs)(n.p,{children:["This will only generate the paths ",(0,s.jsx)(n.code,{children:"tenantId | user"})," and won't allow directly accessing nested keys (like ",(0,s.jsx)(n.code,{children:"cls.get('user.id')"}),", but you'll still get fully typing for things like ",(0,s.jsx)(n.code,{children:"const { id } = cls.get('user')"}),"). See issue ",(0,s.jsx)(n.a,{href:"https://github.com/Papooch/nestjs-cls/issues/22",children:"#22"})," for more details."]})]})}function u(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},1670:(e,n,t)=>{t.d(n,{Z:()=>c,a:()=>a});var s=t(7378);const r={},i=s.createContext(r);function a(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4c9a797e.5a451edf.js b/assets/js/4c9a797e.5a451edf.js new file mode 100644 index 0000000..083f983 --- /dev/null +++ b/assets/js/4c9a797e.5a451edf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[720],{5875:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>l,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var n=s(4246),r=s(1670);const o={},c="API",i={id:"api/index",title:"API",description:"This chapter describes the programmatic API of the ClsService and the ClsModule options.",source:"@site/docs/04_api/index.md",sourceDirName:"04_api",slug:"/api/",permalink:"/nestjs-cls/api/",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/04_api/index.md",tags:[],version:"current",frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Proxy Providers",permalink:"/nestjs-cls/features-and-use-cases/proxy-providers"},next:{title:"Service Interface",permalink:"/nestjs-cls/api/service-interface"}},a={},d=[];function p(e){const t={code:"code",h1:"h1",p:"p",...(0,r.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"api",children:"API"}),"\n",(0,n.jsxs)(t.p,{children:["This chapter describes the programmatic API of the ",(0,n.jsx)(t.code,{children:"ClsService"})," and the ",(0,n.jsx)(t.code,{children:"ClsModule"})," options."]})]})}function l(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(p,{...e})}):p(e)}},1670:(e,t,s)=>{s.d(t,{Z:()=>i,a:()=>c});var n=s(7378);const r={},o=n.createContext(r);function c(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4c9a797e.ac0c8500.js b/assets/js/4c9a797e.ac0c8500.js deleted file mode 100755 index 48b9979..0000000 --- a/assets/js/4c9a797e.ac0c8500.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[720],{5318:(e,t,r)=>{r.d(t,{Zo:()=>l,kt:()=>m});var n=r(7378);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function c(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=n.createContext({}),p=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},l=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),u=p(r),f=o,m=u["".concat(s,".").concat(f)]||u[f]||d[f]||a;return r?n.createElement(m,i(i({ref:t},l),{},{components:r})):n.createElement(m,i({ref:t},l))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=f;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[u]="string"==typeof e?e:o,i[1]=c;for(var p=2;p<a;p++)i[p]=r[p];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}f.displayName="MDXCreateElement"},8499:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>c,toc:()=>p});var n=r(5773),o=(r(7378),r(5318));const a={},i="API",c={unversionedId:"api/index",id:"api/index",title:"API",description:"This chapter describes the programmatic API of the ClsService and the ClsModule options.",source:"@site/docs/04_api/index.md",sourceDirName:"04_api",slug:"/api/",permalink:"/nestjs-cls/api/",draft:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/04_api/index.md",tags:[],version:"current",frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Proxy Providers",permalink:"/nestjs-cls/features-and-use-cases/proxy-providers"},next:{title:"Service Interface",permalink:"/nestjs-cls/api/service-interface"}},s={},p=[],l={toc:p},u="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(u,(0,n.Z)({},l,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"api"},"API"),(0,o.kt)("p",null,"This chapter describes the programmatic API of the ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsService")," and the ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsModule")," options."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/561.5fe53f02.js b/assets/js/561.5fe53f02.js deleted file mode 100755 index 5f9c7d0..0000000 --- a/assets/js/561.5fe53f02.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[561],{7213:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>v});var i=s(1273),l=s.n(i);const n=s(8230);n.tokenizer.separator=/[\s\-/]+/;const a=class{constructor(e,t,s){void 0===s&&(s="/"),this.searchDocs=e,this.lunrIndex=n.Index.load(t),this.baseUrl=s}getLunrResult(e){return this.lunrIndex.query((function(t){const s=n.tokenizer(e);t.term(s,{boost:10}),t.term(s,{wildcard:n.Query.wildcard.TRAILING})}))}getHit(e,t,s){return{hierarchy:{lvl0:e.pageTitle||e.title,lvl1:0===e.type?null:e.title},url:e.url,_snippetResult:s?{content:{value:s,matchLevel:"full"}}:null,_highlightResult:{hierarchy:{lvl0:{value:0===e.type?t||e.title:e.pageTitle},lvl1:0===e.type?null:{value:t||e.title}}}}}getTitleHit(e,t,s){const i=t[0],l=t[0]+s;let n=e.title.substring(0,i)+'<span class="algolia-docsearch-suggestion--highlight">'+e.title.substring(i,l)+"</span>"+e.title.substring(l,e.title.length);return this.getHit(e,n)}getKeywordHit(e,t,s){const i=t[0],l=t[0]+s;let n=e.title+"<br /><i>Keywords: "+e.keywords.substring(0,i)+'<span class="algolia-docsearch-suggestion--highlight">'+e.keywords.substring(i,l)+"</span>"+e.keywords.substring(l,e.keywords.length)+"</i>";return this.getHit(e,n)}getContentHit(e,t){const s=t[0],i=t[0]+t[1];let l=s,n=i,a=!0,r=!0;for(let c=0;c<3;c++){const t=e.content.lastIndexOf(" ",l-2),s=e.content.lastIndexOf(".",l-2);if(s>0&&s>t){l=s+1,a=!1;break}if(t<0){l=0,a=!1;break}l=t+1}for(let c=0;c<10;c++){const t=e.content.indexOf(" ",n+1),s=e.content.indexOf(".",n+1);if(s>0&&s<t){n=s,r=!1;break}if(t<0){n=e.content.length,r=!1;break}n=t}let o=e.content.substring(l,s);return a&&(o="... "+o),o+='<span class="algolia-docsearch-suggestion--highlight">'+e.content.substring(s,i)+"</span>",o+=e.content.substring(i,n),r&&(o+=" ..."),this.getHit(e,null,o)}search(e){return new Promise(((t,s)=>{const i=this.getLunrResult(e),l=[];i.length>5&&(i.length=5),this.titleHitsRes=[],this.contentHitsRes=[],i.forEach((t=>{const s=this.searchDocs[t.ref],{metadata:i}=t.matchData;for(let n in i)if(i[n].title){if(!this.titleHitsRes.includes(t.ref)){const a=i[n].title.position[0];l.push(this.getTitleHit(s,a,e.length)),this.titleHitsRes.push(t.ref)}}else if(i[n].content){const e=i[n].content.position[0];l.push(this.getContentHit(s,e))}else if(i[n].keywords){const a=i[n].keywords.position[0];l.push(this.getKeywordHit(s,a,e.length)),this.titleHitsRes.push(t.ref)}})),l.length>5&&(l.length=5),t(l)}))}};var r=s(2500),o=s.n(r);const c="algolia-docsearch",h=`${c}-suggestion`,u={suggestion:`\n <a class="${h}\n {{#isCategoryHeader}}${h}__main{{/isCategoryHeader}}\n {{#isSubCategoryHeader}}${h}__secondary{{/isSubCategoryHeader}}\n "\n aria-label="Link to the result"\n href="{{{url}}}"\n >\n <div class="${h}--category-header">\n <span class="${h}--category-header-lvl0">{{{category}}}</span>\n </div>\n <div class="${h}--wrapper">\n <div class="${h}--subcategory-column">\n <span class="${h}--subcategory-column-text">{{{subcategory}}}</span>\n </div>\n {{#isTextOrSubcategoryNonEmpty}}\n <div class="${h}--content">\n <div class="${h}--subcategory-inline">{{{subcategory}}}</div>\n <div class="${h}--title">{{{title}}}</div>\n {{#text}}<div class="${h}--text">{{{text}}}</div>{{/text}}\n </div>\n {{/isTextOrSubcategoryNonEmpty}}\n </div>\n </a>\n `,suggestionSimple:`\n <div class="${h}\n {{#isCategoryHeader}}${h}__main{{/isCategoryHeader}}\n {{#isSubCategoryHeader}}${h}__secondary{{/isSubCategoryHeader}}\n suggestion-layout-simple\n ">\n <div class="${h}--category-header">\n {{^isLvl0}}\n <span class="${h}--category-header-lvl0 ${h}--category-header-item">{{{category}}}</span>\n {{^isLvl1}}\n {{^isLvl1EmptyOrDuplicate}}\n <span class="${h}--category-header-lvl1 ${h}--category-header-item">\n {{{subcategory}}}\n </span>\n {{/isLvl1EmptyOrDuplicate}}\n {{/isLvl1}}\n {{/isLvl0}}\n <div class="${h}--title ${h}--category-header-item">\n {{#isLvl2}}\n {{{title}}}\n {{/isLvl2}}\n {{#isLvl1}}\n {{{subcategory}}}\n {{/isLvl1}}\n {{#isLvl0}}\n {{{category}}}\n {{/isLvl0}}\n </div>\n </div>\n <div class="${h}--wrapper">\n {{#text}}\n <div class="${h}--content">\n <div class="${h}--text">{{{text}}}</div>\n </div>\n {{/text}}\n </div>\n </div>\n `,footer:`\n <div class="${`${c}-footer`}">\n </div>\n `,empty:`\n <div class="${h}">\n <div class="${h}--wrapper">\n <div class="${h}--content ${h}--no-results">\n <div class="${h}--title">\n <div class="${h}--text">\n No results found for query <b>"{{query}}"</b>\n </div>\n </div>\n </div>\n </div>\n </div>\n `,searchBox:'\n <form novalidate="novalidate" onsubmit="return false;" class="searchbox">\n <div role="search" class="searchbox__wrapper">\n <input id="docsearch" type="search" name="search" placeholder="Search the docs" autocomplete="off" required="required" class="searchbox__input"/>\n <button type="submit" title="Submit your search query." class="searchbox__submit" >\n <svg width=12 height=12 role="img" aria-label="Search">\n <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sbx-icon-search-13"></use>\n </svg>\n </button>\n <button type="reset" title="Clear the search query." class="searchbox__reset hide">\n <svg width=12 height=12 role="img" aria-label="Reset">\n <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sbx-icon-clear-3"></use>\n </svg>\n </button>\n </div>\n</form>\n\n<div class="svg-icons" style="height: 0; width: 0; position: absolute; visibility: hidden">\n <svg xmlns="http://www.w3.org/2000/svg">\n <symbol id="sbx-icon-clear-3" viewBox="0 0 40 40"><path d="M16.228 20L1.886 5.657 0 3.772 3.772 0l1.885 1.886L20 16.228 34.343 1.886 36.228 0 40 3.772l-1.886 1.885L23.772 20l14.342 14.343L40 36.228 36.228 40l-1.885-1.886L20 23.772 5.657 38.114 3.772 40 0 36.228l1.886-1.885L16.228 20z" fill-rule="evenodd"></symbol>\n <symbol id="sbx-icon-search-13" viewBox="0 0 40 40"><path d="M26.806 29.012a16.312 16.312 0 0 1-10.427 3.746C7.332 32.758 0 25.425 0 16.378 0 7.334 7.333 0 16.38 0c9.045 0 16.378 7.333 16.378 16.38 0 3.96-1.406 7.593-3.746 10.426L39.547 37.34c.607.608.61 1.59-.004 2.203a1.56 1.56 0 0 1-2.202.004L26.807 29.012zm-10.427.627c7.322 0 13.26-5.938 13.26-13.26 0-7.324-5.938-13.26-13.26-13.26-7.324 0-13.26 5.936-13.26 13.26 0 7.322 5.936 13.26 13.26 13.26z" fill-rule="evenodd"></symbol>\n </svg>\n</div>\n '};var g=s(3847),d=s.n(g);const p={mergeKeyWithParent(e,t){if(void 0===e[t])return e;if("object"!=typeof e[t])return e;const s=d().extend({},e,e[t]);return delete s[t],s},groupBy(e,t){const s={};return d().each(e,((e,i)=>{if(void 0===i[t])throw new Error(`[groupBy]: Object has no key ${t}`);let l=i[t];"string"==typeof l&&(l=l.toLowerCase()),Object.prototype.hasOwnProperty.call(s,l)||(s[l]=[]),s[l].push(i)})),s},values:e=>Object.keys(e).map((t=>e[t])),flatten(e){const t=[];return e.forEach((e=>{Array.isArray(e)?e.forEach((e=>{t.push(e)})):t.push(e)})),t},flattenAndFlagFirst(e,t){const s=this.values(e).map((e=>e.map(((e,s)=>(e[t]=0===s,e)))));return this.flatten(s)},compact(e){const t=[];return e.forEach((e=>{e&&t.push(e)})),t},getHighlightedValue:(e,t)=>e._highlightResult&&e._highlightResult.hierarchy_camel&&e._highlightResult.hierarchy_camel[t]&&e._highlightResult.hierarchy_camel[t].matchLevel&&"none"!==e._highlightResult.hierarchy_camel[t].matchLevel&&e._highlightResult.hierarchy_camel[t].value?e._highlightResult.hierarchy_camel[t].value:e._highlightResult&&e._highlightResult&&e._highlightResult[t]&&e._highlightResult[t].value?e._highlightResult[t].value:e[t],getSnippetedValue(e,t){if(!e._snippetResult||!e._snippetResult[t]||!e._snippetResult[t].value)return e[t];let s=e._snippetResult[t].value;return s[0]!==s[0].toUpperCase()&&(s=`\u2026${s}`),-1===[".","!","?"].indexOf(s[s.length-1])&&(s=`${s}\u2026`),s},deepClone:e=>JSON.parse(JSON.stringify(e))};class y{constructor(e){let{searchDocs:t,searchIndex:s,inputSelector:i,debug:l=!1,baseUrl:n="/",queryDataCallback:r=null,autocompleteOptions:c={debug:!1,hint:!1,autoselect:!0},transformData:h=!1,queryHook:g=!1,handleSelected:p=!1,enhancedSearchInput:v=!1,layout:m="collumns"}=e;this.input=y.getInputFromSelector(i),this.queryDataCallback=r||null;const b=!(!c||!c.debug)&&c.debug;c.debug=l||b,this.autocompleteOptions=c,this.autocompleteOptions.cssClasses=this.autocompleteOptions.cssClasses||{},this.autocompleteOptions.cssClasses.prefix=this.autocompleteOptions.cssClasses.prefix||"ds";const f=this.input&&"function"==typeof this.input.attr&&this.input.attr("aria-label");this.autocompleteOptions.ariaLabel=this.autocompleteOptions.ariaLabel||f||"search input",this.isSimpleLayout="simple"===m,this.client=new a(t,s,n),v&&(this.input=y.injectSearchBox(this.input)),this.autocomplete=o()(this.input,c,[{source:this.getAutocompleteSource(h,g),templates:{suggestion:y.getSuggestionTemplate(this.isSimpleLayout),footer:u.footer,empty:y.getEmptyTemplate()}}]);const x=p;this.handleSelected=x||this.handleSelected,x&&d()(".algolia-autocomplete").on("click",".ds-suggestions a",(e=>{e.preventDefault()})),this.autocomplete.on("autocomplete:selected",this.handleSelected.bind(null,this.autocomplete.autocomplete)),this.autocomplete.on("autocomplete:shown",this.handleShown.bind(null,this.input)),v&&y.bindSearchBoxEvent()}static injectSearchBox(e){e.before(u.searchBox);const t=e.prev().prev().find("input");return e.remove(),t}static bindSearchBoxEvent(){d()('.searchbox [type="reset"]').on("click",(function(){d()("input#docsearch").focus(),d()(this).addClass("hide"),o().autocomplete.setVal("")})),d()("input#docsearch").on("keyup",(()=>{const e=document.querySelector("input#docsearch"),t=document.querySelector('.searchbox [type="reset"]');t.className="searchbox__reset",0===e.value.length&&(t.className+=" hide")}))}static getInputFromSelector(e){const t=d()(e).filter("input");return t.length?d()(t[0]):null}getAutocompleteSource(e,t){return(s,i)=>{t&&(s=t(s)||s),this.client.search(s).then((t=>{this.queryDataCallback&&"function"==typeof this.queryDataCallback&&this.queryDataCallback(t),e&&(t=e(t)||t),i(y.formatHits(t))}))}}static formatHits(e){const t=p.deepClone(e).map((e=>(e._highlightResult&&(e._highlightResult=p.mergeKeyWithParent(e._highlightResult,"hierarchy")),p.mergeKeyWithParent(e,"hierarchy"))));let s=p.groupBy(t,"lvl0");return d().each(s,((e,t)=>{const i=p.groupBy(t,"lvl1"),l=p.flattenAndFlagFirst(i,"isSubCategoryHeader");s[e]=l})),s=p.flattenAndFlagFirst(s,"isCategoryHeader"),s.map((e=>{const t=y.formatURL(e),s=p.getHighlightedValue(e,"lvl0"),i=p.getHighlightedValue(e,"lvl1")||s,l=p.compact([p.getHighlightedValue(e,"lvl2")||i,p.getHighlightedValue(e,"lvl3"),p.getHighlightedValue(e,"lvl4"),p.getHighlightedValue(e,"lvl5"),p.getHighlightedValue(e,"lvl6")]).join('<span class="aa-suggestion-title-separator" aria-hidden="true"> \u203a </span>'),n=p.getSnippetedValue(e,"content"),a=i&&""!==i||l&&""!==l,r=l&&""!==l&&l!==i,o=!r&&i&&""!==i&&i!==s;return{isLvl0:!o&&!r,isLvl1:o,isLvl2:r,isLvl1EmptyOrDuplicate:!i||""===i||i===s,isCategoryHeader:e.isCategoryHeader,isSubCategoryHeader:e.isSubCategoryHeader,isTextOrSubcategoryNonEmpty:a,category:s,subcategory:i,title:l,text:n,url:t}}))}static formatURL(e){const{url:t,anchor:s}=e;if(t){return-1!==t.indexOf("#")?t:s?`${e.url}#${e.anchor}`:t}return s?`#${e.anchor}`:(console.warn("no anchor nor url for : ",JSON.stringify(e)),null)}static getEmptyTemplate(){return e=>l().compile(u.empty).render(e)}static getSuggestionTemplate(e){const t=e?u.suggestionSimple:u.suggestion,s=l().compile(t);return e=>s.render(e)}handleSelected(e,t,s,i,l){void 0===l&&(l={}),"click"!==l.selectionMethod&&(e.setVal(""),window.location.assign(s.url))}handleShown(e){const t=e.offset().left+e.width()/2;let s=d()(document).width()/2;isNaN(s)&&(s=900);const i=t-s>=0?"algolia-autocomplete-right":"algolia-autocomplete-left",l=t-s<0?"algolia-autocomplete-right":"algolia-autocomplete-left",n=d()(".algolia-autocomplete");n.hasClass(i)||n.addClass(i),n.hasClass(l)&&n.removeClass(l)}}const v=y},5352:()=>{}}]); \ No newline at end of file diff --git a/assets/js/57c14adc.8d411baa.js b/assets/js/57c14adc.8d411baa.js new file mode 100644 index 0000000..cceecf7 --- /dev/null +++ b/assets/js/57c14adc.8d411baa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[507],{3253:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>d,contentTitle:()=>c,default:()=>l,frontMatter:()=>r,metadata:()=>i,toc:()=>a});var n=s(4246),o=s(1670);const r={},c="Security",i={id:"considerations/security",title:"Security",description:"It is often discussed whether AsyncLocalStorage is safe to use for concurrent requests (because of a possible context leak) and whether the context could be lost_ throughout the duration of a request.",source:"@site/docs/05_considerations/01_security.md",sourceDirName:"05_considerations",slug:"/considerations/security",permalink:"/nestjs-cls/considerations/security",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/05_considerations/01_security.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Considerations",permalink:"/nestjs-cls/considerations/"},next:{title:"Compatibility",permalink:"/nestjs-cls/considerations/compatibility"}},d={},a=[];function h(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",p:"p",strong:"strong",...(0,o.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"security",children:"Security"}),"\n",(0,n.jsxs)(t.p,{children:["It is often discussed whether ",(0,n.jsx)(t.a,{href:"https://nodejs.org/api/async_context.html",children:(0,n.jsx)(t.code,{children:"AsyncLocalStorage"})})," is safe to use for ",(0,n.jsx)(t.em,{children:"concurrent requests"})," (because of a possible context leak) and whether the context could be ",(0,n.jsx)(t.em,{children:"lost"})," throughout the duration of a request."]}),"\n",(0,n.jsxs)(t.p,{children:["The ",(0,n.jsx)(t.code,{children:"ClsMiddleware"})," and ",(0,n.jsx)(t.code,{children:"ClsInterceptor"})," by default uses the safe ",(0,n.jsx)(t.code,{children:"run()"})," method, which it should not leak context, but in some rare cases, the context can be lost."]}),"\n",(0,n.jsxs)(t.p,{children:["The ",(0,n.jsx)(t.code,{children:"ClsGuard"})," (and ",(0,n.jsx)(t.code,{children:"ClsMiddleware"}),", if configured so) uses the less safe ",(0,n.jsx)(t.code,{children:"enterWith()"})," method, which might be needed in case the ",(0,n.jsx)(t.code,{children:"run()"})," method causes context loss."]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"This has a consequence that should be taken into account:"})}),"\n",(0,n.jsx)(t.admonition,{type:"caution",children:(0,n.jsxs)(t.p,{children:["When the ",(0,n.jsx)(t.code,{children:"enterWith"})," method is used, any consequent requests ",(0,n.jsx)(t.em,{children:"get access"})," to the CLS context of the previous request ",(0,n.jsxs)(t.em,{children:["until the request hits the ",(0,n.jsx)(t.code,{children:"enterWith"})," call"]}),"."]})}),"\n",(0,n.jsxs)(t.p,{children:["That means, when using ",(0,n.jsx)(t.code,{children:"ClsMiddleware"})," with the ",(0,n.jsx)(t.code,{children:"useEnterWith"})," option, or ",(0,n.jsx)(t.code,{children:"ClsGuard"})," to set up context, be sure to mount them as early in the request lifetime as possible and do not use any other enhancers that rely on ",(0,n.jsx)(t.code,{children:"ClsService"})," before them. For ",(0,n.jsx)(t.code,{children:"ClsGuard"}),", that means you should probably manually mount it in ",(0,n.jsx)(t.code,{children:"AppModule"})," if you require any other guard to run ",(0,n.jsx)(t.em,{children:"after"})," it."]}),"\n",(0,n.jsx)(t.p,{children:"The next chapter addresses compatibility with various transport protocols."})]})}function l(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},1670:(e,t,s)=>{s.d(t,{Z:()=>i,a:()=>c});var n=s(7378);const o={},r=n.createContext(o);function c(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:c(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/57c14adc.b808beff.js b/assets/js/57c14adc.b808beff.js deleted file mode 100755 index 4aa75b6..0000000 --- a/assets/js/57c14adc.b808beff.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[507],{5318:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var r=n(7378);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),l=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=l(n),m=o,h=u["".concat(c,".").concat(m)]||u[m]||d[m]||a;return n?r.createElement(h,i(i({ref:t},p),{},{components:n})):r.createElement(h,i({ref:t},p))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=m;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[u]="string"==typeof e?e:o,i[1]=s;for(var l=2;l<a;l++)i[l]=n[l];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},3129:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var r=n(5773),o=(n(7378),n(5318));const a={},i="Security",s={unversionedId:"considerations/security",id:"considerations/security",title:"Security",description:"It is often discussed whether AsyncLocalStorage is safe to use for concurrent requests (because of a possible context leak) and whether the context could be lost_ throughout the duration of a request.",source:"@site/docs/05_considerations/01_security.md",sourceDirName:"05_considerations",slug:"/considerations/security",permalink:"/nestjs-cls/considerations/security",draft:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/05_considerations/01_security.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Considerations",permalink:"/nestjs-cls/considerations/"},next:{title:"Compatibility",permalink:"/nestjs-cls/considerations/compatibility"}},c={},l=[],p={toc:l},u="wrapper";function d(e){let{components:t,...n}=e;return(0,o.kt)(u,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"security"},"Security"),(0,o.kt)("p",null,"It is often discussed whether ",(0,o.kt)("a",{parentName:"p",href:"https://nodejs.org/api/async_context.html"},(0,o.kt)("inlineCode",{parentName:"a"},"AsyncLocalStorage"))," is safe to use for ",(0,o.kt)("em",{parentName:"p"},"concurrent requests")," (because of a possible context leak) and whether the context could be ",(0,o.kt)("em",{parentName:"p"},"lost")," throughout the duration of a request."),(0,o.kt)("p",null,"The ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsMiddleware")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsInterceptor")," by default uses the safe ",(0,o.kt)("inlineCode",{parentName:"p"},"run()")," method, which it should not leak context, but in some rare cases, the context can be lost."),(0,o.kt)("p",null,"The ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsGuard")," (and ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsMiddleware"),", if configured so) uses the less safe ",(0,o.kt)("inlineCode",{parentName:"p"},"enterWith()")," method, which might be needed in case the ",(0,o.kt)("inlineCode",{parentName:"p"},"run()")," method causes context loss."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"This has a consequence that should be taken into account:")),(0,o.kt)("admonition",{type:"caution"},(0,o.kt)("p",{parentName:"admonition"},"When the ",(0,o.kt)("inlineCode",{parentName:"p"},"enterWith")," method is used, any consequent requests ",(0,o.kt)("em",{parentName:"p"},"get access")," to the CLS context of the previous request ",(0,o.kt)("em",{parentName:"p"},"until the request hits the ",(0,o.kt)("inlineCode",{parentName:"em"},"enterWith")," call"),".")),(0,o.kt)("p",null,"That means, when using ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsMiddleware")," with the ",(0,o.kt)("inlineCode",{parentName:"p"},"useEnterWith")," option, or ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsGuard")," to set up context, be sure to mount them as early in the request lifetime as possible and do not use any other enhancers that rely on ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsService")," before them. For ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsGuard"),", that means you should probably manually mount it in ",(0,o.kt)("inlineCode",{parentName:"p"},"AppModule")," if you require any other guard to run ",(0,o.kt)("em",{parentName:"p"},"after")," it."),(0,o.kt)("p",null,"The next chapter addresses compatibility with various transport protocols."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/592cbe55.9bb5699b.js b/assets/js/592cbe55.9bb5699b.js new file mode 100644 index 0000000..1715aa7 --- /dev/null +++ b/assets/js/592cbe55.9bb5699b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[437],{652:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var r=s(4246),t=s(1670);const i={},o="Proxy Providers",c={id:"features-and-use-cases/proxy-providers",title:"Proxy Providers",description:"Since v3.0",source:"@site/docs/03_features-and-use-cases/06_proxy-providers.md",sourceDirName:"03_features-and-use-cases",slug:"/features-and-use-cases/proxy-providers",permalink:"/nestjs-cls/features-and-use-cases/proxy-providers",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/03_features-and-use-cases/06_proxy-providers.md",tags:[],version:"current",sidebarPosition:6,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Type safety and type inference",permalink:"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference"},next:{title:"API",permalink:"/nestjs-cls/api/"}},a={},l=[{value:"Class Proxy Providers",id:"class-proxy-providers",level:2},{value:"Populate in an enhancer",id:"populate-in-an-enhancer",level:3},{value:"Self-populating Proxy Provider",id:"self-populating-proxy-provider",level:3},{value:"Factory Proxy Providers",id:"factory-proxy-providers",level:2},{value:"Caveats",id:"caveats",level:2},{value:"No primitive values",id:"no-primitive-values",level:3},{value:"<code>function</code> Proxies must be explicitly enabled",id:"function-proxies-must-be-explicitly-enabled",level:3},{value:"Delayed resolution of Proxy Providers",id:"delayed-resolution-of-proxy-providers",level:2},{value:"Outside web request",id:"outside-web-request",level:3},{value:"With cls.run()",id:"with-clsrun",level:4},{value:"With @UseCls()",id:"with-usecls",level:4}];function d(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",p:"p",pre:"pre",...(0,t.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"proxy-providers",children:"Proxy Providers"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:["Since ",(0,r.jsx)(n.code,{children:"v3.0"})]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["This feature was inspired by how REQUEST-scoped providers (",(0,r.jsx)(n.em,{children:'"beans"'}),") work in the Spring framework for Java/Kotlin."]}),"\n",(0,r.jsxs)(n.p,{children:["Using this technique, NestJS does not need to re-create a whole DI-subtree on each request (which has ",(0,r.jsx)(n.a,{href:"https://docs.nestjs.com/fundamentals/injection-scopes#scope-hierarchy",children:"certain implications which disallows the use of REQUEST-scoped providers in certain situations"}),")."]}),"\n",(0,r.jsxs)(n.p,{children:["Rather, it injects a ",(0,r.jsx)(n.em,{children:"SINGLETON"})," ",(0,r.jsx)(n.a,{href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy",children:"Proxy"})," instance, which delegates access and calls to the actual instance, which is created for each request when the CLS context is set up."]}),"\n",(0,r.jsxs)(n.p,{children:["There are two kinds of Proxy providers - ",(0,r.jsx)(n.a,{href:"#class-proxy-providers",children:(0,r.jsx)(n.em,{children:"Class"})})," and ",(0,r.jsx)(n.a,{href:"#factory-proxy-providers",children:(0,r.jsx)(n.em,{children:"Factory"})}),"."]}),"\n",(0,r.jsx)(n.admonition,{type:"note",children:(0,r.jsxs)(n.p,{children:["Please note that there are ",(0,r.jsx)(n.a,{href:"#caveats",children:(0,r.jsx)(n.em,{children:"some caveats"})})," to using this technique."]})}),"\n",(0,r.jsx)(n.h2,{id:"class-proxy-providers",children:"Class Proxy Providers"}),"\n",(0,r.jsxs)(n.p,{children:["These providers look like your regular class providers, with the exception that is the ",(0,r.jsx)(n.code,{children:"@InjectableProxy()"})," decorator to make them easily distinguishable."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:"title=user.proxy.ts",children:"// highlight-start\n@InjectableProxy()\n// highlight-end\nexport class User {\n id: number;\n role: string;\n}\n"})}),"\n",(0,r.jsxs)(n.p,{children:["To register the proxy provider, use the ",(0,r.jsx)(n.code,{children:"ClsModule.forFeature()"})," registration,\nwhich exposes it an injectable provider in the parent module."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"ClsModule.forFeature(User);\n"})}),"\n",(0,r.jsx)(n.p,{children:"It can be then injected using the class name."}),"\n",(0,r.jsxs)(n.p,{children:["However, what will be actually injected ",(0,r.jsx)(n.em,{children:"is not"})," the instance of the class, but rather the Proxy which redirects all access to an unique instance stored in the CLS context."]}),"\n",(0,r.jsx)(n.h3,{id:"populate-in-an-enhancer",children:"Populate in an enhancer"}),"\n",(0,r.jsx)(n.p,{children:"A Class provider defined in this way will be empty upon creation, so we must assign context values to it somewhere. One place to do it is an interceptor"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:"title=user.interceptor.ts",children:"@Injectable()\nexport class UserInterceptor implements NestInterceptor {\n // we can inject the proxy here\n // highlight-start\n constructor(private readonly user: User) {}\n // highlight-end\n\n intercept(context: ExecutionContext, next: CallHandler): Observable<any> {\n const request = context.switchToHttp().getRequest();\n\n // and assign or change values as it was a normal object\n // highlight-start\n this.user.id = request.user.id;\n this.user.role = 'admin';\n // highlight-end\n\n return next.handle();\n }\n}\n"})}),"\n",(0,r.jsx)(n.h3,{id:"self-populating-proxy-provider",children:"Self-populating Proxy Provider"}),"\n",(0,r.jsx)(n.p,{children:"It is also possible to inject other providers into the Proxy Provider to avoid having to do this in a separate component."}),"\n",(0,r.jsxs)(n.p,{children:["For the convenience, the ",(0,r.jsx)(n.code,{children:"CLS_REQ"})," and ",(0,r.jsx)(n.code,{children:"CLS_RES"})," are also made into Proxy Providers and are exported from the ",(0,r.jsx)(n.code,{children:"ClsModule"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:"title=user-with-rile.proxy.ts",children:"@InjectableProxy()\nexport class UserWithRole {\n id: number;\n role: string;\n\n constructor(\n // highlight-start\n @Inject(CLS_REQ) request: Request,\n // highlight-end\n roleService: RoleService,\n ) {\n this.id = request.user.id;\n this.role = roleService.getForId(request.user.id);\n }\n}\n"})}),"\n",(0,r.jsxs)(n.p,{children:["If you need to inject a provider from an external module, use the ",(0,r.jsx)(n.code,{children:"ClsModule.forFeatureAsync()"})," registration to import the containing module."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"ClsModule.forFeatureAsync({\n // make RoleService available to the Proxy provider\n import: [RoleModule],\n useClass: UserWithRole,\n});\n"})}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsxs)(n.p,{children:["Using ",(0,r.jsx)(n.code,{children:"@Inject(CLS_REQ)"}),", you can entirely replace ",(0,r.jsx)(n.code,{children:"@Inject(REQUEST)"})," in REQUEST-SCOPED providers to turn them into CLS-enabled singletons without changing the implementation."]})}),"\n",(0,r.jsx)(n.h2,{id:"factory-proxy-providers",children:"Factory Proxy Providers"}),"\n",(0,r.jsx)(n.p,{children:"Like your normal factory providers, Proxy factory providers look familiar."}),"\n",(0,r.jsxs)(n.p,{children:["They can be only registered using the ",(0,r.jsx)(n.code,{children:"ClsModule.forFeatureAsync()"})," method."]}),"\n",(0,r.jsx)(n.p,{children:"Here's an example of a hypothetical factory provider that dynamically resolves to a specific tenant database connection:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"ClsModule.forFeatureAsync({\n provide: TENANT_CONNECTION,\n import: [DatabaseConnectionModule],\n inject: [CLS_REQ, DatabaseConnectionService],\n useFactory: async (req: Request, dbService: DatabaseConnectionService) => {\n const tenantId = req.params['tenantId'];\n const connection = await dbService.getTenantConnection(tenantId);\n return connection;\n },\n global: true, // make the TENANT_CONNECTION available for injection globally\n});\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Again, the factory will be called on each request and the result will be stored in the CLS context. The ",(0,r.jsx)(n.code,{children:"TENANT_CONNECTION"})," provider, however, will still be a singleton and will not affect the scope of whatever it is injected into."]}),"\n",(0,r.jsxs)(n.p,{children:["In the service, it can be injected using the ",(0,r.jsx)(n.code,{children:"provide"})," token as usual:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:"title=dogs.service.ts",children:"@Injectable()\nclass DogsService {\n constructor(\n @Inject(TENANT_CONNECTION)\n private readonly connection: TenantConnection,\n ) {}\n\n getAll() {\n return this.connection.dogs.getAll();\n }\n}\n"})}),"\n",(0,r.jsx)(n.h2,{id:"caveats",children:"Caveats"}),"\n",(0,r.jsx)(n.h3,{id:"no-primitive-values",children:"No primitive values"}),"\n",(0,r.jsxs)(n.p,{children:["Proxy Factory providers ",(0,r.jsx)(n.em,{children:"cannot"})," return a ",(0,r.jsx)(n.em,{children:"primitive value"}),". This is because the provider itself is the Proxy and it only delegates access once a property or a method is called on it (or if it itself is called in case the factory returns a function)."]}),"\n",(0,r.jsxs)(n.h3,{id:"function-proxies-must-be-explicitly-enabled",children:[(0,r.jsx)(n.code,{children:"function"})," Proxies must be explicitly enabled"]}),"\n",(0,r.jsxs)(n.p,{children:["In order to support injecting proxies of ",(0,r.jsx)(n.em,{children:"functions"}),", the underlying proxy ",(0,r.jsx)(n.em,{children:"target"}),' must be a function, too, in order to be able to implement the "apply" trap. However, this information cannot be extracted from the factory function itself, so if your factory returns a function, you must explicitly set the ',(0,r.jsx)(n.code,{children:"type"})," property to ",(0,r.jsx)(n.code,{children:"function"})," in the provider definition."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"{\n provide: SOME_FUNCTION,\n useFactory: () => {\n return () => {\n // do something\n };\n },\n // highlight-start\n type: 'function',\n // highlight-end\n}\n"})}),"\n",(0,r.jsx)(n.admonition,{type:"note",children:(0,r.jsxs)(n.p,{children:["In versions prior to ",(0,r.jsx)(n.code,{children:"v4.0"}),", calling ",(0,r.jsx)(n.code,{children:"typeof"})," on an instance of a Proxy provider always returned ",(0,r.jsx)(n.code,{children:"function"}),", regardless of the value it holds. This is no longer the case. Please see ",(0,r.jsx)(n.a,{href:"https://github.com/Papooch/nestjs-cls/issues/82",children:"Issue #82"})]})}),"\n",(0,r.jsx)(n.h2,{id:"delayed-resolution-of-proxy-providers",children:"Delayed resolution of Proxy Providers"}),"\n",(0,r.jsxs)(n.p,{children:["By default, proxy providers are resolved as soon as the ",(0,r.jsx)(n.code,{children:"setup"})," function in an enhancer (middleware/guard/interceptor) finishes. For some use cases, it might be required that the resolution is delayed until some later point in the request lifecycle once more information is present in the CLS ."]}),"\n",(0,r.jsxs)(n.p,{children:["To achieve that, set ",(0,r.jsx)(n.code,{children:"resolveProxyProviders"})," to ",(0,r.jsx)(n.code,{children:"false"})," in the enhancer options and call ",(0,r.jsx)(n.code,{children:"ClsService#resolveProxyProviders()"})," manually at any time."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"ClsModule.forRoot({\n middleware: {\n // highlight-start\n resolveProxyProviders: false,\n // highlight-end\n },\n});\n"})}),"\n",(0,r.jsx)(n.h3,{id:"outside-web-request",children:"Outside web request"}),"\n",(0,r.jsxs)(n.p,{children:["This is also necessary ",(0,r.jsx)(n.a,{href:"/nestjs-cls/features-and-use-cases/usage-outside-of-web-request",children:"outside the context of web request"}),", otherwise all access to an injected Proxy Provider will return ",(0,r.jsx)(n.code,{children:"undefined"}),"."]}),"\n",(0,r.jsx)(n.h4,{id:"with-clsrun",children:"With cls.run()"}),"\n",(0,r.jsxs)(n.p,{children:["If you set up the context with ",(0,r.jsx)(n.code,{children:"cls.run()"})," to wrap any subsequent code thar relies on Proxy Providers."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:"title=cron.controller.ts",children:"@Injectable()\nexport class CronController {\n constructor(\n private readonly someService: SomeService,\n private readonly cls: ClsService,\n );\n\n @Cron('45 * * * * *')\n async handleCron() {\n await this.cls.run(async () => {\n // prepare the context\n this.cls.set('some-key', 'some-value');\n // highlight-start\n // trigger Proxy Provider resolution\n await this.cls.resolveProxyProviders();\n // highlight-end\n await this.someService.doTheThing();\n });\n }\n}\n"})}),"\n",(0,r.jsx)(n.h4,{id:"with-usecls",children:"With @UseCls()"}),"\n",(0,r.jsxs)(n.p,{children:["Since the ",(0,r.jsx)(n.code,{children:"@UseCls()"})," decorator wraps the function body with ",(0,r.jsx)(n.code,{children:"cls.run()"})," automatically, you can use the ",(0,r.jsx)(n.code,{children:"setup"})," function to prepare the context."]}),"\n",(0,r.jsxs)(n.p,{children:["The Proxy Providers will be resolved after the ",(0,r.jsx)(n.code,{children:"setup"})," phase."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:"title=cron.controller.ts",children:"@Injectable()\nexport class CronController {\n constructor(private readonly someService: SomeService);\n\n @Cron('45 * * * * *')\n @UseCls({\n // highlight-start\n setup: (cls) => {\n cls.set('some-key', 'some-value');\n },\n // highlight-end\n })\n async handleCron() {\n await this.someService.doTheThing();\n }\n}\n"})})]})}function h(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},1670:(e,n,s)=>{s.d(n,{Z:()=>c,a:()=>o});var r=s(7378);const t={},i=r.createContext(t);function o(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/592cbe55.e18bfa3e.js b/assets/js/592cbe55.e18bfa3e.js deleted file mode 100755 index bb654b0..0000000 --- a/assets/js/592cbe55.e18bfa3e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[437],{5318:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});var r=n(7378);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),u=p(n),h=o,m=u["".concat(l,".").concat(h)]||u[h]||d[h]||a;return n?r.createElement(m,i(i({ref:t},c),{},{components:n})):r.createElement(m,i({ref:t},c))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:o,i[1]=s;for(var p=2;p<a;p++)i[p]=n[p];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}h.displayName="MDXCreateElement"},3080:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>p});var r=n(5773),o=(n(7378),n(5318));const a={},i="Proxy Providers",s={unversionedId:"features-and-use-cases/proxy-providers",id:"features-and-use-cases/proxy-providers",title:"Proxy Providers",description:"Since v3.0",source:"@site/docs/03_features-and-use-cases/06_proxy-providers.md",sourceDirName:"03_features-and-use-cases",slug:"/features-and-use-cases/proxy-providers",permalink:"/nestjs-cls/features-and-use-cases/proxy-providers",draft:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/03_features-and-use-cases/06_proxy-providers.md",tags:[],version:"current",sidebarPosition:6,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Type safety and type inference",permalink:"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference"},next:{title:"API",permalink:"/nestjs-cls/api/"}},l={},p=[{value:"Class Proxy Providers",id:"class-proxy-providers",level:2},{value:"Populate in an enhancer",id:"populate-in-an-enhancer",level:3},{value:"Self-populating Proxy Provider",id:"self-populating-proxy-provider",level:3},{value:"Factory Proxy Providers",id:"factory-proxy-providers",level:2},{value:"Caveats",id:"caveats",level:2},{value:"No primitive values",id:"no-primitive-values",level:3},{value:"<code>typeof</code> Proxies is always <code>function</code>",id:"typeof-proxies-is-always-function",level:3},{value:"Delayed resolution of Proxy Providers",id:"delayed-resolution-of-proxy-providers",level:2},{value:"Outside web request",id:"outside-web-request",level:3},{value:"With cls.run()",id:"with-clsrun",level:4},{value:"With @UseCls()",id:"with-usecls",level:4}],c={toc:p},u="wrapper";function d(e){let{components:t,...n}=e;return(0,o.kt)(u,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"proxy-providers"},"Proxy Providers"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"Since ",(0,o.kt)("inlineCode",{parentName:"p"},"v3.0"))),(0,o.kt)("p",null,"This feature was inspired by how REQUEST-scoped providers (",(0,o.kt)("em",{parentName:"p"},'"beans"'),") work in the Spring framework for Java/Kotlin."),(0,o.kt)("p",null,"Using this technique, NestJS does not need to re-create a whole DI-subtree on each request (which has ",(0,o.kt)("a",{parentName:"p",href:"https://docs.nestjs.com/fundamentals/injection-scopes#scope-hierarchy"},"certain implications which disallows the use of REQUEST-scoped providers in certain situations"),")."),(0,o.kt)("p",null,"Rather, it injects a ",(0,o.kt)("em",{parentName:"p"},"SINGLETON")," ",(0,o.kt)("a",{parentName:"p",href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy"},"Proxy")," instance, which delegates access and calls to the actual instance, which is created for each request when the CLS context is set up."),(0,o.kt)("p",null,"There are two kinds of Proxy providers - ",(0,o.kt)("a",{parentName:"p",href:"#class-proxy-providers"},(0,o.kt)("em",{parentName:"a"},"Class"))," and ",(0,o.kt)("a",{parentName:"p",href:"#factory-proxy-providers"},(0,o.kt)("em",{parentName:"a"},"Factory")),"."),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"Please note that there are ",(0,o.kt)("a",{parentName:"p",href:"#caveats"},(0,o.kt)("em",{parentName:"a"},"some caveats"))," to using this technique.")),(0,o.kt)("h2",{id:"class-proxy-providers"},"Class Proxy Providers"),(0,o.kt)("p",null,"These providers look like your regular class providers, with the exception that is the ",(0,o.kt)("inlineCode",{parentName:"p"},"@InjectableProxy()")," decorator to make them easily distinguishable."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-ts",metastring:"title=user.proxy.ts",title:"user.proxy.ts"},"// highlight-start\n@InjectableProxy()\n// highlight-end\nexport class User {\n id: number;\n role: string;\n}\n")),(0,o.kt)("p",null,"To register the proxy provider, use the ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsModule.forFeature()")," registration,\nwhich exposes it an injectable provider in the parent module."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-ts"},"ClsModule.forFeature(User);\n")),(0,o.kt)("p",null,"It can be then injected using the class name."),(0,o.kt)("p",null,"However, what will be actually injected ",(0,o.kt)("em",{parentName:"p"},"is not")," the instance of the class, but rather the Proxy which redirects all access to an unique instance stored in the CLS context."),(0,o.kt)("h3",{id:"populate-in-an-enhancer"},"Populate in an enhancer"),(0,o.kt)("p",null,"A Class provider defined in this way will be empty upon creation, so we must assign context values to it somewhere. One place to do it is an interceptor"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-ts",metastring:"title=user.interceptor.ts",title:"user.interceptor.ts"},"@Injectable()\nexport class UserInterceptor implements NestInterceptor {\n // we can inject the proxy here\n // highlight-start\n constructor(private readonly user: User) {}\n // highlight-end\n\n intercept(context: ExecutionContext, next: CallHandler): Observable<any> {\n const request = context.switchToHttp().getRequest();\n\n // and assign or change values as it was a normal object\n // highlight-start\n this.user.id = request.user.id;\n this.user.role = 'admin';\n // highlight-end\n\n return next.handle();\n }\n}\n")),(0,o.kt)("h3",{id:"self-populating-proxy-provider"},"Self-populating Proxy Provider"),(0,o.kt)("p",null,"It is also possible to inject other providers into the Proxy Provider to avoid having to do this in a separate component."),(0,o.kt)("p",null,"For the convenience, the ",(0,o.kt)("inlineCode",{parentName:"p"},"CLS_REQ")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"CLS_RES")," are also made into Proxy Providers and are exported from the ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsModule"),"."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-ts",metastring:"title=user-with-rile.proxy.ts",title:"user-with-rile.proxy.ts"},"@InjectableProxy()\nexport class UserWithRole {\n id: number;\n role: string;\n\n constructor(\n // highlight-start\n @Inject(CLS_REQ) request: Request,\n // highlight-end\n roleService: RoleService,\n ) {\n this.id = request.user.id;\n this.role = roleService.getForId(request.user.id);\n }\n}\n")),(0,o.kt)("p",null,"If you need to inject a provider from an external module, use the ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsModule.forFeatureAsync()")," registration to import the containing module."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-ts"},"ClsModule.forFeatureAsync({\n // make RoleService available to the Proxy provider\n import: [RoleModule],\n useClass: UserWithRole,\n});\n")),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"Using ",(0,o.kt)("inlineCode",{parentName:"p"},"@Inject(CLS_REQ)"),", you can entirely replace ",(0,o.kt)("inlineCode",{parentName:"p"},"@Inject(REQUEST)")," in REQUEST-SCOPED providers to turn them into CLS-enabled singletons without changing the implementation.")),(0,o.kt)("h2",{id:"factory-proxy-providers"},"Factory Proxy Providers"),(0,o.kt)("p",null,"Like your normal factory providers, Proxy factory providers look familiar."),(0,o.kt)("p",null,"They can be only registered using the ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsModule.forFeatureAsync()")," method."),(0,o.kt)("p",null,"Here's an example of a hypothetical factory provider that dynamically resolves to a specific tenant database connection:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-ts"},"ClsModule.forFeatureAsync({\n provide: TENANT_CONNECTION,\n import: [DatabaseConnectionModule],\n inject: [CLS_REQ, DatabaseConnectionService],\n useFactory: async (req: Request, dbService: DatabaseConnectionService) => {\n const tenantId = req.params['tenantId'];\n const connection = await dbService.getTenantConnection(tenantId);\n return connection;\n },\n global: true, // make the TENANT_CONNECTION available for injection globally\n});\n")),(0,o.kt)("p",null,"Again, the factory will be called on each request and the result will be stored in the CLS context. The ",(0,o.kt)("inlineCode",{parentName:"p"},"TENANT_CONNECTION")," provider, however, will still be a singleton and will not affect the scope of whatever it is injected into."),(0,o.kt)("p",null,"In the service, it can be injected using the ",(0,o.kt)("inlineCode",{parentName:"p"},"provide")," token as usual:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-ts",metastring:"title=dogs.service.ts",title:"dogs.service.ts"},"@Injectable()\nclass DogsService {\n constructor(\n @Inject(TENANT_CONNECTION)\n private readonly connection: TenantConnection,\n ) {}\n\n getAll() {\n return this.connection.dogs.getAll();\n }\n}\n")),(0,o.kt)("h2",{id:"caveats"},"Caveats"),(0,o.kt)("h3",{id:"no-primitive-values"},"No primitive values"),(0,o.kt)("p",null,"Proxy Factory providers ",(0,o.kt)("em",{parentName:"p"},"cannot")," return a ",(0,o.kt)("em",{parentName:"p"},"primitive value"),". This is because the provider itself is the Proxy and it only delegates access once a property or a method is called on it (or if it itself is called in case the factory returns a function)."),(0,o.kt)("h3",{id:"typeof-proxies-is-always-function"},(0,o.kt)("inlineCode",{parentName:"h3"},"typeof")," Proxies is always ",(0,o.kt)("inlineCode",{parentName:"h3"},"function")),(0,o.kt)("p",null,"In order to support injecting proxies of ",(0,o.kt)("em",{parentName:"p"},"functions"),", the underlying proxy ",(0,o.kt)("em",{parentName:"p"},"target"),' is an empty function, too. It must be this way in order to be able to implement the "apply" trap.'),(0,o.kt)("p",null,"As a result of this, calling ",(0,o.kt)("inlineCode",{parentName:"p"},"typeof")," on an instance of a Proxy will always return ",(0,o.kt)("inlineCode",{parentName:"p"},"function"),", regardless of the value it holds. This is fine for most applications, but must be taken into consideration in some cases - please see ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/Papooch/nestjs-cls/issues/82"},"Issue #82")," for more info and possible workarounds."),(0,o.kt)("h2",{id:"delayed-resolution-of-proxy-providers"},"Delayed resolution of Proxy Providers"),(0,o.kt)("p",null,"By default, proxy providers are resolved as soon as the ",(0,o.kt)("inlineCode",{parentName:"p"},"setup")," function in an enhancer (middleware/guard/interceptor) finishes. For some use cases, it might be required that the resolution is delayed until some later point in the request lifecycle once more information is present in the CLS ."),(0,o.kt)("p",null,"To achieve that, set ",(0,o.kt)("inlineCode",{parentName:"p"},"resolveProxyProviders")," to ",(0,o.kt)("inlineCode",{parentName:"p"},"false")," in the enhancer options and call ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsService#resolveProxyProviders()")," manually at any time."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-ts"},"ClsModule.forRoot({\n middleware: {\n // highlight-start\n resolveProxyProviders: false,\n // highlight-end\n },\n});\n")),(0,o.kt)("h3",{id:"outside-web-request"},"Outside web request"),(0,o.kt)("p",null,"This is also necessary ",(0,o.kt)("a",{parentName:"p",href:"/nestjs-cls/features-and-use-cases/usage-outside-of-web-request"},"outside the context of web request"),", otherwise all access to an injected Proxy Provider will return ",(0,o.kt)("inlineCode",{parentName:"p"},"undefined"),"."),(0,o.kt)("h4",{id:"with-clsrun"},"With cls.run()"),(0,o.kt)("p",null,"If you set up the context with ",(0,o.kt)("inlineCode",{parentName:"p"},"cls.run()")," to wrap any subsequent code thar relies on Proxy Providers."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-ts",metastring:"title=cron.controller.ts",title:"cron.controller.ts"},"@Injectable()\nexport class CronController {\n constructor(\n private readonly someService: SomeService,\n private readonly cls: ClsService,\n );\n\n @Cron('45 * * * * *')\n async handleCron() {\n await this.cls.run(async () => {\n // prepare the context\n this.cls.set('some-key', 'some-value');\n // highlight-start\n // trigger Proxy Provider resolution\n await this.cls.resolveProxyProviders();\n // highlight-end\n await this.someService.doTheThing();\n });\n }\n}\n")),(0,o.kt)("h4",{id:"with-usecls"},"With @UseCls()"),(0,o.kt)("p",null,"The ",(0,o.kt)("inlineCode",{parentName:"p"},"resolveProxyProviders")," is set to ",(0,o.kt)("inlineCode",{parentName:"p"},"false")," by default on the ",(0,o.kt)("inlineCode",{parentName:"p"},"@UseCls")," decorator. To achieve the same behavior using it, you must set it to ",(0,o.kt)("inlineCode",{parentName:"p"},"true"),"."),(0,o.kt)("p",null,"The Proxy Providers will be resolved after the ",(0,o.kt)("inlineCode",{parentName:"p"},"setup")," phase."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-ts",metastring:"title=cron.controller.ts",title:"cron.controller.ts"},"@Injectable()\nexport class CronController {\n constructor(private readonly someService: SomeService);\n\n @Cron('45 * * * * *')\n @UseCls({\n // highlight-start\n resolveProxyProviders: true,\n setup: (cls) => {\n this.cls.set('some-key', 'some-value');\n },\n // highlight-end\n })\n async handleCron() {\n await this.someService.doTheThing();\n }\n}\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5e95c892.eba74bf1.js b/assets/js/5e95c892.eba74bf1.js new file mode 100644 index 0000000..7608a33 --- /dev/null +++ b/assets/js/5e95c892.eba74bf1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[661],{32:(s,e,c)=>{c.r(e),c.d(e,{default:()=>d});c(7378);var r=c(624),n=c(8836),t=c(5854),u=c(5473),a=c(9145),l=c(4246);function d(s){return(0,l.jsx)(n.FG,{className:(0,r.Z)(t.k.wrapper.docsPages),children:(0,l.jsx)(a.Z,{children:(0,u.H)(s.route.routes)})})}}}]); \ No newline at end of file diff --git a/assets/js/6212613f.4cda7fb0.js b/assets/js/6212613f.4cda7fb0.js deleted file mode 100755 index 423ac77..0000000 --- a/assets/js/6212613f.4cda7fb0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[849],{5318:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var r=n(7378);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},s=Object.keys(e);for(r=0;r<s.length;r++)n=s[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r<s.length;r++)n=s[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),l=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,s=e.originalType,c=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),d=l(n),f=a,m=d["".concat(c,".").concat(f)]||d[f]||p[f]||s;return n?r.createElement(m,o(o({ref:t},u),{},{components:n})):r.createElement(m,o({ref:t},u))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var s=n.length,o=new Array(s);o[0]=f;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[d]="string"==typeof e?e:a,o[1]=i;for(var l=2;l<s;l++)o[l]=n[l];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}f.displayName="MDXCreateElement"},7046:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>s,metadata:()=>i,toc:()=>l});var r=n(5773),a=(n(7378),n(5318));const s={},o="Additional CLS Setup",i={unversionedId:"features-and-use-cases/additional-cls-setup",id:"features-and-use-cases/additional-cls-setup",title:"Additional CLS Setup",description:"The CLS middleware/guard/interceptor provide some default functionality, but sometimes you might want to store more contextual things in the CLS.",source:"@site/docs/03_features-and-use-cases/02_additional-cls-setup.md",sourceDirName:"03_features-and-use-cases",slug:"/features-and-use-cases/additional-cls-setup",permalink:"/nestjs-cls/features-and-use-cases/additional-cls-setup",draft:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/03_features-and-use-cases/02_additional-cls-setup.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Request ID",permalink:"/nestjs-cls/features-and-use-cases/request-id"},next:{title:"Breaking out of DI",permalink:"/nestjs-cls/features-and-use-cases/breakin-out-of-di"}},c={},l=[{value:"Middleware",id:"middleware",level:2},{value:"Enhancers",id:"enhancers",level:2}],u={toc:l},d="wrapper";function p(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"additional-cls-setup"},"Additional CLS Setup"),(0,a.kt)("p",null,"The CLS middleware/guard/interceptor provide some default functionality, but sometimes you might want to store more contextual things in the CLS."),(0,a.kt)("p",null,"This can be of course done in a custom enhancer bound after, but for this scenario, the options expose a ",(0,a.kt)("inlineCode",{parentName:"p"},"setup")," function, which will be executed in the enhancer right after the CLS context is set up."),(0,a.kt)("p",null,"The function receives the ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsService")," instance, and can be asynchronous."),(0,a.kt)("h2",{id:"middleware"},"Middleware"),(0,a.kt)("p",null,"In case of middleware the ",(0,a.kt)("inlineCode",{parentName:"p"},"Request")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"Response")," objects are passed as the second and third parameters."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-ts"},"ClsModule.forRoot({\n middleware: {\n mount: true,\n // highlight-start\n setup: (cls, req: Request, res: Response) => {\n cls.set('TENANT_ID', req.params('tenant_id'));\n cls.set('AUTH', { authenticated: false });\n },\n // highlight-end\n },\n});\n")),(0,a.kt)("h2",{id:"enhancers"},"Enhancers"),(0,a.kt)("p",null,"In a guard or interceptor, the ",(0,a.kt)("inlineCode",{parentName:"p"},"ExecutionContext")," object is passed as a second parameter."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-ts"},"ClsModule.forRoot({\n interceptor: {\n mount: true,\n // highlight-start\n setup: (cls, context) => {\n const req = context.switchToHttp().getRequest<Request>();\n cls.set('TENANT_ID', req.params('tenant_id'));\n cls.set('AUTH', { authenticated: false });\n },\n // highlight-end\n },\n});\n")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6212613f.570af20d.js b/assets/js/6212613f.570af20d.js new file mode 100644 index 0000000..fa583e4 --- /dev/null +++ b/assets/js/6212613f.570af20d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[849],{2867:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var s=n(4246),a=n(1670);const i={},r="Additional CLS Setup",o={id:"features-and-use-cases/additional-cls-setup",title:"Additional CLS Setup",description:"The CLS middleware/guard/interceptor provide some default functionality, but sometimes you might want to store more contextual things in the CLS.",source:"@site/docs/03_features-and-use-cases/02_additional-cls-setup.md",sourceDirName:"03_features-and-use-cases",slug:"/features-and-use-cases/additional-cls-setup",permalink:"/nestjs-cls/features-and-use-cases/additional-cls-setup",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/03_features-and-use-cases/02_additional-cls-setup.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Request ID",permalink:"/nestjs-cls/features-and-use-cases/request-id"},next:{title:"Breaking out of DI",permalink:"/nestjs-cls/features-and-use-cases/breaking-out-of-di"}},c={},d=[{value:"Middleware",id:"middleware",level:2},{value:"Enhancers",id:"enhancers",level:2}];function l(e){const t={code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",...(0,a.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"additional-cls-setup",children:"Additional CLS Setup"}),"\n",(0,s.jsx)(t.p,{children:"The CLS middleware/guard/interceptor provide some default functionality, but sometimes you might want to store more contextual things in the CLS."}),"\n",(0,s.jsxs)(t.p,{children:["This can be of course done in a custom enhancer bound after, but for this scenario, the options expose a ",(0,s.jsx)(t.code,{children:"setup"})," function, which will be executed in the enhancer right after the CLS context is set up."]}),"\n",(0,s.jsxs)(t.p,{children:["The function receives the ",(0,s.jsx)(t.code,{children:"ClsService"})," instance, and can be asynchronous."]}),"\n",(0,s.jsx)(t.h2,{id:"middleware",children:"Middleware"}),"\n",(0,s.jsxs)(t.p,{children:["In case of middleware the ",(0,s.jsx)(t.code,{children:"Request"})," and ",(0,s.jsx)(t.code,{children:"Response"})," objects are passed as the second and third parameters."]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-ts",children:"ClsModule.forRoot({\n middleware: {\n mount: true,\n // highlight-start\n setup: (cls, req: Request, res: Response) => {\n cls.set('TENANT_ID', req.params('tenant_id'));\n cls.set('AUTH', { authenticated: false });\n },\n // highlight-end\n },\n});\n"})}),"\n",(0,s.jsx)(t.h2,{id:"enhancers",children:"Enhancers"}),"\n",(0,s.jsxs)(t.p,{children:["In a guard or interceptor, the ",(0,s.jsx)(t.code,{children:"ExecutionContext"})," object is passed as a second parameter."]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-ts",children:"ClsModule.forRoot({\n interceptor: {\n mount: true,\n // highlight-start\n setup: (cls, context) => {\n const req = context.switchToHttp().getRequest<Request>();\n cls.set('TENANT_ID', req.params('tenant_id'));\n cls.set('AUTH', { authenticated: false });\n },\n // highlight-end\n },\n});\n"})})]})}function u(e={}){const{wrapper:t}={...(0,a.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},1670:(e,t,n)=>{n.d(t,{Z:()=>o,a:()=>r});var s=n(7378);const a={},i=s.createContext(a);function r(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/67fa07c1.8b7b0bb2.js b/assets/js/67fa07c1.8b7b0bb2.js deleted file mode 100755 index 4598018..0000000 --- a/assets/js/67fa07c1.8b7b0bb2.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[164],{5318:(e,t,r)=>{r.d(t,{Zo:()=>l,kt:()=>f});var n=r(7378);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),p=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},l=function(e){var t=p(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),u=p(r),d=o,f=u["".concat(c,".").concat(d)]||u[d]||m[d]||a;return r?n.createElement(f,i(i({ref:t},l),{},{components:r})):n.createElement(f,i({ref:t},l))}));function f(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=d;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[u]="string"==typeof e?e:o,i[1]=s;for(var p=2;p<a;p++)i[p]=r[p];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}d.displayName="MDXCreateElement"},275:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>m,frontMatter:()=>a,metadata:()=>s,toc:()=>p});var n=r(5773),o=(r(7378),r(5318));const a={},i="v2.x \u2192 v3.x",s={unversionedId:"migration-guide/v2x-v3x",id:"migration-guide/v2x-v3x",title:"v2.x \u2192 v3.x",description:"- The root registration method was renamed from register (resp. registerAsync) to forRoot (resp. forRootAsync) to align with the convention.",source:"@site/docs/06_migration-guide/01_v2x-v3x.md",sourceDirName:"06_migration-guide",slug:"/migration-guide/v2x-v3x",permalink:"/nestjs-cls/migration-guide/v2x-v3x",draft:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/06_migration-guide/01_v2x-v3x.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Migration guide",permalink:"/nestjs-cls/migration-guide/"}},c={},p=[],l={toc:p},u="wrapper";function m(e){let{components:t,...r}=e;return(0,o.kt)(u,(0,n.Z)({},l,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"v2x--v3x"},(0,o.kt)("inlineCode",{parentName:"h1"},"v2.x")," \u2192 ",(0,o.kt)("inlineCode",{parentName:"h1"},"v3.x")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"The root registration method was ",(0,o.kt)("em",{parentName:"p"},"renamed")," from ",(0,o.kt)("inlineCode",{parentName:"p"},"register")," (resp. ",(0,o.kt)("inlineCode",{parentName:"p"},"registerAsync"),") to ",(0,o.kt)("inlineCode",{parentName:"p"},"forRoot")," (resp. ",(0,o.kt)("inlineCode",{parentName:"p"},"forRootAsync"),") to align with the convention."),(0,o.kt)("pre",{parentName:"li"},(0,o.kt)("code",{parentName:"pre",className:"language-diff"},"// highlight-start\n- ClsModule.register({\n+ ClsModule.forRoot({\n// highlight-end\n middleware: { mount: true },\n }),\n"))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"Namespace injection support with ",(0,o.kt)("inlineCode",{parentName:"p"},"forFeature")," was dropped entirely, and now that method is used to register ",(0,o.kt)("a",{parentName:"p",href:"/nestjs-cls/features-and-use-cases/proxy-providers"},"Proxy Providers"),". If you still have a use case for namespaces, you can create a namespaced ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsService")," and use a custom provider to inject it.",(0,o.kt)("br",{parentName:"p"}),"\n","Example:"),(0,o.kt)("pre",{parentName:"li"},(0,o.kt)("code",{parentName:"pre",className:"language-ts"},"class MyContextService extends ClsService<MyStore> {}\nconst myContextService = new MyContextService(new AsyncLocalStorage());\n\n// [...]\nproviders: [\n {\n provide: MyContextService,\n useValue: myContextService,\n },\n];\n")))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6bb5cc7f.b7a03c73.js b/assets/js/6bb5cc7f.b7a03c73.js new file mode 100644 index 0000000..5442ab0 --- /dev/null +++ b/assets/js/6bb5cc7f.b7a03c73.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[499],{6035:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>r,contentTitle:()=>c,default:()=>l,frontMatter:()=>i,metadata:()=>a,toc:()=>d});var n=s(4246),o=s(1670);const i={},c="Breaking out of DI",a={id:"features-and-use-cases/breaking-out-of-di",title:"Breaking out of DI",description:"While this package aims to be compatible with NestJS's Dependency Injection, it is also possible to access the CLS context outside of it.",source:"@site/docs/03_features-and-use-cases/03_breaking-out-of-di.md",sourceDirName:"03_features-and-use-cases",slug:"/features-and-use-cases/breaking-out-of-di",permalink:"/nestjs-cls/features-and-use-cases/breaking-out-of-di",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/03_features-and-use-cases/03_breaking-out-of-di.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Additional CLS Setup",permalink:"/nestjs-cls/features-and-use-cases/additional-cls-setup"},next:{title:"Usage outside of web request",permalink:"/nestjs-cls/features-and-use-cases/usage-outside-of-web-request"}},r={},d=[];function u(e){const t={admonition:"admonition",code:"code",h1:"h1",p:"p",pre:"pre",strong:"strong",...(0,o.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"breaking-out-of-di",children:"Breaking out of DI"}),"\n",(0,n.jsx)(t.p,{children:"While this package aims to be compatible with NestJS's Dependency Injection, it is also possible to access the CLS context outside of it."}),"\n",(0,n.jsxs)(t.p,{children:["For that, it provides the static ",(0,n.jsx)(t.code,{children:"ClsServiceManager"})," class that exposes the ",(0,n.jsx)(t.code,{children:"getClsService()"})," method which can be used to retrieve the context outside of Nest's injection context (e.g. in top-level functions)"]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-ts",children:"function helper() {\n const cls = ClsServiceManager.getClsService();\n // you now have access to the shared storage\n console.log(cls.getId());\n}\n"})}),"\n",(0,n.jsx)(t.admonition,{type:"caution",children:(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Please note"}),": Only use this feature where absolutely necessary. Using this technique instead of dependency injection will make it difficult to mock the ClsService and your code will become harder to test."]})})]})}function l(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}},1670:(e,t,s)=>{s.d(t,{Z:()=>a,a:()=>c});var n=s(7378);const o={},i=n.createContext(o);function c(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:c(e.components),n.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6fbaaecb.c904afaa.js b/assets/js/6fbaaecb.c904afaa.js new file mode 100644 index 0000000..78fd66f --- /dev/null +++ b/assets/js/6fbaaecb.c904afaa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[979],{726:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>g,frontMatter:()=>r,metadata:()=>a,toc:()=>u});var i=t(4246),o=t(1670);const r={},s="Migration guide",a={id:"migration-guide/index",title:"Migration guide",description:"In case you're upgrading to a new major version of this library, follow the according migration guide.",source:"@site/docs/10_migration-guide/index.md",sourceDirName:"10_migration-guide",slug:"/migration-guide/",permalink:"/nestjs-cls/migration-guide/",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/10_migration-guide/index.md",tags:[],version:"current",frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Plugin API",permalink:"/nestjs-cls/plugins/plugin-api"},next:{title:"v3.x \u2192 v4.x",permalink:"/nestjs-cls/migration-guide/v3x-v4x"}},c={},u=[];function d(e){const n={h1:"h1",p:"p",...(0,o.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"migration-guide",children:"Migration guide"}),"\n",(0,i.jsx)(n.p,{children:"In case you're upgrading to a new major version of this library, follow the according migration guide."})]})}function g(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},1670:(e,n,t)=>{t.d(n,{Z:()=>a,a:()=>s});var i=t(7378);const o={},r=i.createContext(o);function s(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/734.9c54f551.js b/assets/js/734.9c54f551.js deleted file mode 100755 index 21a3e3f..0000000 --- a/assets/js/734.9c54f551.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see 734.9c54f551.js.LICENSE.txt */ -(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[734],{2500:(e,t,n)=>{"use strict";e.exports=n(2587)},7360:(e,t,n)=>{"use strict";var i=n(5567),r={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none",opacity:"1"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},dropdown:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},suggestions:{display:"block"},suggestion:{whiteSpace:"nowrap",cursor:"pointer"},suggestionChild:{whiteSpace:"normal"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:"0"},defaultClasses:{root:"algolia-autocomplete",prefix:"aa",noPrefix:!1,dropdownMenu:"dropdown-menu",input:"input",hint:"hint",suggestions:"suggestions",suggestion:"suggestion",cursor:"cursor",dataset:"dataset",empty:"empty"},appendTo:{wrapper:{position:"absolute",zIndex:"100",display:"none"},input:{},inputWithNoHint:{},dropdown:{display:"block"}}};i.isMsie()&&i.mixin(r.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),i.isMsie()&&i.isMsie()<=7&&i.mixin(r.input,{marginTop:"-1px"}),e.exports=r},3039:(e,t,n)=>{"use strict";var i="aaDataset",r="aaValue",s="aaDatum",o=n(5567),a=n(7294),u=n(4534),c=n(7360),l=n(2064);function h(e){var t;(e=e||{}).templates=e.templates||{},e.source||o.error("missing source"),e.name&&(t=e.name,!/^[_a-zA-Z0-9-]+$/.test(t))&&o.error("invalid dataset name: "+e.name),this.query=null,this._isEmpty=!0,this.highlight=!!e.highlight,this.name=void 0===e.name||null===e.name?o.getUniqueId():e.name,this.source=e.source,this.displayFn=function(e){return e=e||"value",o.isFunction(e)?e:t;function t(t){return t[e]}}(e.display||e.displayKey),this.debounce=e.debounce,this.cache=!1!==e.cache,this.templates=function(e,t){return{empty:e.empty&&o.templatify(e.empty),header:e.header&&o.templatify(e.header),footer:e.footer&&o.templatify(e.footer),suggestion:e.suggestion||n};function n(e){return"<p>"+t(e)+"</p>"}}(e.templates,this.displayFn),this.css=o.mixin({},c,e.appendTo?c.appendTo:{}),this.cssClasses=e.cssClasses=o.mixin({},c.defaultClasses,e.cssClasses||{}),this.cssClasses.prefix=e.cssClasses.formattedPrefix||o.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix);var n=o.className(this.cssClasses.prefix,this.cssClasses.dataset);this.$el=e.$menu&&e.$menu.find(n+"-"+this.name).length>0?a.element(e.$menu.find(n+"-"+this.name)[0]):a.element(u.dataset.replace("%CLASS%",this.name).replace("%PREFIX%",this.cssClasses.prefix).replace("%DATASET%",this.cssClasses.dataset)),this.$menu=e.$menu,this.clearCachedSuggestions()}h.extractDatasetName=function(e){return a.element(e).data(i)},h.extractValue=function(e){return a.element(e).data(r)},h.extractDatum=function(e){var t=a.element(e).data(s);return"string"==typeof t&&(t=JSON.parse(t)),t},o.mixin(h.prototype,l,{_render:function(e,t){if(this.$el){var n,c=this,l=[].slice.call(arguments,2);if(this.$el.empty(),n=t&&t.length,this._isEmpty=!n,!n&&this.templates.empty)this.$el.html(function(){var t=[].slice.call(arguments,0);return t=[{query:e,isEmpty:!0}].concat(t),c.templates.empty.apply(this,t)}.apply(this,l)).prepend(c.templates.header?h.apply(this,l):null).append(c.templates.footer?p.apply(this,l):null);else if(n)this.$el.html(function(){var e,n,l=[].slice.call(arguments,0),h=this,p=u.suggestions.replace("%PREFIX%",this.cssClasses.prefix).replace("%SUGGESTIONS%",this.cssClasses.suggestions);return e=a.element(p).css(this.css.suggestions),n=o.map(t,f),e.append.apply(e,n),e;function f(e){var t,n=u.suggestion.replace("%PREFIX%",h.cssClasses.prefix).replace("%SUGGESTION%",h.cssClasses.suggestion);return(t=a.element(n).attr({role:"option",id:["option",Math.floor(1e8*Math.random())].join("-")}).append(c.templates.suggestion.apply(this,[e].concat(l)))).data(i,c.name),t.data(r,c.displayFn(e)||void 0),t.data(s,JSON.stringify(e)),t.children().each((function(){a.element(this).css(h.css.suggestionChild)})),t}}.apply(this,l)).prepend(c.templates.header?h.apply(this,l):null).append(c.templates.footer?p.apply(this,l):null);else if(t&&!Array.isArray(t))throw new TypeError("suggestions must be an array");this.$menu&&this.$menu.addClass(this.cssClasses.prefix+(n?"with":"without")+"-"+this.name).removeClass(this.cssClasses.prefix+(n?"without":"with")+"-"+this.name),this.trigger("rendered",e)}function h(){var t=[].slice.call(arguments,0);return t=[{query:e,isEmpty:!n}].concat(t),c.templates.header.apply(this,t)}function p(){var t=[].slice.call(arguments,0);return t=[{query:e,isEmpty:!n}].concat(t),c.templates.footer.apply(this,t)}},getRoot:function(){return this.$el},update:function(e){function t(t){if(!this.canceled&&e===this.query){var n=[].slice.call(arguments,1);this.cacheSuggestions(e,t,n),this._render.apply(this,[e,t].concat(n))}}if(this.query=e,this.canceled=!1,this.shouldFetchFromCache(e))t.apply(this,[this.cachedSuggestions].concat(this.cachedRenderExtraArgs));else{var n=this,i=function(){n.canceled||n.source(e,t.bind(n))};if(this.debounce){clearTimeout(this.debounceTimeout),this.debounceTimeout=setTimeout((function(){n.debounceTimeout=null,i()}),this.debounce)}else i()}},cacheSuggestions:function(e,t,n){this.cachedQuery=e,this.cachedSuggestions=t,this.cachedRenderExtraArgs=n},shouldFetchFromCache:function(e){return this.cache&&this.cachedQuery===e&&this.cachedSuggestions&&this.cachedSuggestions.length},clearCachedSuggestions:function(){delete this.cachedQuery,delete this.cachedSuggestions,delete this.cachedRenderExtraArgs},cancel:function(){this.canceled=!0},clear:function(){this.$el&&(this.cancel(),this.$el.empty(),this.trigger("rendered",""))},isEmpty:function(){return this._isEmpty},destroy:function(){this.clearCachedSuggestions(),this.$el=null}}),e.exports=h},2570:(e,t,n)=>{"use strict";var i=n(5567),r=n(7294),s=n(2064),o=n(3039),a=n(7360);function u(e){var t,n,s,o=this;(e=e||{}).menu||i.error("menu is required"),i.isArray(e.datasets)||i.isObject(e.datasets)||i.error("1 or more datasets required"),e.datasets||i.error("datasets is required"),this.isOpen=!1,this.isEmpty=!0,this.minLength=e.minLength||0,this.templates={},this.appendTo=e.appendTo||!1,this.css=i.mixin({},a,e.appendTo?a.appendTo:{}),this.cssClasses=e.cssClasses=i.mixin({},a.defaultClasses,e.cssClasses||{}),this.cssClasses.prefix=e.cssClasses.formattedPrefix||i.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),t=i.bind(this._onSuggestionClick,this),n=i.bind(this._onSuggestionMouseEnter,this),s=i.bind(this._onSuggestionMouseLeave,this);var c=i.className(this.cssClasses.prefix,this.cssClasses.suggestion);this.$menu=r.element(e.menu).on("mouseenter.aa",c,n).on("mouseleave.aa",c,s).on("click.aa",c,t),this.$container=e.appendTo?e.wrapper:this.$menu,e.templates&&e.templates.header&&(this.templates.header=i.templatify(e.templates.header),this.$menu.prepend(this.templates.header())),e.templates&&e.templates.empty&&(this.templates.empty=i.templatify(e.templates.empty),this.$empty=r.element('<div class="'+i.className(this.cssClasses.prefix,this.cssClasses.empty,!0)+'"></div>'),this.$menu.append(this.$empty),this.$empty.hide()),this.datasets=i.map(e.datasets,(function(t){return function(e,t,n){return new u.Dataset(i.mixin({$menu:e,cssClasses:n},t))}(o.$menu,t,e.cssClasses)})),i.each(this.datasets,(function(e){var t=e.getRoot();t&&0===t.parent().length&&o.$menu.append(t),e.onSync("rendered",o._onRendered,o)})),e.templates&&e.templates.footer&&(this.templates.footer=i.templatify(e.templates.footer),this.$menu.append(this.templates.footer()));var l=this;r.element(window).resize((function(){l._redraw()}))}i.mixin(u.prototype,s,{_onSuggestionClick:function(e){this.trigger("suggestionClicked",r.element(e.currentTarget))},_onSuggestionMouseEnter:function(e){var t=r.element(e.currentTarget);if(!t.hasClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0))){this._removeCursor();var n=this;setTimeout((function(){n._setCursor(t,!1)}),0)}},_onSuggestionMouseLeave:function(e){if(e.relatedTarget&&r.element(e.relatedTarget).closest("."+i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).length>0)return;this._removeCursor(),this.trigger("cursorRemoved")},_onRendered:function(e,t){if(this.isEmpty=i.every(this.datasets,(function(e){return e.isEmpty()})),this.isEmpty)if(t.length>=this.minLength&&this.trigger("empty"),this.$empty)if(t.length<this.minLength)this._hide();else{var n=this.templates.empty({query:this.datasets[0]&&this.datasets[0].query});this.$empty.html(n),this.$empty.show(),this._show()}else i.any(this.datasets,(function(e){return e.templates&&e.templates.empty}))?t.length<this.minLength?this._hide():this._show():this._hide();else this.isOpen&&(this.$empty&&(this.$empty.empty(),this.$empty.hide()),t.length>=this.minLength?this._show():this._hide());this.trigger("datasetRendered")},_hide:function(){this.$container.hide()},_show:function(){this.$container.css("display","block"),this._redraw(),this.trigger("shown")},_redraw:function(){this.isOpen&&this.appendTo&&this.trigger("redrawn")},_getSuggestions:function(){return this.$menu.find(i.className(this.cssClasses.prefix,this.cssClasses.suggestion))},_getCursor:function(){return this.$menu.find(i.className(this.cssClasses.prefix,this.cssClasses.cursor)).first()},_setCursor:function(e,t){e.first().addClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).attr("aria-selected","true"),this.trigger("cursorMoved",t)},_removeCursor:function(){this._getCursor().removeClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).removeAttr("aria-selected")},_moveCursor:function(e){var t,n,i,r;this.isOpen&&(n=this._getCursor(),t=this._getSuggestions(),this._removeCursor(),-1!==(i=((i=t.index(n)+e)+1)%(t.length+1)-1)?(i<-1&&(i=t.length-1),this._setCursor(r=t.eq(i),!0),this._ensureVisible(r)):this.trigger("cursorRemoved"))},_ensureVisible:function(e){var t,n,i,r;n=(t=e.position().top)+e.height()+parseInt(e.css("margin-top"),10)+parseInt(e.css("margin-bottom"),10),i=this.$menu.scrollTop(),r=this.$menu.height()+parseInt(this.$menu.css("padding-top"),10)+parseInt(this.$menu.css("padding-bottom"),10),t<0?this.$menu.scrollTop(i+t):r<n&&this.$menu.scrollTop(i+(n-r))},close:function(){this.isOpen&&(this.isOpen=!1,this._removeCursor(),this._hide(),this.trigger("closed"))},open:function(){this.isOpen||(this.isOpen=!0,this.isEmpty||this._show(),this.trigger("opened"))},setLanguageDirection:function(e){this.$menu.css("ltr"===e?this.css.ltr:this.css.rtl)},moveCursorUp:function(){this._moveCursor(-1)},moveCursorDown:function(){this._moveCursor(1)},getDatumForSuggestion:function(e){var t=null;return e.length&&(t={raw:o.extractDatum(e),value:o.extractValue(e),datasetName:o.extractDatasetName(e)}),t},getCurrentCursor:function(){return this._getCursor().first()},getDatumForCursor:function(){return this.getDatumForSuggestion(this._getCursor().first())},getDatumForTopSuggestion:function(){return this.getDatumForSuggestion(this._getSuggestions().first())},cursorTopSuggestion:function(){this._setCursor(this._getSuggestions().first(),!1)},update:function(e){i.each(this.datasets,(function(t){t.update(e)}))},empty:function(){i.each(this.datasets,(function(e){e.clear()})),this.isEmpty=!0},isVisible:function(){return this.isOpen&&!this.isEmpty},destroy:function(){this.$menu.off(".aa"),this.$menu=null,i.each(this.datasets,(function(e){e.destroy()}))}}),u.Dataset=o,e.exports=u},8924:(e,t,n)=>{"use strict";var i=n(5567),r=n(7294);function s(e){e&&e.el||i.error("EventBus initialized without el"),this.$el=r.element(e.el)}i.mixin(s.prototype,{trigger:function(e,t,n,r){var s=i.Event("autocomplete:"+e);return this.$el.trigger(s,[t,n,r]),s}}),e.exports=s},2064:(e,t,n)=>{"use strict";var i=n(8194),r=/\s+/;function s(e,t,n,i){var s;if(!n)return this;for(t=t.split(r),n=i?function(e,t){return e.bind?e.bind(t):function(){e.apply(t,[].slice.call(arguments,0))}}(n,i):n,this._callbacks=this._callbacks||{};s=t.shift();)this._callbacks[s]=this._callbacks[s]||{sync:[],async:[]},this._callbacks[s][e].push(n);return this}function o(e,t,n){return function(){for(var i,r=0,s=e.length;!i&&r<s;r+=1)i=!1===e[r].apply(t,n);return!i}}e.exports={onSync:function(e,t,n){return s.call(this,"sync",e,t,n)},onAsync:function(e,t,n){return s.call(this,"async",e,t,n)},off:function(e){var t;if(!this._callbacks)return this;e=e.split(r);for(;t=e.shift();)delete this._callbacks[t];return this},trigger:function(e){var t,n,s,a,u;if(!this._callbacks)return this;e=e.split(r),s=[].slice.call(arguments,1);for(;(t=e.shift())&&(n=this._callbacks[t]);)a=o(n.sync,this,[t].concat(s)),u=o(n.async,this,[t].concat(s)),a()&&i(u);return this}}},4534:e=>{"use strict";e.exports={wrapper:'<span class="%ROOT%"></span>',dropdown:'<span class="%PREFIX%%DROPDOWN_MENU%"></span>',dataset:'<div class="%PREFIX%%DATASET%-%CLASS%"></div>',suggestions:'<span class="%PREFIX%%SUGGESTIONS%"></span>',suggestion:'<div class="%PREFIX%%SUGGESTION%"></div>'}},2981:(e,t,n)=>{"use strict";var i;i={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"};var r=n(5567),s=n(7294),o=n(2064);function a(e){var t,n,o,a,u,c=this;(e=e||{}).input||r.error("input is missing"),t=r.bind(this._onBlur,this),n=r.bind(this._onFocus,this),o=r.bind(this._onKeydown,this),a=r.bind(this._onInput,this),this.$hint=s.element(e.hint),this.$input=s.element(e.input).on("blur.aa",t).on("focus.aa",n).on("keydown.aa",o),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=r.noop),r.isMsie()?this.$input.on("keydown.aa keypress.aa cut.aa paste.aa",(function(e){i[e.which||e.keyCode]||r.defer(r.bind(c._onInput,c,e))})):this.$input.on("input.aa",a),this.query=this.$input.val(),this.$overflowHelper=(u=this.$input,s.element('<pre aria-hidden="true"></pre>').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:u.css("font-family"),fontSize:u.css("font-size"),fontStyle:u.css("font-style"),fontVariant:u.css("font-variant"),fontWeight:u.css("font-weight"),wordSpacing:u.css("word-spacing"),letterSpacing:u.css("letter-spacing"),textIndent:u.css("text-indent"),textRendering:u.css("text-rendering"),textTransform:u.css("text-transform")}).insertAfter(u))}function u(e){return e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}a.normalizeQuery=function(e){return(e||"").replace(/^\s*/g,"").replace(/\s{2,}/g," ")},r.mixin(a.prototype,o,{_onBlur:function(){this.resetInputValue(),this.$input.removeAttr("aria-activedescendant"),this.trigger("blurred")},_onFocus:function(){this.trigger("focused")},_onKeydown:function(e){var t=i[e.which||e.keyCode];this._managePreventDefault(t,e),t&&this._shouldTrigger(t,e)&&this.trigger(t+"Keyed",e)},_onInput:function(){this._checkInputValue()},_managePreventDefault:function(e,t){var n,i,r;switch(e){case"tab":i=this.getHint(),r=this.getInputValue(),n=i&&i!==r&&!u(t);break;case"up":case"down":n=!u(t);break;default:n=!1}n&&t.preventDefault()},_shouldTrigger:function(e,t){var n;if("tab"===e)n=!u(t);else n=!0;return n},_checkInputValue:function(){var e,t,n,i,r;e=this.getInputValue(),i=e,r=this.query,n=!(!(t=a.normalizeQuery(i)===a.normalizeQuery(r))||!this.query)&&this.query.length!==e.length,this.query=e,t?n&&this.trigger("whitespaceChanged",this.query):this.trigger("queryChanged",this.query)},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getQuery:function(){return this.query},setQuery:function(e){this.query=e},getInputValue:function(){return this.$input.val()},setInputValue:function(e,t){void 0===e&&(e=this.query),this.$input.val(e),t?this.clearHint():this._checkInputValue()},expand:function(){this.$input.attr("aria-expanded","true")},collapse:function(){this.$input.attr("aria-expanded","false")},setActiveDescendant:function(e){this.$input.attr("aria-activedescendant",e)},removeActiveDescendant:function(){this.$input.removeAttr("aria-activedescendant")},resetInputValue:function(){this.setInputValue(this.query,!0)},getHint:function(){return this.$hint.val()},setHint:function(e){this.$hint.val(e)},clearHint:function(){this.setHint("")},clearHintIfInvalid:function(){var e,t,n;n=(e=this.getInputValue())!==(t=this.getHint())&&0===t.indexOf(e),""!==e&&n&&!this.hasOverflow()||this.clearHint()},getLanguageDirection:function(){return(this.$input.css("direction")||"ltr").toLowerCase()},hasOverflow:function(){var e=this.$input.width()-2;return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>=e},isCursorAtEnd:function(){var e,t,n;return e=this.$input.val().length,t=this.$input[0].selectionStart,r.isNumber(t)?t===e:!document.selection||((n=document.selection.createRange()).moveStart("character",-e),e===n.text.length)},destroy:function(){this.$hint.off(".aa"),this.$input.off(".aa"),this.$hint=this.$input=this.$overflowHelper=null}}),e.exports=a},4015:(e,t,n)=>{"use strict";var i="aaAttrs",r=n(5567),s=n(7294),o=n(8924),a=n(2981),u=n(2570),c=n(4534),l=n(7360);function h(e){var t,n;if((e=e||{}).input||r.error("missing input"),this.isActivated=!1,this.debug=!!e.debug,this.autoselect=!!e.autoselect,this.autoselectOnBlur=!!e.autoselectOnBlur,this.openOnFocus=!!e.openOnFocus,this.minLength=r.isNumber(e.minLength)?e.minLength:1,this.autoWidth=void 0===e.autoWidth||!!e.autoWidth,this.clearOnSelected=!!e.clearOnSelected,this.tabAutocomplete=void 0===e.tabAutocomplete||!!e.tabAutocomplete,e.hint=!!e.hint,e.hint&&e.appendTo)throw new Error("[autocomplete.js] hint and appendTo options can't be used at the same time");this.css=e.css=r.mixin({},l,e.appendTo?l.appendTo:{}),this.cssClasses=e.cssClasses=r.mixin({},l.defaultClasses,e.cssClasses||{}),this.cssClasses.prefix=e.cssClasses.formattedPrefix=r.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),this.listboxId=e.listboxId=[this.cssClasses.root,"listbox",r.getUniqueId()].join("-");var a=function(e){var t,n,o,a;t=s.element(e.input),n=s.element(c.wrapper.replace("%ROOT%",e.cssClasses.root)).css(e.css.wrapper),e.appendTo||"block"!==t.css("display")||"table"!==t.parent().css("display")||n.css("display","table-cell");var u=c.dropdown.replace("%PREFIX%",e.cssClasses.prefix).replace("%DROPDOWN_MENU%",e.cssClasses.dropdownMenu);o=s.element(u).css(e.css.dropdown).attr({role:"listbox",id:e.listboxId}),e.templates&&e.templates.dropdownMenu&&o.html(r.templatify(e.templates.dropdownMenu)());a=t.clone().css(e.css.hint).css(function(e){return{backgroundAttachment:e.css("background-attachment"),backgroundClip:e.css("background-clip"),backgroundColor:e.css("background-color"),backgroundImage:e.css("background-image"),backgroundOrigin:e.css("background-origin"),backgroundPosition:e.css("background-position"),backgroundRepeat:e.css("background-repeat"),backgroundSize:e.css("background-size")}}(t)),a.val("").addClass(r.className(e.cssClasses.prefix,e.cssClasses.hint,!0)).removeAttr("id name placeholder required").prop("readonly",!0).attr({"aria-hidden":"true",autocomplete:"off",spellcheck:"false",tabindex:-1}),a.removeData&&a.removeData();t.data(i,{"aria-autocomplete":t.attr("aria-autocomplete"),"aria-expanded":t.attr("aria-expanded"),"aria-owns":t.attr("aria-owns"),autocomplete:t.attr("autocomplete"),dir:t.attr("dir"),role:t.attr("role"),spellcheck:t.attr("spellcheck"),style:t.attr("style"),type:t.attr("type")}),t.addClass(r.className(e.cssClasses.prefix,e.cssClasses.input,!0)).attr({autocomplete:"off",spellcheck:!1,role:"combobox","aria-autocomplete":e.datasets&&e.datasets[0]&&e.datasets[0].displayKey?"both":"list","aria-expanded":"false","aria-label":e.ariaLabel,"aria-owns":e.listboxId}).css(e.hint?e.css.input:e.css.inputWithNoHint);try{t.attr("dir")||t.attr("dir","auto")}catch(l){}return n=e.appendTo?n.appendTo(s.element(e.appendTo).eq(0)).eq(0):t.wrap(n).parent(),n.prepend(e.hint?a:null).append(o),{wrapper:n,input:t,hint:a,menu:o}}(e);this.$node=a.wrapper;var u=this.$input=a.input;t=a.menu,n=a.hint,e.dropdownMenuContainer&&s.element(e.dropdownMenuContainer).css("position","relative").append(t.css("top","0")),u.on("blur.aa",(function(e){var n=document.activeElement;r.isMsie()&&(t[0]===n||t[0].contains(n))&&(e.preventDefault(),e.stopImmediatePropagation(),r.defer((function(){u.focus()})))})),t.on("mousedown.aa",(function(e){e.preventDefault()})),this.eventBus=e.eventBus||new o({el:u}),this.dropdown=new h.Dropdown({appendTo:e.appendTo,wrapper:this.$node,menu:t,datasets:e.datasets,templates:e.templates,cssClasses:e.cssClasses,minLength:this.minLength}).onSync("suggestionClicked",this._onSuggestionClicked,this).onSync("cursorMoved",this._onCursorMoved,this).onSync("cursorRemoved",this._onCursorRemoved,this).onSync("opened",this._onOpened,this).onSync("closed",this._onClosed,this).onSync("shown",this._onShown,this).onSync("empty",this._onEmpty,this).onSync("redrawn",this._onRedrawn,this).onAsync("datasetRendered",this._onDatasetRendered,this),this.input=new h.Input({input:u,hint:n}).onSync("focused",this._onFocused,this).onSync("blurred",this._onBlurred,this).onSync("enterKeyed",this._onEnterKeyed,this).onSync("tabKeyed",this._onTabKeyed,this).onSync("escKeyed",this._onEscKeyed,this).onSync("upKeyed",this._onUpKeyed,this).onSync("downKeyed",this._onDownKeyed,this).onSync("leftKeyed",this._onLeftKeyed,this).onSync("rightKeyed",this._onRightKeyed,this).onSync("queryChanged",this._onQueryChanged,this).onSync("whitespaceChanged",this._onWhitespaceChanged,this),this._bindKeyboardShortcuts(e),this._setLanguageDirection()}r.mixin(h.prototype,{_bindKeyboardShortcuts:function(e){if(e.keyboardShortcuts){var t=this.$input,n=[];r.each(e.keyboardShortcuts,(function(e){"string"==typeof e&&(e=e.toUpperCase().charCodeAt(0)),n.push(e)})),s.element(document).keydown((function(e){var i=e.target||e.srcElement,r=i.tagName;if(!i.isContentEditable&&"INPUT"!==r&&"SELECT"!==r&&"TEXTAREA"!==r){var s=e.which||e.keyCode;-1!==n.indexOf(s)&&(t.focus(),e.stopPropagation(),e.preventDefault())}}))}},_onSuggestionClicked:function(e,t){var n;(n=this.dropdown.getDatumForSuggestion(t))&&this._select(n,{selectionMethod:"click"})},_onCursorMoved:function(e,t){var n=this.dropdown.getDatumForCursor(),i=this.dropdown.getCurrentCursor().attr("id");this.input.setActiveDescendant(i),n&&(t&&this.input.setInputValue(n.value,!0),this.eventBus.trigger("cursorchanged",n.raw,n.datasetName))},_onCursorRemoved:function(){this.input.resetInputValue(),this._updateHint(),this.eventBus.trigger("cursorremoved")},_onDatasetRendered:function(){this._updateHint(),this.eventBus.trigger("updated")},_onOpened:function(){this._updateHint(),this.input.expand(),this.eventBus.trigger("opened")},_onEmpty:function(){this.eventBus.trigger("empty")},_onRedrawn:function(){this.$node.css("top","0px"),this.$node.css("left","0px");var e=this.$input[0].getBoundingClientRect();this.autoWidth&&this.$node.css("width",e.width+"px");var t=this.$node[0].getBoundingClientRect(),n=e.bottom-t.top;this.$node.css("top",n+"px");var i=e.left-t.left;this.$node.css("left",i+"px"),this.eventBus.trigger("redrawn")},_onShown:function(){this.eventBus.trigger("shown"),this.autoselect&&this.dropdown.cursorTopSuggestion()},_onClosed:function(){this.input.clearHint(),this.input.removeActiveDescendant(),this.input.collapse(),this.eventBus.trigger("closed")},_onFocused:function(){if(this.isActivated=!0,this.openOnFocus){var e=this.input.getQuery();e.length>=this.minLength?this.dropdown.update(e):this.dropdown.empty(),this.dropdown.open()}},_onBlurred:function(){var e,t;e=this.dropdown.getDatumForCursor(),t=this.dropdown.getDatumForTopSuggestion();var n={selectionMethod:"blur"};this.debug||(this.autoselectOnBlur&&e?this._select(e,n):this.autoselectOnBlur&&t?this._select(t,n):(this.isActivated=!1,this.dropdown.empty(),this.dropdown.close()))},_onEnterKeyed:function(e,t){var n,i;n=this.dropdown.getDatumForCursor(),i=this.dropdown.getDatumForTopSuggestion();var r={selectionMethod:"enterKey"};n?(this._select(n,r),t.preventDefault()):this.autoselect&&i&&(this._select(i,r),t.preventDefault())},_onTabKeyed:function(e,t){if(this.tabAutocomplete){var n;(n=this.dropdown.getDatumForCursor())?(this._select(n,{selectionMethod:"tabKey"}),t.preventDefault()):this._autocomplete(!0)}else this.dropdown.close()},_onEscKeyed:function(){this.dropdown.close(),this.input.resetInputValue()},_onUpKeyed:function(){var e=this.input.getQuery();this.dropdown.isEmpty&&e.length>=this.minLength?this.dropdown.update(e):this.dropdown.moveCursorUp(),this.dropdown.open()},_onDownKeyed:function(){var e=this.input.getQuery();this.dropdown.isEmpty&&e.length>=this.minLength?this.dropdown.update(e):this.dropdown.moveCursorDown(),this.dropdown.open()},_onLeftKeyed:function(){"rtl"===this.dir&&this._autocomplete()},_onRightKeyed:function(){"ltr"===this.dir&&this._autocomplete()},_onQueryChanged:function(e,t){this.input.clearHintIfInvalid(),t.length>=this.minLength?this.dropdown.update(t):this.dropdown.empty(),this.dropdown.open(),this._setLanguageDirection()},_onWhitespaceChanged:function(){this._updateHint(),this.dropdown.open()},_setLanguageDirection:function(){var e=this.input.getLanguageDirection();this.dir!==e&&(this.dir=e,this.$node.css("direction",e),this.dropdown.setLanguageDirection(e))},_updateHint:function(){var e,t,n,i,s;(e=this.dropdown.getDatumForTopSuggestion())&&this.dropdown.isVisible()&&!this.input.hasOverflow()?(t=this.input.getInputValue(),n=a.normalizeQuery(t),i=r.escapeRegExChars(n),(s=new RegExp("^(?:"+i+")(.+$)","i").exec(e.value))?this.input.setHint(t+s[1]):this.input.clearHint()):this.input.clearHint()},_autocomplete:function(e){var t,n,i,r;t=this.input.getHint(),n=this.input.getQuery(),i=e||this.input.isCursorAtEnd(),t&&n!==t&&i&&((r=this.dropdown.getDatumForTopSuggestion())&&this.input.setInputValue(r.value),this.eventBus.trigger("autocompleted",r.raw,r.datasetName))},_select:function(e,t){void 0!==e.value&&this.input.setQuery(e.value),this.clearOnSelected?this.setVal(""):this.input.setInputValue(e.value,!0),this._setLanguageDirection(),!1===this.eventBus.trigger("selected",e.raw,e.datasetName,t).isDefaultPrevented()&&(this.dropdown.close(),r.defer(r.bind(this.dropdown.empty,this.dropdown)))},open:function(){if(!this.isActivated){var e=this.input.getInputValue();e.length>=this.minLength?this.dropdown.update(e):this.dropdown.empty()}this.dropdown.open()},close:function(){this.dropdown.close()},setVal:function(e){e=r.toStr(e),this.isActivated?this.input.setInputValue(e):(this.input.setQuery(e),this.input.setInputValue(e,!0)),this._setLanguageDirection()},getVal:function(){return this.input.getQuery()},destroy:function(){this.input.destroy(),this.dropdown.destroy(),function(e,t){var n=e.find(r.className(t.prefix,t.input));r.each(n.data(i),(function(e,t){void 0===e?n.removeAttr(t):n.attr(t,e)})),n.detach().removeClass(r.className(t.prefix,t.input,!0)).insertAfter(e),n.removeData&&n.removeData(i);e.remove()}(this.$node,this.cssClasses),this.$node=null},getWrapper:function(){return this.dropdown.$container[0]}}),h.Dropdown=u,h.Input=a,h.sources=n(7514),e.exports=h},7294:e=>{"use strict";e.exports={element:null}},2314:e=>{"use strict";e.exports=function(e){var t=e.match(/Algolia for JavaScript \((\d+\.)(\d+\.)(\d+)\)/)||e.match(/Algolia for vanilla JavaScript (\d+\.)(\d+\.)(\d+)/);if(t)return[t[1],t[2],t[3]]}},5567:(e,t,n)=>{"use strict";var i,r=n(7294);function s(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}e.exports={isArray:null,isFunction:null,isObject:null,bind:null,each:null,map:null,mixin:null,isMsie:function(e){if(void 0===e&&(e=navigator.userAgent),/(msie|trident)/i.test(e)){var t=e.match(/(msie |rv:)(\d+(.\d+)?)/i);if(t)return t[2]}return!1},escapeRegExChars:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isNumber:function(e){return"number"==typeof e},toStr:function(e){return null==e?"":e+""},cloneDeep:function(e){var t=this.mixin({},e),n=this;return this.each(t,(function(e,i){e&&(n.isArray(e)?t[i]=[].concat(e):n.isObject(e)&&(t[i]=n.cloneDeep(e)))})),t},error:function(e){throw new Error(e)},every:function(e,t){var n=!0;return e?(this.each(e,(function(i,r){n&&(n=t.call(null,i,r,e)&&n)})),!!n):n},any:function(e,t){var n=!1;return e?(this.each(e,(function(i,r){if(t.call(null,i,r,e))return n=!0,!1})),n):n},getUniqueId:(i=0,function(){return i++}),templatify:function(e){if(this.isFunction(e))return e;var t=r.element(e);return"SCRIPT"===t.prop("tagName")?function(){return t.text()}:function(){return String(e)}},defer:function(e){setTimeout(e,0)},noop:function(){},formatPrefix:function(e,t){return t?"":e+"-"},className:function(e,t,n){return(n?"":".")+e+t},escapeHighlightedString:function(e,t,n){t=t||"<em>";var i=document.createElement("div");i.appendChild(document.createTextNode(t)),n=n||"</em>";var r=document.createElement("div");r.appendChild(document.createTextNode(n));var o=document.createElement("div");return o.appendChild(document.createTextNode(e)),o.innerHTML.replace(RegExp(s(i.innerHTML),"g"),t).replace(RegExp(s(r.innerHTML),"g"),n)}}},9529:(e,t,n)=>{"use strict";var i=n(5567),r=n(5293),s=n(2314);e.exports=function(e,t){var n=s(e.as._ua);return n&&n[0]>=3&&n[1]>20&&((t=t||{}).additionalUA="autocomplete.js "+r),function(n,r){e.search(n,t,(function(e,t){e?i.error(e.message):r(t.hits,t)}))}}},7514:(e,t,n)=>{"use strict";e.exports={hits:n(9529),popularIn:n(3692)}},3692:(e,t,n)=>{"use strict";var i=n(5567),r=n(5293),s=n(2314);e.exports=function(e,t,n,o){var a=s(e.as._ua);if(a&&a[0]>=3&&a[1]>20&&((t=t||{}).additionalUA="autocomplete.js "+r),!n.source)return i.error("Missing 'source' key");var u=i.isFunction(n.source)?n.source:function(e){return e[n.source]};if(!n.index)return i.error("Missing 'index' key");var c=n.index;return o=o||{},function(a,l){e.search(a,t,(function(e,a){if(e)i.error(e.message);else{if(a.hits.length>0){var h=a.hits[0],p=i.mixin({hitsPerPage:0},n);delete p.source,delete p.index;var f=s(c.as._ua);return f&&f[0]>=3&&f[1]>20&&(t.additionalUA="autocomplete.js "+r),void c.search(u(h),p,(function(e,t){if(e)i.error(e.message);else{var n=[];if(o.includeAll){var r=o.allTitle||"All departments";n.push(i.mixin({facet:{value:r,count:t.nbHits}},i.cloneDeep(h)))}i.each(t.facets,(function(e,t){i.each(e,(function(e,r){n.push(i.mixin({facet:{facet:t,value:r,count:e}},i.cloneDeep(h)))}))}));for(var s=1;s<a.hits.length;++s)n.push(a.hits[s]);l(n,a)}}))}l([])}}))}}},2587:(e,t,n)=>{"use strict";var i=n(3847);n(7294).element=i;var r=n(5567);r.isArray=i.isArray,r.isFunction=i.isFunction,r.isObject=i.isPlainObject,r.bind=i.proxy,r.each=function(e,t){i.each(e,(function(e,n){return t(n,e)}))},r.map=i.map,r.mixin=i.extend,r.Event=i.Event;var s="aaAutocomplete",o=n(4015),a=n(8924);function u(e,t,n,u){n=r.isArray(n)?n:[].slice.call(arguments,2);var c=i(e).each((function(e,r){var c=i(r),l=new a({el:c}),h=u||new o({input:c,eventBus:l,dropdownMenuContainer:t.dropdownMenuContainer,hint:void 0===t.hint||!!t.hint,minLength:t.minLength,autoselect:t.autoselect,autoselectOnBlur:t.autoselectOnBlur,tabAutocomplete:t.tabAutocomplete,openOnFocus:t.openOnFocus,templates:t.templates,debug:t.debug,clearOnSelected:t.clearOnSelected,cssClasses:t.cssClasses,datasets:n,keyboardShortcuts:t.keyboardShortcuts,appendTo:t.appendTo,autoWidth:t.autoWidth,ariaLabel:t.ariaLabel||r.getAttribute("aria-label")});c.data(s,h)}));return c.autocomplete={},r.each(["open","close","getVal","setVal","destroy","getWrapper"],(function(e){c.autocomplete[e]=function(){var t,n=arguments;return c.each((function(r,o){var a=i(o).data(s);t=a[e].apply(a,n)})),t}})),c}u.sources=o.sources,u.escapeHighlightedString=r.escapeHighlightedString;var c="autocomplete"in window,l=window.autocomplete;u.noConflict=function(){return c?window.autocomplete=l:delete window.autocomplete,u},e.exports=u},5293:e=>{e.exports="0.37.1"},3847:e=>{var t;t=window,e.exports=function(e){var t,n,i=function(){var t,n,i,r,s,o,a=[],u=a.concat,c=a.filter,l=a.slice,h=e.document,p={},f={},d={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},g=/^\s*<(\w+|!)[^>]*>/,m=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,v=/^(?:body|html)$/i,x=/([A-Z])/g,w=["val","css","html","text","data","width","height","offset"],b=["after","prepend","before","append"],S=h.createElement("table"),C=h.createElement("tr"),E={tr:h.createElement("tbody"),tbody:S,thead:S,tfoot:S,td:C,th:C,"*":h.createElement("div")},k=/complete|loaded|interactive/,T=/^[\w-]*$/,_={},O=_.toString,A={},P=h.createElement("div"),L={tabindex:"tabIndex",readonly:"readOnly",for:"htmlFor",class:"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},Q=Array.isArray||function(e){return e instanceof Array};function I(e){return null==e?String(e):_[O.call(e)]||"object"}function N(e){return"function"==I(e)}function $(e){return null!=e&&e==e.window}function D(e){return null!=e&&e.nodeType==e.DOCUMENT_NODE}function R(e){return"object"==I(e)}function F(e){return R(e)&&!$(e)&&Object.getPrototypeOf(e)==Object.prototype}function j(e){var t=!!e&&"length"in e&&e.length,n=i.type(e);return"function"!=n&&!$(e)&&("array"==n||0===t||"number"==typeof t&&t>0&&t-1 in e)}function M(e){return c.call(e,(function(e){return null!=e}))}function V(e){return e.length>0?i.fn.concat.apply([],e):e}function B(e){return e.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function q(e){return e in f?f[e]:f[e]=new RegExp("(^|\\s)"+e+"(\\s|$)")}function z(e,t){return"number"!=typeof t||d[B(e)]?t:t+"px"}function H(e){var t,n;return p[e]||(t=h.createElement(e),h.body.appendChild(t),n=getComputedStyle(t,"").getPropertyValue("display"),t.parentNode.removeChild(t),"none"==n&&(n="block"),p[e]=n),p[e]}function K(e){return"children"in e?l.call(e.children):i.map(e.childNodes,(function(e){if(1==e.nodeType)return e}))}function W(e,t){var n,i=e?e.length:0;for(n=0;n<i;n++)this[n]=e[n];this.length=i,this.selector=t||""}function U(e,i,r){for(n in i)r&&(F(i[n])||Q(i[n]))?(F(i[n])&&!F(e[n])&&(e[n]={}),Q(i[n])&&!Q(e[n])&&(e[n]=[]),U(e[n],i[n],r)):i[n]!==t&&(e[n]=i[n])}function G(e,t){return null==t?i(e):i(e).filter(t)}function Z(e,t,n,i){return N(t)?t.call(e,n,i):t}function X(e,t,n){null==n?e.removeAttribute(t):e.setAttribute(t,n)}function J(e,n){var i=e.className||"",r=i&&i.baseVal!==t;if(n===t)return r?i.baseVal:i;r?i.baseVal=n:e.className=n}function Y(e){try{return e?"true"==e||"false"!=e&&("null"==e?null:+e+""==e?+e:/^[\[\{]/.test(e)?i.parseJSON(e):e):e}catch(t){return e}}function ee(e,t){t(e);for(var n=0,i=e.childNodes.length;n<i;n++)ee(e.childNodes[n],t)}return A.matches=function(e,t){if(!t||!e||1!==e.nodeType)return!1;var n=e.matches||e.webkitMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.matchesSelector;if(n)return n.call(e,t);var i,r=e.parentNode,s=!r;return s&&(r=P).appendChild(e),i=~A.qsa(r,t).indexOf(e),s&&P.removeChild(e),i},s=function(e){return e.replace(/-+(.)?/g,(function(e,t){return t?t.toUpperCase():""}))},o=function(e){return c.call(e,(function(t,n){return e.indexOf(t)==n}))},A.fragment=function(e,n,r){var s,o,a;return m.test(e)&&(s=i(h.createElement(RegExp.$1))),s||(e.replace&&(e=e.replace(y,"<$1></$2>")),n===t&&(n=g.test(e)&&RegExp.$1),n in E||(n="*"),(a=E[n]).innerHTML=""+e,s=i.each(l.call(a.childNodes),(function(){a.removeChild(this)}))),F(r)&&(o=i(s),i.each(r,(function(e,t){w.indexOf(e)>-1?o[e](t):o.attr(e,t)}))),s},A.Z=function(e,t){return new W(e,t)},A.isZ=function(e){return e instanceof A.Z},A.init=function(e,n){var r;if(!e)return A.Z();if("string"==typeof e)if("<"==(e=e.trim())[0]&&g.test(e))r=A.fragment(e,RegExp.$1,n),e=null;else{if(n!==t)return i(n).find(e);r=A.qsa(h,e)}else{if(N(e))return i(h).ready(e);if(A.isZ(e))return e;if(Q(e))r=M(e);else if(R(e))r=[e],e=null;else if(g.test(e))r=A.fragment(e.trim(),RegExp.$1,n),e=null;else{if(n!==t)return i(n).find(e);r=A.qsa(h,e)}}return A.Z(r,e)},(i=function(e,t){return A.init(e,t)}).extend=function(e){var t,n=l.call(arguments,1);return"boolean"==typeof e&&(t=e,e=n.shift()),n.forEach((function(n){U(e,n,t)})),e},A.qsa=function(e,t){var n,i="#"==t[0],r=!i&&"."==t[0],s=i||r?t.slice(1):t,o=T.test(s);return e.getElementById&&o&&i?(n=e.getElementById(s))?[n]:[]:1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType?[]:l.call(o&&!i&&e.getElementsByClassName?r?e.getElementsByClassName(s):e.getElementsByTagName(t):e.querySelectorAll(t))},i.contains=h.documentElement.contains?function(e,t){return e!==t&&e.contains(t)}:function(e,t){for(;t&&(t=t.parentNode);)if(t===e)return!0;return!1},i.type=I,i.isFunction=N,i.isWindow=$,i.isArray=Q,i.isPlainObject=F,i.isEmptyObject=function(e){var t;for(t in e)return!1;return!0},i.isNumeric=function(e){var t=Number(e),n=typeof e;return null!=e&&"boolean"!=n&&("string"!=n||e.length)&&!isNaN(t)&&isFinite(t)||!1},i.inArray=function(e,t,n){return a.indexOf.call(t,e,n)},i.camelCase=s,i.trim=function(e){return null==e?"":String.prototype.trim.call(e)},i.uuid=0,i.support={},i.expr={},i.noop=function(){},i.map=function(e,t){var n,i,r,s=[];if(j(e))for(i=0;i<e.length;i++)null!=(n=t(e[i],i))&&s.push(n);else for(r in e)null!=(n=t(e[r],r))&&s.push(n);return V(s)},i.each=function(e,t){var n,i;if(j(e)){for(n=0;n<e.length;n++)if(!1===t.call(e[n],n,e[n]))return e}else for(i in e)if(!1===t.call(e[i],i,e[i]))return e;return e},i.grep=function(e,t){return c.call(e,t)},e.JSON&&(i.parseJSON=JSON.parse),i.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),(function(e,t){_["[object "+t+"]"]=t.toLowerCase()})),i.fn={constructor:A.Z,length:0,forEach:a.forEach,reduce:a.reduce,push:a.push,sort:a.sort,splice:a.splice,indexOf:a.indexOf,concat:function(){var e,t,n=[];for(e=0;e<arguments.length;e++)t=arguments[e],n[e]=A.isZ(t)?t.toArray():t;return u.apply(A.isZ(this)?this.toArray():this,n)},map:function(e){return i(i.map(this,(function(t,n){return e.call(t,n,t)})))},slice:function(){return i(l.apply(this,arguments))},ready:function(e){return k.test(h.readyState)&&h.body?e(i):h.addEventListener("DOMContentLoaded",(function(){e(i)}),!1),this},get:function(e){return e===t?l.call(this):this[e>=0?e:e+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each((function(){null!=this.parentNode&&this.parentNode.removeChild(this)}))},each:function(e){return a.every.call(this,(function(t,n){return!1!==e.call(t,n,t)})),this},filter:function(e){return N(e)?this.not(this.not(e)):i(c.call(this,(function(t){return A.matches(t,e)})))},add:function(e,t){return i(o(this.concat(i(e,t))))},is:function(e){return this.length>0&&A.matches(this[0],e)},not:function(e){var n=[];if(N(e)&&e.call!==t)this.each((function(t){e.call(this,t)||n.push(this)}));else{var r="string"==typeof e?this.filter(e):j(e)&&N(e.item)?l.call(e):i(e);this.forEach((function(e){r.indexOf(e)<0&&n.push(e)}))}return i(n)},has:function(e){return this.filter((function(){return R(e)?i.contains(this,e):i(this).find(e).size()}))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},first:function(){var e=this[0];return e&&!R(e)?e:i(e)},last:function(){var e=this[this.length-1];return e&&!R(e)?e:i(e)},find:function(e){var t=this;return e?"object"==typeof e?i(e).filter((function(){var e=this;return a.some.call(t,(function(t){return i.contains(t,e)}))})):1==this.length?i(A.qsa(this[0],e)):this.map((function(){return A.qsa(this,e)})):i()},closest:function(e,t){var n=[],r="object"==typeof e&&i(e);return this.each((function(i,s){for(;s&&!(r?r.indexOf(s)>=0:A.matches(s,e));)s=s!==t&&!D(s)&&s.parentNode;s&&n.indexOf(s)<0&&n.push(s)})),i(n)},parents:function(e){for(var t=[],n=this;n.length>0;)n=i.map(n,(function(e){if((e=e.parentNode)&&!D(e)&&t.indexOf(e)<0)return t.push(e),e}));return G(t,e)},parent:function(e){return G(o(this.pluck("parentNode")),e)},children:function(e){return G(this.map((function(){return K(this)})),e)},contents:function(){return this.map((function(){return this.contentDocument||l.call(this.childNodes)}))},siblings:function(e){return G(this.map((function(e,t){return c.call(K(t.parentNode),(function(e){return e!==t}))})),e)},empty:function(){return this.each((function(){this.innerHTML=""}))},pluck:function(e){return i.map(this,(function(t){return t[e]}))},show:function(){return this.each((function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=H(this.nodeName))}))},replaceWith:function(e){return this.before(e).remove()},wrap:function(e){var t=N(e);if(this[0]&&!t)var n=i(e).get(0),r=n.parentNode||this.length>1;return this.each((function(s){i(this).wrapAll(t?e.call(this,s):r?n.cloneNode(!0):n)}))},wrapAll:function(e){if(this[0]){var t;for(i(this[0]).before(e=i(e));(t=e.children()).length;)e=t.first();i(e).append(this)}return this},wrapInner:function(e){var t=N(e);return this.each((function(n){var r=i(this),s=r.contents(),o=t?e.call(this,n):e;s.length?s.wrapAll(o):r.append(o)}))},unwrap:function(){return this.parent().each((function(){i(this).replaceWith(i(this).children())})),this},clone:function(){return this.map((function(){return this.cloneNode(!0)}))},hide:function(){return this.css("display","none")},toggle:function(e){return this.each((function(){var n=i(this);(e===t?"none"==n.css("display"):e)?n.show():n.hide()}))},prev:function(e){return i(this.pluck("previousElementSibling")).filter(e||"*")},next:function(e){return i(this.pluck("nextElementSibling")).filter(e||"*")},html:function(e){return 0 in arguments?this.each((function(t){var n=this.innerHTML;i(this).empty().append(Z(this,e,t,n))})):0 in this?this[0].innerHTML:null},text:function(e){return 0 in arguments?this.each((function(t){var n=Z(this,e,t,this.textContent);this.textContent=null==n?"":""+n})):0 in this?this.pluck("textContent").join(""):null},attr:function(e,i){var r;return"string"!=typeof e||1 in arguments?this.each((function(t){if(1===this.nodeType)if(R(e))for(n in e)X(this,n,e[n]);else X(this,e,Z(this,i,t,this.getAttribute(e)))})):0 in this&&1==this[0].nodeType&&null!=(r=this[0].getAttribute(e))?r:t},removeAttr:function(e){return this.each((function(){1===this.nodeType&&e.split(" ").forEach((function(e){X(this,e)}),this)}))},prop:function(e,t){return e=L[e]||e,1 in arguments?this.each((function(n){this[e]=Z(this,t,n,this[e])})):this[0]&&this[0][e]},removeProp:function(e){return e=L[e]||e,this.each((function(){delete this[e]}))},data:function(e,n){var i="data-"+e.replace(x,"-$1").toLowerCase(),r=1 in arguments?this.attr(i,n):this.attr(i);return null!==r?Y(r):t},val:function(e){return 0 in arguments?(null==e&&(e=""),this.each((function(t){this.value=Z(this,e,t,this.value)}))):this[0]&&(this[0].multiple?i(this[0]).find("option").filter((function(){return this.selected})).pluck("value"):this[0].value)},offset:function(t){if(t)return this.each((function(e){var n=i(this),r=Z(this,t,e,n.offset()),s=n.offsetParent().offset(),o={top:r.top-s.top,left:r.left-s.left};"static"==n.css("position")&&(o.position="relative"),n.css(o)}));if(!this.length)return null;if(h.documentElement!==this[0]&&!i.contains(h.documentElement,this[0]))return{top:0,left:0};var n=this[0].getBoundingClientRect();return{left:n.left+e.pageXOffset,top:n.top+e.pageYOffset,width:Math.round(n.width),height:Math.round(n.height)}},css:function(e,t){if(arguments.length<2){var r=this[0];if("string"==typeof e){if(!r)return;return r.style[s(e)]||getComputedStyle(r,"").getPropertyValue(e)}if(Q(e)){if(!r)return;var o={},a=getComputedStyle(r,"");return i.each(e,(function(e,t){o[t]=r.style[s(t)]||a.getPropertyValue(t)})),o}}var u="";if("string"==I(e))t||0===t?u=B(e)+":"+z(e,t):this.each((function(){this.style.removeProperty(B(e))}));else for(n in e)e[n]||0===e[n]?u+=B(n)+":"+z(n,e[n])+";":this.each((function(){this.style.removeProperty(B(n))}));return this.each((function(){this.style.cssText+=";"+u}))},index:function(e){return e?this.indexOf(i(e)[0]):this.parent().children().indexOf(this[0])},hasClass:function(e){return!!e&&a.some.call(this,(function(e){return this.test(J(e))}),q(e))},addClass:function(e){return e?this.each((function(t){if("className"in this){r=[];var n=J(this);Z(this,e,t,n).split(/\s+/g).forEach((function(e){i(this).hasClass(e)||r.push(e)}),this),r.length&&J(this,n+(n?" ":"")+r.join(" "))}})):this},removeClass:function(e){return this.each((function(n){if("className"in this){if(e===t)return J(this,"");r=J(this),Z(this,e,n,r).split(/\s+/g).forEach((function(e){r=r.replace(q(e)," ")})),J(this,r.trim())}}))},toggleClass:function(e,n){return e?this.each((function(r){var s=i(this);Z(this,e,r,J(this)).split(/\s+/g).forEach((function(e){(n===t?!s.hasClass(e):n)?s.addClass(e):s.removeClass(e)}))})):this},scrollTop:function(e){if(this.length){var n="scrollTop"in this[0];return e===t?n?this[0].scrollTop:this[0].pageYOffset:this.each(n?function(){this.scrollTop=e}:function(){this.scrollTo(this.scrollX,e)})}},scrollLeft:function(e){if(this.length){var n="scrollLeft"in this[0];return e===t?n?this[0].scrollLeft:this[0].pageXOffset:this.each(n?function(){this.scrollLeft=e}:function(){this.scrollTo(e,this.scrollY)})}},position:function(){if(this.length){var e=this[0],t=this.offsetParent(),n=this.offset(),r=v.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(i(e).css("margin-top"))||0,n.left-=parseFloat(i(e).css("margin-left"))||0,r.top+=parseFloat(i(t[0]).css("border-top-width"))||0,r.left+=parseFloat(i(t[0]).css("border-left-width"))||0,{top:n.top-r.top,left:n.left-r.left}}},offsetParent:function(){return this.map((function(){for(var e=this.offsetParent||h.body;e&&!v.test(e.nodeName)&&"static"==i(e).css("position");)e=e.offsetParent;return e}))}},i.fn.detach=i.fn.remove,["width","height"].forEach((function(e){var n=e.replace(/./,(function(e){return e[0].toUpperCase()}));i.fn[e]=function(r){var s,o=this[0];return r===t?$(o)?o["inner"+n]:D(o)?o.documentElement["scroll"+n]:(s=this.offset())&&s[e]:this.each((function(t){(o=i(this)).css(e,Z(this,r,t,o[e]()))}))}})),b.forEach((function(n,r){var s=r%2;i.fn[n]=function(){var n,o,a=i.map(arguments,(function(e){var r=[];return"array"==(n=I(e))?(e.forEach((function(e){return e.nodeType!==t?r.push(e):i.zepto.isZ(e)?r=r.concat(e.get()):void(r=r.concat(A.fragment(e)))})),r):"object"==n||null==e?e:A.fragment(e)})),u=this.length>1;return a.length<1?this:this.each((function(t,n){o=s?n:n.parentNode,n=0==r?n.nextSibling:1==r?n.firstChild:2==r?n:null;var c=i.contains(h.documentElement,o);a.forEach((function(t){if(u)t=t.cloneNode(!0);else if(!o)return i(t).remove();o.insertBefore(t,n),c&&ee(t,(function(t){if(!(null==t.nodeName||"SCRIPT"!==t.nodeName.toUpperCase()||t.type&&"text/javascript"!==t.type||t.src)){var n=t.ownerDocument?t.ownerDocument.defaultView:e;n.eval.call(n,t.innerHTML)}}))}))}))},i.fn[s?n+"To":"insert"+(r?"Before":"After")]=function(e){return i(e)[n](this),this}})),A.Z.prototype=W.prototype=i.fn,A.uniq=o,A.deserializeValue=Y,i.zepto=A,i}();return function(t){var n,i=1,r=Array.prototype.slice,s=t.isFunction,o=function(e){return"string"==typeof e},a={},u={},c="onfocusin"in e,l={focus:"focusin",blur:"focusout"},h={mouseenter:"mouseover",mouseleave:"mouseout"};function p(e){return e._zid||(e._zid=i++)}function f(e,t,n,i){if((t=d(t)).ns)var r=g(t.ns);return(a[p(e)]||[]).filter((function(e){return e&&(!t.e||e.e==t.e)&&(!t.ns||r.test(e.ns))&&(!n||p(e.fn)===p(n))&&(!i||e.sel==i)}))}function d(e){var t=(""+e).split(".");return{e:t[0],ns:t.slice(1).sort().join(" ")}}function g(e){return new RegExp("(?:^| )"+e.replace(" "," .* ?")+"(?: |$)")}function m(e,t){return e.del&&!c&&e.e in l||!!t}function y(e){return h[e]||c&&l[e]||e}function v(e,i,r,s,o,u,c){var l=p(e),f=a[l]||(a[l]=[]);i.split(/\s/).forEach((function(i){if("ready"==i)return t(document).ready(r);var a=d(i);a.fn=r,a.sel=o,a.e in h&&(r=function(e){var n=e.relatedTarget;if(!n||n!==this&&!t.contains(this,n))return a.fn.apply(this,arguments)}),a.del=u;var l=u||r;a.proxy=function(t){if(!(t=E(t)).isImmediatePropagationStopped()){try{var i=Object.getOwnPropertyDescriptor(t,"data");i&&!i.writable||(t.data=s)}catch(t){}var r=l.apply(e,t._args==n?[t]:[t].concat(t._args));return!1===r&&(t.preventDefault(),t.stopPropagation()),r}},a.i=f.length,f.push(a),"addEventListener"in e&&e.addEventListener(y(a.e),a.proxy,m(a,c))}))}function x(e,t,n,i,r){var s=p(e);(t||"").split(/\s/).forEach((function(t){f(e,t,n,i).forEach((function(t){delete a[s][t.i],"removeEventListener"in e&&e.removeEventListener(y(t.e),t.proxy,m(t,r))}))}))}u.click=u.mousedown=u.mouseup=u.mousemove="MouseEvents",t.event={add:v,remove:x},t.proxy=function(e,n){var i=2 in arguments&&r.call(arguments,2);if(s(e)){var a=function(){return e.apply(n,i?i.concat(r.call(arguments)):arguments)};return a._zid=p(e),a}if(o(n))return i?(i.unshift(e[n],e),t.proxy.apply(null,i)):t.proxy(e[n],e);throw new TypeError("expected function")},t.fn.bind=function(e,t,n){return this.on(e,t,n)},t.fn.unbind=function(e,t){return this.off(e,t)},t.fn.one=function(e,t,n,i){return this.on(e,t,n,i,1)};var w=function(){return!0},b=function(){return!1},S=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,C={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};function E(e,i){if(i||!e.isDefaultPrevented){i||(i=e),t.each(C,(function(t,n){var r=i[t];e[t]=function(){return this[n]=w,r&&r.apply(i,arguments)},e[n]=b}));try{e.timeStamp||(e.timeStamp=Date.now())}catch(r){}(i.defaultPrevented!==n?i.defaultPrevented:"returnValue"in i?!1===i.returnValue:i.getPreventDefault&&i.getPreventDefault())&&(e.isDefaultPrevented=w)}return e}function k(e){var t,i={originalEvent:e};for(t in e)S.test(t)||e[t]===n||(i[t]=e[t]);return E(i,e)}t.fn.delegate=function(e,t,n){return this.on(t,e,n)},t.fn.undelegate=function(e,t,n){return this.off(t,e,n)},t.fn.live=function(e,n){return t(document.body).delegate(this.selector,e,n),this},t.fn.die=function(e,n){return t(document.body).undelegate(this.selector,e,n),this},t.fn.on=function(e,i,a,u,c){var l,h,p=this;return e&&!o(e)?(t.each(e,(function(e,t){p.on(e,i,a,t,c)})),p):(o(i)||s(u)||!1===u||(u=a,a=i,i=n),u!==n&&!1!==a||(u=a,a=n),!1===u&&(u=b),p.each((function(n,s){c&&(l=function(e){return x(s,e.type,u),u.apply(this,arguments)}),i&&(h=function(e){var n,o=t(e.target).closest(i,s).get(0);if(o&&o!==s)return n=t.extend(k(e),{currentTarget:o,liveFired:s}),(l||u).apply(o,[n].concat(r.call(arguments,1)))}),v(s,e,u,a,i,h||l)})))},t.fn.off=function(e,i,r){var a=this;return e&&!o(e)?(t.each(e,(function(e,t){a.off(e,i,t)})),a):(o(i)||s(r)||!1===r||(r=i,i=n),!1===r&&(r=b),a.each((function(){x(this,e,r,i)})))},t.fn.trigger=function(e,n){return(e=o(e)||t.isPlainObject(e)?t.Event(e):E(e))._args=n,this.each((function(){e.type in l&&"function"==typeof this[e.type]?this[e.type]():"dispatchEvent"in this?this.dispatchEvent(e):t(this).triggerHandler(e,n)}))},t.fn.triggerHandler=function(e,n){var i,r;return this.each((function(s,a){(i=k(o(e)?t.Event(e):e))._args=n,i.target=a,t.each(f(a,e.type||e),(function(e,t){if(r=t.proxy(i),i.isImmediatePropagationStopped())return!1}))})),r},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach((function(e){t.fn[e]=function(t){return 0 in arguments?this.bind(e,t):this.trigger(e)}})),t.Event=function(e,t){o(e)||(e=(t=e).type);var n=document.createEvent(u[e]||"Events"),i=!0;if(t)for(var r in t)"bubbles"==r?i=!!t[r]:n[r]=t[r];return n.initEvent(e,i,!0),E(n)}}(i),n=[],i.fn.remove=function(){return this.each((function(){this.parentNode&&("IMG"===this.tagName&&(n.push(this),this.src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",t&&clearTimeout(t),t=setTimeout((function(){n=[]}),6e4)),this.parentNode.removeChild(this))}))},function(e){var t={},n=e.fn.data,i=e.camelCase,r=e.expando="Zepto"+ +new Date,s=[];function o(s,o){var u=s[r],c=u&&t[u];if(void 0===o)return c||a(s);if(c){if(o in c)return c[o];var l=i(o);if(l in c)return c[l]}return n.call(e(s),o)}function a(n,s,o){var a=n[r]||(n[r]=++e.uuid),c=t[a]||(t[a]=u(n));return void 0!==s&&(c[i(s)]=o),c}function u(t){var n={};return e.each(t.attributes||s,(function(t,r){0==r.name.indexOf("data-")&&(n[i(r.name.replace("data-",""))]=e.zepto.deserializeValue(r.value))})),n}e.fn.data=function(t,n){return void 0===n?e.isPlainObject(t)?this.each((function(n,i){e.each(t,(function(e,t){a(i,e,t)}))})):0 in this?o(this[0],t):void 0:this.each((function(){a(this,t,n)}))},e.data=function(t,n,i){return e(t).data(n,i)},e.hasData=function(n){var i=n[r],s=i&&t[i];return!!s&&!e.isEmptyObject(s)},e.fn.removeData=function(n){return"string"==typeof n&&(n=n.split(/\s+/)),this.each((function(){var s=this[r],o=s&&t[s];o&&e.each(n||o,(function(e){delete o[n?i(this):e]}))}))},["remove","empty"].forEach((function(t){var n=e.fn[t];e.fn[t]=function(){var e=this.find("*");return"remove"===t&&(e=e.add(this)),e.removeData(),n.call(this)}}))}(i),i}(t)},9921:(e,t)=>{!function(e){var t=/\S/,n=/\"/g,i=/\n/g,r=/\r/g,s=/\\/g,o=/\u2028/,a=/\u2029/;function u(e){"}"===e.n.substr(e.n.length-1)&&(e.n=e.n.substring(0,e.n.length-1))}function c(e){return e.trim?e.trim():e.replace(/^\s*|\s*$/g,"")}function l(e,t,n){if(t.charAt(n)!=e.charAt(0))return!1;for(var i=1,r=e.length;i<r;i++)if(t.charAt(n+i)!=e.charAt(i))return!1;return!0}e.tags={"#":1,"^":2,"<":3,$:4,"/":5,"!":6,">":7,"=":8,_v:9,"{":10,"&":11,_t:12},e.scan=function(n,i){var r=n.length,s=0,o=null,a=null,h="",p=[],f=!1,d=0,g=0,m="{{",y="}}";function v(){h.length>0&&(p.push({tag:"_t",text:new String(h)}),h="")}function x(n,i){if(v(),n&&function(){for(var n=!0,i=g;i<p.length;i++)if(!(n=e.tags[p[i].tag]<e.tags._v||"_t"==p[i].tag&&null===p[i].text.match(t)))return!1;return n}())for(var r,s=g;s<p.length;s++)p[s].text&&((r=p[s+1])&&">"==r.tag&&(r.indent=p[s].text.toString()),p.splice(s,1));else i||p.push({tag:"\n"});f=!1,g=p.length}function w(e,t){var n="="+y,i=e.indexOf(n,t),r=c(e.substring(e.indexOf("=",t)+1,i)).split(" ");return m=r[0],y=r[r.length-1],i+n.length-1}for(i&&(i=i.split(" "),m=i[0],y=i[1]),d=0;d<r;d++)0==s?l(m,n,d)?(--d,v(),s=1):"\n"==n.charAt(d)?x(f):h+=n.charAt(d):1==s?(d+=m.length-1,"="==(o=(a=e.tags[n.charAt(d+1)])?n.charAt(d+1):"_v")?(d=w(n,d),s=0):(a&&d++,s=2),f=d):l(y,n,d)?(p.push({tag:o,n:c(h),otag:m,ctag:y,i:"/"==o?f-m.length:d+y.length}),h="",d+=y.length-1,s=0,"{"==o&&("}}"==y?d++:u(p[p.length-1]))):h+=n.charAt(d);return x(f,!0),p};var h={_t:!0,"\n":!0,$:!0,"/":!0};function p(t,n,i,r){var s,o=[],a=null,u=null;for(s=i[i.length-1];t.length>0;){if(u=t.shift(),s&&"<"==s.tag&&!(u.tag in h))throw new Error("Illegal content in < super tag.");if(e.tags[u.tag]<=e.tags.$||f(u,r))i.push(u),u.nodes=p(t,u.tag,i,r);else{if("/"==u.tag){if(0===i.length)throw new Error("Closing tag without opener: /"+u.n);if(a=i.pop(),u.n!=a.n&&!d(u.n,a.n,r))throw new Error("Nesting error: "+a.n+" vs. "+u.n);return a.end=u.i,o}"\n"==u.tag&&(u.last=0==t.length||"\n"==t[0].tag)}o.push(u)}if(i.length>0)throw new Error("missing closing tag: "+i.pop().n);return o}function f(e,t){for(var n=0,i=t.length;n<i;n++)if(t[n].o==e.n)return e.tag="#",!0}function d(e,t,n){for(var i=0,r=n.length;i<r;i++)if(n[i].c==e&&n[i].o==t)return!0}function g(e){var t=[];for(var n in e.partials)t.push('"'+y(n)+'":{name:"'+y(e.partials[n].name)+'", '+g(e.partials[n])+"}");return"partials: {"+t.join(",")+"}, subs: "+function(e){var t=[];for(var n in e)t.push('"'+y(n)+'": function(c,p,t,i) {'+e[n]+"}");return"{ "+t.join(",")+" }"}(e.subs)}e.stringify=function(t,n,i){return"{code: function (c,p,i) { "+e.wrapMain(t.code)+" },"+g(t)+"}"};var m=0;function y(e){return e.replace(s,"\\\\").replace(n,'\\"').replace(i,"\\n").replace(r,"\\r").replace(o,"\\u2028").replace(a,"\\u2029")}function v(e){return~e.indexOf(".")?"d":"f"}function x(e,t){var n="<"+(t.prefix||"")+e.n+m++;return t.partials[n]={name:e.n,partials:{}},t.code+='t.b(t.rp("'+y(n)+'",c,p,"'+(e.indent||"")+'"));',n}function w(e,t){t.code+="t.b(t.t(t."+v(e.n)+'("'+y(e.n)+'",c,p,0)));'}function b(e){return"t.b("+e+");"}e.generate=function(t,n,i){m=0;var r={code:"",subs:{},partials:{}};return e.walk(t,r),i.asString?this.stringify(r,n,i):this.makeTemplate(r,n,i)},e.wrapMain=function(e){return'var t=this;t.b(i=i||"");'+e+"return t.fl();"},e.template=e.Template,e.makeTemplate=function(e,t,n){var i=this.makePartials(e);return i.code=new Function("c","p","i",this.wrapMain(e.code)),new this.template(i,t,this,n)},e.makePartials=function(e){var t,n={subs:{},partials:e.partials,name:e.name};for(t in n.partials)n.partials[t]=this.makePartials(n.partials[t]);for(t in e.subs)n.subs[t]=new Function("c","p","t","i",e.subs[t]);return n},e.codegen={"#":function(t,n){n.code+="if(t.s(t."+v(t.n)+'("'+y(t.n)+'",c,p,1),c,p,0,'+t.i+","+t.end+',"'+t.otag+" "+t.ctag+'")){t.rs(c,p,function(c,p,t){',e.walk(t.nodes,n),n.code+="});c.pop();}"},"^":function(t,n){n.code+="if(!t.s(t."+v(t.n)+'("'+y(t.n)+'",c,p,1),c,p,1,0,0,"")){',e.walk(t.nodes,n),n.code+="};"},">":x,"<":function(t,n){var i={partials:{},code:"",subs:{},inPartial:!0};e.walk(t.nodes,i);var r=n.partials[x(t,n)];r.subs=i.subs,r.partials=i.partials},$:function(t,n){var i={subs:{},code:"",partials:n.partials,prefix:t.n};e.walk(t.nodes,i),n.subs[t.n]=i.code,n.inPartial||(n.code+='t.sub("'+y(t.n)+'",c,p,i);')},"\n":function(e,t){t.code+=b('"\\n"'+(e.last?"":" + i"))},_v:function(e,t){t.code+="t.b(t.v(t."+v(e.n)+'("'+y(e.n)+'",c,p,0)));'},_t:function(e,t){t.code+=b('"'+y(e.text)+'"')},"{":w,"&":w},e.walk=function(t,n){for(var i,r=0,s=t.length;r<s;r++)(i=e.codegen[t[r].tag])&&i(t[r],n);return n},e.parse=function(e,t,n){return p(e,0,[],(n=n||{}).sectionTags||[])},e.cache={},e.cacheKey=function(e,t){return[e,!!t.asString,!!t.disableLambda,t.delimiters,!!t.modelGet].join("||")},e.compile=function(t,n){n=n||{};var i=e.cacheKey(t,n),r=this.cache[i];if(r){var s=r.partials;for(var o in s)delete s[o].instance;return r}return r=this.generate(this.parse(this.scan(t,n.delimiters),t,n),t,n),this.cache[i]=r}}(t)},1273:(e,t,n)=>{var i=n(9921);i.Template=n(3067).Template,i.template=i.Template,e.exports=i},3067:(e,t)=>{!function(e){function t(e,t,n){var i;return t&&"object"==typeof t&&(void 0!==t[e]?i=t[e]:n&&t.get&&"function"==typeof t.get&&(i=t.get(e))),i}e.Template=function(e,t,n,i){e=e||{},this.r=e.code||this.r,this.c=n,this.options=i||{},this.text=t||"",this.partials=e.partials||{},this.subs=e.subs||{},this.buf=""},e.Template.prototype={r:function(e,t,n){return""},v:function(e){return e=u(e),a.test(e)?e.replace(n,"&").replace(i,"<").replace(r,">").replace(s,"'").replace(o,"""):e},t:u,render:function(e,t,n){return this.ri([e],t||{},n)},ri:function(e,t,n){return this.r(e,t,n)},ep:function(e,t){var n=this.partials[e],i=t[n.name];if(n.instance&&n.base==i)return n.instance;if("string"==typeof i){if(!this.c)throw new Error("No compiler available.");i=this.c.compile(i,this.options)}if(!i)return null;if(this.partials[e].base=i,n.subs){for(key in t.stackText||(t.stackText={}),n.subs)t.stackText[key]||(t.stackText[key]=void 0!==this.activeSub&&t.stackText[this.activeSub]?t.stackText[this.activeSub]:this.text);i=function(e,t,n,i,r,s){function o(){}function a(){}var u;o.prototype=e,a.prototype=e.subs;var c=new o;for(u in c.subs=new a,c.subsText={},c.buf="",i=i||{},c.stackSubs=i,c.subsText=s,t)i[u]||(i[u]=t[u]);for(u in i)c.subs[u]=i[u];for(u in r=r||{},c.stackPartials=r,n)r[u]||(r[u]=n[u]);for(u in r)c.partials[u]=r[u];return c}(i,n.subs,n.partials,this.stackSubs,this.stackPartials,t.stackText)}return this.partials[e].instance=i,i},rp:function(e,t,n,i){var r=this.ep(e,n);return r?r.ri(t,n,i):""},rs:function(e,t,n){var i=e[e.length-1];if(c(i))for(var r=0;r<i.length;r++)e.push(i[r]),n(e,t,this),e.pop();else n(e,t,this)},s:function(e,t,n,i,r,s,o){var a;return(!c(e)||0!==e.length)&&("function"==typeof e&&(e=this.ms(e,t,n,i,r,s,o)),a=!!e,!i&&a&&t&&t.push("object"==typeof e?e:t[t.length-1]),a)},d:function(e,n,i,r){var s,o=e.split("."),a=this.f(o[0],n,i,r),u=this.options.modelGet,l=null;if("."===e&&c(n[n.length-2]))a=n[n.length-1];else for(var h=1;h<o.length;h++)void 0!==(s=t(o[h],a,u))?(l=a,a=s):a="";return!(r&&!a)&&(r||"function"!=typeof a||(n.push(l),a=this.mv(a,n,i),n.pop()),a)},f:function(e,n,i,r){for(var s=!1,o=!1,a=this.options.modelGet,u=n.length-1;u>=0;u--)if(void 0!==(s=t(e,n[u],a))){o=!0;break}return o?(r||"function"!=typeof s||(s=this.mv(s,n,i)),s):!r&&""},ls:function(e,t,n,i,r){var s=this.options.delimiters;return this.options.delimiters=r,this.b(this.ct(u(e.call(t,i)),t,n)),this.options.delimiters=s,!1},ct:function(e,t,n){if(this.options.disableLambda)throw new Error("Lambda features disabled.");return this.c.compile(e,this.options).render(t,n)},b:function(e){this.buf+=e},fl:function(){var e=this.buf;return this.buf="",e},ms:function(e,t,n,i,r,s,o){var a,u=t[t.length-1],c=e.call(u);return"function"==typeof c?!!i||(a=this.activeSub&&this.subsText&&this.subsText[this.activeSub]?this.subsText[this.activeSub]:this.text,this.ls(c,u,n,a.substring(r,s),o)):c},mv:function(e,t,n){var i=t[t.length-1],r=e.call(i);return"function"==typeof r?this.ct(u(r.call(i)),i,n):r},sub:function(e,t,n,i){var r=this.subs[e];r&&(this.activeSub=e,r(t,n,this,i),this.activeSub=!1)}};var n=/&/g,i=/</g,r=/>/g,s=/\'/g,o=/\"/g,a=/[&<>\"\']/;function u(e){return String(null==e?"":e)}var c=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}}(t)},8194:(e,t,n)=>{"use strict";var i,r,s,o=[n(5352),n(717),n(4752),n(2696),n(4206),n(8842)],a=-1,u=[],c=!1;function l(){i&&r&&(i=!1,r.length?u=r.concat(u):a=-1,u.length&&h())}function h(){if(!i){c=!1,i=!0;for(var e=u.length,t=setTimeout(l);e;){for(r=u,u=[];r&&++a<e;)r[a].run();a=-1,e=u.length}r=null,a=-1,i=!1,clearTimeout(t)}}for(var p=-1,f=o.length;++p<f;)if(o[p]&&o[p].test&&o[p].test()){s=o[p].install(h);break}function d(e,t){this.fun=e,this.array=t}d.prototype.run=function(){var e=this.fun,t=this.array;switch(t.length){case 0:return e();case 1:return e(t[0]);case 2:return e(t[0],t[1]);case 3:return e(t[0],t[1],t[2]);default:return e.apply(null,t)}},e.exports=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];u.push(new d(e,t)),c||i||(c=!0,s())}},2696:(e,t,n)=>{"use strict";t.test=function(){return!n.g.setImmediate&&void 0!==n.g.MessageChannel},t.install=function(e){var t=new n.g.MessageChannel;return t.port1.onmessage=e,function(){t.port2.postMessage(0)}}},4752:(e,t,n)=>{"use strict";var i=n.g.MutationObserver||n.g.WebKitMutationObserver;t.test=function(){return i},t.install=function(e){var t=0,r=new i(e),s=n.g.document.createTextNode("");return r.observe(s,{characterData:!0}),function(){s.data=t=++t%2}}},717:(e,t,n)=>{"use strict";t.test=function(){return"function"==typeof n.g.queueMicrotask},t.install=function(e){return function(){n.g.queueMicrotask(e)}}},4206:(e,t,n)=>{"use strict";t.test=function(){return"document"in n.g&&"onreadystatechange"in n.g.document.createElement("script")},t.install=function(e){return function(){var t=n.g.document.createElement("script");return t.onreadystatechange=function(){e(),t.onreadystatechange=null,t.parentNode.removeChild(t),t=null},n.g.document.documentElement.appendChild(t),e}}},8842:(e,t)=>{"use strict";t.test=function(){return!0},t.install=function(e){return function(){setTimeout(e,0)}}},8230:(e,t,n)=>{var i,r;!function(){var s,o,a,u,c,l,h,p,f,d,g,m,y,v,x,w,b,S,C,E,k,T,_,O,A,P,L,Q,I,N,$=function(e){var t=new $.Builder;return t.pipeline.add($.trimmer,$.stopWordFilter,$.stemmer),t.searchPipeline.add($.stemmer),e.call(t,t),t.build()};$.version="2.3.9",$.utils={},$.utils.warn=(s=this,function(e){s.console&&console.warn&&console.warn(e)}),$.utils.asString=function(e){return null==e?"":e.toString()},$.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),n=Object.keys(e),i=0;i<n.length;i++){var r=n[i],s=e[r];if(Array.isArray(s))t[r]=s.slice();else{if("string"!=typeof s&&"number"!=typeof s&&"boolean"!=typeof s)throw new TypeError("clone is not deep and does not support nested objects");t[r]=s}}return t},$.FieldRef=function(e,t,n){this.docRef=e,this.fieldName=t,this._stringValue=n},$.FieldRef.joiner="/",$.FieldRef.fromString=function(e){var t=e.indexOf($.FieldRef.joiner);if(-1===t)throw"malformed field ref string";var n=e.slice(0,t),i=e.slice(t+1);return new $.FieldRef(i,n,e)},$.FieldRef.prototype.toString=function(){return null==this._stringValue&&(this._stringValue=this.fieldName+$.FieldRef.joiner+this.docRef),this._stringValue},$.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},$.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},$.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},$.Set.prototype.contains=function(e){return!!this.elements[e]},$.Set.prototype.intersect=function(e){var t,n,i,r=[];if(e===$.Set.complete)return this;if(e===$.Set.empty)return e;this.length<e.length?(t=this,n=e):(t=e,n=this),i=Object.keys(t.elements);for(var s=0;s<i.length;s++){var o=i[s];o in n.elements&&r.push(o)}return new $.Set(r)},$.Set.prototype.union=function(e){return e===$.Set.complete?$.Set.complete:e===$.Set.empty?this:new $.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},$.idf=function(e,t){var n=0;for(var i in e)"_index"!=i&&(n+=Object.keys(e[i]).length);var r=(t-n+.5)/(n+.5);return Math.log(1+Math.abs(r))},$.Token=function(e,t){this.str=e||"",this.metadata=t||{}},$.Token.prototype.toString=function(){return this.str},$.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},$.Token.prototype.clone=function(e){return e=e||function(e){return e},new $.Token(e(this.str,this.metadata),this.metadata)},$.tokenizer=function(e,t){if(null==e||null==e)return[];if(Array.isArray(e))return e.map((function(e){return new $.Token($.utils.asString(e).toLowerCase(),$.utils.clone(t))}));for(var n=e.toString().toLowerCase(),i=n.length,r=[],s=0,o=0;s<=i;s++){var a=s-o;if(n.charAt(s).match($.tokenizer.separator)||s==i){if(a>0){var u=$.utils.clone(t)||{};u.position=[o,a],u.index=r.length,r.push(new $.Token(n.slice(o,s),u))}o=s+1}}return r},$.tokenizer.separator=/[\s\-]+/,$.Pipeline=function(){this._stack=[]},$.Pipeline.registeredFunctions=Object.create(null),$.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&$.utils.warn("Overwriting existing registered function: "+t),e.label=t,$.Pipeline.registeredFunctions[e.label]=e},$.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||$.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},$.Pipeline.load=function(e){var t=new $.Pipeline;return e.forEach((function(e){var n=$.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)})),t},$.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach((function(e){$.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},$.Pipeline.prototype.after=function(e,t){$.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");n+=1,this._stack.splice(n,0,t)},$.Pipeline.prototype.before=function(e,t){$.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},$.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},$.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n<t;n++){for(var i=this._stack[n],r=[],s=0;s<e.length;s++){var o=i(e[s],s,e);if(null!=o&&""!==o)if(Array.isArray(o))for(var a=0;a<o.length;a++)r.push(o[a]);else r.push(o)}e=r}return e},$.Pipeline.prototype.runString=function(e,t){var n=new $.Token(e,t);return this.run([n]).map((function(e){return e.toString()}))},$.Pipeline.prototype.reset=function(){this._stack=[]},$.Pipeline.prototype.toJSON=function(){return this._stack.map((function(e){return $.Pipeline.warnIfFunctionNotRegistered(e),e.label}))},$.Vector=function(e){this._magnitude=0,this.elements=e||[]},$.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,n=this.elements.length/2,i=n-t,r=Math.floor(i/2),s=this.elements[2*r];i>1&&(s<e&&(t=r),s>e&&(n=r),s!=e);)i=n-t,r=t+Math.floor(i/2),s=this.elements[2*r];return s==e||s>e?2*r:s<e?2*(r+1):void 0},$.Vector.prototype.insert=function(e,t){this.upsert(e,t,(function(){throw"duplicate index"}))},$.Vector.prototype.upsert=function(e,t,n){this._magnitude=0;var i=this.positionForIndex(e);this.elements[i]==e?this.elements[i+1]=n(this.elements[i+1],t):this.elements.splice(i,0,e,t)},$.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,n=1;n<t;n+=2){var i=this.elements[n];e+=i*i}return this._magnitude=Math.sqrt(e)},$.Vector.prototype.dot=function(e){for(var t=0,n=this.elements,i=e.elements,r=n.length,s=i.length,o=0,a=0,u=0,c=0;u<r&&c<s;)(o=n[u])<(a=i[c])?u+=2:o>a?c+=2:o==a&&(t+=n[u+1]*i[c+1],u+=2,c+=2);return t},$.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},$.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,n=0;t<this.elements.length;t+=2,n++)e[n]=this.elements[t];return e},$.Vector.prototype.toJSON=function(){return this.elements},$.stemmer=(o={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},a={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},h="^("+(c="[^aeiou][^aeiouy]*")+")?"+(l=(u="[aeiouy]")+"[aeiou]*")+c+"("+l+")?$",p="^("+c+")?"+l+c+l+c,f="^("+c+")?"+u,d=new RegExp("^("+c+")?"+l+c),g=new RegExp(p),m=new RegExp(h),y=new RegExp(f),v=/^(.+?)(ss|i)es$/,x=/^(.+?)([^s])s$/,w=/^(.+?)eed$/,b=/^(.+?)(ed|ing)$/,S=/.$/,C=/(at|bl|iz)$/,E=new RegExp("([^aeiouylsz])\\1$"),k=new RegExp("^"+c+u+"[^aeiouwxy]$"),T=/^(.+?[^aeiou])y$/,_=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,O=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,A=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,P=/^(.+?)(s|t)(ion)$/,L=/^(.+?)e$/,Q=/ll$/,I=new RegExp("^"+c+u+"[^aeiouwxy]$"),N=function(e){var t,n,i,r,s,u,c;if(e.length<3)return e;if("y"==(i=e.substr(0,1))&&(e=i.toUpperCase()+e.substr(1)),s=x,(r=v).test(e)?e=e.replace(r,"$1$2"):s.test(e)&&(e=e.replace(s,"$1$2")),s=b,(r=w).test(e)){var l=r.exec(e);(r=d).test(l[1])&&(r=S,e=e.replace(r,""))}else s.test(e)&&(t=(l=s.exec(e))[1],(s=y).test(t)&&(u=E,c=k,(s=C).test(e=t)?e+="e":u.test(e)?(r=S,e=e.replace(r,"")):c.test(e)&&(e+="e")));return(r=T).test(e)&&(e=(t=(l=r.exec(e))[1])+"i"),(r=_).test(e)&&(t=(l=r.exec(e))[1],n=l[2],(r=d).test(t)&&(e=t+o[n])),(r=O).test(e)&&(t=(l=r.exec(e))[1],n=l[2],(r=d).test(t)&&(e=t+a[n])),s=P,(r=A).test(e)?(t=(l=r.exec(e))[1],(r=g).test(t)&&(e=t)):s.test(e)&&(t=(l=s.exec(e))[1]+l[2],(s=g).test(t)&&(e=t)),(r=L).test(e)&&(t=(l=r.exec(e))[1],s=m,u=I,((r=g).test(t)||s.test(t)&&!u.test(t))&&(e=t)),s=g,(r=Q).test(e)&&s.test(e)&&(r=S,e=e.replace(r,"")),"y"==i&&(e=i.toLowerCase()+e.substr(1)),e},function(e){return e.update(N)}),$.Pipeline.registerFunction($.stemmer,"stemmer"),$.generateStopWordFilter=function(e){var t=e.reduce((function(e,t){return e[t]=t,e}),{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},$.stopWordFilter=$.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),$.Pipeline.registerFunction($.stopWordFilter,"stopWordFilter"),$.trimmer=function(e){return e.update((function(e){return e.replace(/^\W+/,"").replace(/\W+$/,"")}))},$.Pipeline.registerFunction($.trimmer,"trimmer"),$.TokenSet=function(){this.final=!1,this.edges={},this.id=$.TokenSet._nextId,$.TokenSet._nextId+=1},$.TokenSet._nextId=1,$.TokenSet.fromArray=function(e){for(var t=new $.TokenSet.Builder,n=0,i=e.length;n<i;n++)t.insert(e[n]);return t.finish(),t.root},$.TokenSet.fromClause=function(e){return"editDistance"in e?$.TokenSet.fromFuzzyString(e.term,e.editDistance):$.TokenSet.fromString(e.term)},$.TokenSet.fromFuzzyString=function(e,t){for(var n=new $.TokenSet,i=[{node:n,editsRemaining:t,str:e}];i.length;){var r=i.pop();if(r.str.length>0){var s,o=r.str.charAt(0);o in r.node.edges?s=r.node.edges[o]:(s=new $.TokenSet,r.node.edges[o]=s),1==r.str.length&&(s.final=!0),i.push({node:s,editsRemaining:r.editsRemaining,str:r.str.slice(1)})}if(0!=r.editsRemaining){if("*"in r.node.edges)var a=r.node.edges["*"];else{a=new $.TokenSet;r.node.edges["*"]=a}if(0==r.str.length&&(a.final=!0),i.push({node:a,editsRemaining:r.editsRemaining-1,str:r.str}),r.str.length>1&&i.push({node:r.node,editsRemaining:r.editsRemaining-1,str:r.str.slice(1)}),1==r.str.length&&(r.node.final=!0),r.str.length>=1){if("*"in r.node.edges)var u=r.node.edges["*"];else{u=new $.TokenSet;r.node.edges["*"]=u}1==r.str.length&&(u.final=!0),i.push({node:u,editsRemaining:r.editsRemaining-1,str:r.str.slice(1)})}if(r.str.length>1){var c,l=r.str.charAt(0),h=r.str.charAt(1);h in r.node.edges?c=r.node.edges[h]:(c=new $.TokenSet,r.node.edges[h]=c),1==r.str.length&&(c.final=!0),i.push({node:c,editsRemaining:r.editsRemaining-1,str:l+r.str.slice(2)})}}}return n},$.TokenSet.fromString=function(e){for(var t=new $.TokenSet,n=t,i=0,r=e.length;i<r;i++){var s=e[i],o=i==r-1;if("*"==s)t.edges[s]=t,t.final=o;else{var a=new $.TokenSet;a.final=o,t.edges[s]=a,t=a}}return n},$.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var n=t.pop(),i=Object.keys(n.node.edges),r=i.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var s=0;s<r;s++){var o=i[s];t.push({prefix:n.prefix.concat(o),node:n.node.edges[o]})}}return e},$.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",t=Object.keys(this.edges).sort(),n=t.length,i=0;i<n;i++){var r=t[i];e=e+r+this.edges[r].id}return e},$.TokenSet.prototype.intersect=function(e){for(var t=new $.TokenSet,n=void 0,i=[{qNode:e,output:t,node:this}];i.length;){n=i.pop();for(var r=Object.keys(n.qNode.edges),s=r.length,o=Object.keys(n.node.edges),a=o.length,u=0;u<s;u++)for(var c=r[u],l=0;l<a;l++){var h=o[l];if(h==c||"*"==c){var p=n.node.edges[h],f=n.qNode.edges[c],d=p.final&&f.final,g=void 0;h in n.output.edges?(g=n.output.edges[h]).final=g.final||d:((g=new $.TokenSet).final=d,n.output.edges[h]=g),i.push({qNode:f,output:g,node:p})}}}return t},$.TokenSet.Builder=function(){this.previousWord="",this.root=new $.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},$.TokenSet.Builder.prototype.insert=function(e){var t,n=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var i=0;i<e.length&&i<this.previousWord.length&&e[i]==this.previousWord[i];i++)n++;this.minimize(n),t=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(i=n;i<e.length;i++){var r=new $.TokenSet,s=e[i];t.edges[s]=r,this.uncheckedNodes.push({parent:t,char:s,child:r}),t=r}t.final=!0,this.previousWord=e},$.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},$.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;t>=e;t--){var n=this.uncheckedNodes[t],i=n.child.toString();i in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[i]:(n.child._str=i,this.minimizedNodes[i]=n.child),this.uncheckedNodes.pop()}},$.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},$.Index.prototype.search=function(e){return this.query((function(t){new $.QueryParser(e,t).parse()}))},$.Index.prototype.query=function(e){for(var t=new $.Query(this.fields),n=Object.create(null),i=Object.create(null),r=Object.create(null),s=Object.create(null),o=Object.create(null),a=0;a<this.fields.length;a++)i[this.fields[a]]=new $.Vector;e.call(t,t);for(a=0;a<t.clauses.length;a++){var u=t.clauses[a],c=null,l=$.Set.empty;c=u.usePipeline?this.pipeline.runString(u.term,{fields:u.fields}):[u.term];for(var h=0;h<c.length;h++){var p=c[h];u.term=p;var f=$.TokenSet.fromClause(u),d=this.tokenSet.intersect(f).toArray();if(0===d.length&&u.presence===$.Query.presence.REQUIRED){for(var g=0;g<u.fields.length;g++){s[L=u.fields[g]]=$.Set.empty}break}for(var m=0;m<d.length;m++){var y=d[m],v=this.invertedIndex[y],x=v._index;for(g=0;g<u.fields.length;g++){var w=v[L=u.fields[g]],b=Object.keys(w),S=y+"/"+L,C=new $.Set(b);if(u.presence==$.Query.presence.REQUIRED&&(l=l.union(C),void 0===s[L]&&(s[L]=$.Set.complete)),u.presence!=$.Query.presence.PROHIBITED){if(i[L].upsert(x,u.boost,(function(e,t){return e+t})),!r[S]){for(var E=0;E<b.length;E++){var k,T=b[E],_=new $.FieldRef(T,L),O=w[T];void 0===(k=n[_])?n[_]=new $.MatchData(y,L,O):k.add(y,L,O)}r[S]=!0}}else void 0===o[L]&&(o[L]=$.Set.empty),o[L]=o[L].union(C)}}}if(u.presence===$.Query.presence.REQUIRED)for(g=0;g<u.fields.length;g++){s[L=u.fields[g]]=s[L].intersect(l)}}var A=$.Set.complete,P=$.Set.empty;for(a=0;a<this.fields.length;a++){var L;s[L=this.fields[a]]&&(A=A.intersect(s[L])),o[L]&&(P=P.union(o[L]))}var Q=Object.keys(n),I=[],N=Object.create(null);if(t.isNegated()){Q=Object.keys(this.fieldVectors);for(a=0;a<Q.length;a++){_=Q[a];var D=$.FieldRef.fromString(_);n[_]=new $.MatchData}}for(a=0;a<Q.length;a++){var R=(D=$.FieldRef.fromString(Q[a])).docRef;if(A.contains(R)&&!P.contains(R)){var F,j=this.fieldVectors[D],M=i[D.fieldName].similarity(j);if(void 0!==(F=N[R]))F.score+=M,F.matchData.combine(n[D]);else{var V={ref:R,score:M,matchData:n[D]};N[R]=V,I.push(V)}}}return I.sort((function(e,t){return t.score-e.score}))},$.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map((function(e){return[e,this.invertedIndex[e]]}),this),t=Object.keys(this.fieldVectors).map((function(e){return[e,this.fieldVectors[e].toJSON()]}),this);return{version:$.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},$.Index.load=function(e){var t={},n={},i=e.fieldVectors,r=Object.create(null),s=e.invertedIndex,o=new $.TokenSet.Builder,a=$.Pipeline.load(e.pipeline);e.version!=$.version&&$.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+$.version+"' does not match serialized index '"+e.version+"'");for(var u=0;u<i.length;u++){var c=(h=i[u])[0],l=h[1];n[c]=new $.Vector(l)}for(u=0;u<s.length;u++){var h,p=(h=s[u])[0],f=h[1];o.insert(p),r[p]=f}return o.finish(),t.fields=e.fields,t.fieldVectors=n,t.invertedIndex=r,t.tokenSet=o.root,t.pipeline=a,new $.Index(t)},$.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=$.tokenizer,this.pipeline=new $.Pipeline,this.searchPipeline=new $.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},$.Builder.prototype.ref=function(e){this._ref=e},$.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},$.Builder.prototype.b=function(e){this._b=e<0?0:e>1?1:e},$.Builder.prototype.k1=function(e){this._k1=e},$.Builder.prototype.add=function(e,t){var n=e[this._ref],i=Object.keys(this._fields);this._documents[n]=t||{},this.documentCount+=1;for(var r=0;r<i.length;r++){var s=i[r],o=this._fields[s].extractor,a=o?o(e):e[s],u=this.tokenizer(a,{fields:[s]}),c=this.pipeline.run(u),l=new $.FieldRef(n,s),h=Object.create(null);this.fieldTermFrequencies[l]=h,this.fieldLengths[l]=0,this.fieldLengths[l]+=c.length;for(var p=0;p<c.length;p++){var f=c[p];if(null==h[f]&&(h[f]=0),h[f]+=1,null==this.invertedIndex[f]){var d=Object.create(null);d._index=this.termIndex,this.termIndex+=1;for(var g=0;g<i.length;g++)d[i[g]]=Object.create(null);this.invertedIndex[f]=d}null==this.invertedIndex[f][s][n]&&(this.invertedIndex[f][s][n]=Object.create(null));for(var m=0;m<this.metadataWhitelist.length;m++){var y=this.metadataWhitelist[m],v=f.metadata[y];null==this.invertedIndex[f][s][n][y]&&(this.invertedIndex[f][s][n][y]=[]),this.invertedIndex[f][s][n][y].push(v)}}}},$.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,n={},i={},r=0;r<t;r++){var s=$.FieldRef.fromString(e[r]),o=s.fieldName;i[o]||(i[o]=0),i[o]+=1,n[o]||(n[o]=0),n[o]+=this.fieldLengths[s]}var a=Object.keys(this._fields);for(r=0;r<a.length;r++){var u=a[r];n[u]=n[u]/i[u]}this.averageFieldLength=n},$.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),n=t.length,i=Object.create(null),r=0;r<n;r++){for(var s=$.FieldRef.fromString(t[r]),o=s.fieldName,a=this.fieldLengths[s],u=new $.Vector,c=this.fieldTermFrequencies[s],l=Object.keys(c),h=l.length,p=this._fields[o].boost||1,f=this._documents[s.docRef].boost||1,d=0;d<h;d++){var g,m,y,v=l[d],x=c[v],w=this.invertedIndex[v]._index;void 0===i[v]?(g=$.idf(this.invertedIndex[v],this.documentCount),i[v]=g):g=i[v],m=g*((this._k1+1)*x)/(this._k1*(1-this._b+this._b*(a/this.averageFieldLength[o]))+x),m*=p,m*=f,y=Math.round(1e3*m)/1e3,u.insert(w,y)}e[s]=u}this.fieldVectors=e},$.Builder.prototype.createTokenSet=function(){this.tokenSet=$.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},$.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new $.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},$.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},$.MatchData=function(e,t,n){for(var i=Object.create(null),r=Object.keys(n||{}),s=0;s<r.length;s++){var o=r[s];i[o]=n[o].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=i)},$.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),n=0;n<t.length;n++){var i=t[n],r=Object.keys(e.metadata[i]);null==this.metadata[i]&&(this.metadata[i]=Object.create(null));for(var s=0;s<r.length;s++){var o=r[s],a=Object.keys(e.metadata[i][o]);null==this.metadata[i][o]&&(this.metadata[i][o]=Object.create(null));for(var u=0;u<a.length;u++){var c=a[u];null==this.metadata[i][o][c]?this.metadata[i][o][c]=e.metadata[i][o][c]:this.metadata[i][o][c]=this.metadata[i][o][c].concat(e.metadata[i][o][c])}}}},$.MatchData.prototype.add=function(e,t,n){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=n);if(t in this.metadata[e])for(var i=Object.keys(n),r=0;r<i.length;r++){var s=i[r];s in this.metadata[e][t]?this.metadata[e][t][s]=this.metadata[e][t][s].concat(n[s]):this.metadata[e][t][s]=n[s]}else this.metadata[e][t]=n},$.Query=function(e){this.clauses=[],this.allFields=e},$.Query.wildcard=new String("*"),$.Query.wildcard.NONE=0,$.Query.wildcard.LEADING=1,$.Query.wildcard.TRAILING=2,$.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},$.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=$.Query.wildcard.NONE),e.wildcard&$.Query.wildcard.LEADING&&e.term.charAt(0)!=$.Query.wildcard&&(e.term="*"+e.term),e.wildcard&$.Query.wildcard.TRAILING&&e.term.slice(-1)!=$.Query.wildcard&&(e.term=e.term+"*"),"presence"in e||(e.presence=$.Query.presence.OPTIONAL),this.clauses.push(e),this},$.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=$.Query.presence.PROHIBITED)return!1;return!0},$.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach((function(e){this.term(e,$.utils.clone(t))}),this),this;var n=t||{};return n.term=e.toString(),this.clause(n),this},$.QueryParseError=function(e,t,n){this.name="QueryParseError",this.message=e,this.start=t,this.end=n},$.QueryParseError.prototype=new Error,$.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},$.QueryLexer.prototype.run=function(){for(var e=$.QueryLexer.lexText;e;)e=e(this)},$.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,n=this.pos,i=0;i<this.escapeCharPositions.length;i++)n=this.escapeCharPositions[i],e.push(this.str.slice(t,n)),t=n+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join("")},$.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},$.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},$.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return $.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},$.QueryLexer.prototype.width=function(){return this.pos-this.start},$.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},$.QueryLexer.prototype.backup=function(){this.pos-=1},$.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=$.QueryLexer.EOS&&this.backup()},$.QueryLexer.prototype.more=function(){return this.pos<this.length},$.QueryLexer.EOS="EOS",$.QueryLexer.FIELD="FIELD",$.QueryLexer.TERM="TERM",$.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",$.QueryLexer.BOOST="BOOST",$.QueryLexer.PRESENCE="PRESENCE",$.QueryLexer.lexField=function(e){return e.backup(),e.emit($.QueryLexer.FIELD),e.ignore(),$.QueryLexer.lexText},$.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit($.QueryLexer.TERM)),e.ignore(),e.more())return $.QueryLexer.lexText},$.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit($.QueryLexer.EDIT_DISTANCE),$.QueryLexer.lexText},$.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit($.QueryLexer.BOOST),$.QueryLexer.lexText},$.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit($.QueryLexer.TERM)},$.QueryLexer.termSeparator=$.tokenizer.separator,$.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==$.QueryLexer.EOS)return $.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return $.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit($.QueryLexer.TERM),$.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit($.QueryLexer.TERM),$.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit($.QueryLexer.PRESENCE),$.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit($.QueryLexer.PRESENCE),$.QueryLexer.lexText;if(t.match($.QueryLexer.termSeparator))return $.QueryLexer.lexTerm}else e.escapeCharacter()}},$.QueryParser=function(e,t){this.lexer=new $.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},$.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=$.QueryParser.parseClause;e;)e=e(this);return this.query},$.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},$.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},$.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},$.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case $.QueryLexer.PRESENCE:return $.QueryParser.parsePresence;case $.QueryLexer.FIELD:return $.QueryParser.parseField;case $.QueryLexer.TERM:return $.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(n+=" with value '"+t.str+"'"),new $.QueryParseError(n,t.start,t.end)}},$.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=$.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=$.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new $.QueryParseError(n,t.start,t.end)}var i=e.peekLexeme();if(null==i){n="expecting term or field, found nothing";throw new $.QueryParseError(n,t.start,t.end)}switch(i.type){case $.QueryLexer.FIELD:return $.QueryParser.parseField;case $.QueryLexer.TERM:return $.QueryParser.parseTerm;default:n="expecting term or field, found '"+i.type+"'";throw new $.QueryParseError(n,i.start,i.end)}}},$.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var n=e.query.allFields.map((function(e){return"'"+e+"'"})).join(", "),i="unrecognised field '"+t.str+"', possible fields: "+n;throw new $.QueryParseError(i,t.start,t.end)}e.currentClause.fields=[t.str];var r=e.peekLexeme();if(null==r){i="expecting term, found nothing";throw new $.QueryParseError(i,t.start,t.end)}if(r.type===$.QueryLexer.TERM)return $.QueryParser.parseTerm;i="expecting term, found '"+r.type+"'";throw new $.QueryParseError(i,r.start,r.end)}},$.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(null!=n)switch(n.type){case $.QueryLexer.TERM:return e.nextClause(),$.QueryParser.parseTerm;case $.QueryLexer.FIELD:return e.nextClause(),$.QueryParser.parseField;case $.QueryLexer.EDIT_DISTANCE:return $.QueryParser.parseEditDistance;case $.QueryLexer.BOOST:return $.QueryParser.parseBoost;case $.QueryLexer.PRESENCE:return e.nextClause(),$.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+n.type+"'";throw new $.QueryParseError(i,n.start,n.end)}else e.nextClause()}},$.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var i="edit distance must be numeric";throw new $.QueryParseError(i,t.start,t.end)}e.currentClause.editDistance=n;var r=e.peekLexeme();if(null!=r)switch(r.type){case $.QueryLexer.TERM:return e.nextClause(),$.QueryParser.parseTerm;case $.QueryLexer.FIELD:return e.nextClause(),$.QueryParser.parseField;case $.QueryLexer.EDIT_DISTANCE:return $.QueryParser.parseEditDistance;case $.QueryLexer.BOOST:return $.QueryParser.parseBoost;case $.QueryLexer.PRESENCE:return e.nextClause(),$.QueryParser.parsePresence;default:i="Unexpected lexeme type '"+r.type+"'";throw new $.QueryParseError(i,r.start,r.end)}else e.nextClause()}},$.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var i="boost must be numeric";throw new $.QueryParseError(i,t.start,t.end)}e.currentClause.boost=n;var r=e.peekLexeme();if(null!=r)switch(r.type){case $.QueryLexer.TERM:return e.nextClause(),$.QueryParser.parseTerm;case $.QueryLexer.FIELD:return e.nextClause(),$.QueryParser.parseField;case $.QueryLexer.EDIT_DISTANCE:return $.QueryParser.parseEditDistance;case $.QueryLexer.BOOST:return $.QueryParser.parseBoost;case $.QueryLexer.PRESENCE:return e.nextClause(),$.QueryParser.parsePresence;default:i="Unexpected lexeme type '"+r.type+"'";throw new $.QueryParseError(i,r.start,r.end)}else e.nextClause()}},void 0===(r="function"==typeof(i=function(){return $})?i.call(t,n,t,e):i)||(e.exports=r)}()}}]); \ No newline at end of file diff --git a/assets/js/739a1e5f.97c3a5dc.js b/assets/js/739a1e5f.97c3a5dc.js new file mode 100644 index 0000000..e16c455 --- /dev/null +++ b/assets/js/739a1e5f.97c3a5dc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[180],{2599:(e,n,t)=>{t.d(n,{Z:()=>i});t(7378);var a=t(624);const s={tabItem:"tabItem_wHwb"};var r=t(4246);function i(e){let{children:n,hidden:t,className:i}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.Z)(s.tabItem,i),hidden:t,children:n})}},8447:(e,n,t)=>{t.d(n,{Z:()=>y});var a=t(7378),s=t(624),r=t(9169),i=t(3620),l=t(9749),c=t(8981),o=t(56),d=t(8796);function h(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:s}}=e;return{value:n,label:t,attributes:a,default:s}}))}(t);return function(e){const n=(0,o.l)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:t}=e;const s=(0,i.k6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,c._X)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(s.location.search);n.set(r,e),s.replace({...s.location,search:n.toString()})}),[r,s])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,r=u(e),[i,c]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[o,h]=m({queryString:t,groupId:s}),[x,j]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,r]=(0,d.Nk)(t);return[s,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:s}),g=(()=>{const e=o??x;return p({value:e,tabValues:r})?e:null})();(0,l.Z)((()=>{g&&c(g)}),[g]);return{selectedValue:i,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);c(e),h(e),j(e)}),[h,j,r]),tabValues:r}}var j=t(362);const g={tabList:"tabList_J5MA",tabItem:"tabItem_l0OV"};var b=t(4246);function f(e){let{className:n,block:t,selectedValue:a,selectValue:i,tabValues:l}=e;const c=[],{blockElementScrollPositionUntilNextRender:o}=(0,r.o5)(),d=e=>{const n=e.currentTarget,t=c.indexOf(n),s=l[t].value;s!==a&&(o(n),i(s))},h=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const t=c.indexOf(e.currentTarget)+1;n=c[t]??c[0];break}case"ArrowLeft":{const t=c.indexOf(e.currentTarget)-1;n=c[t]??c[c.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.Z)("tabs",{"tabs--block":t},n),children:l.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>c.push(e),onKeyDown:h,onClick:d,...r,className:(0,s.Z)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function v(e){let{lazy:n,children:t,selectedValue:s}=e;const r=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=r.find((e=>e.props.value===s));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:r.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==s})))})}function w(e){const n=x(e);return(0,b.jsxs)("div",{className:(0,s.Z)("tabs-container",g.tabList),children:[(0,b.jsx)(f,{...e,...n}),(0,b.jsx)(v,{...e,...n})]})}function y(e){const n=(0,j.Z)();return(0,b.jsx)(w,{...e,children:h(e.children)},String(n))}},7518:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>p,frontMatter:()=>l,metadata:()=>o,toc:()=>h});var a=t(4246),s=t(1670),r=t(8447),i=t(2599);const l={},c="@nestjs-cls/transactional",o={id:"plugins/available-plugins/transactional/index",title:"@nestjs-cls/transactional",description:"The Transactional plugin for nestjs-cls provides a generic interface that can be used to wrap any function call in",source:"@site/docs/06_plugins/01_available-plugins/01-transactional/index.md",sourceDirName:"06_plugins/01_available-plugins/01-transactional",slug:"/plugins/available-plugins/transactional/",permalink:"/nestjs-cls/plugins/available-plugins/transactional/",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/06_plugins/01_available-plugins/01-transactional/index.md",tags:[],version:"current",frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Available Plugins",permalink:"/nestjs-cls/plugins/available-plugins/"},next:{title:"Prisma adapter",permalink:"/nestjs-cls/plugins/available-plugins/transactional/prisma-adapter"}},d={},h=[{value:"Installation",id:"installation",level:2},{value:"Example",id:"example",level:2},{value:"Plugin registration",id:"plugin-registration",level:3},{value:"Using the TransactionHost",id:"using-the-transactionhost",level:3},{value:"Using the Transactional decorator",id:"using-the-transactional-decorator",level:3},{value:"Passing transaction options",id:"passing-transaction-options",level:3},{value:"ClsPluginTransactional Interface",id:"clsplugintransactional-interface",level:2},{value:"TransactionHost Interface",id:"transactionhost-interface",level:2},{value:"Considerations",id:"considerations",level:2}];function u(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h1,{id:"nestjs-clstransactional",children:"@nestjs-cls/transactional"}),"\n",(0,a.jsxs)(n.p,{children:["The ",(0,a.jsx)(n.em,{children:"Transactional"})," plugin for ",(0,a.jsx)(n.code,{children:"nestjs-cls"})," provides a generic interface that can be used to wrap any function call in\na CLS-enabled transaction by storing the transaction reference in the CLS context."]}),"\n",(0,a.jsx)(n.p,{children:"The transaction reference can be then retrieved in any other service and refer to the same transaction without having to pass it around."}),"\n",(0,a.jsx)(n.h2,{id:"installation",children:"Installation"}),"\n",(0,a.jsxs)(r.Z,{children:[(0,a.jsx)(i.Z,{value:"npm",label:"npm",default:!0,children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"npm install @nestjs-cls/transactional\n"})})}),(0,a.jsx)(i.Z,{value:"yarn",label:"yarn",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"yarn add @nestjs-cls/transactional\n"})})}),(0,a.jsx)(i.Z,{value:"pnpm",label:"pnpm",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"pnpm add @nestjs-cls/transactional\n"})})})]}),"\n",(0,a.jsx)(n.p,{children:"The plugin works in conjunction with various adapters that provide the actual transactional logic and types for the underlying database library, so you'll need to install one of those as well."}),"\n",(0,a.jsx)(n.p,{children:"Adapters for the following libraries are available:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:["Prisma (see ",(0,a.jsx)(n.a,{href:"/nestjs-cls/plugins/available-plugins/transactional/prisma-adapter",children:"prisma-adapter"}),")"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["Adapters ",(0,a.jsx)(n.em,{children:"will not"})," be implemented for the following libraries:"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:["TypeORM (since a more fully-featured ",(0,a.jsx)(n.a,{href:"https://github.com/Aliheym/typeorm-transactional",children:"community package already exists"}),")"]}),"\n",(0,a.jsxs)(n.li,{children:["Sequelize (since it already includes a ",(0,a.jsx)(n.a,{href:"https://sequelize.org/docs/v6/other-topics/transactions/#automatically-pass-transactions-to-all-queries",children:"built-in CLS-enabled transaction support"}),")"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"example",children:"Example"}),"\n",(0,a.jsxs)(n.p,{children:["For this example, we'll use the ",(0,a.jsx)(n.code,{children:"prisma"})," library and the ",(0,a.jsxs)(n.a,{href:"/nestjs-cls/plugins/available-plugins/transactional/prisma-adapter",children:[(0,a.jsx)(n.code,{children:"@nestjs-cls/transactional-adapter-prisma"})," adapter"]}),". Later, you'll learn how to ",(0,a.jsx)(n.a,{href:"/nestjs-cls/plugins/available-plugins/transactional/creating-custom-adapter",children:"create your own adapter"}),"."]}),"\n",(0,a.jsxs)(n.p,{children:["Suppose we already have a ",(0,a.jsx)(n.code,{children:"PrismaModule"})," which provides a ",(0,a.jsx)(n.code,{children:"PrismaClient"})," instance and two other services ",(0,a.jsx)(n.code,{children:"UserService"})," and ",(0,a.jsx)(n.code,{children:"AccountService"})," which we'd like to make transactional."]}),"\n",(0,a.jsx)(n.h3,{id:"plugin-registration",children:"Plugin registration"}),"\n",(0,a.jsxs)(n.p,{children:["To add register the transactional plugin with ",(0,a.jsx)(n.code,{children:"nestjs-cls"}),", we need to pass it to the ",(0,a.jsx)(n.code,{children:"forRoot"})," method of the ",(0,a.jsx)(n.code,{children:"ClsModule"}),":"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-ts",metastring:'title="app.module.ts"',children:"import { ClsModule } from 'nestjs-cls';\nimport { ClsPluginTransactional } from '@nestjs-cls/transactional';\nimport { TransactionalAdapterPrisma } from '@nestjs-cls/transactional-adapter-prisma';\n// ... other imports\n\n@Module({\n imports: [\n PrismaModule,\n ClsModule.forRoot({\n plugins: [\n // highlight-start\n new ClsPluginTransactional({\n // if PrismaModule is not global, we need to make it available to the plugin\n imports: [PrismaModule],\n adapter: new TransactionalAdapterPrisma({\n // each adapter has its own options, see the adapter docs for more info\n prismaInjectionToken: PrismaClient,\n }),\n }),\n // highlight-end\n ],\n }),\n ],\n providers: [UserService, AccountService],\n})\nexport class AppModule {}\n"})}),"\n",(0,a.jsxs)(n.p,{children:["This registers a ",(0,a.jsx)(n.code,{children:"TransactionHost"})," provider in the global context which can be used to start a new transaction and retrieve the current transaction reference."]}),"\n",(0,a.jsx)(n.h3,{id:"using-the-transactionhost",children:"Using the TransactionHost"}),"\n",(0,a.jsxs)(n.p,{children:["Now that we have the plugin registered, we can use the ",(0,a.jsx)(n.code,{children:"TransactionHost"})," to start a new transaction and retrieve the current transaction reference."]}),"\n",(0,a.jsxs)(n.p,{children:["Suppose that any time we create an ",(0,a.jsx)(n.code,{children:"User"}),", we want to create an ",(0,a.jsx)(n.code,{children:"Account"})," for them as well and both operations must either succeed or fail. We can use the ",(0,a.jsx)(n.code,{children:"TransactionHost"})," to start a new transaction and retrieve the current transaction reference."]}),"\n",(0,a.jsxs)(n.p,{children:["The type argument on the ",(0,a.jsx)(n.code,{children:"TransactionHost<Adapter>"})," makes sure that the ",(0,a.jsx)(n.code,{children:"tx"})," property is typed correctly and the ",(0,a.jsx)(n.code,{children:"withTransaction"})," method returns the correct type. This is ensured by the implementation of the adapter:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-ts",metastring:'title="user.service.ts"',children:"@Injectable()\nclass UserService {\n constructor(\n // highlight-start\n private readonly txHost: TransactionHost<TransactionalAdapterPrisma>,\n // highlight-end\n private readonly accountService: AccountService,\n ) {}\n\n async createUser(name: string): Promise<User> {\n return this.txHost.withTransaction(async () => {\n const user = await this.txHost.tx.user.create({ data: { name } });\n await this.accountService.createAccountForUser(user.id);\n return user;\n });\n }\n}\n"})}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-ts",metastring:'title="user.service.ts"',children:"@Injectable()\nclass AccountService {\n constructor(\n private readonly txHost: TransactionHost<TransactionalAdapterPrisma>,\n ) {}\n\n async createAccountForUser(id: number): Promise<Account> {\n return this.txHost.tx.user.create({\n data: { userId: id, number: Math.random() },\n });\n }\n}\n"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Notice that we never used either raw ",(0,a.jsx)(n.code,{children:"PrismaClient"})," or the ",(0,a.jsx)(n.code,{children:"prisma.$transaction"})," directly. This is because the adapter takes care of that for us, otherwise the transaction would not be propagated in the CLS context."]})}),"\n",(0,a.jsx)(n.h3,{id:"using-the-transactional-decorator",children:"Using the Transactional decorator"}),"\n",(0,a.jsxs)(n.p,{children:["The ",(0,a.jsx)(n.code,{children:"@Transactional"})," decorator can be used to wrap a method call in the ",(0,a.jsx)(n.code,{children:"withTransaction"})," call implicitly. This saves a lot of boilerplate code and makes the code more readable."]}),"\n",(0,a.jsxs)(n.p,{children:["Using the decorator, we can change the ",(0,a.jsx)(n.code,{children:"createUser"})," method like so without changing the behavior:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-ts",metastring:'title="user.service.ts"',children:"@Injectable()\nclass UserService {\n constructor(\n private readonly txHost: TransactionHost<TransactionalAdapterPrisma>,\n private readonly accountService: AccountService,\n ) {}\n\n @Transactional()\n async createUser(name: string): Promise<User> {\n const user = await this.txHost.tx.user.create({ data: { name } });\n await this.accountService.createAccountForUser(user.id);\n return user;\n }\n}\n"})}),"\n",(0,a.jsx)(n.h3,{id:"passing-transaction-options",children:"Passing transaction options"}),"\n",(0,a.jsxs)(n.p,{children:["The both the ",(0,a.jsx)(n.code,{children:"withTransaction"})," method and the ",(0,a.jsx)(n.code,{children:"Transactional"})," decorator accepts an optional ",(0,a.jsx)(n.code,{children:"TransactionOptions"})," object as the first argument. This object can be used to configure the transaction, for example to set the isolation level or the timeout. The type is also provided by the adapter."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-ts",children:"// highlight-start\n@Transactional<TransactionalAdapterPrisma>({ isolationLevel: 'Serializable' })\n// highlight-end\nasync createUser(name: string): Promise<User> {\n const user = await this.txHost.tx.user.create({ data: { name } });\n await this.accountService.createAccountForUser(user.id);\n return user;\n}\n"})}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-ts",children:"async createUser(name: string): Promise<User> {\n // highlight-start\n return this.txHost.withTransaction({ isolationLevel: 'Serializable' }, async () => {\n // highlight-end\n const user = await this.txHost.tx.user.create({ data: { name } });\n await this.accountService.createAccountForUser(user.id);\n return user;\n });\n}\n"})}),"\n",(0,a.jsx)(n.h2,{id:"clsplugintransactional-interface",children:"ClsPluginTransactional Interface"}),"\n",(0,a.jsxs)(n.p,{children:["The ",(0,a.jsx)(n.code,{children:"ClsPluginTransactional"})," constructor takes an options object with the following properties:"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.em,{children:(0,a.jsx)(n.code,{children:"imports"})})}),(0,a.jsx)(n.code,{children:": any[]"}),(0,a.jsx)(n.br,{}),"\n","An array of NestJS modules that should be imported for the plugin to work. If the dependencies are available in the global context, this is not necessary."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.em,{children:(0,a.jsx)(n.code,{children:"adapter"})})}),(0,a.jsx)(n.code,{children:": TransactionalAdapter"}),(0,a.jsx)(n.br,{}),"\n","An instance of the adapter that should be used for the plugin."]}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"transactionhost-interface",children:"TransactionHost Interface"}),"\n",(0,a.jsxs)(n.p,{children:["The ",(0,a.jsx)(n.code,{children:"TransactionHost"})," interface is the main working interface of the plugin. It provides the following API:"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.em,{children:(0,a.jsx)(n.code,{children:"tx"})})}),(0,a.jsx)(n.code,{children:": Transaction"}),(0,a.jsx)(n.br,{}),"\n","Reference to the currently active transaction. Depending on the adapter implementation for the underlying database library, this can be either a transaction client instance, a transaction object or a transaction ID. If no transaction is active, refers to the default non-transactional client instance (or undefined transaction ID)."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.em,{children:(0,a.jsx)(n.code,{children:"withTransaction"})})}),(0,a.jsx)(n.code,{children:"(callback): Promise"}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.em,{children:(0,a.jsx)(n.code,{children:"withTransaction"})})}),(0,a.jsx)(n.code,{children:"(options, callback): Promise"}),(0,a.jsx)(n.br,{}),"\n","Runs the callback in a transaction. Optionally takes a ",(0,a.jsx)(n.code,{children:"TransactionOptions"})," object as the first parameter."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.em,{children:(0,a.jsx)(n.code,{children:"withOutTransaction"})})}),(0,a.jsx)(n.code,{children:"(callback): Promise"}),(0,a.jsx)(n.br,{}),"\n","Runs the callback without a transaction (even if one is active in the parent scope)."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.em,{children:(0,a.jsx)(n.code,{children:"isTransactionActive"})})}),(0,a.jsx)(n.code,{children:"(): boolean"}),(0,a.jsx)(n.br,{}),"\n","Returns whether a CLS-managed transaction is active in the current scope."]}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"considerations",children:"Considerations"}),"\n",(0,a.jsxs)(n.p,{children:["Please note that at this time, the ",(0,a.jsx)(n.code,{children:"@nestjs-cls/transactional"})," plugin only supports a ",(0,a.jsx)(n.em,{children:"single"})," database connection per application. This means that if you have multiple databases, you can only use one of them with the transactional plugin."]}),"\n",(0,a.jsxs)(n.p,{children:["This is a subject to change in the future, as there are plans to support multiple ",(0,a.jsx)(n.code,{children:"TransactionHost"})," instances, each with their own adapter and a database connection."]})]})}function p(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(u,{...e})}):u(e)}},1670:(e,n,t)=>{t.d(n,{Z:()=>l,a:()=>i});var a=t(7378);const s={},r=a.createContext(s);function i(e){const n=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),a.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/75a2ce58.288a270b.js b/assets/js/75a2ce58.288a270b.js deleted file mode 100755 index acb75ff..0000000 --- a/assets/js/75a2ce58.288a270b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[678],{5318:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var n=r(7378);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function c(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r,n,i={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var s=n.createContext({}),l=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},u=function(e){var t=l(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},g=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,o=e.originalType,s=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),p=l(r),g=i,m=p["".concat(s,".").concat(g)]||p[g]||d[g]||o;return r?n.createElement(m,a(a({ref:t},u),{},{components:r})):n.createElement(m,a({ref:t},u))}));function m(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=r.length,a=new Array(o);a[0]=g;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[p]="string"==typeof e?e:i,a[1]=c;for(var l=2;l<o;l++)a[l]=r[l];return n.createElement.apply(null,a)}return n.createElement.apply(null,r)}g.displayName="MDXCreateElement"},9882:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>d,frontMatter:()=>o,metadata:()=>c,toc:()=>l});var n=r(5773),i=(r(7378),r(5318));const o={},a="Migration guide",c={unversionedId:"migration-guide/index",id:"migration-guide/index",title:"Migration guide",description:"In case you're upgrading to a new major version of this library, follow the according migration guide.",source:"@site/docs/06_migration-guide/index.md",sourceDirName:"06_migration-guide",slug:"/migration-guide/",permalink:"/nestjs-cls/migration-guide/",draft:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/06_migration-guide/index.md",tags:[],version:"current",frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Compatibility",permalink:"/nestjs-cls/considerations/compatibility"},next:{title:"v2.x \u2192 v3.x",permalink:"/nestjs-cls/migration-guide/v2x-v3x"}},s={},l=[],u={toc:l},p="wrapper";function d(e){let{components:t,...r}=e;return(0,i.kt)(p,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"migration-guide"},"Migration guide"),(0,i.kt)("p",null,"In case you're upgrading to a new major version of this library, follow the according migration guide."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/765.099e041d.js b/assets/js/765.099e041d.js new file mode 100644 index 0000000..7af2fee --- /dev/null +++ b/assets/js/765.099e041d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[765],{4718:(e,t,s)=>{s.d(t,{Z:()=>a});s(7378);var n=s(624),i=s(7419),o=s(8825),r=s(4246);function a(e){let{className:t}=e;return(0,r.jsx)("main",{className:(0,n.Z)("container margin-vert--xl",t),children:(0,r.jsx)("div",{className:"row",children:(0,r.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,r.jsx)(o.Z,{as:"h1",className:"hero__title",children:(0,r.jsx)(i.Z,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,r.jsx)("p",{children:(0,r.jsx)(i.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,r.jsx)("p",{children:(0,r.jsx)(i.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}},765:(e,t,s)=>{s.r(t),s.d(t,{default:()=>l});s(7378);var n=s(7419),i=s(8836),o=s(9145),r=s(4718),a=s(4246);function l(){const e=(0,n.I)({id:"theme.NotFound.title",message:"Page Not Found"});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(i.d,{title:e}),(0,a.jsx)(o.Z,{children:(0,a.jsx)(r.Z,{})})]})}}}]); \ No newline at end of file diff --git a/assets/js/77.6d8f1b9f.js b/assets/js/807.e07e7e07.js old mode 100755 new mode 100644 similarity index 51% rename from assets/js/77.6d8f1b9f.js rename to assets/js/807.e07e7e07.js index d2884cc..2c20430 --- a/assets/js/77.6d8f1b9f.js +++ b/assets/js/807.e07e7e07.js @@ -1 +1 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[77],{5077:(s,c,e)=>{e.r(c)}}]); \ No newline at end of file +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[807],{7807:(s,c,e)=>{e.r(c)}}]); \ No newline at end of file diff --git a/assets/js/81cbaa95.e887b585.js b/assets/js/81cbaa95.e887b585.js deleted file mode 100755 index f1b975d..0000000 --- a/assets/js/81cbaa95.e887b585.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[513],{5318:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>f});var r=n(7378);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var i=r.createContext({}),l=function(e){var t=r.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u=function(e){var t=l(e.components);return r.createElement(i.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,i=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),p=l(n),m=o,f=p["".concat(i,".").concat(m)]||p[m]||d[m]||a;return n?r.createElement(f,s(s({ref:t},u),{},{components:n})):r.createElement(f,s({ref:t},u))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,s=new Array(a);s[0]=m;var c={};for(var i in t)hasOwnProperty.call(t,i)&&(c[i]=t[i]);c.originalType=e,c[p]="string"==typeof e?e:o,s[1]=c;for(var l=2;l<a;l++)s[l]=n[l];return r.createElement.apply(null,s)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},6021:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>i,contentTitle:()=>s,default:()=>d,frontMatter:()=>a,metadata:()=>c,toc:()=>l});var r=n(5773),o=(n(7378),n(5318));const a={},s="Using a Decorator",c={unversionedId:"setting-up-cls-context/using-a-decurator",id:"setting-up-cls-context/using-a-decurator",title:"Using a Decorator",description:"The @UseCls() decorator can be used at a method level to declaratively wrap the method with a cls.run() call. This method should only be used outside of the context of a web request.",source:"@site/docs/02_setting-up-cls-context/04_using-a-decurator.md",sourceDirName:"02_setting-up-cls-context",slug:"/setting-up-cls-context/using-a-decurator",permalink:"/nestjs-cls/setting-up-cls-context/using-a-decurator",draft:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/02_setting-up-cls-context/04_using-a-decurator.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Using an Interceptor",permalink:"/nestjs-cls/setting-up-cls-context/using-an-interceptor"},next:{title:"Features and use cases",permalink:"/nestjs-cls/features-and-use-cases/"}},i={},l=[],u={toc:l},p="wrapper";function d(e){let{components:t,...n}=e;return(0,o.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"using-a-decorator"},"Using a Decorator"),(0,o.kt)("p",null,"The ",(0,o.kt)("inlineCode",{parentName:"p"},"@UseCls()")," decorator can be used at a method level to declaratively wrap the method with a ",(0,o.kt)("inlineCode",{parentName:"p"},"cls.run()")," call. This method should only be used ",(0,o.kt)("a",{parentName:"p",href:"/nestjs-cls/features-and-use-cases/usage-outside-of-web-request"},"outside of the context of a web request"),"."),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Please keep in mind, that since the CLS context initialization ",(0,o.kt)("em",{parentName:"p"},"can")," be async, the ",(0,o.kt)("inlineCode",{parentName:"p"},"@UseCls()")," decorator can ",(0,o.kt)("em",{parentName:"p"},"only")," be used on ",(0,o.kt)("em",{parentName:"p"},"async")," function (those that return a ",(0,o.kt)("inlineCode",{parentName:"p"},"Promise"),").")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/849c94ea.51e67d40.js b/assets/js/849c94ea.51e67d40.js deleted file mode 100755 index 72b65ce..0000000 --- a/assets/js/849c94ea.51e67d40.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[756],{5318:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>m});var r=n(7378);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},s=Object.keys(e);for(r=0;r<s.length;r++)n=s[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r<s.length;r++)n=s[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),u=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},l=function(e){var t=u(e.components);return r.createElement(c.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,s=e.originalType,c=e.parentName,l=i(e,["components","mdxType","originalType","parentName"]),p=u(n),f=o,m=p["".concat(c,".").concat(f)]||p[f]||d[f]||s;return n?r.createElement(m,a(a({ref:t},l),{},{components:n})):r.createElement(m,a({ref:t},l))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var s=n.length,a=new Array(s);a[0]=f;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[p]="string"==typeof e?e:o,a[1]=i;for(var u=2;u<s;u++)a[u]=n[u];return r.createElement.apply(null,a)}return r.createElement.apply(null,n)}f.displayName="MDXCreateElement"},6973:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>d,frontMatter:()=>s,metadata:()=>i,toc:()=>u});var r=n(5773),o=(n(7378),n(5318));const s={},a="Breaking out of DI",i={unversionedId:"features-and-use-cases/breakin-out-of-di",id:"features-and-use-cases/breakin-out-of-di",title:"Breaking out of DI",description:"While this package aims to be compatible with NestJS's Dependency Injection, it is also possible to access the CLS context outside of it.",source:"@site/docs/03_features-and-use-cases/03_breakin-out-of-di.md",sourceDirName:"03_features-and-use-cases",slug:"/features-and-use-cases/breakin-out-of-di",permalink:"/nestjs-cls/features-and-use-cases/breakin-out-of-di",draft:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/03_features-and-use-cases/03_breakin-out-of-di.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Additional CLS Setup",permalink:"/nestjs-cls/features-and-use-cases/additional-cls-setup"},next:{title:"Usage outside of web request",permalink:"/nestjs-cls/features-and-use-cases/usage-outside-of-web-request"}},c={},u=[],l={toc:u},p="wrapper";function d(e){let{components:t,...n}=e;return(0,o.kt)(p,(0,r.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"breaking-out-of-di"},"Breaking out of DI"),(0,o.kt)("p",null,"While this package aims to be compatible with NestJS's Dependency Injection, it is also possible to access the CLS context outside of it."),(0,o.kt)("p",null,"For that, it provides the static ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsServiceManager")," class that exposes the ",(0,o.kt)("inlineCode",{parentName:"p"},"getClsService()")," method which can be used to retrieve the context outside of Nest's injection context (e.g. in top-level functions)"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-ts"},"function helper() {\n const cls = ClsServiceManager.getClsService();\n // you now have access to the shared storage\n console.log(cls.getId());\n}\n")),(0,o.kt)("admonition",{type:"caution"},(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("strong",{parentName:"p"},"Please note"),": Only use this feature where absolutely necessary. Using this technique instead of dependency injection will make it difficult to mock the ClsService and your code will become harder to test.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/86ea57e0.93a2d1c1.js b/assets/js/86ea57e0.93a2d1c1.js deleted file mode 100755 index 6a96f83..0000000 --- a/assets/js/86ea57e0.93a2d1c1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[202],{5318:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var a=n(7378);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},r=Object.keys(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},u="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,o=e.mdxType,r=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=c(n),m=o,h=u["".concat(l,".").concat(m)]||u[m]||d[m]||r;return n?a.createElement(h,i(i({ref:t},p),{},{components:n})):a.createElement(h,i({ref:t},p))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,i=new Array(r);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:o,i[1]=s;for(var c=2;c<r;c++)i[c]=n[c];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},6906:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var a=n(5773),o=(n(7378),n(5318));const r={slug:"/",sidebar_position:0,title:"Introduction"},i="NestJS CLS",s={unversionedId:"introduction/index",id:"introduction/index",title:"Introduction",description:"A continuation-local\\* storage module compatible with NestJS' dependency injection based on Node's AsyncLocalStorage.",source:"@site/docs/01_introduction/index.md",sourceDirName:"01_introduction",slug:"/",permalink:"/nestjs-cls/",draft:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/01_introduction/index.md",tags:[],version:"current",sidebarPosition:0,frontMatter:{slug:"/",sidebar_position:0,title:"Introduction"},sidebar:"documentationSidebar",next:{title:"Installation",permalink:"/nestjs-cls/introduction/installation"}},l={},c=[{value:"Use cases",id:"use-cases",level:2},{value:"Motivation",id:"motivation",level:2},{value:"Highlights",id:"highlights",level:2}],p={toc:c},u="wrapper";function d(e){let{components:t,...n}=e;return(0,o.kt)(u,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"nestjs-cls"},"NestJS CLS"),(0,o.kt)("p",null,"A continuation-local","*"," storage module compatible with ",(0,o.kt)("a",{parentName:"p",href:"https://nestjs.com/"},"NestJS"),"' dependency injection based on Node's ",(0,o.kt)("a",{parentName:"p",href:"https://nodejs.org/api/async_context.html#async_context_class_asynclocalstorage"},"AsyncLocalStorage"),"."),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},(0,o.kt)("em",{parentName:"p"},"Continuation-local storage allows to store state and propagate it throughout callbacks and promise chains. It allows storing data throughout the lifetime of a web request or any other asynchronous duration. It is similar to thread-local storage in other languages."))),(0,o.kt)("h2",{id:"use-cases"},"Use cases"),(0,o.kt)("p",null,"Some common use cases that this library enables include:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Tracking the Request ID and other metadata for logging purposes"),(0,o.kt)("li",{parentName:"ul"},"Keeping track of the user throughout the whole request"),(0,o.kt)("li",{parentName:"ul"},"Making the dynamic Tenant database connection available everywhere in multi-tenant apps"),(0,o.kt)("li",{parentName:"ul"},"Propagating the authentication level or role to restrict access to resources"),(0,o.kt)("li",{parentName:"ul"},"Seamlessly propagating the ",(0,o.kt)("inlineCode",{parentName:"li"},"transaction")," object of your favourite ORM across services without breaking encapsulation and isolation by explicitly passing it around."),(0,o.kt)("li",{parentName:"ul"},'Using "request" context in cases where actual REQUEST-scoped providers are not supported (passport strategies, cron controllers, websocket gateways, ...)')),(0,o.kt)("p",null,"Most of these are to some extent solvable using ",(0,o.kt)("em",{parentName:"p"},"REQUEST-scoped")," providers or passing the context as a parameter, but these solutions are often clunky and come with a whole lot of other issues."),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"*"," The name comes from the original implementation based on ",(0,o.kt)("inlineCode",{parentName:"p"},"cls-hooked"),", which was since replaced by the native ",(0,o.kt)("inlineCode",{parentName:"p"},"AsyncLocalStorage"),".")),(0,o.kt)("h2",{id:"motivation"},"Motivation"),(0,o.kt)("p",null,(0,o.kt)("em",{parentName:"p"},"NestJS is an amazing framework, but in the plethora of awesome built-in features, I still missed one"),"."),(0,o.kt)("p",null,(0,o.kt)("em",{parentName:"p"},"I created this library to solve a specific use case, which was limiting access to only those records which had the same TenantId as the request's user in a central manner. The repository code automatically added a ",(0,o.kt)("inlineCode",{parentName:"em"},"WHERE")," clause to each query, which made sure that other developers couldn't accidentally mix tenant data (all tenants' data were held in the same database) without extra effort.")),(0,o.kt)("p",null,(0,o.kt)("em",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"em"},"AsyncLocalStorage")," is still fairly new and not many people know of its existence and benefits. Here's a nice ",(0,o.kt)("a",{parentName:"em",href:"https://youtu.be/R2RMGQhWyCk?t=9742"},"talk from NodeConf")," about the history. I've invested a great deal of my personal time in making the use of it as pleasant as possible.")),(0,o.kt)("p",null,(0,o.kt)("em",{parentName:"p"},"While the use of ",(0,o.kt)("inlineCode",{parentName:"em"},"async_hooks")," is sometimes criticized for ",(0,o.kt)("a",{parentName:"em",href:"https://gist.github.com/Aschen/5cc1f3f3b58f1e284b670b83bb53da7d"},"making Node run slower"),", in my experience, the introduced overhead is negligible compared to any IO operation (like a DB or external API call). If you want fast, use a compiled language.")),(0,o.kt)("p",null,(0,o.kt)("em",{parentName:"p"},"Also, if you use some tracing library (like ",(0,o.kt)("inlineCode",{parentName:"em"},"otel"),"), it most likely already uses ",(0,o.kt)("inlineCode",{parentName:"em"},"async_hooks")," under the hood, so you might as well use it to your advantage.")),(0,o.kt)("h2",{id:"highlights"},"Highlights"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},(0,o.kt)("strong",{parentName:"p"},"New"),": Version ",(0,o.kt)("inlineCode",{parentName:"p"},"3.0")," introduces ",(0,o.kt)("a",{parentName:"p",href:"/nestjs-cls/features-and-use-cases/proxy-providers"},(0,o.kt)("em",{parentName:"a"},"Proxy Providers"))," as an alternative to the imperative API. (Minor breaking changes were introduced, see ",(0,o.kt)("a",{parentName:"p",href:"/nestjs-cls/migration-guide/v2x-v3x"},"Migration guide"),").")),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"Version ",(0,o.kt)("inlineCode",{parentName:"p"},"2.0")," brings advanced ",(0,o.kt)("a",{parentName:"p",href:"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference"},"type safety and type inference"),". However, it requires features from ",(0,o.kt)("inlineCode",{parentName:"p"},"typescript >= 4.4")," - Namely allowing ",(0,o.kt)("inlineCode",{parentName:"p"},"symbol")," members in interfaces. If you can't upgrade but still want to use this library, install version ",(0,o.kt)("inlineCode",{parentName:"p"},"1.6.2"),", which lacks the typing features.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/86ea57e0.ff6330f0.js b/assets/js/86ea57e0.ff6330f0.js new file mode 100644 index 0000000..87505e8 --- /dev/null +++ b/assets/js/86ea57e0.ff6330f0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[202],{5737:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>c,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>r,toc:()=>l});var t=n(4246),i=n(1670);const o={slug:"/",sidebar_position:0,title:"Introduction"},a="NestJS CLS",r={id:"introduction/index",title:"Introduction",description:"A continuation-local\\* storage module compatible with NestJS' dependency injection based on Node's AsyncLocalStorage.",source:"@site/docs/01_introduction/index.md",sourceDirName:"01_introduction",slug:"/",permalink:"/nestjs-cls/",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/01_introduction/index.md",tags:[],version:"current",sidebarPosition:0,frontMatter:{slug:"/",sidebar_position:0,title:"Introduction"},sidebar:"documentationSidebar",next:{title:"Installation",permalink:"/nestjs-cls/introduction/installation"}},c={},l=[{value:"Use cases",id:"use-cases",level:2},{value:"Motivation",id:"motivation",level:2},{value:"Highlights",id:"highlights",level:2}];function d(e){const s={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.h1,{id:"nestjs-cls",children:"NestJS CLS"}),"\n",(0,t.jsxs)(s.p,{children:["A continuation-local* storage module compatible with ",(0,t.jsx)(s.a,{href:"https://nestjs.com/",children:"NestJS"}),"' dependency injection based on Node's ",(0,t.jsx)(s.a,{href:"https://nodejs.org/api/async_context.html#async_context_class_asynclocalstorage",children:"AsyncLocalStorage"}),"."]}),"\n",(0,t.jsxs)(s.blockquote,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.em,{children:"Continuation-local storage allows to store state and propagate it throughout callbacks and promise chains. It allows storing data throughout the lifetime of a web request or any other asynchronous duration. It is similar to thread-local storage in other languages."})}),"\n"]}),"\n",(0,t.jsx)(s.h2,{id:"use-cases",children:"Use cases"}),"\n",(0,t.jsx)(s.p,{children:"Some common use cases that this library enables include:"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:"Tracking the Request ID and other metadata for logging purposes"}),"\n",(0,t.jsx)(s.li,{children:"Keeping track of the user throughout the whole request"}),"\n",(0,t.jsx)(s.li,{children:"Making the dynamic Tenant database connection available everywhere in multi-tenant apps"}),"\n",(0,t.jsx)(s.li,{children:"Propagating the authentication level or role to restrict access to resources"}),"\n",(0,t.jsxs)(s.li,{children:["Seamlessly propagating database transaction across services without breaking encapsulation and isolation by explicitly passing it around (",(0,t.jsxs)(s.strong,{children:["Now available with the ",(0,t.jsx)(s.a,{href:"/nestjs-cls/plugins/available-plugins/transactional/",children:"Transactional plugin"})]}),")"]}),"\n",(0,t.jsx)(s.li,{children:'Using "request" context in cases where actual REQUEST-scoped providers are not supported (passport strategies, cron controllers, websocket gateways, ...)'}),"\n"]}),"\n",(0,t.jsxs)(s.p,{children:["Most of these are to some extent solvable using ",(0,t.jsx)(s.em,{children:"REQUEST-scoped"})," providers or passing the context as a parameter, but these solutions are often clunky and come with a whole lot of other issues."]}),"\n",(0,t.jsx)(s.admonition,{type:"info",children:(0,t.jsxs)(s.p,{children:["* The name comes from the original implementation based on ",(0,t.jsx)(s.code,{children:"cls-hooked"}),", which was since replaced by the native ",(0,t.jsx)(s.code,{children:"AsyncLocalStorage"}),"."]})}),"\n",(0,t.jsx)(s.h2,{id:"motivation",children:"Motivation"}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.em,{children:"NestJS is an amazing framework, but in the plethora of awesome built-in features, I still missed one"}),"."]}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsxs)(s.em,{children:["I created this library to solve a specific use case, which was limiting access to only those records which had the same TenantId as the request's user in a central manner. The repository code automatically added a ",(0,t.jsx)(s.code,{children:"WHERE"})," clause to each query, which made sure that other developers couldn't accidentally mix tenant data (all tenants' data were held in the same database) without extra effort."]})}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsxs)(s.em,{children:[(0,t.jsx)(s.code,{children:"AsyncLocalStorage"})," is still fairly new and not many people know of its existence and benefits. Here's a nice ",(0,t.jsx)(s.a,{href:"https://youtu.be/R2RMGQhWyCk?t=9742",children:"talk from NodeConf"})," about the history. I've invested a great deal of my personal time in making the use of it as pleasant as possible."]})}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsxs)(s.em,{children:["While the use of ",(0,t.jsx)(s.code,{children:"async_hooks"})," is sometimes criticized for ",(0,t.jsx)(s.a,{href:"https://gist.github.com/Aschen/5cc1f3f3b58f1e284b670b83bb53da7d",children:"making Node run slower"}),", in my experience, the introduced overhead is negligible compared to any IO operation (like a DB or external API call). If you want fast, use a compiled language."]})}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsxs)(s.em,{children:["Also, if you use some tracing library (like ",(0,t.jsx)(s.code,{children:"otel"}),"), it most likely already uses ",(0,t.jsx)(s.code,{children:"async_hooks"})," under the hood, so you might as well use it to your advantage."]})}),"\n",(0,t.jsx)(s.h2,{id:"highlights",children:"Highlights"}),"\n",(0,t.jsxs)(s.blockquote,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.strong,{children:"New"})," Version ",(0,t.jsx)(s.code,{children:"4.0"})," brings support for ",(0,t.jsx)(s.a,{href:"/nestjs-cls/plugins/",children:"Plugins"})," which enable pre-built integrations with other libraries and frameworks. (See ",(0,t.jsx)(s.a,{href:"/nestjs-cls/migration-guide/v3x-v4x",children:"Migration guide"})," for breaking changes)."]}),"\n"]}),"\n",(0,t.jsxs)(s.blockquote,{children:["\n",(0,t.jsxs)(s.p,{children:["Version ",(0,t.jsx)(s.code,{children:"3.0"})," introduces ",(0,t.jsx)(s.a,{href:"/nestjs-cls/features-and-use-cases/proxy-providers",children:(0,t.jsx)(s.em,{children:"Proxy Providers"})})," as an alternative to the imperative API. (Minor breaking changes were introduced, see ",(0,t.jsx)(s.a,{href:"/nestjs-cls/migration-guide/v2x-v3x",children:"Migration guide"}),")."]}),"\n"]}),"\n",(0,t.jsxs)(s.blockquote,{children:["\n",(0,t.jsxs)(s.p,{children:["Version ",(0,t.jsx)(s.code,{children:"2.0"})," brings advanced ",(0,t.jsx)(s.a,{href:"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference",children:"type safety and type inference"}),". However, it requires features from ",(0,t.jsx)(s.code,{children:"typescript >= 4.4"})," - Namely allowing ",(0,t.jsx)(s.code,{children:"symbol"})," members in interfaces. If you can't upgrade but still want to use this library, install version ",(0,t.jsx)(s.code,{children:"1.6.2"}),", which lacks the typing features."]}),"\n"]})]})}function h(e={}){const{wrapper:s}={...(0,i.a)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},1670:(e,s,n)=>{n.d(s,{Z:()=>r,a:()=>a});var t=n(7378);const i={},o=t.createContext(i);function a(e){const s=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function r(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),t.createElement(o.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/893.bb801cd0.js b/assets/js/893.bb801cd0.js deleted file mode 100755 index 4253cc0..0000000 --- a/assets/js/893.bb801cd0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[893],{3893:(e,t,n)=>{n.r(t),n.d(t,{default:()=>c});var a=n(7378),l=n(9213),o=n(8831),r=n(9176);function c(){return a.createElement(a.Fragment,null,a.createElement(o.d,{title:(0,l.I)({id:"theme.NotFound.title",message:"Page Not Found"})}),a.createElement(r.Z,null,a.createElement("main",{className:"container margin-vert--xl"},a.createElement("div",{className:"row"},a.createElement("div",{className:"col col--6 col--offset-3"},a.createElement("h1",{className:"hero__title"},a.createElement(l.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),a.createElement("p",null,a.createElement(l.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),a.createElement("p",null,a.createElement(l.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"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/935f2afb.da867498.js b/assets/js/935f2afb.da867498.js deleted file mode 100755 index 0fcf212..0000000 --- a/assets/js/935f2afb.da867498.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"documentationSidebar":[{"type":"category","label":"Introduction","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Installation","href":"/nestjs-cls/introduction/installation","docId":"introduction/installation"},{"type":"link","label":"Quick Start","href":"/nestjs-cls/introduction/quick-start","docId":"introduction/quick-start"},{"type":"link","label":"How it works","href":"/nestjs-cls/introduction/how-it-works","docId":"introduction/how-it-works"}],"href":"/nestjs-cls/"},{"type":"category","label":"Setting up the CLS context","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Using a Middleware","href":"/nestjs-cls/setting-up-cls-context/using-a-middleware","docId":"setting-up-cls-context/using-a-middleware"},{"type":"link","label":"Using a Guard","href":"/nestjs-cls/setting-up-cls-context/using-a-guard","docId":"setting-up-cls-context/using-a-guard"},{"type":"link","label":"Using an Interceptor","href":"/nestjs-cls/setting-up-cls-context/using-an-interceptor","docId":"setting-up-cls-context/using-an-interceptor"},{"type":"link","label":"Using a Decorator","href":"/nestjs-cls/setting-up-cls-context/using-a-decurator","docId":"setting-up-cls-context/using-a-decurator"}],"href":"/nestjs-cls/setting-up-cls-context/"},{"type":"category","label":"Features and use cases","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Request ID","href":"/nestjs-cls/features-and-use-cases/request-id","docId":"features-and-use-cases/request-id"},{"type":"link","label":"Additional CLS Setup","href":"/nestjs-cls/features-and-use-cases/additional-cls-setup","docId":"features-and-use-cases/additional-cls-setup"},{"type":"link","label":"Breaking out of DI","href":"/nestjs-cls/features-and-use-cases/breakin-out-of-di","docId":"features-and-use-cases/breakin-out-of-di"},{"type":"link","label":"Usage outside of web request","href":"/nestjs-cls/features-and-use-cases/usage-outside-of-web-request","docId":"features-and-use-cases/usage-outside-of-web-request"},{"type":"link","label":"Type safety and type inference","href":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference","docId":"features-and-use-cases/type-safety-and-type-inference"},{"type":"link","label":"Proxy Providers","href":"/nestjs-cls/features-and-use-cases/proxy-providers","docId":"features-and-use-cases/proxy-providers"}],"href":"/nestjs-cls/features-and-use-cases/"},{"type":"category","label":"API","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Service Interface","href":"/nestjs-cls/api/service-interface","docId":"api/service-interface"},{"type":"link","label":"Module Options","href":"/nestjs-cls/api/module-options","docId":"api/module-options"}],"href":"/nestjs-cls/api/"},{"type":"category","label":"Considerations","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Security","href":"/nestjs-cls/considerations/security","docId":"considerations/security"},{"type":"link","label":"Compatibility","href":"/nestjs-cls/considerations/compatibility","docId":"considerations/compatibility"}],"href":"/nestjs-cls/considerations/"},{"type":"category","label":"Migration guide","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"v2.x \u2192 v3.x","href":"/nestjs-cls/migration-guide/v2x-v3x","docId":"migration-guide/v2x-v3x"}],"href":"/nestjs-cls/migration-guide/"}]},"docs":{"api/index":{"id":"api/index","title":"API","description":"This chapter describes the programmatic API of the ClsService and the ClsModule options.","sidebar":"documentationSidebar"},"api/module-options":{"id":"api/module-options","title":"Module Options","description":"forRoot(Async)","sidebar":"documentationSidebar"},"api/service-interface":{"id":"api/service-interface","title":"Service Interface","description":"ClsService","sidebar":"documentationSidebar"},"considerations/compatibility":{"id":"considerations/compatibility","title":"Compatibility","description":"The table below outlines the compatibility with some platforms:","sidebar":"documentationSidebar"},"considerations/index":{"id":"considerations/index","title":"Considerations","description":"This chapter exists to help you decide whether this library is compatible with your project and to address any concerns that you may have.","sidebar":"documentationSidebar"},"considerations/security":{"id":"considerations/security","title":"Security","description":"It is often discussed whether AsyncLocalStorage is safe to use for concurrent requests (because of a possible context leak) and whether the context could be lost_ throughout the duration of a request.","sidebar":"documentationSidebar"},"features-and-use-cases/additional-cls-setup":{"id":"features-and-use-cases/additional-cls-setup","title":"Additional CLS Setup","description":"The CLS middleware/guard/interceptor provide some default functionality, but sometimes you might want to store more contextual things in the CLS.","sidebar":"documentationSidebar"},"features-and-use-cases/breakin-out-of-di":{"id":"features-and-use-cases/breakin-out-of-di","title":"Breaking out of DI","description":"While this package aims to be compatible with NestJS\'s Dependency Injection, it is also possible to access the CLS context outside of it.","sidebar":"documentationSidebar"},"features-and-use-cases/index":{"id":"features-and-use-cases/index","title":"Features and use cases","description":"In addition to the basic functionality described in the Quick start chapter, this module provides several other features to make your life as a developer easier.","sidebar":"documentationSidebar"},"features-and-use-cases/proxy-providers":{"id":"features-and-use-cases/proxy-providers","title":"Proxy Providers","description":"Since v3.0","sidebar":"documentationSidebar"},"features-and-use-cases/request-id":{"id":"features-and-use-cases/request-id","title":"Request ID","description":"Because of a shared storage, CLS is an ideal tool for tracking request (correlation) IDs for the purpose of logging. This package provides an option to automatically generate request IDs in the middleware/guard/interceptor, if you pass { generateId: true } to its options. By default, the generated ID is a string based on Math.random(), but you can provide a custom function in the idGenerator option.","sidebar":"documentationSidebar"},"features-and-use-cases/type-safety-and-type-inference":{"id":"features-and-use-cases/type-safety-and-type-inference","title":"Type safety and type inference","description":"Since v2.0","sidebar":"documentationSidebar"},"features-and-use-cases/usage-outside-of-web-request":{"id":"features-and-use-cases/usage-outside-of-web-request","title":"Usage outside of web request","description":"Sometimes, a part of the app that relies on the CLS storage might need to be called outside of the context of a web request - for example, in a Cron job, while consuming a Queue or during the application bootstrap. In such cases, there are no enhancers that can be bound to the handler to set up the context.","sidebar":"documentationSidebar"},"introduction/how-it-works":{"id":"introduction/how-it-works","title":"How it works","description":"Continuation-local storage provides a common space for storing and retrieving data throughout the life of a function/callback call chain. In NestJS, this allows for sharing request data across the lifetime of a single request - without the need for request-scoped providers. It also makes it easy to track and log request ids throughout the whole application.","sidebar":"documentationSidebar"},"introduction/index":{"id":"introduction/index","title":"Introduction","description":"A continuation-local\\\\* storage module compatible with NestJS\' dependency injection based on Node\'s AsyncLocalStorage.","sidebar":"documentationSidebar"},"introduction/installation":{"id":"introduction/installation","title":"Installation","description":"Install as any other NPM package using your favorite package manager.","sidebar":"documentationSidebar"},"introduction/quick-start":{"id":"introduction/quick-start","title":"Quick Start","description":"Background","sidebar":"documentationSidebar"},"migration-guide/index":{"id":"migration-guide/index","title":"Migration guide","description":"In case you\'re upgrading to a new major version of this library, follow the according migration guide.","sidebar":"documentationSidebar"},"migration-guide/v2x-v3x":{"id":"migration-guide/v2x-v3x","title":"v2.x \u2192 v3.x","description":"- The root registration method was renamed from register (resp. registerAsync) to forRoot (resp. forRootAsync) to align with the convention.","sidebar":"documentationSidebar"},"setting-up-cls-context/index":{"id":"setting-up-cls-context/index","title":"Setting up the CLS context","description":"This package provides three methods of setting up the CLS context for incoming requests. This is mainly due to the fact that different underlying platforms are compatible with only some of these methods - see Compatibility considerations.","sidebar":"documentationSidebar"},"setting-up-cls-context/using-a-decurator":{"id":"setting-up-cls-context/using-a-decurator","title":"Using a Decorator","description":"The @UseCls() decorator can be used at a method level to declaratively wrap the method with a cls.run() call. This method should only be used outside of the context of a web request.","sidebar":"documentationSidebar"},"setting-up-cls-context/using-a-guard":{"id":"setting-up-cls-context/using-a-guard","title":"Using a Guard","description":"The ClsGuard can be also used set up the CLS context. While it is not a \\"guard\\" per-se, it\'s the second best place to set up the CLS context, since after a middleware, it is the first piece of code that the request hits.","sidebar":"documentationSidebar"},"setting-up-cls-context/using-a-middleware":{"id":"setting-up-cls-context/using-a-middleware","title":"Using a Middleware","description":"This section applies only if you use a HTTP transport (REST or GraphQL)","sidebar":"documentationSidebar"},"setting-up-cls-context/using-an-interceptor":{"id":"setting-up-cls-context/using-an-interceptor","title":"Using an Interceptor","description":"Another place to initiate the CLS context is an ClsInterceptor, which, unlike the ClsGuard uses AsyncLocalStorage#run method to wrap the following code, which is considered safer than enterWith.","sidebar":"documentationSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.ff295151.js b/assets/js/935f2afb.ff295151.js new file mode 100644 index 0000000..eae1f62 --- /dev/null +++ b/assets/js/935f2afb.ff295151.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"documentationSidebar":[{"type":"category","label":"Introduction","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Installation","href":"/nestjs-cls/introduction/installation","docId":"introduction/installation","unlisted":false},{"type":"link","label":"Quick Start","href":"/nestjs-cls/introduction/quick-start","docId":"introduction/quick-start","unlisted":false},{"type":"link","label":"How it works","href":"/nestjs-cls/introduction/how-it-works","docId":"introduction/how-it-works","unlisted":false}],"href":"/nestjs-cls/"},{"type":"category","label":"Setting up the CLS context","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Using a Middleware","href":"/nestjs-cls/setting-up-cls-context/using-a-middleware","docId":"setting-up-cls-context/using-a-middleware","unlisted":false},{"type":"link","label":"Using a Guard","href":"/nestjs-cls/setting-up-cls-context/using-a-guard","docId":"setting-up-cls-context/using-a-guard","unlisted":false},{"type":"link","label":"Using an Interceptor","href":"/nestjs-cls/setting-up-cls-context/using-an-interceptor","docId":"setting-up-cls-context/using-an-interceptor","unlisted":false},{"type":"link","label":"Using a Decorator","href":"/nestjs-cls/setting-up-cls-context/using-a-decorator","docId":"setting-up-cls-context/using-a-decorator","unlisted":false},{"type":"link","label":"Using the ClsService Instance","href":"/nestjs-cls/setting-up-cls-context/using_cls_run","docId":"setting-up-cls-context/using_cls_run","unlisted":false}],"href":"/nestjs-cls/setting-up-cls-context/"},{"type":"category","label":"Features and use cases","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Request ID","href":"/nestjs-cls/features-and-use-cases/request-id","docId":"features-and-use-cases/request-id","unlisted":false},{"type":"link","label":"Additional CLS Setup","href":"/nestjs-cls/features-and-use-cases/additional-cls-setup","docId":"features-and-use-cases/additional-cls-setup","unlisted":false},{"type":"link","label":"Breaking out of DI","href":"/nestjs-cls/features-and-use-cases/breaking-out-of-di","docId":"features-and-use-cases/breaking-out-of-di","unlisted":false},{"type":"link","label":"Usage outside of web request","href":"/nestjs-cls/features-and-use-cases/usage-outside-of-web-request","docId":"features-and-use-cases/usage-outside-of-web-request","unlisted":false},{"type":"link","label":"Type safety and type inference","href":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference","docId":"features-and-use-cases/type-safety-and-type-inference","unlisted":false},{"type":"link","label":"Proxy Providers","href":"/nestjs-cls/features-and-use-cases/proxy-providers","docId":"features-and-use-cases/proxy-providers","unlisted":false}],"href":"/nestjs-cls/features-and-use-cases/"},{"type":"category","label":"API","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Service Interface","href":"/nestjs-cls/api/service-interface","docId":"api/service-interface","unlisted":false},{"type":"link","label":"Module Options","href":"/nestjs-cls/api/module-options","docId":"api/module-options","unlisted":false}],"href":"/nestjs-cls/api/"},{"type":"category","label":"Considerations","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Security","href":"/nestjs-cls/considerations/security","docId":"considerations/security","unlisted":false},{"type":"link","label":"Compatibility","href":"/nestjs-cls/considerations/compatibility","docId":"considerations/compatibility","unlisted":false}],"href":"/nestjs-cls/considerations/"},{"type":"category","label":"Plugins","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Available Plugins","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"@nestjs-cls/transactional","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Prisma adapter","href":"/nestjs-cls/plugins/available-plugins/transactional/prisma-adapter","docId":"plugins/available-plugins/transactional/prisma-adapter","unlisted":false},{"type":"link","label":"Creating a custom adapter","href":"/nestjs-cls/plugins/available-plugins/transactional/creating-custom-adapter","docId":"plugins/available-plugins/transactional/creating-custom-adapter","unlisted":false}],"href":"/nestjs-cls/plugins/available-plugins/transactional/"}],"href":"/nestjs-cls/plugins/available-plugins/"},{"type":"link","label":"Plugin API","href":"/nestjs-cls/plugins/plugin-api","docId":"plugins/plugin-api","unlisted":false}],"href":"/nestjs-cls/plugins/"},{"type":"category","label":"Migration guide","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"v3.x \u2192 v4.x","href":"/nestjs-cls/migration-guide/v3x-v4x","docId":"migration-guide/v3x-v4x","unlisted":false},{"type":"link","label":"v2.x \u2192 v3.x","href":"/nestjs-cls/migration-guide/v2x-v3x","docId":"migration-guide/v2x-v3x","unlisted":false}],"href":"/nestjs-cls/migration-guide/"}]},"docs":{"api/index":{"id":"api/index","title":"API","description":"This chapter describes the programmatic API of the ClsService and the ClsModule options.","sidebar":"documentationSidebar"},"api/module-options":{"id":"api/module-options","title":"Module Options","description":"forRoot(Async)","sidebar":"documentationSidebar"},"api/service-interface":{"id":"api/service-interface","title":"Service Interface","description":"ClsService","sidebar":"documentationSidebar"},"considerations/compatibility":{"id":"considerations/compatibility","title":"Compatibility","description":"The table below outlines the compatibility with some platforms:","sidebar":"documentationSidebar"},"considerations/index":{"id":"considerations/index","title":"Considerations","description":"This chapter exists to help you decide whether this library is compatible with your project and to address any concerns that you may have.","sidebar":"documentationSidebar"},"considerations/security":{"id":"considerations/security","title":"Security","description":"It is often discussed whether AsyncLocalStorage is safe to use for concurrent requests (because of a possible context leak) and whether the context could be lost_ throughout the duration of a request.","sidebar":"documentationSidebar"},"features-and-use-cases/additional-cls-setup":{"id":"features-and-use-cases/additional-cls-setup","title":"Additional CLS Setup","description":"The CLS middleware/guard/interceptor provide some default functionality, but sometimes you might want to store more contextual things in the CLS.","sidebar":"documentationSidebar"},"features-and-use-cases/breaking-out-of-di":{"id":"features-and-use-cases/breaking-out-of-di","title":"Breaking out of DI","description":"While this package aims to be compatible with NestJS\'s Dependency Injection, it is also possible to access the CLS context outside of it.","sidebar":"documentationSidebar"},"features-and-use-cases/index":{"id":"features-and-use-cases/index","title":"Features and use cases","description":"In addition to the basic functionality described in the Quick start chapter, this module provides several other features to make your life as a developer easier.","sidebar":"documentationSidebar"},"features-and-use-cases/proxy-providers":{"id":"features-and-use-cases/proxy-providers","title":"Proxy Providers","description":"Since v3.0","sidebar":"documentationSidebar"},"features-and-use-cases/request-id":{"id":"features-and-use-cases/request-id","title":"Request ID","description":"Because of a shared storage, CLS is an ideal tool for tracking request (correlation) IDs for the purpose of logging. This package provides an option to automatically generate request IDs in the middleware/guard/interceptor, if you pass { generateId: true } to its options. By default, the generated ID is a string based on Math.random(), but you can provide a custom function in the idGenerator option.","sidebar":"documentationSidebar"},"features-and-use-cases/type-safety-and-type-inference":{"id":"features-and-use-cases/type-safety-and-type-inference","title":"Type safety and type inference","description":"Since v2.0","sidebar":"documentationSidebar"},"features-and-use-cases/usage-outside-of-web-request":{"id":"features-and-use-cases/usage-outside-of-web-request","title":"Usage outside of web request","description":"Sometimes, a part of the app that relies on the CLS storage might need to be called outside of the context of a web request - for example, in a Cron job, while consuming a Queue, during the application bootstrap or in CLI apps.","sidebar":"documentationSidebar"},"introduction/how-it-works":{"id":"introduction/how-it-works","title":"How it works","description":"Continuation-local storage provides a common space for storing and retrieving data throughout the life of a function/callback call chain. In NestJS, this allows for sharing request data across the lifetime of a single request - without the need for request-scoped providers. It also makes it easy to track and log request ids throughout the whole application.","sidebar":"documentationSidebar"},"introduction/index":{"id":"introduction/index","title":"Introduction","description":"A continuation-local\\\\* storage module compatible with NestJS\' dependency injection based on Node\'s AsyncLocalStorage.","sidebar":"documentationSidebar"},"introduction/installation":{"id":"introduction/installation","title":"Installation","description":"Install as any other NPM package using your favorite package manager.","sidebar":"documentationSidebar"},"introduction/quick-start":{"id":"introduction/quick-start","title":"Quick Start","description":"Background","sidebar":"documentationSidebar"},"migration-guide/index":{"id":"migration-guide/index","title":"Migration guide","description":"In case you\'re upgrading to a new major version of this library, follow the according migration guide.","sidebar":"documentationSidebar"},"migration-guide/v2x-v3x":{"id":"migration-guide/v2x-v3x","title":"v2.x \u2192 v3.x","description":"Root registration method renamed","sidebar":"documentationSidebar"},"migration-guide/v3x-v4x":{"id":"migration-guide/v3x-v4x","title":"v3.x \u2192 v4.x","description":"The v4 major version should be largely backwards compatible with v3. However, breaking changes were introduced in some less-used APIs that should be mentioned.","sidebar":"documentationSidebar"},"plugins/available-plugins/index":{"id":"plugins/available-plugins/index","title":"Available Plugins","description":"This section lists all plugins that are maintained by the author of nestjs-cls. They are all published under the @nestjs-cls scope and are kept up to date with any changes to the library.","sidebar":"documentationSidebar"},"plugins/available-plugins/transactional/creating-custom-adapter":{"id":"plugins/available-plugins/transactional/creating-custom-adapter","title":"Creating a custom adapter","description":"TODO: To be written.","sidebar":"documentationSidebar"},"plugins/available-plugins/transactional/index":{"id":"plugins/available-plugins/transactional/index","title":"@nestjs-cls/transactional","description":"The Transactional plugin for nestjs-cls provides a generic interface that can be used to wrap any function call in","sidebar":"documentationSidebar"},"plugins/available-plugins/transactional/prisma-adapter":{"id":"plugins/available-plugins/transactional/prisma-adapter","title":"Prisma adapter","description":"Installation","sidebar":"documentationSidebar"},"plugins/index":{"id":"plugins/index","title":"Plugins","description":"Since v4.0","sidebar":"documentationSidebar"},"plugins/plugin-api":{"id":"plugins/plugin-api","title":"Plugin API","description":"The Plugin API is still experimental and might change in the future, you should not rely on it in production.","sidebar":"documentationSidebar"},"setting-up-cls-context/index":{"id":"setting-up-cls-context/index","title":"Setting up the CLS context","description":"This package provides multiple methods of setting up the CLS context for incoming requests. This is mainly due to the fact that different underlying platforms are compatible with only some of these methods - see Compatibility considerations.","sidebar":"documentationSidebar"},"setting-up-cls-context/using_cls_run":{"id":"setting-up-cls-context/using_cls_run","title":"Using the ClsService Instance","description":"All other methods of setting up the CLS context ultimately use the ClsService#run or ClsService#enter methods.","sidebar":"documentationSidebar"},"setting-up-cls-context/using-a-decorator":{"id":"setting-up-cls-context/using-a-decorator","title":"Using a Decorator","description":"The @UseCls() decorator can be used at a method level to declaratively wrap the method with a cls.run() call. This method should only be used outside of the context of a web request.","sidebar":"documentationSidebar"},"setting-up-cls-context/using-a-guard":{"id":"setting-up-cls-context/using-a-guard","title":"Using a Guard","description":"The ClsGuard can be also used set up the CLS context. While it is not a \\"guard\\" per-se, it\'s the second best place to set up the CLS context, since after a middleware, it is the first piece of code that the request hits.","sidebar":"documentationSidebar"},"setting-up-cls-context/using-a-middleware":{"id":"setting-up-cls-context/using-a-middleware","title":"Using a Middleware","description":"This section applies only if you use a HTTP transport (REST or GraphQL)","sidebar":"documentationSidebar"},"setting-up-cls-context/using-an-interceptor":{"id":"setting-up-cls-context/using-an-interceptor","title":"Using an Interceptor","description":"Another place to initiate the CLS context is an ClsInterceptor, which, unlike the ClsGuard uses AsyncLocalStorage#run method to wrap the following code, which is considered safer than enterWith.","sidebar":"documentationSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/94e5e920.1b12a2be.js b/assets/js/94e5e920.1b12a2be.js deleted file mode 100755 index 6d17a94..0000000 --- a/assets/js/94e5e920.1b12a2be.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[575],{5318:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});var n=r(7378);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function a(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},y=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,p=a(e,["components","mdxType","originalType","parentName"]),u=l(r),y=o,f=u["".concat(c,".").concat(y)]||u[y]||d[y]||i;return r?n.createElement(f,s(s({ref:t},p),{},{components:r})):n.createElement(f,s({ref:t},p))}));function f(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,s=new Array(i);s[0]=y;var a={};for(var c in t)hasOwnProperty.call(t,c)&&(a[c]=t[c]);a.originalType=e,a[u]="string"==typeof e?e:o,s[1]=a;for(var l=2;l<i;l++)s[l]=r[l];return n.createElement.apply(null,s)}return n.createElement.apply(null,r)}y.displayName="MDXCreateElement"},8337:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>d,frontMatter:()=>i,metadata:()=>a,toc:()=>l});var n=r(5773),o=(r(7378),r(5318));const i={},s="Considerations",a={unversionedId:"considerations/index",id:"considerations/index",title:"Considerations",description:"This chapter exists to help you decide whether this library is compatible with your project and to address any concerns that you may have.",source:"@site/docs/05_considerations/index.md",sourceDirName:"05_considerations",slug:"/considerations/",permalink:"/nestjs-cls/considerations/",draft:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/05_considerations/index.md",tags:[],version:"current",frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Module Options",permalink:"/nestjs-cls/api/module-options"},next:{title:"Security",permalink:"/nestjs-cls/considerations/security"}},c={},l=[],p={toc:l},u="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(u,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"considerations"},"Considerations"),(0,o.kt)("p",null,"This chapter exists to help you decide whether this library is compatible with your project and to address any concerns that you may have."),(0,o.kt)("p",null,"You might be also interested in ",(0,o.kt)("a",{parentName:"p",href:"/nestjs-cls/#motivation"},"the Author's take")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/94e5e920.d469aee9.js b/assets/js/94e5e920.d469aee9.js new file mode 100644 index 0000000..cae42cf --- /dev/null +++ b/assets/js/94e5e920.d469aee9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[575],{9257:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>r,default:()=>u,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var s=n(4246),o=n(1670);const i={},r="Considerations",c={id:"considerations/index",title:"Considerations",description:"This chapter exists to help you decide whether this library is compatible with your project and to address any concerns that you may have.",source:"@site/docs/05_considerations/index.md",sourceDirName:"05_considerations",slug:"/considerations/",permalink:"/nestjs-cls/considerations/",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/05_considerations/index.md",tags:[],version:"current",frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Module Options",permalink:"/nestjs-cls/api/module-options"},next:{title:"Security",permalink:"/nestjs-cls/considerations/security"}},a={},d=[];function l(e){const t={a:"a",h1:"h1",p:"p",...(0,o.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"considerations",children:"Considerations"}),"\n",(0,s.jsx)(t.p,{children:"This chapter exists to help you decide whether this library is compatible with your project and to address any concerns that you may have."}),"\n",(0,s.jsxs)(t.p,{children:["You might be also interested in ",(0,s.jsx)(t.a,{href:"/nestjs-cls/#motivation",children:"the Author's take"})]})]})}function u(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},1670:(e,t,n)=>{n.d(t,{Z:()=>c,a:()=>r});var s=n(7378);const o={},i=s.createContext(o);function r(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/97d55a5e.1919b209.js b/assets/js/97d55a5e.1919b209.js deleted file mode 100755 index ef07707..0000000 --- a/assets/js/97d55a5e.1919b209.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[823],{5318:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>c});var a=n(7378);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function p(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),s=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},m=function(e){var t=s(e.components);return a.createElement(l.Provider,{value:t},e.children)},d="mdxType",k={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,m=p(e,["components","mdxType","originalType","parentName"]),d=s(n),u=r,c=d["".concat(l,".").concat(u)]||d[u]||k[u]||o;return n?a.createElement(c,i(i({ref:t},m),{},{components:n})):a.createElement(c,i({ref:t},m))}));function c(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=u;var p={};for(var l in t)hasOwnProperty.call(t,l)&&(p[l]=t[l]);p.originalType=e,p[d]="string"==typeof e?e:r,i[1]=p;for(var s=2;s<o;s++)i[s]=n[s];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}u.displayName="MDXCreateElement"},5769:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>k,frontMatter:()=>o,metadata:()=>p,toc:()=>s});var a=n(5773),r=(n(7378),n(5318));const o={},i="Module Options",p={unversionedId:"api/module-options",id:"api/module-options",title:"Module Options",description:"forRoot(Async)",source:"@site/docs/04_api/02_module-options.md",sourceDirName:"04_api",slug:"/api/module-options",permalink:"/nestjs-cls/api/module-options",draft:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/04_api/02_module-options.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Service Interface",permalink:"/nestjs-cls/api/service-interface"},next:{title:"Considerations",permalink:"/nestjs-cls/considerations/"}},l={},s=[{value:"forRoot(Async)",id:"forrootasync",level:2},{value:"forFeature(Async)",id:"forfeatureasync",level:2},{value:"Middleware & Enhancer options",id:"middleware--enhancer-options",level:2}],m={toc:s},d="wrapper";function k(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"module-options"},"Module Options"),(0,r.kt)("h2",{id:"forrootasync"},"forRoot(Async)"),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"ClsModule.forRoot()")," method takes the following ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"ClsModuleOptions")),":"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"middleware?:"))," ",(0,r.kt)("inlineCode",{parentName:"strong"},"ClsMiddlewareOptions")),(0,r.kt)("br",{parentName:"p"}),"\n","An object with additional options for the ",(0,r.kt)("inlineCode",{parentName:"p"},"ClsMiddleware"),", see ",(0,r.kt)("a",{parentName:"p",href:"#middleware--enhancer-options"},"below"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"guard?:"))," ",(0,r.kt)("inlineCode",{parentName:"strong"},"ClsGuardOptions")),(0,r.kt)("br",{parentName:"p"}),"\n","An object with additional options for the ",(0,r.kt)("inlineCode",{parentName:"p"},"ClsGuard"),", see ",(0,r.kt)("a",{parentName:"p",href:"#middleware--enhancer-options"},"below"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"interceptor?:"))," ",(0,r.kt)("inlineCode",{parentName:"strong"},"ClsInterceptorOptions")),(0,r.kt)("br",{parentName:"p"}),"\n","An object with additional options for the ",(0,r.kt)("inlineCode",{parentName:"p"},"ClsInterceptor"),", see ",(0,r.kt)("a",{parentName:"p",href:"#middleware--enhancer-options"},"below"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"global?:"))," ",(0,r.kt)("inlineCode",{parentName:"strong"},"boolean"))," (default ",(0,r.kt)("em",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"em"},"false")),")",(0,r.kt)("br",{parentName:"p"}),"\n","Whether to make the module global, so you do not have to import ",(0,r.kt)("inlineCode",{parentName:"p"},"ClsModule.forFeature()")," in other modules.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"proxyProviders?:"))," ",(0,r.kt)("inlineCode",{parentName:"strong"},"Type[]")),(0,r.kt)("br",{parentName:"p"}),"\n","Array of ",(0,r.kt)("a",{parentName:"p",href:"/nestjs-cls/features-and-use-cases/proxy-providers"},"Proxy Providers")," that should be registered in the root module. Currently only accepts sync class Proxy providers, use ",(0,r.kt)("inlineCode",{parentName:"p"},"ClsModule.forFeatureAsync()")," for more complex use-cases."))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"ClsModule.forRootAsync()")," is also available. You can supply the usual ",(0,r.kt)("inlineCode",{parentName:"p"},"imports"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"inject")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"useFactory")," parameters as usual."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("strong",{parentName:"p"},"Please note"),": If you intend to use multiple enhancers at the same time (e.g. initialize the CLS context in a middleware and then set some CLS variables additional CLS variables in an interceptor), be aware that the only the first one in the chain will set the Request ID.")),(0,r.kt)("h2",{id:"forfeatureasync"},"forFeature(Async)"),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"ClsModule.forFeature()")," method can be used to register a ",(0,r.kt)("a",{parentName:"p",href:"/nestjs-cls/features-and-use-cases/proxy-providers"},"Proxy Providers"),". The Sync method only accepts Class Proxy providers."),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"ClsModule.forFeatureAsync()")," method accepts either ",(0,r.kt)("inlineCode",{parentName:"p"},"ClsModuleProxyClassProviderOptions")," or ",(0,r.kt)("inlineCode",{parentName:"p"},"ClsModuleProxyFactoryProviderOptions")," that both accept these options:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"provide?:"))," ",(0,r.kt)("inlineCode",{parentName:"strong"},"any")),(0,r.kt)("br",{parentName:"p"}),"\n","Custom injection token to use for the provider. In case of a class provider, this parameter is optional, as the class reference passed to ",(0,r.kt)("inlineCode",{parentName:"p"},"useClass")," will be used by default.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"imports?"))," ",(0,r.kt)("inlineCode",{parentName:"strong"},"any[]")),(0,r.kt)("br",{parentName:"p"}),"\n","Optional list of imported modules that export the providers which are required for the provider.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"extraProviders?:"))," ",(0,r.kt)("inlineCode",{parentName:"strong"},"Provider[]")),"\nOptional list of additional providers that should be available to the Proxy. Useful for passing configuration from a parent dynamic module."))),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"ClsModuleProxyClassProviderOptions")," interface further accepts:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"useClass:"))," ",(0,r.kt)("inlineCode",{parentName:"strong"},"Type")),(0,r.kt)("br",{parentName:"li"}),"The target class that will be used by this Proxy Provider. Make sure it is decorated with ",(0,r.kt)("inlineCode",{parentName:"li"},"@InjectableProxy"),".")),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"ClsModuleProxyFactoryProviderOptions")," interface further accepts:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"inject:"))," ",(0,r.kt)("inlineCode",{parentName:"strong"},"any[]")),(0,r.kt)("br",{parentName:"p"}),"\n","An array of injection tokens for providers used in the ",(0,r.kt)("inlineCode",{parentName:"p"},"useFactory"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"useFactory:"))," ",(0,r.kt)("inlineCode",{parentName:"strong"},"(...args: any[]) => any")),(0,r.kt)("br",{parentName:"p"}),"\n","Factory function that accepts an array of providers in the order of the according tokens in the ",(0,r.kt)("inlineCode",{parentName:"p"},"inject")," array. Returns (or resolves with) an object (or a function) that will be used by this Proxy Provider."))),(0,r.kt)("h2",{id:"middleware--enhancer-options"},"Middleware & Enhancer options"),(0,r.kt)("p",null,"All of the ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"Cls{Middleware,Guard,Interceptor}Options"))," take the following parameters (either in ",(0,r.kt)("inlineCode",{parentName:"p"},"ClsModuleOptions")," or directly when instantiating them manually):"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"mount?:"))," ",(0,r.kt)("inlineCode",{parentName:"strong"},"boolean"))," (default ",(0,r.kt)("em",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"em"},"false")),")",(0,r.kt)("br",{parentName:"p"}),"\n","Whether to automatically mount the middleware/guard/interceptor to every route (not applicable when instantiating them manually)")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"generateId?:"))," ",(0,r.kt)("inlineCode",{parentName:"strong"},"boolean"))," (default ",(0,r.kt)("em",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"em"},"false")),")",(0,r.kt)("br",{parentName:"p"}),"\n","Whether to automatically generate a request ID. It will be available under the ",(0,r.kt)("inlineCode",{parentName:"p"},"CLS_ID")," key.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"idGenerator?:"))," ",(0,r.kt)("inlineCode",{parentName:"strong"},"(req: Request) => string | Promise<string>")),(0,r.kt)("br",{parentName:"p"}),"\n",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"idGenerator?:"))," ",(0,r.kt)("inlineCode",{parentName:"strong"},"(ctx: ExecutionContext) => string | Promise<string>")),(0,r.kt)("br",{parentName:"p"}),"\n","An optional function for generating the request ID. It takes the ",(0,r.kt)("inlineCode",{parentName:"p"},"Request")," object (or the ",(0,r.kt)("inlineCode",{parentName:"p"},"ExecutionContext")," in case of a Guard or Interceptor) as an argument and (synchronously or asynchronously) returns a string. The default implementation uses ",(0,r.kt)("inlineCode",{parentName:"p"},"Math.random()")," to generate a string of 8 characters.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"setup?:"))," ",(0,r.kt)("inlineCode",{parentName:"strong"},"(cls: ClsService, req: Request) => void | Promise<void>;")),(0,r.kt)("br",{parentName:"p"}),"\n",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"setup?:"))," ",(0,r.kt)("inlineCode",{parentName:"strong"},"(cls: ClsService, ctx: ExecutionContext) => void | Promise<void>;")),(0,r.kt)("br",{parentName:"p"}),"\n","Function that executes after the CLS context had been initialised. It can be used to put additional variables in the CLS context.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"resolveProxyProviders?:"))," ",(0,r.kt)("inlineCode",{parentName:"strong"},"boolean"))," (default ",(0,r.kt)("em",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"em"},"true")),")",(0,r.kt)("br",{parentName:"p"}),"\n","Whether to automatically resolve Proxy Providers in the enhancer (if any are registered)."))),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"ClsMiddlewareOptions")," additionally takes the following parameters:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"saveReq?:"))," ",(0,r.kt)("inlineCode",{parentName:"strong"},"boolean"))," (default ",(0,r.kt)("em",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"em"},"true")),")",(0,r.kt)("br",{parentName:"p"}),"\n","Whether to store the ",(0,r.kt)("em",{parentName:"p"},"Request")," object to the context. It will be available under the ",(0,r.kt)("inlineCode",{parentName:"p"},"CLS_REQ")," key.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"saveRes?:"))," ",(0,r.kt)("inlineCode",{parentName:"strong"},"boolean"))," (default ",(0,r.kt)("em",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"em"},"false")),")",(0,r.kt)("br",{parentName:"p"}),"\n","Whether to store the ",(0,r.kt)("em",{parentName:"p"},"Response")," object to the context. It will be available under the ",(0,r.kt)("inlineCode",{parentName:"p"},"CLS_RES")," key")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"useEnterWith?:"))," ",(0,r.kt)("inlineCode",{parentName:"strong"},"boolean"))," (default ",(0,r.kt)("em",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"em"},"false")),")",(0,r.kt)("br",{parentName:"p"}),"\n","Set to ",(0,r.kt)("inlineCode",{parentName:"p"},"true")," to set up the context using a call to ",(0,r.kt)("a",{parentName:"p",href:"https://nodejs.org/api/async_context.html#async_context_asynclocalstorage_enterwith_store"},(0,r.kt)("inlineCode",{parentName:"a"},"AsyncLocalStorage#enterWith"))," instead of wrapping the ",(0,r.kt)("inlineCode",{parentName:"p"},"next()")," call with the safer ",(0,r.kt)("a",{parentName:"p",href:"https://nodejs.org/api/async_context.html#async_context_asynclocalstorage_run_store_callback_args"},(0,r.kt)("inlineCode",{parentName:"a"},"AsyncLocalStorage#run")),". Most of the time this should not be necessary, but ",(0,r.kt)("a",{parentName:"p",href:"#graphql"},"some frameworks")," are known to lose the context with ",(0,r.kt)("inlineCode",{parentName:"p"},"run"),"."))))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/97d55a5e.5ff21a4a.js b/assets/js/97d55a5e.5ff21a4a.js new file mode 100644 index 0000000..118d83a --- /dev/null +++ b/assets/js/97d55a5e.5ff21a4a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[823],{6274:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>t,default:()=>a,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var r=s(4246),o=s(1670);const i={},t="Module Options",c={id:"api/module-options",title:"Module Options",description:"forRoot(Async)",source:"@site/docs/04_api/02_module-options.md",sourceDirName:"04_api",slug:"/api/module-options",permalink:"/nestjs-cls/api/module-options",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/04_api/02_module-options.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Service Interface",permalink:"/nestjs-cls/api/service-interface"},next:{title:"Considerations",permalink:"/nestjs-cls/considerations/"}},d={},l=[{value:"forRoot(Async)",id:"forrootasync",level:2},{value:"forFeature(Async)",id:"forfeatureasync",level:2},{value:"Middleware & Enhancer options",id:"middleware--enhancer-options",level:2}];function h(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h1:"h1",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"module-options",children:"Module Options"}),"\n",(0,r.jsx)(n.h2,{id:"forrootasync",children:"forRoot(Async)"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"ClsModule.forRoot()"})," method takes the following ",(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"ClsModuleOptions"})}),":"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"middleware?:"})})}),(0,r.jsx)(n.code,{children:"ClsMiddlewareOptions"}),(0,r.jsx)(n.br,{}),"\n","An object with additional options for the ",(0,r.jsx)(n.code,{children:"ClsMiddleware"}),", see ",(0,r.jsx)(n.a,{href:"#middleware--enhancer-options",children:"below"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"guard?:"})})}),(0,r.jsx)(n.code,{children:"ClsGuardOptions"}),(0,r.jsx)(n.br,{}),"\n","An object with additional options for the ",(0,r.jsx)(n.code,{children:"ClsGuard"}),", see ",(0,r.jsx)(n.a,{href:"#middleware--enhancer-options",children:"below"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"interceptor?:"})})}),(0,r.jsx)(n.code,{children:"ClsInterceptorOptions"}),(0,r.jsx)(n.br,{}),"\n","An object with additional options for the ",(0,r.jsx)(n.code,{children:"ClsInterceptor"}),", see ",(0,r.jsx)(n.a,{href:"#middleware--enhancer-options",children:"below"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"global?:"})})}),(0,r.jsx)(n.code,{children:"boolean"}),"** (default ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"false"})}),")",(0,r.jsx)(n.br,{}),"\n","Whether to make the module global, so you do not have to import ",(0,r.jsx)(n.code,{children:"ClsModule.forFeature()"})," in other modules."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"proxyProviders?:"})})}),(0,r.jsx)(n.code,{children:"Type[]"}),(0,r.jsx)(n.br,{}),"\n","Array of ",(0,r.jsx)(n.a,{href:"/nestjs-cls/features-and-use-cases/proxy-providers",children:"Proxy Providers"})," that should be registered in the root module. Currently only accepts sync class Proxy providers, use ",(0,r.jsx)(n.code,{children:"ClsModule.forFeatureAsync()"})," for more complex use-cases."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"ClsModule.forRootAsync()"})," is also available. You can supply the usual ",(0,r.jsx)(n.code,{children:"imports"}),", ",(0,r.jsx)(n.code,{children:"inject"})," and ",(0,r.jsx)(n.code,{children:"useFactory"})," parameters as usual."]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Please note"}),": If you intend to use multiple enhancers at the same time (e.g. initialize the CLS context in a middleware and then set some additional CLS variables in an interceptor), be aware that the only the first one in the chain will set the Request ID."]})}),"\n",(0,r.jsx)(n.h2,{id:"forfeatureasync",children:"forFeature(Async)"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"ClsModule.forFeature()"})," method can be used to register a ",(0,r.jsx)(n.a,{href:"/nestjs-cls/features-and-use-cases/proxy-providers",children:"Proxy Providers"}),". The Sync method only accepts Class Proxy providers."]}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"ClsModule.forFeatureAsync()"})," method accepts either ",(0,r.jsx)(n.code,{children:"ClsModuleProxyClassProviderOptions"})," or ",(0,r.jsx)(n.code,{children:"ClsModuleProxyFactoryProviderOptions"})," that both accept these options:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"provide?:"})})}),(0,r.jsx)(n.code,{children:"any"}),(0,r.jsx)(n.br,{}),"\n","Custom injection token to use for the provider. In case of a class provider, this parameter is optional, as the class reference passed to ",(0,r.jsx)(n.code,{children:"useClass"})," will be used by default."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"imports?"})})}),(0,r.jsx)(n.code,{children:"any[]"}),(0,r.jsx)(n.br,{}),"\n","Optional list of imported modules that export the providers which are required for the provider."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"extraProviders?:"})})}),(0,r.jsx)(n.code,{children:"Provider[]"}),(0,r.jsx)(n.br,{}),"\n","Optional list of additional providers that should be available to the Proxy. Useful for passing configuration from a parent dynamic module."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"ClsModuleProxyClassProviderOptions"})," interface further accepts:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"useClass:"})})}),(0,r.jsx)(n.code,{children:"Type"}),(0,r.jsx)(n.br,{}),"\n","The target class that will be used by this Proxy Provider. Make sure it is decorated with ",(0,r.jsx)(n.code,{children:"@InjectableProxy"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"ClsModuleProxyFactoryProviderOptions"})," interface further accepts:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"inject:"})})}),(0,r.jsx)(n.code,{children:"any[]"}),(0,r.jsx)(n.br,{}),"\n","An array of injection tokens for providers used in the ",(0,r.jsx)(n.code,{children:"useFactory"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"useFactory:"})})}),(0,r.jsx)(n.code,{children:"(...args: any[]) => any"}),(0,r.jsx)(n.br,{}),"\n","Factory function that accepts an array of providers in the order of the according tokens in the ",(0,r.jsx)(n.code,{children:"inject"})," array. Returns (or resolves with) an object (or a function) that will be used by this Proxy Provider."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"type?:"})})}),(0,r.jsx)(n.code,{children:"'function' | 'object'"}),(0,r.jsx)(n.br,{}),"\n","Whether the Proxy Provider should be a function or an object. Defaults to ",(0,r.jsx)(n.code,{children:"'object'"}),". See ",(0,r.jsx)(n.a,{href:"/nestjs-cls/features-and-use-cases/proxy-providers#caveats",children:"Caveats"})," for more information."]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"middleware--enhancer-options",children:"Middleware & Enhancer options"}),"\n",(0,r.jsxs)(n.p,{children:["All of the ",(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.code,{children:"Cls{Middleware,Guard,Interceptor}Options"})})," take the following parameters (either in ",(0,r.jsx)(n.code,{children:"ClsModuleOptions"})," or directly when instantiating them manually):"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"mount?:"})})}),(0,r.jsx)(n.code,{children:"boolean"})," (default ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"false"})}),")",(0,r.jsx)(n.br,{}),"\n","Whether to automatically mount the middleware/guard/interceptor to every route (not applicable when instantiating them manually)"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"generateId?:"})})}),(0,r.jsx)(n.code,{children:"boolean"})," (default ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"false"})}),")",(0,r.jsx)(n.br,{}),"\n","Whether to automatically generate a request ID. It will be available under the ",(0,r.jsx)(n.code,{children:"CLS_ID"})," key."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"idGenerator?:"})})}),(0,r.jsx)(n.code,{children:"(req: Request) => string | Promise<string>"}),(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"idGenerator?:"})})}),(0,r.jsx)(n.code,{children:"(ctx: ExecutionContext) => string | Promise<string>"}),(0,r.jsx)(n.br,{}),"\n","An optional function for generating the request ID. It takes the ",(0,r.jsx)(n.code,{children:"Request"})," object (or the ",(0,r.jsx)(n.code,{children:"ExecutionContext"})," in case of a Guard or Interceptor) as an argument and (synchronously or asynchronously) returns a string. The default implementation uses ",(0,r.jsx)(n.code,{children:"Math.random()"})," to generate a string of 8 characters."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"setup?:"})})}),(0,r.jsx)(n.code,{children:"(cls: ClsService, req: Request) => void | Promise<void>;"}),(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"setup?:"})})}),(0,r.jsx)(n.code,{children:"(cls: ClsService, ctx: ExecutionContext) => void | Promise<void>;"}),(0,r.jsx)(n.br,{}),"\n","Function that executes after the CLS context had been initialised. It can be used to put additional variables in the CLS context."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"resolveProxyProviders?:"})})}),(0,r.jsx)(n.code,{children:"boolean"})," (default ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"true"})}),")",(0,r.jsx)(n.br,{}),"\n","Whether to automatically resolve Proxy Providers in the enhancer (if any are registered)."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"initializePlugins?:"})})}),(0,r.jsx)(n.code,{children:"boolean"})," (default ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"true"})}),")",(0,r.jsx)(n.br,{}),"\n","Whether to run the ",(0,r.jsx)(n.code,{children:"onClsInit"})," hook for plugins as a part of the CLS context registration (runs before ",(0,r.jsx)(n.code,{children:"resolveProxyProviders"})," just after ",(0,r.jsx)(n.code,{children:"setup"}),")."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"ClsMiddlewareOptions"})," additionally takes the following parameters:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"saveReq?:"})})}),(0,r.jsx)(n.code,{children:"boolean"})," (default ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"true"})}),")",(0,r.jsx)(n.br,{}),"\n","Whether to store the ",(0,r.jsx)(n.em,{children:"Request"})," object to the context. It will be available under the ",(0,r.jsx)(n.code,{children:"CLS_REQ"})," key."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"saveRes?:"})})}),(0,r.jsx)(n.code,{children:"boolean"})," (default ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"false"})}),")",(0,r.jsx)(n.br,{}),"\n","Whether to store the ",(0,r.jsx)(n.em,{children:"Response"})," object to the context. It will be available under the ",(0,r.jsx)(n.code,{children:"CLS_RES"})," key"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"useEnterWith?:"})})}),(0,r.jsx)(n.code,{children:"boolean"})," (default ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"false"})}),")",(0,r.jsx)(n.br,{}),"\n","Set to ",(0,r.jsx)(n.code,{children:"true"})," to set up the context using a call to ",(0,r.jsx)(n.a,{href:"https://nodejs.org/api/async_context.html#async_context_asynclocalstorage_enterwith_store",children:(0,r.jsx)(n.code,{children:"AsyncLocalStorage#enterWith"})})," instead of wrapping the ",(0,r.jsx)(n.code,{children:"next()"})," call with the safer ",(0,r.jsx)(n.a,{href:"https://nodejs.org/api/async_context.html#async_context_asynclocalstorage_run_store_callback_args",children:(0,r.jsx)(n.code,{children:"AsyncLocalStorage#run"})}),". Most of the time this should not be necessary, but ",(0,r.jsx)(n.a,{href:"#graphql",children:"some frameworks"})," are known to lose the context with ",(0,r.jsx)(n.code,{children:"run"}),"."]}),"\n"]}),"\n"]})]})}function a(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},1670:(e,n,s)=>{s.d(n,{Z:()=>c,a:()=>t});var r=s(7378);const o={},i=r.createContext(o);function t(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:t(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a2c1fdb7.6caaee3d.js b/assets/js/a2c1fdb7.6caaee3d.js new file mode 100644 index 0000000..0d8e2fb --- /dev/null +++ b/assets/js/a2c1fdb7.6caaee3d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[776],{5308:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>a});var s=n(4246),o=n(1670);const i={},r="Setting up the CLS context",c={id:"setting-up-cls-context/index",title:"Setting up the CLS context",description:"This package provides multiple methods of setting up the CLS context for incoming requests. This is mainly due to the fact that different underlying platforms are compatible with only some of these methods - see Compatibility considerations.",source:"@site/docs/02_setting-up-cls-context/index.md",sourceDirName:"02_setting-up-cls-context",slug:"/setting-up-cls-context/",permalink:"/nestjs-cls/setting-up-cls-context/",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/02_setting-up-cls-context/index.md",tags:[],version:"current",frontMatter:{},sidebar:"documentationSidebar",previous:{title:"How it works",permalink:"/nestjs-cls/introduction/how-it-works"},next:{title:"Using a Middleware",permalink:"/nestjs-cls/setting-up-cls-context/using-a-middleware"}},l={},a=[{value:"Sync",id:"sync",level:2},{value:"Async",id:"async",level:2}];function d(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",...(0,o.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"setting-up-the-cls-context",children:"Setting up the CLS context"}),"\n",(0,s.jsxs)(t.p,{children:["This package provides multiple methods of setting up the CLS context for incoming requests. This is mainly due to the fact that different underlying platforms are compatible with only some of these methods - see ",(0,s.jsx)(t.a,{href:"/nestjs-cls/considerations/compatibility",children:"Compatibility considerations"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["For HTTP transports, the context can be preferably set up in a ",(0,s.jsx)(t.code,{children:"ClsMiddleware"}),". For all other platforms, or cases where the ",(0,s.jsx)(t.code,{children:"ClsMiddleware"})," is not applicable, this package also provides a ",(0,s.jsx)(t.code,{children:"ClsGuard"})," and ",(0,s.jsx)(t.code,{children:"ClsInterceptor"}),". While both of these also work with HTTP, they come with some caveats, see below."]}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"ClsModule"})," provides both ",(0,s.jsx)(t.code,{children:"forRoot"})," and ",(0,s.jsx)(t.code,{children:"forRootAsync"})," methods to configure these."]}),"\n",(0,s.jsx)(t.h2,{id:"sync",children:"Sync"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-ts",metastring:'title="app.module.ts"',children:"@Module({\n imports: [\n ClsModule.forRoot({\n global: true,\n middleware: {\n mount: true,\n generateId: true,\n },\n }),\n ],\n // ...\n})\nexport class AppModule {}\n"})}),"\n",(0,s.jsx)(t.h2,{id:"async",children:"Async"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-ts",metastring:'title="app.module.ts"',children:"@Module({\n imports: [\n ClsModule.forRootAsync({\n global: true,\n inject: [IdGeneratorService]\n useFactory: (idGeneratorService) => ({\n middleware: {\n mount: true,\n generateId: true,\n idGenerator: (req) => idGeneratorService.generate(req)\n },\n })\n }),\n ],\n // ...\n})\nexport class AppModule {}\n"})})]})}function p(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},1670:(e,t,n)=>{n.d(t,{Z:()=>c,a:()=>r});var s=n(7378);const o={},i=s.createContext(o);function r(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a2c1fdb7.de805607.js b/assets/js/a2c1fdb7.de805607.js deleted file mode 100755 index 6a0a4d5..0000000 --- a/assets/js/a2c1fdb7.de805607.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[776],{5318:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var r=n(7378);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=c(n),m=o,f=u["".concat(l,".").concat(m)]||u[m]||d[m]||i;return n?r.createElement(f,a(a({ref:t},p),{},{components:n})):r.createElement(f,a({ref:t},p))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:o,a[1]=s;for(var c=2;c<i;c++)a[c]=n[c];return r.createElement.apply(null,a)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},1930:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var r=n(5773),o=(n(7378),n(5318));const i={},a="Setting up the CLS context",s={unversionedId:"setting-up-cls-context/index",id:"setting-up-cls-context/index",title:"Setting up the CLS context",description:"This package provides three methods of setting up the CLS context for incoming requests. This is mainly due to the fact that different underlying platforms are compatible with only some of these methods - see Compatibility considerations.",source:"@site/docs/02_setting-up-cls-context/index.md",sourceDirName:"02_setting-up-cls-context",slug:"/setting-up-cls-context/",permalink:"/nestjs-cls/setting-up-cls-context/",draft:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/02_setting-up-cls-context/index.md",tags:[],version:"current",frontMatter:{},sidebar:"documentationSidebar",previous:{title:"How it works",permalink:"/nestjs-cls/introduction/how-it-works"},next:{title:"Using a Middleware",permalink:"/nestjs-cls/setting-up-cls-context/using-a-middleware"}},l={},c=[{value:"Sync",id:"sync",level:2},{value:"Async",id:"async",level:2}],p={toc:c},u="wrapper";function d(e){let{components:t,...n}=e;return(0,o.kt)(u,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"setting-up-the-cls-context"},"Setting up the CLS context"),(0,o.kt)("p",null,"This package provides ",(0,o.kt)("strong",{parentName:"p"},"three")," methods of setting up the CLS context for incoming requests. This is mainly due to the fact that different underlying platforms are compatible with only some of these methods - see ",(0,o.kt)("a",{parentName:"p",href:"/nestjs-cls/considerations/compatibility"},"Compatibility considerations"),"."),(0,o.kt)("p",null,"For HTTP transports, the context can be preferably set up in a ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsMiddleware"),". For all other platforms, or cases where the ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsMiddleware")," is not applicable, this package also provides a ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsGuard")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsInterceptor"),". While both of these also work with HTTP, they come with some caveats, see below."),(0,o.kt)("p",null,"The ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsModule")," provides both ",(0,o.kt)("inlineCode",{parentName:"p"},"forRoot")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"forRootAsync")," methods to configure these."),(0,o.kt)("h2",{id:"sync"},"Sync"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-ts",metastring:'title="app.module.ts"',title:'"app.module.ts"'},"@Module({\n imports: [\n ClsModule.forRoot({\n global: true,\n middleware: {\n mount: true,\n generateId: true,\n },\n }),\n ],\n // ...\n})\nexport class AppModule {}\n")),(0,o.kt)("h2",{id:"async"},"Async"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-ts",metastring:'title="app.module.ts"',title:'"app.module.ts"'},"@Module({\n imports: [\n ClsModule.forRootAsync({\n global: true,\n inject: [IdGeneratorService]\n useFactory: (idGeneratorService) => ({\n middleware: {\n mount: true,\n generateId: true,\n idGenerator: (req) => idGeneratorService.generate(req)\n },\n })\n }),\n ],\n // ...\n})\nexport class AppModule {}\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a7bd4aaa.6b9c6fa4.js b/assets/js/a7bd4aaa.6b9c6fa4.js new file mode 100644 index 0000000..6444c37 --- /dev/null +++ b/assets/js/a7bd4aaa.6b9c6fa4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[518],{2922:(s,n,e)=>{e.r(n),e.d(n,{default:()=>d});e(7378);var r=e(8836),o=e(2064),t=e(2885),c=e(5473),i=e(4386),l=e(4246);function u(s){const{version:n}=s;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(i.Z,{version:n.version,tag:(0,o.os)(n.pluginId,n.version)}),(0,l.jsx)(r.d,{children:n.noIndex&&(0,l.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})]})}function a(s){const{version:n,route:e}=s;return(0,l.jsx)(r.FG,{className:n.className,children:(0,l.jsx)(t.q,{version:n,children:(0,c.H)(e.routes)})})}function d(s){return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(u,{...s}),(0,l.jsx)(a,{...s})]})}}}]); \ No newline at end of file diff --git a/assets/js/a886e75a.d95036fe.js b/assets/js/a886e75a.d95036fe.js new file mode 100644 index 0000000..233447f --- /dev/null +++ b/assets/js/a886e75a.d95036fe.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[466],{877:(t,n,a)=>{a.r(n),a.d(n,{assets:()=>o,contentTitle:()=>r,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var e=a(4246),s=a(1670);const i={},r="Creating a custom adapter",c={id:"plugins/available-plugins/transactional/creating-custom-adapter",title:"Creating a custom adapter",description:"TODO: To be written.",source:"@site/docs/06_plugins/01_available-plugins/01-transactional/10-creating-custom-adapter.md",sourceDirName:"06_plugins/01_available-plugins/01-transactional",slug:"/plugins/available-plugins/transactional/creating-custom-adapter",permalink:"/nestjs-cls/plugins/available-plugins/transactional/creating-custom-adapter",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/06_plugins/01_available-plugins/01-transactional/10-creating-custom-adapter.md",tags:[],version:"current",sidebarPosition:10,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Prisma adapter",permalink:"/nestjs-cls/plugins/available-plugins/transactional/prisma-adapter"},next:{title:"Plugin API",permalink:"/nestjs-cls/plugins/plugin-api"}},o={},l=[];function u(t){const n={h1:"h1",p:"p",...(0,s.a)(),...t.components};return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(n.h1,{id:"creating-a-custom-adapter",children:"Creating a custom adapter"}),"\n",(0,e.jsx)(n.p,{children:"TODO: To be written."})]})}function p(t={}){const{wrapper:n}={...(0,s.a)(),...t.components};return n?(0,e.jsx)(n,{...t,children:(0,e.jsx)(u,{...t})}):u(t)}},1670:(t,n,a)=>{a.d(n,{Z:()=>c,a:()=>r});var e=a(7378);const s={},i=e.createContext(s);function r(t){const n=e.useContext(i);return e.useMemo((function(){return"function"==typeof t?t(n):{...n,...t}}),[n,t])}function c(t){let n;return n=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:r(t.components),e.createElement(i.Provider,{value:n},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/a8d12efa.0b5297db.js b/assets/js/a8d12efa.0b5297db.js new file mode 100644 index 0000000..ff23b7a --- /dev/null +++ b/assets/js/a8d12efa.0b5297db.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[55],{9446:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>l,frontMatter:()=>a,metadata:()=>i,toc:()=>u});var t=n(4246),o=n(1670);const a={},r="Usage outside of web request",i={id:"features-and-use-cases/usage-outside-of-web-request",title:"Usage outside of web request",description:"Sometimes, a part of the app that relies on the CLS storage might need to be called outside of the context of a web request - for example, in a Cron job, while consuming a Queue, during the application bootstrap or in CLI apps.",source:"@site/docs/03_features-and-use-cases/04_usage-outside-of-web-request.md",sourceDirName:"03_features-and-use-cases",slug:"/features-and-use-cases/usage-outside-of-web-request",permalink:"/nestjs-cls/features-and-use-cases/usage-outside-of-web-request",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/03_features-and-use-cases/04_usage-outside-of-web-request.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Breaking out of DI",permalink:"/nestjs-cls/features-and-use-cases/breaking-out-of-di"},next:{title:"Type safety and type inference",permalink:"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference"}},c={},u=[];function d(e){const s={a:"a",admonition:"admonition",code:"code",h1:"h1",p:"p",pre:"pre",...(0,o.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.h1,{id:"usage-outside-of-web-request",children:"Usage outside of web request"}),"\n",(0,t.jsx)(s.p,{children:"Sometimes, a part of the app that relies on the CLS storage might need to be called outside of the context of a web request - for example, in a Cron job, while consuming a Queue, during the application bootstrap or in CLI apps."}),"\n",(0,t.jsx)(s.p,{children:"In such cases, there are no enhancers that can be bound to the handler to set up the context."}),"\n",(0,t.jsxs)(s.p,{children:["Therefore, you as the the developer are responsible for wrapping the execution with ",(0,t.jsx)(s.code,{children:"ClsService#run"}),", or using the ",(0,t.jsx)(s.code,{children:"@UseCls"})," decorator. In any case, if any following code depends on some context variables, these need to be set up manually."]}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-ts",children:"@Injectable()\nexport class CronController {\n constructor(\n private readonly someService: SomeService,\n private readonly cls: ClsService,\n );\n\n @Cron('45 * * * * *')\n async handleCronExample1() {\n // either explicitly wrap the function body with\n // a call to `ClsService#run` ...\n await this.cls.run(async () => {\n this.cls.set('mode', 'cron');\n await this.someService.doTheThing();\n });\n }\n\n @Cron('90 * * * * *')\n // ... or use the convenience decorator which\n // does the wrapping for you seamlessly.\n @UseCls({\n setup: (cls) => {\n cls.set('mode', 'cron');\n },\n })\n async handleCronExample2() {\n await this.someService.doTheThing();\n }\n}\n"})}),"\n",(0,t.jsx)(s.admonition,{type:"caution",children:(0,t.jsxs)(s.p,{children:["Special care must be taken in case you're using ",(0,t.jsx)(s.a,{href:"/nestjs-cls/features-and-use-cases/proxy-providers#outside-web-request",children:"Proxy Providers"}),"."]})})]})}function l(e={}){const{wrapper:s}={...(0,o.a)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},1670:(e,s,n)=>{n.d(s,{Z:()=>i,a:()=>r});var t=n(7378);const o={},a=t.createContext(o);function r(e){const s=t.useContext(a);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function i(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),t.createElement(a.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a8d12efa.ae0cc29a.js b/assets/js/a8d12efa.ae0cc29a.js deleted file mode 100755 index 6d51f5f..0000000 --- a/assets/js/a8d12efa.ae0cc29a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[55],{5318:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>h});var r=n(7378);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},s=Object.keys(e);for(r=0;r<s.length;r++)n=s[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r<s.length;r++)n=s[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),u=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},l=function(e){var t=u(e.components);return r.createElement(c.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,s=e.originalType,c=e.parentName,l=i(e,["components","mdxType","originalType","parentName"]),p=u(n),f=o,h=p["".concat(c,".").concat(f)]||p[f]||d[f]||s;return n?r.createElement(h,a(a({ref:t},l),{},{components:n})):r.createElement(h,a({ref:t},l))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var s=n.length,a=new Array(s);a[0]=f;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[p]="string"==typeof e?e:o,a[1]=i;for(var u=2;u<s;u++)a[u]=n[u];return r.createElement.apply(null,a)}return r.createElement.apply(null,n)}f.displayName="MDXCreateElement"},7333:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>d,frontMatter:()=>s,metadata:()=>i,toc:()=>u});var r=n(5773),o=(n(7378),n(5318));const s={},a="Usage outside of web request",i={unversionedId:"features-and-use-cases/usage-outside-of-web-request",id:"features-and-use-cases/usage-outside-of-web-request",title:"Usage outside of web request",description:"Sometimes, a part of the app that relies on the CLS storage might need to be called outside of the context of a web request - for example, in a Cron job, while consuming a Queue or during the application bootstrap. In such cases, there are no enhancers that can be bound to the handler to set up the context.",source:"@site/docs/03_features-and-use-cases/04_usage-outside-of-web-request.md",sourceDirName:"03_features-and-use-cases",slug:"/features-and-use-cases/usage-outside-of-web-request",permalink:"/nestjs-cls/features-and-use-cases/usage-outside-of-web-request",draft:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/03_features-and-use-cases/04_usage-outside-of-web-request.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Breaking out of DI",permalink:"/nestjs-cls/features-and-use-cases/breakin-out-of-di"},next:{title:"Type safety and type inference",permalink:"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference"}},c={},u=[],l={toc:u},p="wrapper";function d(e){let{components:t,...n}=e;return(0,o.kt)(p,(0,r.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"usage-outside-of-web-request"},"Usage outside of web request"),(0,o.kt)("p",null,"Sometimes, a part of the app that relies on the CLS storage might need to be called outside of the context of a web request - for example, in a Cron job, while consuming a Queue or during the application bootstrap. In such cases, there are no enhancers that can be bound to the handler to set up the context."),(0,o.kt)("p",null,"Therefore, you as the the developer are responsible for wrapping the execution with ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsService#run"),", or using the ",(0,o.kt)("inlineCode",{parentName:"p"},"@UseCls")," decorator. In any case, if any following code depends on some context variables, these need to be set up manually."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-ts"},"@Injectable()\nexport class CronController {\n constructor(\n private readonly someService: SomeService,\n private readonly cls: ClsService,\n );\n\n @Cron('45 * * * * *')\n async handleCronExample1() {\n // either explicitly wrap the function body with\n // a call to `ClsService#run` ...\n await this.cls.run(async () => {\n this.cls.set('mode', 'cron');\n await this.someService.doTheThing();\n });\n }\n\n @Cron('90 * * * * *')\n // ... or use the convenience decorator which\n // does the wrapping for you seamlessly.\n @UseCls({\n setup: (cls) => {\n cls.set('mode', 'cron');\n },\n })\n async handleCronExample2() {\n await this.someService.doTheThing();\n }\n}\n")),(0,o.kt)("admonition",{type:"caution"},(0,o.kt)("p",{parentName:"admonition"},"Special care must be taken in case you're using ",(0,o.kt)("a",{parentName:"p",href:"/nestjs-cls/features-and-use-cases/proxy-providers#outside-web-request"},"Proxy Providers"),".")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a94703ab.74e9a79f.js b/assets/js/a94703ab.74e9a79f.js new file mode 100644 index 0000000..8a50065 --- /dev/null +++ b/assets/js/a94703ab.74e9a79f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[368],{552:(e,t,n)=>{n.r(t),n.d(t,{default:()=>be});var a=n(7378),o=n(624),i=n(8836),s=n(5854),l=n(7470),c=n(8774),r=n(7419),d=n(9169),u=n(6847);const m={backToTopButton:"backToTopButton_iEvu",backToTopButtonShow:"backToTopButtonShow_DO8w"};var b=n(4246);function h(){const{shown:e,scrollToTop:t}=function(e){let{threshold:t}=e;const[n,o]=(0,a.useState)(!1),i=(0,a.useRef)(!1),{startScroll:s,cancelScroll:l}=(0,d.Ct)();return(0,d.RF)(((e,n)=>{let{scrollY:a}=e;const s=n?.scrollY;s&&(i.current?i.current=!1:a>=s?(l(),o(!1)):a<t?o(!1):a+window.innerHeight<document.documentElement.scrollHeight&&o(!0))})),(0,u.S)((e=>{e.location.hash&&(i.current=!0,o(!1))})),{shown:n,scrollToTop:()=>s(0)}}({threshold:300});return(0,b.jsx)("button",{"aria-label":(0,r.I)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,o.Z)("clean-btn",s.k.common.backToTopButton,m.backToTopButton,e&&m.backToTopButtonShow),type:"button",onClick:t})}var p=n(5122),x=n(3620),f=n(7980),j=n(9899),_=n(8340);function k(e){return(0,b.jsx)("svg",{width:"20",height:"20","aria-hidden":"true",...e,children:(0,b.jsxs)("g",{fill:"#7a7a7a",children:[(0,b.jsx)("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),(0,b.jsx)("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})]})})}const v={collapseSidebarButton:"collapseSidebarButton_oTwn",collapseSidebarButtonIcon:"collapseSidebarButtonIcon_pMEX"};function g(e){let{onClick:t}=e;return(0,b.jsx)("button",{type:"button",title:(0,r.I)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,r.I)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,o.Z)("button button--secondary button--outline",v.collapseSidebarButton),onClick:t,children:(0,b.jsx)(k,{className:v.collapseSidebarButtonIcon})})}var C=n(4234),S=n(3879);const I=Symbol("EmptyContext"),N=a.createContext(I);function T(e){let{children:t}=e;const[n,o]=(0,a.useState)(null),i=(0,a.useMemo)((()=>({expandedItem:n,setExpandedItem:o})),[n]);return(0,b.jsx)(N.Provider,{value:i,children:t})}var B=n(4229),Z=n(6440),L=n(5237),y=n(362);function A(e){let{collapsed:t,categoryLabel:n,onClick:a}=e;return(0,b.jsx)("button",{"aria-label":t?(0,r.I)({id:"theme.DocSidebarItem.expandCategoryAriaLabel",message:"Expand sidebar category '{label}'",description:"The ARIA label to expand the sidebar category"},{label:n}):(0,r.I)({id:"theme.DocSidebarItem.collapseCategoryAriaLabel",message:"Collapse sidebar category '{label}'",description:"The ARIA label to collapse the sidebar category"},{label:n}),type:"button",className:"clean-btn menu__caret",onClick:a})}function E(e){let{item:t,onItemClick:n,activePath:i,level:c,index:r,...d}=e;const{items:u,label:m,collapsible:h,className:p,href:x}=t,{docs:{sidebar:{autoCollapseCategories:f}}}=(0,j.L)(),_=function(e){const t=(0,y.Z)();return(0,a.useMemo)((()=>e.href&&!e.linkUnlisted?e.href:!t&&e.collapsible?(0,l.LM)(e):void 0),[e,t])}(t),k=(0,l._F)(t,i),v=(0,Z.Mg)(x,i),{collapsed:g,setCollapsed:C}=(0,B.u)({initialState:()=>!!h&&(!k&&t.collapsed)}),{expandedItem:T,setExpandedItem:E}=function(){const e=(0,a.useContext)(N);if(e===I)throw new S.i6("DocSidebarItemsExpandedStateProvider");return e}(),w=function(e){void 0===e&&(e=!g),E(e?null:r),C(e)};return function(e){let{isActive:t,collapsed:n,updateCollapsed:o}=e;const i=(0,S.D9)(t);(0,a.useEffect)((()=>{t&&!i&&n&&o(!1)}),[t,i,n,o])}({isActive:k,collapsed:g,updateCollapsed:w}),(0,a.useEffect)((()=>{h&&null!=T&&T!==r&&f&&C(!0)}),[h,T,r,C,f]),(0,b.jsxs)("li",{className:(0,o.Z)(s.k.docs.docSidebarItemCategory,s.k.docs.docSidebarItemCategoryLevel(c),"menu__list-item",{"menu__list-item--collapsed":g},p),children:[(0,b.jsxs)("div",{className:(0,o.Z)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":v}),children:[(0,b.jsx)(L.Z,{className:(0,o.Z)("menu__link",{"menu__link--sublist":h,"menu__link--sublist-caret":!x&&h,"menu__link--active":k}),onClick:h?e=>{n?.(t),x?w(!1):(e.preventDefault(),w())}:()=>{n?.(t)},"aria-current":v?"page":void 0,"aria-expanded":h?!g:void 0,href:h?_??"#":_,...d,children:m}),x&&h&&(0,b.jsx)(A,{collapsed:g,categoryLabel:m,onClick:e=>{e.preventDefault(),w()}})]}),(0,b.jsx)(B.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:g,children:(0,b.jsx)(V,{items:u,tabIndex:g?-1:0,onItemClick:n,activePath:i,level:c+1})})]})}var w=n(4715),H=n(1858);const M={menuExternalLink:"menuExternalLink_BiEj"};function D(e){let{item:t,onItemClick:n,activePath:a,level:i,index:c,...r}=e;const{href:d,label:u,className:m,autoAddBaseUrl:h}=t,p=(0,l._F)(t,a),x=(0,w.Z)(d);return(0,b.jsx)("li",{className:(0,o.Z)(s.k.docs.docSidebarItemLink,s.k.docs.docSidebarItemLinkLevel(i),"menu__list-item",m),children:(0,b.jsxs)(L.Z,{className:(0,o.Z)("menu__link",!x&&M.menuExternalLink,{"menu__link--active":p}),autoAddBaseUrl:h,"aria-current":p?"page":void 0,to:d,...x&&{onClick:n?()=>n(t):void 0},...r,children:[u,!x&&(0,b.jsx)(H.Z,{})]})},u)}const R={menuHtmlItem:"menuHtmlItem_OniL"};function P(e){let{item:t,level:n,index:a}=e;const{value:i,defaultStyle:l,className:c}=t;return(0,b.jsx)("li",{className:(0,o.Z)(s.k.docs.docSidebarItemLink,s.k.docs.docSidebarItemLinkLevel(n),l&&[R.menuHtmlItem,"menu__list-item"],c),dangerouslySetInnerHTML:{__html:i}},a)}function W(e){let{item:t,...n}=e;switch(t.type){case"category":return(0,b.jsx)(E,{item:t,...n});case"html":return(0,b.jsx)(P,{item:t,...n});default:return(0,b.jsx)(D,{item:t,...n})}}function F(e){let{items:t,...n}=e;const a=(0,l.f)(t,n.activePath);return(0,b.jsx)(T,{children:a.map(((e,t)=>(0,b.jsx)(W,{item:e,index:t,...n},t)))})}const V=(0,a.memo)(F),Y={menu:"menu_jmj1",menuWithAnnouncementBar:"menuWithAnnouncementBar_YufC"};function U(e){let{path:t,sidebar:n,className:i}=e;const l=function(){const{isActive:e}=(0,C.nT)(),[t,n]=(0,a.useState)(e);return(0,d.RF)((t=>{let{scrollY:a}=t;e&&n(0===a)}),[e]),e&&t}();return(0,b.jsx)("nav",{"aria-label":(0,r.I)({id:"theme.docs.sidebar.navAriaLabel",message:"Docs sidebar",description:"The ARIA label for the sidebar navigation"}),className:(0,o.Z)("menu thin-scrollbar",Y.menu,l&&Y.menuWithAnnouncementBar,i),children:(0,b.jsx)("ul",{className:(0,o.Z)(s.k.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(V,{items:n,activePath:t,level:1})})})}const z="sidebar_CUen",q="sidebarWithHideableNavbar_w4KB",K="sidebarHidden_k6VE",O="sidebarLogo_CYvI";function J(e){let{path:t,sidebar:n,onCollapse:a,isHidden:i}=e;const{navbar:{hideOnScroll:s},docs:{sidebar:{hideable:l}}}=(0,j.L)();return(0,b.jsxs)("div",{className:(0,o.Z)(z,s&&q,i&&K),children:[s&&(0,b.jsx)(_.Z,{tabIndex:-1,className:O}),(0,b.jsx)(U,{path:t,sidebar:n}),l&&(0,b.jsx)(g,{onClick:a})]})}const X=a.memo(J);var G=n(197),Q=n(9067);const $=e=>{let{sidebar:t,path:n}=e;const a=(0,Q.e)();return(0,b.jsx)("ul",{className:(0,o.Z)(s.k.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(V,{items:t,activePath:n,onItemClick:e=>{"category"===e.type&&e.href&&a.toggle(),"link"===e.type&&a.toggle()},level:1})})};function ee(e){return(0,b.jsx)(G.Zo,{component:$,props:e})}const te=a.memo(ee);function ne(e){const t=(0,f.i)(),n="desktop"===t||"ssr"===t,a="mobile"===t;return(0,b.jsxs)(b.Fragment,{children:[n&&(0,b.jsx)(X,{...e}),a&&(0,b.jsx)(te,{...e})]})}const ae={expandButton:"expandButton_pLDq",expandButtonIcon:"expandButtonIcon_X5ff"};function oe(e){let{toggleSidebar:t}=e;return(0,b.jsx)("div",{className:ae.expandButton,title:(0,r.I)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,r.I)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:t,onClick:t,children:(0,b.jsx)(k,{className:ae.expandButtonIcon})})}const ie={docSidebarContainer:"docSidebarContainer_c7NB",docSidebarContainerHidden:"docSidebarContainerHidden_P3S_",sidebarViewport:"sidebarViewport_KYo0"};function se(e){let{children:t}=e;const n=(0,c.V)();return(0,b.jsx)(a.Fragment,{children:t},n?.name??"noSidebar")}function le(e){let{sidebar:t,hiddenSidebarContainer:n,setHiddenSidebarContainer:i}=e;const{pathname:l}=(0,x.TH)(),[c,r]=(0,a.useState)(!1),d=(0,a.useCallback)((()=>{c&&r(!1),!c&&(0,p.n)()&&r(!0),i((e=>!e))}),[i,c]);return(0,b.jsx)("aside",{className:(0,o.Z)(s.k.docs.docSidebarContainer,ie.docSidebarContainer,n&&ie.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(ie.docSidebarContainer)&&n&&r(!0)},children:(0,b.jsx)(se,{children:(0,b.jsxs)("div",{className:(0,o.Z)(ie.sidebarViewport,c&&ie.sidebarViewportHidden),children:[(0,b.jsx)(ne,{sidebar:t,path:l,onCollapse:d,isHidden:c}),c&&(0,b.jsx)(oe,{toggleSidebar:d})]})})})}const ce={docMainContainer:"docMainContainer_a9sJ",docMainContainerEnhanced:"docMainContainerEnhanced_grEJ",docItemWrapperEnhanced:"docItemWrapperEnhanced_VqDq"};function re(e){let{hiddenSidebarContainer:t,children:n}=e;const a=(0,c.V)();return(0,b.jsx)("main",{className:(0,o.Z)(ce.docMainContainer,(t||!a)&&ce.docMainContainerEnhanced),children:(0,b.jsx)("div",{className:(0,o.Z)("container padding-top--md padding-bottom--lg",ce.docItemWrapper,t&&ce.docItemWrapperEnhanced),children:n})})}const de={docRoot:"docRoot_DfVB",docsWrapper:"docsWrapper__sE8"};function ue(e){let{children:t}=e;const n=(0,c.V)(),[o,i]=(0,a.useState)(!1);return(0,b.jsxs)("div",{className:de.docsWrapper,children:[(0,b.jsx)(h,{}),(0,b.jsxs)("div",{className:de.docRoot,children:[n&&(0,b.jsx)(le,{sidebar:n.items,hiddenSidebarContainer:o,setHiddenSidebarContainer:i}),(0,b.jsx)(re,{hiddenSidebarContainer:o,children:t})]})]})}var me=n(4718);function be(e){const t=(0,l.SN)(e);if(!t)return(0,b.jsx)(me.Z,{});const{docElement:n,sidebarName:a,sidebarItems:r}=t;return(0,b.jsx)(i.FG,{className:(0,o.Z)(s.k.page.docsDocPage),children:(0,b.jsx)(c.b,{name:a,items:r,children:(0,b.jsx)(ue,{children:n})})})}},4718:(e,t,n)=>{n.d(t,{Z:()=>l});n(7378);var a=n(624),o=n(7419),i=n(8825),s=n(4246);function l(e){let{className:t}=e;return(0,s.jsx)("main",{className:(0,a.Z)("container margin-vert--xl",t),children:(0,s.jsx)("div",{className:"row",children:(0,s.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,s.jsx)(i.Z,{as:"h1",className:"hero__title",children:(0,s.jsx)(o.Z,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,s.jsx)("p",{children:(0,s.jsx)(o.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,s.jsx)("p",{children:(0,s.jsx)(o.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}}}]); \ No newline at end of file diff --git a/assets/js/ae4976f8.5406cedc.js b/assets/js/ae4976f8.5406cedc.js deleted file mode 100755 index 090a3c6..0000000 --- a/assets/js/ae4976f8.5406cedc.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[93],{5318:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var a=n(7378);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},r=Object.keys(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=a.createContext({}),u=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=u(e.components);return a.createElement(s.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=u(n),m=o,h=d["".concat(s,".").concat(m)]||d[m]||c[m]||r;return n?a.createElement(h,i(i({ref:t},p),{},{components:n})):a.createElement(h,i({ref:t},p))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,i=new Array(r);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:o,i[1]=l;for(var u=2;u<r;u++)i[u]=n[u];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},8642:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>r,metadata:()=>l,toc:()=>u});var a=n(5773),o=(n(7378),n(5318));const r={},i="Using a Middleware",l={unversionedId:"setting-up-cls-context/using-a-middleware",id:"setting-up-cls-context/using-a-middleware",title:"Using a Middleware",description:"This section applies only if you use a HTTP transport (REST or GraphQL)",source:"@site/docs/02_setting-up-cls-context/01_using-a-middleware.md",sourceDirName:"02_setting-up-cls-context",slug:"/setting-up-cls-context/using-a-middleware",permalink:"/nestjs-cls/setting-up-cls-context/using-a-middleware",draft:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/02_setting-up-cls-context/01_using-a-middleware.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Setting up the CLS context",permalink:"/nestjs-cls/setting-up-cls-context/"},next:{title:"Using a Guard",permalink:"/nestjs-cls/setting-up-cls-context/using-a-guard"}},s={},u=[{value:"Automatically",id:"automatically",level:2},{value:"Manually",id:"manually",level:2},{value:"In the module",id:"in-the-module",level:3},{value:"Using app.use",id:"using-appuse",level:3}],p={toc:u},d="wrapper";function c(e){let{components:t,...n}=e;return(0,o.kt)(d,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"using-a-middleware"},"Using a Middleware"),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"This section applies only if you use a HTTP transport (REST or GraphQL)")),(0,o.kt)("p",null,"Since in NestJS, HTTP ",(0,o.kt)("strong",{parentName:"p"},"middleware")," is the first thing to run when a request arrives, it is an ideal place to initialise the CLS context. This package provides ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsMiddleware")," that can be mounted to all (or selected) routes inside which the context is set up before the ",(0,o.kt)("inlineCode",{parentName:"p"},"next()")," call."),(0,o.kt)("p",null,"All you have to do is mount it to routes in which you want to use CLS, or pass ",(0,o.kt)("inlineCode",{parentName:"p"},"middleware: { mount: true }")," to the ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsModule.forRoot()")," options which automatically mounts it to all routes."),(0,o.kt)("p",null,"Once that is set up, the ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsService")," will have access to a common storage in all ",(0,o.kt)("em",{parentName:"p"},"Guards, Interceptors, Pipes, Controllers, Services and Exception Filters")," that are called within that route."),(0,o.kt)("h2",{id:"automatically"},"Automatically"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-ts",metastring:'title="app.module.ts"',title:'"app.module.ts"'},"@Module({\n imports: [\n ClsModule.forRoot({\n global: true,\n // highlight-start\n middleware: { mount: true },\n // highlight-end\n }),\n ],\n // ...\n})\nexport class AppModule {}\n")),(0,o.kt)("h2",{id:"manually"},"Manually"),(0,o.kt)("p",null,"Sometimes, you might want to only use CLS on certain routes, or you need to have more control over the order of middleware registration in combination with other middlewares."),(0,o.kt)("h3",{id:"in-the-module"},"In the module"),(0,o.kt)("p",null,"In that case, omit the ",(0,o.kt)("inlineCode",{parentName:"p"},"mount")," option or set it to ",(0,o.kt)("inlineCode",{parentName:"p"},"false")," and bind the ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsMiddleware")," manually in the module:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-ts",metastring:'title="app.module.ts"',title:'"app.module.ts"'},"@Module({\n imports: [\n ClsModule.forRoot({\n global: true,\n // highlight-start\n middleware: { mount: false },\n // highlight-end\n }),\n ],\n // ...\n})\nexport class AppModule implements NestModule {\n configure(consumer: MiddlewareConsumer) {\n // highlight-start\n consumer.apply(ClsMiddleware).forRoutes('custom/route');\n // highlight-end\n }\n}\n")),(0,o.kt)("h3",{id:"using-appuse"},"Using app.use"),(0,o.kt)("p",null,"Sometimes, however, the previous method won't be enough, because the middleware could be mounted too late and you won't be able to use it in other middlewares that need to run prior to that - for example, the API versioning feature of NestJS apparently interferes with the order, see issue ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/Papooch/nestjs-cls/issues/67"},"#67"),"."),(0,o.kt)("p",null,"In that case, you can mount it directly in the bootstrap method:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-ts",metastring:'title="main.ts"',title:'"main.ts"'},"function bootstrap() {\n const app = await NestFactory.create(AppModule);\n // create and mount the middleware manually here\n app.use(\n // highlight-start\n new ClsMiddleware({\n /* ...settings */\n }).use,\n // highlight-end\n );\n await app.listen(3000);\n}\n")),(0,o.kt)("admonition",{type:"caution"},(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("strong",{parentName:"p"},"Please note"),": If you bind the middleware using ",(0,o.kt)("inlineCode",{parentName:"p"},"app.use()"),", it will not respect middleware settings passed to ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsModule.forRoot()"),", so you will have to provide them yourself in the constructor.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ae4976f8.fa94a518.js b/assets/js/ae4976f8.fa94a518.js new file mode 100644 index 0000000..a3541e1 --- /dev/null +++ b/assets/js/ae4976f8.fa94a518.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[93],{5934:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>r,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var s=n(4246),i=n(1670);const o={},l="Using a Middleware",a={id:"setting-up-cls-context/using-a-middleware",title:"Using a Middleware",description:"This section applies only if you use a HTTP transport (REST or GraphQL)",source:"@site/docs/02_setting-up-cls-context/01_using-a-middleware.md",sourceDirName:"02_setting-up-cls-context",slug:"/setting-up-cls-context/using-a-middleware",permalink:"/nestjs-cls/setting-up-cls-context/using-a-middleware",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/02_setting-up-cls-context/01_using-a-middleware.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Setting up the CLS context",permalink:"/nestjs-cls/setting-up-cls-context/"},next:{title:"Using a Guard",permalink:"/nestjs-cls/setting-up-cls-context/using-a-guard"}},r={},d=[{value:"Automatically",id:"automatically",level:2},{value:"Manually",id:"manually",level:2},{value:"In the module",id:"in-the-module",level:3},{value:"Using app.use",id:"using-appuse",level:3}];function c(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"using-a-middleware",children:"Using a Middleware"}),"\n",(0,s.jsx)(t.admonition,{type:"info",children:(0,s.jsx)(t.p,{children:"This section applies only if you use a HTTP transport (REST or GraphQL)"})}),"\n",(0,s.jsxs)(t.p,{children:["Since in NestJS, HTTP ",(0,s.jsx)(t.strong,{children:"middleware"})," is the first thing to run when a request arrives, it is an ideal place to initialise the CLS context. This package provides ",(0,s.jsx)(t.code,{children:"ClsMiddleware"})," that can be mounted to all (or selected) routes inside which the context is set up before the ",(0,s.jsx)(t.code,{children:"next()"})," call."]}),"\n",(0,s.jsxs)(t.p,{children:["All you have to do is mount it to routes in which you want to use CLS, or pass ",(0,s.jsx)(t.code,{children:"middleware: { mount: true }"})," to the ",(0,s.jsx)(t.code,{children:"ClsModule.forRoot()"})," options which automatically mounts it to all routes."]}),"\n",(0,s.jsxs)(t.p,{children:["Once that is set up, the ",(0,s.jsx)(t.code,{children:"ClsService"})," will have access to a common storage in all ",(0,s.jsx)(t.em,{children:"Guards, Interceptors, Pipes, Controllers, Services and Exception Filters"})," that are called within that route."]}),"\n",(0,s.jsx)(t.h2,{id:"automatically",children:"Automatically"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-ts",metastring:'title="app.module.ts"',children:"@Module({\n imports: [\n ClsModule.forRoot({\n global: true,\n // highlight-start\n middleware: { mount: true },\n // highlight-end\n }),\n ],\n // ...\n})\nexport class AppModule {}\n"})}),"\n",(0,s.jsx)(t.h2,{id:"manually",children:"Manually"}),"\n",(0,s.jsx)(t.p,{children:"Sometimes, you might want to only use CLS on certain routes, or you need to have more control over the order of middleware registration in combination with other middlewares."}),"\n",(0,s.jsx)(t.h3,{id:"in-the-module",children:"In the module"}),"\n",(0,s.jsxs)(t.p,{children:["In that case, omit the ",(0,s.jsx)(t.code,{children:"mount"})," option or set it to ",(0,s.jsx)(t.code,{children:"false"})," and bind the ",(0,s.jsx)(t.code,{children:"ClsMiddleware"})," manually in the module:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-ts",metastring:'title="app.module.ts"',children:"@Module({\n imports: [\n ClsModule.forRoot({\n global: true,\n // highlight-start\n middleware: { mount: false },\n // highlight-end\n }),\n ],\n // ...\n})\nexport class AppModule implements NestModule {\n configure(consumer: MiddlewareConsumer) {\n // highlight-start\n consumer.apply(ClsMiddleware).forRoutes('custom/route');\n // highlight-end\n }\n}\n"})}),"\n",(0,s.jsx)(t.h3,{id:"using-appuse",children:"Using app.use"}),"\n",(0,s.jsxs)(t.p,{children:["Sometimes, however, the previous method won't be enough, because the middleware could be mounted too late and you won't be able to use it in other middlewares that need to run prior to that - for example, the API versioning feature of NestJS apparently interferes with the order, see issue ",(0,s.jsx)(t.a,{href:"https://github.com/Papooch/nestjs-cls/issues/67",children:"#67"}),"."]}),"\n",(0,s.jsx)(t.p,{children:"In that case, you can mount it directly in the bootstrap method:"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-ts",metastring:'title="main.ts"',children:"function bootstrap() {\n const app = await NestFactory.create(AppModule);\n // create and mount the middleware manually here\n app.use(\n // highlight-start\n new ClsMiddleware({\n /* ...settings */\n }).use,\n // highlight-end\n );\n await app.listen(3000);\n}\n"})}),"\n",(0,s.jsx)(t.admonition,{type:"caution",children:(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Please note"}),": If you bind the middleware using ",(0,s.jsx)(t.code,{children:"app.use()"}),", it will not respect middleware settings passed to ",(0,s.jsx)(t.code,{children:"ClsModule.forRoot()"}),", so you will have to provide them yourself in the constructor."]})})]})}function u(e={}){const{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},1670:(e,t,n)=>{n.d(t,{Z:()=>a,a:()=>l});var s=n(7378);const i={},o=s.createContext(i);function l(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:l(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b09df872.558f0f47.js b/assets/js/b09df872.558f0f47.js new file mode 100644 index 0000000..0d28eca --- /dev/null +++ b/assets/js/b09df872.558f0f47.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[246],{8625:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>c,toc:()=>a});var s=t(4246),o=t(1670);const r={},i="Using an Interceptor",c={id:"setting-up-cls-context/using-an-interceptor",title:"Using an Interceptor",description:"Another place to initiate the CLS context is an ClsInterceptor, which, unlike the ClsGuard uses AsyncLocalStorage#run method to wrap the following code, which is considered safer than enterWith.",source:"@site/docs/02_setting-up-cls-context/03_using-an-interceptor.md",sourceDirName:"02_setting-up-cls-context",slug:"/setting-up-cls-context/using-an-interceptor",permalink:"/nestjs-cls/setting-up-cls-context/using-an-interceptor",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/02_setting-up-cls-context/03_using-an-interceptor.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Using a Guard",permalink:"/nestjs-cls/setting-up-cls-context/using-a-guard"},next:{title:"Using a Decorator",permalink:"/nestjs-cls/setting-up-cls-context/using-a-decorator"}},l={},a=[];function d(e){const n={admonition:"admonition",code:"code",em:"em",h1:"h1",p:"p",pre:"pre",strong:"strong",...(0,o.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"using-an-interceptor",children:"Using an Interceptor"}),"\n",(0,s.jsxs)(n.p,{children:["Another place to initiate the CLS context is an ",(0,s.jsx)(n.code,{children:"ClsInterceptor"}),", which, unlike the ",(0,s.jsx)(n.code,{children:"ClsGuard"})," uses ",(0,s.jsx)(n.code,{children:"AsyncLocalStorage#run"})," method to wrap the following code, which is considered safer than ",(0,s.jsx)(n.code,{children:"enterWith"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["To use it, pass its configuration to the ",(0,s.jsx)(n.code,{children:"interceptor"})," property to the ",(0,s.jsx)(n.code,{children:"ClsModule.forRoot()"})," options:"]}),"\n",(0,s.jsx)(n.h1,{id:"automatically",children:"Automatically"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="app.module.ts"',children:"@Module({\n imports: [\n ClsModule.forRoot({\n // highlight-start\n interceptor: { mount: true },\n // highlight-end\n }),\n ],\n // ...\n})\nexport class AppModule {}\n"})}),"\n",(0,s.jsx)(n.h1,{id:"manually",children:"Manually"}),"\n",(0,s.jsxs)(n.p,{children:["Or mount it manually as ",(0,s.jsx)(n.code,{children:"APP_INTERCEPTOR"})]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="app.module.ts"',children:"@Module({\n imports: [\n ClsModule.forRoot({\n // highlight-start\n interceptor: { mount: false }\n // highlight-end\n }),\n ]\n providers: [\n {\n // highlight-start\n provide: APP_INTERCEPTOR,\n useClass: ClsGuard,\n // highlight-end\n },\n ],\n // ...\n})\nexport class AppModule {}\n"})}),"\n",(0,s.jsx)(n.p,{children:"or directly on the Controller/Resolver with:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"@UseInterceptors(ClsInterceptor);\n"})}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Please note"}),": Since Nest's ",(0,s.jsx)(n.em,{children:"Interceptors"})," run after ",(0,s.jsx)(n.em,{children:"Guards"}),", that means using this method makes CLS ",(0,s.jsx)(n.strong,{children:"unavailable in Guards"})," (and in case of REST Controllers, also in ",(0,s.jsx)(n.strong,{children:"Exception Filters"}),")."]})})]})}function h(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},1670:(e,n,t)=>{t.d(n,{Z:()=>c,a:()=>i});var s=t(7378);const o={},r=s.createContext(o);function i(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b09df872.6dc93e4a.js b/assets/js/b09df872.6dc93e4a.js deleted file mode 100755 index 77f0f81..0000000 --- a/assets/js/b09df872.6dc93e4a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[246],{5318:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>g});var r=n(7378);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),u=p(n),m=o,g=u["".concat(l,".").concat(m)]||u[m]||d[m]||a;return n?r.createElement(g,i(i({ref:t},c),{},{components:n})):r.createElement(g,i({ref:t},c))}));function g(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:o,i[1]=s;for(var p=2;p<a;p++)i[p]=n[p];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},5160:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>p});var r=n(5773),o=(n(7378),n(5318));const a={},i="Using an Interceptor",s={unversionedId:"setting-up-cls-context/using-an-interceptor",id:"setting-up-cls-context/using-an-interceptor",title:"Using an Interceptor",description:"Another place to initiate the CLS context is an ClsInterceptor, which, unlike the ClsGuard uses AsyncLocalStorage#run method to wrap the following code, which is considered safer than enterWith.",source:"@site/docs/02_setting-up-cls-context/03_using-an-interceptor.md",sourceDirName:"02_setting-up-cls-context",slug:"/setting-up-cls-context/using-an-interceptor",permalink:"/nestjs-cls/setting-up-cls-context/using-an-interceptor",draft:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/02_setting-up-cls-context/03_using-an-interceptor.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Using a Guard",permalink:"/nestjs-cls/setting-up-cls-context/using-a-guard"},next:{title:"Using a Decorator",permalink:"/nestjs-cls/setting-up-cls-context/using-a-decurator"}},l={},p=[],c={toc:p},u="wrapper";function d(e){let{components:t,...n}=e;return(0,o.kt)(u,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"using-an-interceptor"},"Using an Interceptor"),(0,o.kt)("p",null,"Another place to initiate the CLS context is an ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsInterceptor"),", which, unlike the ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsGuard")," uses ",(0,o.kt)("inlineCode",{parentName:"p"},"AsyncLocalStorage#run")," method to wrap the following code, which is considered safer than ",(0,o.kt)("inlineCode",{parentName:"p"},"enterWith"),"."),(0,o.kt)("p",null,"To use it, pass its configuration to the ",(0,o.kt)("inlineCode",{parentName:"p"},"interceptor")," property to the ",(0,o.kt)("inlineCode",{parentName:"p"},"ClsModule.forRoot()")," options:"),(0,o.kt)("h1",{id:"automatically"},"Automatically"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-ts",metastring:'title="app.module.ts"',title:'"app.module.ts"'},"@Module({\n imports: [\n ClsModule.forRoot({\n // highlight-start\n interceptor: { mount: true },\n // highlight-end\n }),\n ],\n // ...\n})\nexport class AppModule {}\n")),(0,o.kt)("h1",{id:"manually"},"Manually"),(0,o.kt)("p",null,"Or mount it manually as ",(0,o.kt)("inlineCode",{parentName:"p"},"APP_INTERCEPTOR")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-ts",metastring:'title="app.module.ts"',title:'"app.module.ts"'},"@Module({\n imports: [\n ClsModule.forRoot({\n // highlight-start\n interceptor: { mount: false }\n // highlight-end\n }),\n ]\n providers: [\n {\n // highlight-start\n provide: APP_INTERCEPTOR,\n useClass: ClsGuard,\n // highlight-end\n },\n ],\n // ...\n})\nexport class AppModule {}\n")),(0,o.kt)("p",null,"or directly on the Controller/Resolver with:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-ts"},"@UseInterceptors(ClsInterceptor);\n")),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("strong",{parentName:"p"},"Please note"),": Since Nest's ",(0,o.kt)("em",{parentName:"p"},"Interceptors")," run after ",(0,o.kt)("em",{parentName:"p"},"Guards"),", that means using this method makes CLS ",(0,o.kt)("strong",{parentName:"p"},"unavailable in Guards")," (and in case of REST Controllers, also in ",(0,o.kt)("strong",{parentName:"p"},"Exception Filters"),").")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b67d68ed.2e3abcf2.js b/assets/js/b67d68ed.2e3abcf2.js new file mode 100644 index 0000000..9eb4746 --- /dev/null +++ b/assets/js/b67d68ed.2e3abcf2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[241],{5575:(n,e,i)=>{i.r(e),i.d(e,{assets:()=>a,contentTitle:()=>r,default:()=>c,frontMatter:()=>s,metadata:()=>l,toc:()=>d});var t=i(4246),o=i(1670);const s={},r="Plugin API",l={id:"plugins/plugin-api",title:"Plugin API",description:"The Plugin API is still experimental and might change in the future, you should not rely on it in production.",source:"@site/docs/06_plugins/02_plugin-api.md",sourceDirName:"06_plugins",slug:"/plugins/plugin-api",permalink:"/nestjs-cls/plugins/plugin-api",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/06_plugins/02_plugin-api.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Creating a custom adapter",permalink:"/nestjs-cls/plugins/available-plugins/transactional/creating-custom-adapter"},next:{title:"Migration guide",permalink:"/nestjs-cls/migration-guide/"}},a={},d=[];function u(n){const e={admonition:"admonition",code:"code",em:"em",h1:"h1",p:"p",pre:"pre",...(0,o.a)(),...n.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(e.h1,{id:"plugin-api",children:"Plugin API"}),"\n",(0,t.jsxs)(e.admonition,{type:"warning",children:[(0,t.jsx)(e.p,{children:"The Plugin API is still experimental and might change in the future, you should not rely on it in production."}),(0,t.jsx)(e.p,{children:'Using any of the "official" plugins is safe since they are maintained by the same author. If you want to create your own plugin, you should be aware that the API might change between minor versions.'})]}),"\n",(0,t.jsx)(e.p,{children:"A plugin is, in its core, a NestJS module with some extra options and should implement the following interface:"}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-ts",children:"export interface ClsPlugin {\n /**\n * The name of the plugin, used for logging and debugging\n */\n name: string;\n\n /**\n * Function that is called within a Cls initializer (middleware, interceptor, guard, etc.)\n */\n onClsInit?: (cls: ClsService) => void | Promise<void>;\n\n /**\n * A lifecycle method called when the `ClsModule` is initialized\n */\n onModuleInit?: () => void | Promise<void>;\n\n /**\n * A lifecycle method called when the `ClsModule` is destroyed (only when shutdown hooks are enabled)\n */\n onModuleDestroy?: () => void | Promise<void>;\n\n /**\n * An array of external modules that should be imported for the plugin to work.\n */\n imports?: any[];\n\n /**\n * An array of providers that the plugin provides.\n */\n providers?: Provider[];\n\n /**\n * An array of providers that the plugin provides that should be exported.\n */\n exports?: any[];\n}\n"})}),"\n",(0,t.jsxs)(e.p,{children:["The plugin options are then mixed into a ",(0,t.jsx)(e.em,{children:"global"})," ",(0,t.jsx)(e.code,{children:"ClsPluginModule"})," and the exposed providers can be used for injection by other plugin-related code."]})]})}function c(n={}){const{wrapper:e}={...(0,o.a)(),...n.components};return e?(0,t.jsx)(e,{...n,children:(0,t.jsx)(u,{...n})}):u(n)}},1670:(n,e,i)=>{i.d(e,{Z:()=>l,a:()=>r});var t=i(7378);const o={},s=t.createContext(o);function r(n){const e=t.useContext(s);return t.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function l(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(o):n.components||o:r(n.components),t.createElement(s.Provider,{value:e},n.children)}}}]); \ No newline at end of file diff --git a/assets/js/b787da23.6d6bf314.js b/assets/js/b787da23.6d6bf314.js new file mode 100644 index 0000000..b845918 --- /dev/null +++ b/assets/js/b787da23.6d6bf314.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[126],{9622:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>o,contentTitle:()=>l,default:()=>a,frontMatter:()=>r,metadata:()=>c,toc:()=>d});var n=s(4246),i=s(1670);const r={},l="Compatibility",c={id:"considerations/compatibility",title:"Compatibility",description:"The table below outlines the compatibility with some platforms:",source:"@site/docs/05_considerations/02_compatibility.md",sourceDirName:"05_considerations",slug:"/considerations/compatibility",permalink:"/nestjs-cls/considerations/compatibility",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/05_considerations/02_compatibility.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Security",permalink:"/nestjs-cls/considerations/security"},next:{title:"Plugins",permalink:"/nestjs-cls/plugins/"}},o={},d=[{value:"REST",id:"rest",level:2},{value:"GraphQL",id:"graphql",level:2},{value:"<code>@nestjs/graphql >= 10</code>",id:"nestjsgraphql--10",level:3},{value:"<code>@nestjs/graphql < 10</code>",id:"nestjsgraphql--10-1",level:3},{value:"Others",id:"others",level:2},{value:"Websockets",id:"websockets",level:3}];function h(e){const t={a:"a",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"compatibility",children:"Compatibility"}),"\n",(0,n.jsx)(t.p,{children:"The table below outlines the compatibility with some platforms:"}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{style:{textAlign:"center"}}),(0,n.jsx)(t.th,{style:{textAlign:"center"},children:"REST"}),(0,n.jsx)(t.th,{style:{textAlign:"center"},children:"GQL"}),(0,n.jsxs)(t.th,{style:{textAlign:"center"},children:["WS",(0,n.jsx)(t.a,{href:"#websockets",children:"*"})]}),(0,n.jsx)(t.th,{style:{textAlign:"center"},children:"Microservices"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{style:{textAlign:"center"},children:(0,n.jsx)(t.strong,{children:"ClsMiddleware"})}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"\u2716"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"\u2716"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsxs)(t.td,{style:{textAlign:"center"},children:[(0,n.jsx)(t.strong,{children:"ClsGuard"})," ",(0,n.jsx)("br",{}),"(uses ",(0,n.jsx)(t.code,{children:"enterWith"}),")"]}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsxs)(t.td,{style:{textAlign:"center"},children:[(0,n.jsx)(t.strong,{children:"ClsInterceptor"})," ",(0,n.jsx)("br",{}),"(context inaccessible",(0,n.jsx)("br",{}),"in ",(0,n.jsx)(t.em,{children:"Guards"})," and",(0,n.jsx)("br",{})," in ",(0,n.jsx)(t.em,{children:"Exception Filters"}),")"]}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714"})]})]})]}),"\n",(0,n.jsx)(t.h2,{id:"rest",children:"REST"}),"\n",(0,n.jsxs)(t.p,{children:["This package is compatible with Nest-supported REST controllers and the preferred way is to use the ",(0,n.jsx)(t.code,{children:"ClsMiddleware"})," with the ",(0,n.jsx)(t.code,{children:"mount"})," option set to ",(0,n.jsx)(t.code,{children:"true"}),"."]}),"\n",(0,n.jsx)(t.p,{children:"Tested with:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:"\u2714 Express"}),"\n",(0,n.jsx)(t.li,{children:"\u2714 Fastify"}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:"Known issues:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["In case API versioning is used, the automatic mounting of the ",(0,n.jsx)(t.code,{children:"ClsMiddleware"})," does not work and it needs to be mounted manually. See issue ",(0,n.jsx)(t.a,{href:"https://github.com/Papooch/nestjs-cls/issues/67",children:"#67"})," for details."]}),"\n",(0,n.jsxs)(t.li,{children:["Some existing Express middlewares may cause context loss, if that happens, mount the ",(0,n.jsx)(t.code,{children:"ClsMiddleware"})," manually ",(0,n.jsx)(t.em,{children:"after"})," those offending ones (",(0,n.jsx)(t.a,{href:"https://github.com/Papooch/nestjs-cls/issues/50#issuecomment-1368162870",children:"#50"}),")"]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"graphql",children:"GraphQL"}),"\n",(0,n.jsx)(t.p,{children:"Using an interceptor or a guard may result in that enhancer triggering multiple times in case there are multiple queries in the GQL request."}),"\n",(0,n.jsxs)(t.p,{children:["Due to this, you should ensure that any operation on the CLS store within enhancers is ",(0,n.jsx)(t.em,{children:"idempotent"}),". This includes the ",(0,n.jsx)(t.code,{children:"setup"})," function. Therefore, it is advised to use the ",(0,n.jsx)(t.code,{children:"ClsService#setIfUndefined()"})," method."]}),"\n",(0,n.jsx)(t.p,{children:"Tested with:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:"\u2714 Apollo (Express)"}),"\n",(0,n.jsx)(t.li,{children:"\u2714 Mercurius (Fastify)"}),"\n"]}),"\n",(0,n.jsx)(t.h3,{id:"nestjsgraphql--10",children:(0,n.jsx)(t.code,{children:"@nestjs/graphql >= 10"})}),"\n",(0,n.jsxs)(t.p,{children:["Since v10, Nest's GraphQL resolvers are compatible with this package and the preferred way to initialize the CLS context is use the ",(0,n.jsx)(t.code,{children:"ClsMiddleware"})," with the ",(0,n.jsx)(t.code,{children:"mount"})," option."]}),"\n",(0,n.jsx)(t.h3,{id:"nestjsgraphql--10-1",children:(0,n.jsx)(t.code,{children:"@nestjs/graphql < 10"})}),"\n",(0,n.jsxs)(t.p,{children:["For older versions of graphql, the ",(0,n.jsx)(t.code,{children:"ClsMiddleware"})," needs to be ",(0,n.jsx)(t.a,{href:"/nestjs-cls/setting-up-cls-context/using-a-middleware#manually",children:"mounted manually"})," with ",(0,n.jsx)(t.code,{children:"app.use(...)"})," in order to correctly set up the context for resolvers. Additionally, you have to pass ",(0,n.jsx)(t.code,{children:"useEnterWith: true"})," to the ",(0,n.jsx)(t.code,{children:"ClsMiddleware"})," options, because the context gets lost otherwise due to ",(0,n.jsx)(t.a,{href:"https://github.com/apollographql/apollo-server/issues/2042",children:"an issue with CLS and Apollo"})," (sadly, the same is true for ",(0,n.jsx)(t.a,{href:"https://github.com/Papooch/nestjs-cls/issues/1",children:"Mercurius"}),"). This method is functionally identical to just using the ",(0,n.jsx)(t.code,{children:"ClsGuard"}),"."]}),"\n",(0,n.jsxs)(t.p,{children:["Alternatively, you can use the ",(0,n.jsx)(t.code,{children:"ClsInterceptor"}),", which uses the safer ",(0,n.jsx)(t.code,{children:"AsyncLocalStorage#run"})," (thanks to ",(0,n.jsx)(t.a,{href:"https://github.com/Papooch/nestjs-cls/issues/5",children:"andreialecu"}),"), but remember that using it makes CLS unavailable in ",(0,n.jsx)(t.em,{children:"Guards"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"others",children:"Others"}),"\n",(0,n.jsxs)(t.p,{children:["Use the ",(0,n.jsx)(t.code,{children:"ClsGuard"})," or ",(0,n.jsx)(t.code,{children:"ClsInterceptor"})," to set up context with any other platform."]}),"\n",(0,n.jsx)(t.p,{children:"There are no explicit test for other transports, so I can't guarantee it will work with your platform of choice, but there's nothing that would indicate otherwise."}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsxs)(t.p,{children:["If you decide to try this package with a platform that is not listed here, ",(0,n.jsx)(t.strong,{children:"please let me know"})," so I can add the compatibility notice."]}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:"Below are listed transports with which it is confirmed to work:"}),"\n",(0,n.jsx)(t.h3,{id:"websockets",children:"Websockets"}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.em,{children:"Websocket Gateways"})," don't respect globally bound enhancers, therefore it is required to bind the ",(0,n.jsx)(t.code,{children:"ClsGuard"})," or ",(0,n.jsx)(t.code,{children:"ClsInterceptor"})," manually on the ",(0,n.jsx)(t.code,{children:"WebsocketGateway"}),". Special care is also needed for the ",(0,n.jsx)(t.code,{children:"handleConnection"})," method (See ",(0,n.jsx)(t.a,{href:"https://github.com/Papooch/nestjs-cls/issues/8",children:"#8"}),")"]})]})}function a(e={}){const{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},1670:(e,t,s)=>{s.d(t,{Z:()=>c,a:()=>l});var n=s(7378);const i={},r=n.createContext(i);function l(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:l(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b787da23.d6a197ad.js b/assets/js/b787da23.d6a197ad.js deleted file mode 100755 index 0b229f9..0000000 --- a/assets/js/b787da23.d6a197ad.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[126],{5318:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(7378);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=p(n),m=a,h=d["".concat(s,".").concat(m)]||d[m]||u[m]||i;return n?r.createElement(h,o(o({ref:t},c),{},{components:n})):r.createElement(h,o({ref:t},c))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:a,o[1]=l;for(var p=2;p<i;p++)o[p]=n[p];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},1708:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=n(5773),a=(n(7378),n(5318));const i={},o="Compatibility",l={unversionedId:"considerations/compatibility",id:"considerations/compatibility",title:"Compatibility",description:"The table below outlines the compatibility with some platforms:",source:"@site/docs/05_considerations/02_compatibility.md",sourceDirName:"05_considerations",slug:"/considerations/compatibility",permalink:"/nestjs-cls/considerations/compatibility",draft:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/05_considerations/02_compatibility.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Security",permalink:"/nestjs-cls/considerations/security"},next:{title:"Migration guide",permalink:"/nestjs-cls/migration-guide/"}},s={},p=[{value:"REST",id:"rest",level:2},{value:"GraphQL",id:"graphql",level:2},{value:"<code>@nestjs/graphql >= 10</code>",id:"nestjsgraphql--10",level:3},{value:"<code>@nestjs/graphql < 10</code>",id:"nestjsgraphql--10-1",level:3},{value:"Others",id:"others",level:2},{value:"Websockets",id:"websockets",level:3}],c={toc:p},d="wrapper";function u(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"compatibility"},"Compatibility"),(0,a.kt)("p",null,"The table below outlines the compatibility with some platforms:"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"center"}),(0,a.kt)("th",{parentName:"tr",align:"center"},"REST"),(0,a.kt)("th",{parentName:"tr",align:"center"},"GQL"),(0,a.kt)("th",{parentName:"tr",align:"center"},"WS",(0,a.kt)("a",{parentName:"th",href:"#websockets"},"*")),(0,a.kt)("th",{parentName:"tr",align:"center"},"Microservices"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"center"},(0,a.kt)("strong",{parentName:"td"},"ClsMiddleware")),(0,a.kt)("td",{parentName:"tr",align:"center"},"\u2714"),(0,a.kt)("td",{parentName:"tr",align:"center"},"\u2714"),(0,a.kt)("td",{parentName:"tr",align:"center"},"\u2716"),(0,a.kt)("td",{parentName:"tr",align:"center"},"\u2716")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"center"},(0,a.kt)("strong",{parentName:"td"},"ClsGuard")," ",(0,a.kt)("br",null),"(uses ",(0,a.kt)("inlineCode",{parentName:"td"},"enterWith"),")"),(0,a.kt)("td",{parentName:"tr",align:"center"},"\u2714"),(0,a.kt)("td",{parentName:"tr",align:"center"},"\u2714"),(0,a.kt)("td",{parentName:"tr",align:"center"},"\u2714"),(0,a.kt)("td",{parentName:"tr",align:"center"},"\u2714")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"center"},(0,a.kt)("strong",{parentName:"td"},"ClsInterceptor")," ",(0,a.kt)("br",null),"(context inaccessible",(0,a.kt)("br",null),"in ",(0,a.kt)("em",{parentName:"td"},"Guards")," and",(0,a.kt)("br",null)," in ",(0,a.kt)("em",{parentName:"td"},"Exception Filters"),")"),(0,a.kt)("td",{parentName:"tr",align:"center"},"\u2714"),(0,a.kt)("td",{parentName:"tr",align:"center"},"\u2714"),(0,a.kt)("td",{parentName:"tr",align:"center"},"\u2714"),(0,a.kt)("td",{parentName:"tr",align:"center"},"\u2714")))),(0,a.kt)("h2",{id:"rest"},"REST"),(0,a.kt)("p",null,"This package is compatible with Nest-supported REST controllers and the preferred way is to use the ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsMiddleware")," with the ",(0,a.kt)("inlineCode",{parentName:"p"},"mount")," option set to ",(0,a.kt)("inlineCode",{parentName:"p"},"true"),"."),(0,a.kt)("p",null,"Tested with:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"\u2714 Express"),(0,a.kt)("li",{parentName:"ul"},"\u2714 Fastify")),(0,a.kt)("p",null,"Known issues:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"In case API versioning is used, the automatic mounting of the ",(0,a.kt)("inlineCode",{parentName:"li"},"ClsMiddleware")," does not work and it needs to be mounted manually. See issue ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/Papooch/nestjs-cls/issues/67"},"#67")," for details."),(0,a.kt)("li",{parentName:"ul"},"Some existing Express middlewares may cause context loss, if that happens, mount the ",(0,a.kt)("inlineCode",{parentName:"li"},"ClsMiddleware")," manually ",(0,a.kt)("em",{parentName:"li"},"after")," those offending ones (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/Papooch/nestjs-cls/issues/50#issuecomment-1368162870"},"#50"),")")),(0,a.kt)("h2",{id:"graphql"},"GraphQL"),(0,a.kt)("p",null,"Using an interceptor or a guard may result in that enhancer triggering multiple times in case there are multiple queries in the GQL request."),(0,a.kt)("p",null,"Due to this, you should ensure that any operation on the CLS store within enhancers is ",(0,a.kt)("em",{parentName:"p"},"idempotent"),". This includes the ",(0,a.kt)("inlineCode",{parentName:"p"},"setup")," function. Therefore, it is advised to use the ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsService#setIfUndefined()")," method."),(0,a.kt)("p",null,"Tested with:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"\u2714 Apollo (Express)"),(0,a.kt)("li",{parentName:"ul"},"\u2714 Mercurius (Fastify)")),(0,a.kt)("h3",{id:"nestjsgraphql--10"},(0,a.kt)("inlineCode",{parentName:"h3"},"@nestjs/graphql >= 10")),(0,a.kt)("p",null,"Since v10, Nest's GraphQL resolvers are compatible with this package and the preferred way to initialize the CLS context is use the ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsMiddleware")," with the ",(0,a.kt)("inlineCode",{parentName:"p"},"mount")," option."),(0,a.kt)("h3",{id:"nestjsgraphql--10-1"},(0,a.kt)("inlineCode",{parentName:"h3"},"@nestjs/graphql < 10")),(0,a.kt)("p",null,"For older versions of graphql, the ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsMiddleware")," needs to be ",(0,a.kt)("a",{parentName:"p",href:"/nestjs-cls/setting-up-cls-context/using-a-middleware#manually"},"mounted manually")," with ",(0,a.kt)("inlineCode",{parentName:"p"},"app.use(...)")," in order to correctly set up the context for resolvers. Additionally, you have to pass ",(0,a.kt)("inlineCode",{parentName:"p"},"useEnterWith: true")," to the ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsMiddleware")," options, because the context gets lost otherwise due to ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/apollographql/apollo-server/issues/2042"},"an issue with CLS and Apollo")," (sadly, the same is true for ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/Papooch/nestjs-cls/issues/1"},"Mercurius"),"). This method is functionally identical to just using the ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsGuard"),"."),(0,a.kt)("p",null,"Alternatively, you can use the ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsInterceptor"),", which uses the safer ",(0,a.kt)("inlineCode",{parentName:"p"},"AsyncLocalStorage#run")," (thanks to ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/Papooch/nestjs-cls/issues/5"},"andreialecu"),"), but remember that using it makes CLS unavailable in ",(0,a.kt)("em",{parentName:"p"},"Guards"),"."),(0,a.kt)("h2",{id:"others"},"Others"),(0,a.kt)("p",null,"Use the ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsGuard")," or ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsInterceptor")," to set up context with any other platform."),(0,a.kt)("p",null,"There are no explicit test for other transports, so I can't guarantee it will work with your platform of choice, but there's nothing that would indicate otherwise."),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"If you decide to try this package with a platform that is not listed here, ",(0,a.kt)("strong",{parentName:"p"},"please let me know")," so I can add the compatibility notice.")),(0,a.kt)("p",null,"Below are listed transports with which it is confirmed to work:"),(0,a.kt)("h3",{id:"websockets"},"Websockets"),(0,a.kt)("p",null,(0,a.kt)("em",{parentName:"p"},"Websocket Gateways")," don't respect globally bound enhancers, therefore it is required to bind the ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsGuard")," or ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsInterceptor")," manually on the ",(0,a.kt)("inlineCode",{parentName:"p"},"WebsocketGateway"),". Special care is also needed for the ",(0,a.kt)("inlineCode",{parentName:"p"},"handleConnection")," method (See ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/Papooch/nestjs-cls/issues/8"},"#8"),")"))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/baa2f4d8.57f99fd1.js b/assets/js/baa2f4d8.57f99fd1.js new file mode 100644 index 0000000..2c452e3 --- /dev/null +++ b/assets/js/baa2f4d8.57f99fd1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[423],{8711:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>s,metadata:()=>d,toc:()=>a});var r=t(4246),o=t(1670);const s={},i="v2.x \u2192 v3.x",d={id:"migration-guide/v2x-v3x",title:"v2.x \u2192 v3.x",description:"Root registration method renamed",source:"@site/docs/10_migration-guide/02_v2x-v3x.md",sourceDirName:"10_migration-guide",slug:"/migration-guide/v2x-v3x",permalink:"/nestjs-cls/migration-guide/v2x-v3x",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/10_migration-guide/02_v2x-v3x.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"v3.x \u2192 v4.x",permalink:"/nestjs-cls/migration-guide/v3x-v4x"}},c={},a=[{value:"Root registration method renamed",id:"root-registration-method-renamed",level:2},{value:"Namespace support dropped",id:"namespace-support-dropped",level:2}];function l(e){const n={a:"a",br:"br",code:"code",em:"em",h1:"h1",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.h1,{id:"v2x--v3x",children:[(0,r.jsx)(n.code,{children:"v2.x"})," \u2192 ",(0,r.jsx)(n.code,{children:"v3.x"})]}),"\n",(0,r.jsx)(n.h2,{id:"root-registration-method-renamed",children:"Root registration method renamed"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["The root registration method was ",(0,r.jsx)(n.em,{children:"renamed"})," from ",(0,r.jsx)(n.code,{children:"register"})," (resp. ",(0,r.jsx)(n.code,{children:"registerAsync"}),") to ",(0,r.jsx)(n.code,{children:"forRoot"})," (resp. ",(0,r.jsx)(n.code,{children:"forRootAsync"}),") to align with the convention."]}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-diff",children:"// highlight-start\n- ClsModule.register({\n+ ClsModule.forRoot({\n// highlight-end\n middleware: { mount: true },\n }),\n"})}),"\n",(0,r.jsx)(n.h2,{id:"namespace-support-dropped",children:"Namespace support dropped"}),"\n",(0,r.jsxs)(n.p,{children:["Namespace injection support with ",(0,r.jsx)(n.code,{children:"forFeature"})," was dropped entirely, and now that method is used to register ",(0,r.jsx)(n.a,{href:"/nestjs-cls/features-and-use-cases/proxy-providers",children:"Proxy Providers"}),". If you still have a use case for namespaces, you can create a namespaced ",(0,r.jsx)(n.code,{children:"ClsService"})," and use a custom provider to inject it.",(0,r.jsx)(n.br,{}),"\n","Example:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"class MyContextService extends ClsService<MyStore> {}\nconst myContextService = new MyContextService(new AsyncLocalStorage());\n\n// [...]\nproviders: [\n {\n provide: MyContextService,\n useValue: myContextService,\n },\n];\n"})})]})}function u(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},1670:(e,n,t)=>{t.d(n,{Z:()=>d,a:()=>i});var r=t(7378);const o={},s=r.createContext(o);function i(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d459cca2.2e06c629.js b/assets/js/d459cca2.2e06c629.js deleted file mode 100755 index 328d6df..0000000 --- a/assets/js/d459cca2.2e06c629.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[47],{5318:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>g});var r=n(7378);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),u=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),p=u(n),m=a,g=p["".concat(l,".").concat(m)]||p[m]||d[m]||o;return n?r.createElement(g,s(s({ref:t},c),{},{components:n})):r.createElement(g,s({ref:t},c))}));function g(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:a,s[1]=i;for(var u=2;u<o;u++)s[u]=n[u];return r.createElement.apply(null,s)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},4614:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var r=n(5773),a=(n(7378),n(5318));const o={},s="Using a Guard",i={unversionedId:"setting-up-cls-context/using-a-guard",id:"setting-up-cls-context/using-a-guard",title:"Using a Guard",description:'The ClsGuard can be also used set up the CLS context. While it is not a "guard" per-se, it\'s the second best place to set up the CLS context, since after a middleware, it is the first piece of code that the request hits.',source:"@site/docs/02_setting-up-cls-context/02_using-a-guard.md",sourceDirName:"02_setting-up-cls-context",slug:"/setting-up-cls-context/using-a-guard",permalink:"/nestjs-cls/setting-up-cls-context/using-a-guard",draft:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/02_setting-up-cls-context/02_using-a-guard.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Using a Middleware",permalink:"/nestjs-cls/setting-up-cls-context/using-a-middleware"},next:{title:"Using an Interceptor",permalink:"/nestjs-cls/setting-up-cls-context/using-an-interceptor"}},l={},u=[{value:"Automatically",id:"automatically",level:2},{value:"Manually",id:"manually",level:2}],c={toc:u},p="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"using-a-guard"},"Using a Guard"),(0,a.kt)("p",null,"The ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsGuard"),' can be also used set up the CLS context. While it is not a "guard" per-se, it\'s the second best place to set up the CLS context, since after a middleware, it is the first piece of code that the request hits.'),(0,a.kt)("p",null,"To use it, pass its configuration to the ",(0,a.kt)("inlineCode",{parentName:"p"},"guard")," property to the ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsModule.forRoot()")," options:"),(0,a.kt)("h2",{id:"automatically"},"Automatically"),(0,a.kt)("p",null,"Use ",(0,a.kt)("inlineCode",{parentName:"p"},"mount: true")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-ts",metastring:'title="app.module.ts"',title:'"app.module.ts"'},"@Module({\n imports: [\n ClsModule.forRoot({\n // highlight-start\n guard: { mount: true },\n // highlight-end\n }),\n ],\n // ...\n})\nexport class AppModule {}\n")),(0,a.kt)("h2",{id:"manually"},"Manually"),(0,a.kt)("p",null,"If you need any other guards to use the ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsService"),", it's preferable to mount ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsGuard")," manually as the first guard in the root module:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-ts",metastring:'title="app.module.ts"',title:'"app.module.ts"'},"@Module({\n imports: [\n ClsModule.forRoot({\n // highlight-start\n guard: { mount: false }\n // highlight-end\n }),\n ]\n providers: [\n {\n // highlight-start\n provide: APP_GUARD,\n useClass: ClsGuard,\n // highlight-end\n },\n ],\n // ...\n})\nexport class AppModule {}\n")),(0,a.kt)("p",null,"or mount it directly on the Controller/Resolver with"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-ts"},"@UseGuards(ClsGuard);\n")),(0,a.kt)("admonition",{type:"caution"},(0,a.kt)("p",{parentName:"admonition"},(0,a.kt)("strong",{parentName:"p"},"Please note"),": since the ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsGuard")," uses the ",(0,a.kt)("inlineCode",{parentName:"p"},"AsyncLocalStorage#enterWith")," method, using the ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsGuard")," comes with some ",(0,a.kt)("a",{parentName:"p",href:"/nestjs-cls/considerations/security"},"security considerations"),"!")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d459cca2.51d3b722.js b/assets/js/d459cca2.51d3b722.js new file mode 100644 index 0000000..76a64e3 --- /dev/null +++ b/assets/js/d459cca2.51d3b722.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[47],{2041:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>a,toc:()=>l});var s=n(4246),i=n(1670);const o={},r="Using a Guard",a={id:"setting-up-cls-context/using-a-guard",title:"Using a Guard",description:'The ClsGuard can be also used set up the CLS context. While it is not a "guard" per-se, it\'s the second best place to set up the CLS context, since after a middleware, it is the first piece of code that the request hits.',source:"@site/docs/02_setting-up-cls-context/02_using-a-guard.md",sourceDirName:"02_setting-up-cls-context",slug:"/setting-up-cls-context/using-a-guard",permalink:"/nestjs-cls/setting-up-cls-context/using-a-guard",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/02_setting-up-cls-context/02_using-a-guard.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Using a Middleware",permalink:"/nestjs-cls/setting-up-cls-context/using-a-middleware"},next:{title:"Using an Interceptor",permalink:"/nestjs-cls/setting-up-cls-context/using-an-interceptor"}},c={},l=[{value:"Automatically",id:"automatically",level:2},{value:"Manually",id:"manually",level:2}];function d(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",strong:"strong",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"using-a-guard",children:"Using a Guard"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"ClsGuard"}),' can be also used set up the CLS context. While it is not a "guard" per-se, it\'s the second best place to set up the CLS context, since after a middleware, it is the first piece of code that the request hits.']}),"\n",(0,s.jsxs)(t.p,{children:["To use it, pass its configuration to the ",(0,s.jsx)(t.code,{children:"guard"})," property to the ",(0,s.jsx)(t.code,{children:"ClsModule.forRoot()"})," options:"]}),"\n",(0,s.jsx)(t.h2,{id:"automatically",children:"Automatically"}),"\n",(0,s.jsxs)(t.p,{children:["Use ",(0,s.jsx)(t.code,{children:"mount: true"})]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-ts",metastring:'title="app.module.ts"',children:"@Module({\n imports: [\n ClsModule.forRoot({\n // highlight-start\n guard: { mount: true },\n // highlight-end\n }),\n ],\n // ...\n})\nexport class AppModule {}\n"})}),"\n",(0,s.jsx)(t.h2,{id:"manually",children:"Manually"}),"\n",(0,s.jsxs)(t.p,{children:["If you need any other guards to use the ",(0,s.jsx)(t.code,{children:"ClsService"}),", it's preferable to mount ",(0,s.jsx)(t.code,{children:"ClsGuard"})," manually as the first guard in the root module:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-ts",metastring:'title="app.module.ts"',children:"@Module({\n imports: [\n ClsModule.forRoot({\n // highlight-start\n guard: { mount: false }\n // highlight-end\n }),\n ]\n providers: [\n {\n // highlight-start\n provide: APP_GUARD,\n useClass: ClsGuard,\n // highlight-end\n },\n ],\n // ...\n})\nexport class AppModule {}\n"})}),"\n",(0,s.jsx)(t.p,{children:"or mount it directly on the Controller/Resolver with"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-ts",children:"@UseGuards(ClsGuard);\n"})}),"\n",(0,s.jsx)(t.admonition,{type:"caution",children:(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Please note"}),": since the ",(0,s.jsx)(t.code,{children:"ClsGuard"})," uses the ",(0,s.jsx)(t.code,{children:"AsyncLocalStorage#enterWith"})," method, using the ",(0,s.jsx)(t.code,{children:"ClsGuard"})," comes with some ",(0,s.jsx)(t.a,{href:"/nestjs-cls/considerations/security",children:"security considerations"}),"!"]})})]})}function u(e={}){const{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},1670:(e,t,n)=>{n.d(t,{Z:()=>a,a:()=>r});var s=n(7378);const i={},o=s.createContext(i);function r(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/df604e10.30be9c5a.js b/assets/js/df604e10.30be9c5a.js deleted file mode 100755 index 7a6599e..0000000 --- a/assets/js/df604e10.30be9c5a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[775],{5318:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>d});var a=n(7378);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function p(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),m=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},s=function(e){var t=m(e.components);return a.createElement(l.Provider,{value:t},e.children)},c="mdxType",k={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},N=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,s=p(e,["components","mdxType","originalType","parentName"]),c=m(n),N=r,d=c["".concat(l,".").concat(N)]||c[N]||k[N]||i;return n?a.createElement(d,o(o({ref:t},s),{},{components:n})):a.createElement(d,o({ref:t},s))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=N;var p={};for(var l in t)hasOwnProperty.call(t,l)&&(p[l]=t[l]);p.originalType=e,p[c]="string"==typeof e?e:r,o[1]=p;for(var m=2;m<i;m++)o[m]=n[m];return a.createElement.apply(null,o)}return a.createElement.apply(null,n)}N.displayName="MDXCreateElement"},3250:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>k,frontMatter:()=>i,metadata:()=>p,toc:()=>m});var a=n(5773),r=(n(7378),n(5318));const i={},o="Service Interface",p={unversionedId:"api/service-interface",id:"api/service-interface",title:"Service Interface",description:"ClsService",source:"@site/docs/04_api/01_service-interface.md",sourceDirName:"04_api",slug:"/api/service-interface",permalink:"/nestjs-cls/api/service-interface",draft:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/04_api/01_service-interface.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"API",permalink:"/nestjs-cls/api/"},next:{title:"Module Options",permalink:"/nestjs-cls/api/module-options"}},l={},m=[{value:"ClsService",id:"clsservice",level:2},{value:"ClsContextOptions",id:"clscontextoptions",level:2}],s={toc:m},c="wrapper";function k(e){let{components:t,...n}=e;return(0,r.kt)(c,(0,a.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"service-interface"},"Service Interface"),(0,r.kt)("h2",{id:"clsservice"},"ClsService"),(0,r.kt)("p",null,"The injectable ",(0,r.kt)("inlineCode",{parentName:"p"},"ClsService")," provides the following API to manipulate the cls context:"),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"S")," type parameter is used as the type of custom ",(0,r.kt)("inlineCode",{parentName:"p"},"ClsStore"),"."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"get"))),(0,r.kt)("inlineCode",{parentName:"p"},"(): S"),(0,r.kt)("br",{parentName:"p"}),"\n","Get the entire CLS context.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"get"))),(0,r.kt)("inlineCode",{parentName:"p"},"(key?: keyof S): S[key]"),(0,r.kt)("br",{parentName:"p"}),"\n","Retrieve a value from the CLS context by key.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"getId"))),(0,r.kt)("inlineCode",{parentName:"p"},"(): string;"),(0,r.kt)("br",{parentName:"p"}),"\n","Retrieve the request ID (a shorthand for ",(0,r.kt)("inlineCode",{parentName:"p"},"cls.get(CLS_ID)"),")")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"has"))),(0,r.kt)("inlineCode",{parentName:"p"},"(key: keyof S): boolean"),(0,r.kt)("br",{parentName:"p"}),"\n","Check if a key is in the CLS context.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"set"))),(0,r.kt)("inlineCode",{parentName:"p"},"(key: keyof S, value: S[key]): void"),(0,r.kt)("br",{parentName:"p"}),"\n","Set a value on the CLS context.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"setIfUndefined"))),(0,r.kt)("inlineCode",{parentName:"p"},"(key: keyof S, value: S[key]): void"),(0,r.kt)("br",{parentName:"p"}),"\n","Set a value on the CLS context ",(0,r.kt)("em",{parentName:"p"},"only")," if it hasn't been already set. Useful for ensuring idempotence if you have multiple entry points.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"run"))),(0,r.kt)("inlineCode",{parentName:"p"},"(callback: () => T): T"),(0,r.kt)("br",{parentName:"p"}),"\n",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"run"))),(0,r.kt)("inlineCode",{parentName:"p"},"(options: ClsContextOptions, callback: () => T): T;"),(0,r.kt)("br",{parentName:"p"}),"\n","Run the callback in a shared CLS context. Optionally takes an ",(0,r.kt)("a",{parentName:"p",href:"#clscontextoptions"},"options object")," as the first parameter.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"runWith"))),(0,r.kt)("inlineCode",{parentName:"p"},"(store: S, callback: () => T): T"),(0,r.kt)("br",{parentName:"p"}),"\n","Run the callback in a new CLS context (while supplying the default store).")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"enter"))),(0,r.kt)("inlineCode",{parentName:"p"},"(): void;"),(0,r.kt)("br",{parentName:"p"}),"\n",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"enter"))),(0,r.kt)("inlineCode",{parentName:"p"},"(options: ClsContextOptions): void"),(0,r.kt)("br",{parentName:"p"}),"\n","Run any following code in a shared CLS context. Optionally takes an ",(0,r.kt)("a",{parentName:"p",href:"#clscontextoptions"},"options object")," as the first parameter.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"enterWith"))),(0,r.kt)("inlineCode",{parentName:"p"},"(store: S): void"),(0,r.kt)("br",{parentName:"p"}),"\n","Run any following code in a new CLS context (while supplying the default store).")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"exit"))),(0,r.kt)("inlineCode",{parentName:"p"},"(callback: () => T): T"),(0,r.kt)("br",{parentName:"p"}),"\n","Run the callback ",(0,r.kt)("em",{parentName:"p"},"without")," access to a shared CLS context.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"isActive"))),(0,r.kt)("inlineCode",{parentName:"p"},"(): boolean"),(0,r.kt)("br",{parentName:"p"}),"\n","Whether the current code runs within an active CLS context.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"resolveProxyProviders"))),(0,r.kt)("inlineCode",{parentName:"p"},"(): Promise<void>"),(0,r.kt)("br",{parentName:"p"}),"\n","Manually trigger resolution of Proxy Providers."))),(0,r.kt)("h2",{id:"clscontextoptions"},"ClsContextOptions"),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"run")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"enter")," methods can take an additional options object with the following settings:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("em",{parentName:"strong"},(0,r.kt)("inlineCode",{parentName:"em"},"ifNested?:")))," ",(0,r.kt)("inlineCode",{parentName:"li"},"'override' | 'inherit' | 'reuse'"),(0,r.kt)("br",{parentName:"li"}),"Sets the behavior of nested CLS context creation in case the method is invoked in an existing context. It has no effect if no parent context exist.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"override")," (default) - Run the callback with an new empty context.",(0,r.kt)("br",{parentName:"li"}),"No values from the parent context will be accessible within the wrapped code."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"inherit")," - Run the callback with a shallow copy of the parent context.",(0,r.kt)("br",{parentName:"li"}),"Re-assignments of top-level properties will not be reflected in the parent context. However, modifications of existing properties ",(0,r.kt)("em",{parentName:"li"},"will")," be reflected."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"reuse")," - Reuse existing context without creating a new one. All modifications to the existing context will be reflected.")))))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/df604e10.c9ad986f.js b/assets/js/df604e10.c9ad986f.js new file mode 100644 index 0000000..33aa3cd --- /dev/null +++ b/assets/js/df604e10.c9ad986f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[775],{1763:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>t,default:()=>x,frontMatter:()=>r,metadata:()=>l,toc:()=>d});var i=s(4246),c=s(1670);const r={},t="Service Interface",l={id:"api/service-interface",title:"Service Interface",description:"ClsService",source:"@site/docs/04_api/01_service-interface.md",sourceDirName:"04_api",slug:"/api/service-interface",permalink:"/nestjs-cls/api/service-interface",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/04_api/01_service-interface.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"API",permalink:"/nestjs-cls/api/"},next:{title:"Module Options",permalink:"/nestjs-cls/api/module-options"}},o={},d=[{value:"ClsService",id:"clsservice",level:2},{value:"ClsContextOptions",id:"clscontextoptions",level:2}];function h(e){const n={a:"a",br:"br",code:"code",em:"em",h1:"h1",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,c.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"service-interface",children:"Service Interface"}),"\n",(0,i.jsx)(n.h2,{id:"clsservice",children:"ClsService"}),"\n",(0,i.jsxs)(n.p,{children:["The injectable ",(0,i.jsx)(n.code,{children:"ClsService"})," provides the following API to manipulate the cls context:"]}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"S"})," type parameter is used as the type of custom ",(0,i.jsx)(n.code,{children:"ClsStore"}),"."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"get"})})}),(0,i.jsx)(n.code,{children:"(): S"}),(0,i.jsx)(n.br,{}),"\n","Get the entire CLS context."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"get"})})}),(0,i.jsx)(n.code,{children:"(key?: keyof S): S[key]"}),(0,i.jsx)(n.br,{}),"\n","Retrieve a value from the CLS context by key."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"getId"})})}),(0,i.jsx)(n.code,{children:"(): string;"}),(0,i.jsx)(n.br,{}),"\n","Retrieve the request ID (a shorthand for ",(0,i.jsx)(n.code,{children:"cls.get(CLS_ID)"}),")"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"has"})})}),(0,i.jsx)(n.code,{children:"(key: keyof S): boolean"}),(0,i.jsx)(n.br,{}),"\n","Check if a key is in the CLS context."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"set"})})}),(0,i.jsx)(n.code,{children:"(key: keyof S, value: S[key]): void"}),(0,i.jsx)(n.br,{}),"\n","Set a value on the CLS context."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"setIfUndefined"})})}),(0,i.jsx)(n.code,{children:"(key: keyof S, value: S[key]): void"}),(0,i.jsx)(n.br,{}),"\n","Set a value on the CLS context ",(0,i.jsx)(n.em,{children:"only"})," if it hasn't been already set. Useful for ensuring idempotence if you have multiple entry points."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"run"})})}),(0,i.jsx)(n.code,{children:"(callback: () => T): T"}),(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"run"})})}),(0,i.jsx)(n.code,{children:"(options: ClsContextOptions, callback: () => T): T;"}),(0,i.jsx)(n.br,{}),"\n","Run the callback in a shared CLS context. Optionally takes an ",(0,i.jsx)(n.a,{href:"#clscontextoptions",children:"options object"})," as the first parameter."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"runWith"})})}),(0,i.jsx)(n.code,{children:"(store: S, callback: () => T): T"}),(0,i.jsx)(n.br,{}),"\n","Run the callback in a new CLS context (while supplying the default store)."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"enter"})})}),(0,i.jsx)(n.code,{children:"(): void;"}),(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"enter"})})}),(0,i.jsx)(n.code,{children:"(options: ClsContextOptions): void"}),(0,i.jsx)(n.br,{}),"\n","Run any following code in a shared CLS context. Optionally takes an ",(0,i.jsx)(n.a,{href:"#clscontextoptions",children:"options object"})," as the first parameter."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"enterWith"})})}),(0,i.jsx)(n.code,{children:"(store: S): void"}),(0,i.jsx)(n.br,{}),"\n","Run any following code in a new CLS context (while supplying the default store)."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"exit"})})}),(0,i.jsx)(n.code,{children:"(callback: () => T): T"}),(0,i.jsx)(n.br,{}),"\n","Run the callback ",(0,i.jsx)(n.em,{children:"without"})," access to a shared CLS context."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"isActive"})})}),(0,i.jsx)(n.code,{children:"(): boolean"}),(0,i.jsx)(n.br,{}),"\n","Whether the current code runs within an active CLS context."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"resolveProxyProviders"})})}),(0,i.jsx)(n.code,{children:"(): Promise<void>"}),(0,i.jsx)(n.br,{}),"\n","Manually trigger resolution of Proxy Providers."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"initializePlugins"})})}),(0,i.jsx)(n.code,{children:"(): Promise<void>"}),(0,i.jsx)(n.br,{}),"\n","Manually trigger ",(0,i.jsx)(n.code,{children:"onClsInit"})," hooks of registered plugins."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"clscontextoptions",children:"ClsContextOptions"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"run"})," and ",(0,i.jsx)(n.code,{children:"enter"})," methods can take an additional options object with the following settings:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"ifNested?:"})})}),(0,i.jsx)(n.code,{children:"'inherit' | 'reuse' | 'override'"}),(0,i.jsx)(n.br,{}),"\n","Sets the behavior of nested CLS context creation in case the method is invoked in an existing context. It has no effect if no parent context exist.","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"inherit"})," (default) - Run the callback with a shallow copy of the parent context.",(0,i.jsx)(n.br,{}),"\n","Re-assignments of top-level properties will not be reflected in the parent context. However, modifications of existing properties ",(0,i.jsx)(n.em,{children:"will"})," be reflected."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"reuse"})," - Reuse existing context without creating a new one. All modifications to the\nexisting context will be reflected."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"override"})," - Run the callback with an new empty context.",(0,i.jsx)(n.br,{}),"\n","No values from the parent context will be accessible within the wrapped code."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"::: Note"}),"\n",(0,i.jsxs)(n.p,{children:["Until ",(0,i.jsx)(n.code,{children:"v4"}),", the default behavior was ",(0,i.jsx)(n.code,{children:"override"}),". This was changed to ",(0,i.jsx)(n.code,{children:"inherit"})," since ",(0,i.jsx)(n.code,{children:"v4"})," to make the behavior more intuitive."]}),"\n",(0,i.jsx)(n.p,{children:":::"})]})}function x(e={}){const{wrapper:n}={...(0,c.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},1670:(e,n,s)=>{s.d(n,{Z:()=>l,a:()=>t});var i=s(7378);const c={},r=i.createContext(c);function t(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:t(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e2112352.413a0485.js b/assets/js/e2112352.413a0485.js new file mode 100644 index 0000000..ce331c7 --- /dev/null +++ b/assets/js/e2112352.413a0485.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[826],{1267:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>r,contentTitle:()=>i,default:()=>p,frontMatter:()=>a,metadata:()=>c,toc:()=>o});var t=s(4246),l=s(1670);const a={},i="Available Plugins",c={id:"plugins/available-plugins/index",title:"Available Plugins",description:"This section lists all plugins that are maintained by the author of nestjs-cls. They are all published under the @nestjs-cls scope and are kept up to date with any changes to the library.",source:"@site/docs/06_plugins/01_available-plugins/index.md",sourceDirName:"06_plugins/01_available-plugins",slug:"/plugins/available-plugins/",permalink:"/nestjs-cls/plugins/available-plugins/",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/06_plugins/01_available-plugins/index.md",tags:[],version:"current",frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Plugins",permalink:"/nestjs-cls/plugins/"},next:{title:"@nestjs-cls/transactional",permalink:"/nestjs-cls/plugins/available-plugins/transactional/"}},r={},o=[];function u(e){const n={a:"a",code:"code",h1:"h1",li:"li",p:"p",ul:"ul",...(0,l.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"available-plugins",children:"Available Plugins"}),"\n",(0,t.jsxs)(n.p,{children:["This section lists all plugins that are maintained by the author of ",(0,t.jsx)(n.code,{children:"nestjs-cls"}),". They are all published under the ",(0,t.jsx)(n.code,{children:"@nestjs-cls"})," scope and are kept up to date with any changes to the library."]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"/nestjs-cls/plugins/available-plugins/transactional/",children:"Transactional"})}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,l.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(u,{...e})}):u(e)}},1670:(e,n,s)=>{s.d(n,{Z:()=>c,a:()=>i});var t=s(7378);const l={},a=t.createContext(l);function i(e){const n=t.useContext(a);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:i(e.components),t.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e83b8e0a.c7551c54.js b/assets/js/e83b8e0a.c7551c54.js new file mode 100644 index 0000000..1c9dd90 --- /dev/null +++ b/assets/js/e83b8e0a.c7551c54.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[446],{5834:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>r,contentTitle:()=>a,default:()=>d,frontMatter:()=>t,metadata:()=>o,toc:()=>c});var i=s(4246),l=s(1670);const t={},a="Plugins",o={id:"plugins/index",title:"Plugins",description:"Since v4.0",source:"@site/docs/06_plugins/index.md",sourceDirName:"06_plugins",slug:"/plugins/",permalink:"/nestjs-cls/plugins/",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/06_plugins/index.md",tags:[],version:"current",frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Compatibility",permalink:"/nestjs-cls/considerations/compatibility"},next:{title:"Available Plugins",permalink:"/nestjs-cls/plugins/available-plugins/"}},r={},c=[{value:"Usage",id:"usage",level:2},{value:"Available plugins",id:"available-plugins",level:2},{value:"Creating a plugin",id:"creating-a-plugin",level:2}];function u(e){const n={a:"a",code:"code",em:"em",h1:"h1",h2:"h2",p:"p",pre:"pre",strong:"strong",...(0,l.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"plugins",children:"Plugins"}),"\n",(0,i.jsx)("small",{children:(0,i.jsxs)(n.strong,{children:["Since ",(0,i.jsx)(n.code,{children:"v4.0"})]})}),"\n",(0,i.jsx)(n.p,{children:"Plugins are a way to enable pre-built integrations with other libraries and frameworks. They are a convenient way to enable many real-world use-cases without having to write much boilerplate code."}),"\n",(0,i.jsxs)(n.p,{children:["Plugins can hook into the lifecycle of the ",(0,i.jsx)(n.code,{children:"ClsModule"})," and the CLS context setup of the ",(0,i.jsx)(n.code,{children:"Cls-"})," initializers. They can also provide their own ",(0,i.jsx)(n.em,{children:"Proxy-"})," and regular providers to be used in the application."]}),"\n",(0,i.jsx)(n.h2,{id:"usage",children:"Usage"}),"\n",(0,i.jsxs)(n.p,{children:["To use a plugin, pass it to the ",(0,i.jsx)(n.code,{children:"forRoot"})," method of the ",(0,i.jsx)(n.code,{children:"ClsModule"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-ts",children:"ClsModule.forRoot({\n // highlight-start\n plugins: [new MyPlugin()],\n // highlight-end\n});\n"})}),"\n",(0,i.jsx)(n.h2,{id:"available-plugins",children:"Available plugins"}),"\n",(0,i.jsxs)(n.p,{children:["For a list of plugins managed by the author of ",(0,i.jsx)(n.code,{children:"nestjs-cls"}),", see the ",(0,i.jsx)(n.a,{href:"/nestjs-cls/plugins/available-plugins/",children:"Available Plugins"})," page."]}),"\n",(0,i.jsx)(n.h2,{id:"creating-a-plugin",children:"Creating a plugin"}),"\n",(0,i.jsxs)(n.p,{children:["To create a custom plugin, see the ",(0,i.jsx)(n.a,{href:"/nestjs-cls/plugins/plugin-api",children:"Plugin API"})," reference."]})]})}function d(e={}){const{wrapper:n}={...(0,l.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},1670:(e,n,s)=>{s.d(n,{Z:()=>o,a:()=>a});var i=s(7378);const l={},t=i.createContext(l);function a(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:a(e.components),i.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/eb9c95da.97b9461c.js b/assets/js/eb9c95da.97b9461c.js new file mode 100644 index 0000000..7adf786 --- /dev/null +++ b/assets/js/eb9c95da.97b9461c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[715],{8258:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>h,frontMatter:()=>r,metadata:()=>i,toc:()=>d});var s=n(4246),o=n(1670);const r={},c="Using a Decorator",i={id:"setting-up-cls-context/using-a-decorator",title:"Using a Decorator",description:"The @UseCls() decorator can be used at a method level to declaratively wrap the method with a cls.run() call. This method should only be used outside of the context of a web request.",source:"@site/docs/02_setting-up-cls-context/04_using-a-decorator.md",sourceDirName:"02_setting-up-cls-context",slug:"/setting-up-cls-context/using-a-decorator",permalink:"/nestjs-cls/setting-up-cls-context/using-a-decorator",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/02_setting-up-cls-context/04_using-a-decorator.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Using an Interceptor",permalink:"/nestjs-cls/setting-up-cls-context/using-an-interceptor"},next:{title:"Using the ClsService Instance",permalink:"/nestjs-cls/setting-up-cls-context/using_cls_run"}},a={},d=[];function l(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",p:"p",pre:"pre",...(0,o.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"using-a-decorator",children:"Using a Decorator"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"@UseCls()"})," decorator can be used at a method level to declaratively wrap the method with a ",(0,s.jsx)(t.code,{children:"cls.run()"})," call. This method should only be used ",(0,s.jsx)(t.a,{href:"/nestjs-cls/features-and-use-cases/usage-outside-of-web-request",children:"outside of the context of a web request"}),"."]}),"\n",(0,s.jsx)(t.admonition,{type:"info",children:(0,s.jsxs)(t.p,{children:["Please keep in mind, that since the CLS context initialization ",(0,s.jsx)(t.em,{children:"can"})," be async, the ",(0,s.jsx)(t.code,{children:"@UseCls()"})," decorator can ",(0,s.jsx)(t.em,{children:"only"})," be used on ",(0,s.jsx)(t.em,{children:"async"})," function (those that return a ",(0,s.jsx)(t.code,{children:"Promise"}),")."]})}),"\n",(0,s.jsxs)(t.p,{children:["Since there is no request, the ",(0,s.jsx)(t.code,{children:"setup"})," function will not receive a ",(0,s.jsx)(t.code,{children:"Request"})," object. Instead, it will receive the ",(0,s.jsx)(t.code,{children:"this"})," context of the class instance (this also applies to the ",(0,s.jsx)(t.code,{children:"idGenerator"}),"), the ",(0,s.jsx)(t.code,{children:"ClsService"})," reference and all the arguments passed to the decorated method."]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-ts",children:"@Injectable()\nclass SomeService {\n constructor(\n private readonly cls: ClsService,\n private readonly otherService: OtherService,\n ) {}\n\n @UseCls<[string]>({\n generateId: true,\n // highlight-start\n idGenerator: function (this: SomeService) {\n return this.generateId();\n },\n setup: function (this: SomeService, cls: ClsService, value: string) {\n cls.set('some-key', 'some-value');\n },\n // highlight-end\n })\n async startContextualWorkflow(value: string) {\n return this.otherService.doSomething(value);\n }\n\n private generateId() {\n return Math.random();\n }\n}\n"})}),"\n",(0,s.jsx)(t.admonition,{type:"warning",children:(0,s.jsxs)(t.p,{children:["It is important to define the ",(0,s.jsx)(t.code,{children:"setup"})," and ",(0,s.jsx)(t.code,{children:"idGenerator"})," functions as ",(0,s.jsx)(t.code,{children:"function"}),"s, not arrow functions, so that the ",(0,s.jsx)(t.code,{children:"this"})," context is properly bound."]})})]})}function h(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},1670:(e,t,n)=>{n.d(t,{Z:()=>i,a:()=>c});var s=n(7378);const o={},r=s.createContext(o);function c(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:c(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/eca1a52a.c89c6ab1.js b/assets/js/eca1a52a.c89c6ab1.js deleted file mode 100755 index 3da4bbe..0000000 --- a/assets/js/eca1a52a.c89c6ab1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[873],{5318:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var r=n(7378);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=c(n),h=i,m=u["".concat(l,".").concat(h)]||u[h]||d[h]||o;return n?r.createElement(m,a(a({ref:t},p),{},{components:n})):r.createElement(m,a({ref:t},p))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:i,a[1]=s;for(var c=2;c<o;c++)a[c]=n[c];return r.createElement.apply(null,a)}return r.createElement.apply(null,n)}h.displayName="MDXCreateElement"},5755:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var r=n(5773),i=(n(7378),n(5318));const o={},a="Quick Start",s={unversionedId:"introduction/quick-start",id:"introduction/quick-start",title:"Quick Start",description:"Background",source:"@site/docs/01_introduction/02_quick-start.md",sourceDirName:"01_introduction",slug:"/introduction/quick-start",permalink:"/nestjs-cls/introduction/quick-start",draft:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/01_introduction/02_quick-start.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Installation",permalink:"/nestjs-cls/introduction/installation"},next:{title:"How it works",permalink:"/nestjs-cls/introduction/how-it-works"}},l={},c=[{value:"Background",id:"background",level:2},{value:"Example",id:"example",level:2},{value:"Register the ClsModule",id:"register-the-clsmodule",level:3},{value:"Create IP-address interceptor",id:"create-ip-address-interceptor",level:3},{value:"Mount interceptor to controller",id:"mount-interceptor-to-controller",level:3},{value:"Access CLS context in service",id:"access-cls-context-in-service",level:3},{value:"That's it",id:"thats-it",level:3}],p={toc:c},u="wrapper";function d(e){let{components:t,...n}=e;return(0,i.kt)(u,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"quick-start"},"Quick Start"),(0,i.kt)("h2",{id:"background"},"Background"),(0,i.kt)("p",null,"This library exposes a dynamic ",(0,i.kt)("inlineCode",{parentName:"p"},"ClsModule")," which exposes the injectable ",(0,i.kt)("inlineCode",{parentName:"p"},"ClsService")," and provides means to setting up and interacting with the CLS context."),(0,i.kt)("p",null,"The CLS context is a storage that wraps around a chain of function calls. It can be accessed anywhere during the lifecycle of such chain via the ",(0,i.kt)("inlineCode",{parentName:"p"},"ClsService"),"."),(0,i.kt)("h2",{id:"example"},"Example"),(0,i.kt)("p",null,"Below is an example of using this library to store the client's IP address in an interceptor and retrieving it in a service without explicitly passing it along."),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"This example assumes you are using HTTP and therefore can use middleware. For usage with non-HTTP transports, see ",(0,i.kt)("a",{parentName:"p",href:"/nestjs-cls/setting-up-cls-context/"},"Setting up CLS context"),".")),(0,i.kt)("h3",{id:"register-the-clsmodule"},"Register the ClsModule"),(0,i.kt)("p",null,"Register the ",(0,i.kt)("inlineCode",{parentName:"p"},"ClsModule")," and automatically mount the ",(0,i.kt)("inlineCode",{parentName:"p"},"ClsMiddleware")," which wraps the entire request in a shared CLS context on all routes."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-ts",metastring:'title="app.module.ts"',title:'"app.module.ts"'},"@Module({\n imports: [\n // highlight-start\n ClsModule.forRoot({\n global: true,\n middleware: { mount: true },\n }),\n // highlight-end\n ],\n providers: [AppService],\n controllers: [AppController],\n})\nexport class AppModule {}\n")),(0,i.kt)("h3",{id:"create-ip-address-interceptor"},"Create IP-address interceptor"),(0,i.kt)("p",null,"Create an interceptor that"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"injects the ",(0,i.kt)("inlineCode",{parentName:"li"},"ClsService")," to get access to the current shared CLS context,"),(0,i.kt)("li",{parentName:"ul"},"extract the users's IP address from the request and stores it into the CLS context,")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-ts",metastring:'title="user-ip.interceptor.ts"',title:'"user-ip.interceptor.ts"'},"@Injectable()\nexport class UserIpInterceptor implements NestInterceptor {\n // highlight-start\n constructor(private readonly cls: ClsService) {}\n // highlight-end\n\n intercept(context: ExecutionContext, next: CallHandler): Observable<any> {\n const request = context.switchToHttp().getRequest();\n const userIp = request.connection.remoteAddress;\n // highlight-start\n this.cls.set('ip', userIp);\n // highlight-end\n return next.handle();\n }\n}\n")),(0,i.kt)("h3",{id:"mount-interceptor-to-controller"},"Mount interceptor to controller"),(0,i.kt)("p",null,"By mounting the ",(0,i.kt)("inlineCode",{parentName:"p"},"UserIpInterceptor")," on the controller, it gets access to the same shared CLS context that the ",(0,i.kt)("inlineCode",{parentName:"p"},"ClsMiddleware")," set up."),(0,i.kt)("p",null,"Of course, we could also bind the interceptor globally with ",(0,i.kt)("inlineCode",{parentName:"p"},"APP_INTERCEPTOR"),"."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-ts",metastring:'title="app.controller.ts"',title:'"app.controller.ts"'},"// highlight-start\n@UseInterceptors(UserIpInterceptor)\n// highlight-end\n@Injectable()\nexport class AppController {\n constructor(private readonly appService: AppService) {}\n\n @Get('/hello')\n hello() {\n return this.appService.sayHello();\n }\n}\n")),(0,i.kt)("h3",{id:"access-cls-context-in-service"},"Access CLS context in service"),(0,i.kt)("p",null,"In the ",(0,i.kt)("inlineCode",{parentName:"p"},"AppService"),", we can retrieve the user's IP from the CLS context without explicitly passing in anything, and without making the ",(0,i.kt)("inlineCode",{parentName:"p"},"AppService")," request-scoped!"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-ts",metastring:'title="app.service.ts"',title:'"app.service.ts"'},"@Injectable()\nexport class AppService {\n // highlight-start\n constructor(private readonly cls: ClsService) {}\n // highlight-end\n\n sayHello() {\n // highlight-start\n const userIp = this.cls.get('ip');\n // highlight-end\n return 'Hello ' + userIp + '!';\n }\n}\n")),(0,i.kt)("h3",{id:"thats-it"},"That's it"),(0,i.kt)("p",null,"This is pretty much all there is to it. This library further provides more quality-of-life features, so read on!"),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"If your use-case is really simple, you can instead consider ",(0,i.kt)("a",{parentName:"p",href:"https://docs.nestjs.com/recipes/async-local-storage#custom-implementation"},"creating a custom implementation with ",(0,i.kt)("inlineCode",{parentName:"a"},"AsyncLocalStorage")),". Limiting the number of dependencies in your application is always a good idea!")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/eca1a52a.cbfb27da.js b/assets/js/eca1a52a.cbfb27da.js new file mode 100644 index 0000000..3cda456 --- /dev/null +++ b/assets/js/eca1a52a.cbfb27da.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[873],{5638:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>c,default:()=>h,frontMatter:()=>i,metadata:()=>o,toc:()=>a});var s=n(4246),r=n(1670);const i={},c="Quick Start",o={id:"introduction/quick-start",title:"Quick Start",description:"Background",source:"@site/docs/01_introduction/02_quick-start.md",sourceDirName:"01_introduction",slug:"/introduction/quick-start",permalink:"/nestjs-cls/introduction/quick-start",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/01_introduction/02_quick-start.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Installation",permalink:"/nestjs-cls/introduction/installation"},next:{title:"How it works",permalink:"/nestjs-cls/introduction/how-it-works"}},l={},a=[{value:"Background",id:"background",level:2},{value:"Example",id:"example",level:2},{value:"Register the ClsModule",id:"register-the-clsmodule",level:3},{value:"Create IP-address interceptor",id:"create-ip-address-interceptor",level:3},{value:"Mount interceptor to controller",id:"mount-interceptor-to-controller",level:3},{value:"Access CLS context in service",id:"access-cls-context-in-service",level:3},{value:"That's it",id:"thats-it",level:3}];function d(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"quick-start",children:"Quick Start"}),"\n",(0,s.jsx)(t.h2,{id:"background",children:"Background"}),"\n",(0,s.jsxs)(t.p,{children:["This library exposes a dynamic ",(0,s.jsx)(t.code,{children:"ClsModule"})," which exposes the injectable ",(0,s.jsx)(t.code,{children:"ClsService"})," and provides means to setting up and interacting with the CLS context."]}),"\n",(0,s.jsxs)(t.p,{children:["The CLS context is a storage that wraps around a chain of function calls. It can be accessed anywhere during the lifecycle of such chain via the ",(0,s.jsx)(t.code,{children:"ClsService"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"example",children:"Example"}),"\n",(0,s.jsx)(t.p,{children:"Below is an example of using this library to store the client's IP address in an interceptor and retrieving it in a service without explicitly passing it along."}),"\n",(0,s.jsx)(t.admonition,{type:"note",children:(0,s.jsxs)(t.p,{children:["This example assumes you are using HTTP and therefore can use middleware. For usage with non-HTTP transports, see ",(0,s.jsx)(t.a,{href:"/nestjs-cls/setting-up-cls-context/",children:"Setting up CLS context"}),"."]})}),"\n",(0,s.jsx)(t.h3,{id:"register-the-clsmodule",children:"Register the ClsModule"}),"\n",(0,s.jsxs)(t.p,{children:["Register the ",(0,s.jsx)(t.code,{children:"ClsModule"})," and automatically mount the ",(0,s.jsx)(t.code,{children:"ClsMiddleware"})," which wraps the entire request in a shared CLS context on all routes."]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-ts",metastring:'title="app.module.ts"',children:"@Module({\n imports: [\n // highlight-start\n ClsModule.forRoot({\n global: true,\n middleware: { mount: true },\n }),\n // highlight-end\n ],\n providers: [AppService],\n controllers: [AppController],\n})\nexport class AppModule {}\n"})}),"\n",(0,s.jsx)(t.h3,{id:"create-ip-address-interceptor",children:"Create IP-address interceptor"}),"\n",(0,s.jsx)(t.p,{children:"Create an interceptor that"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["injects the ",(0,s.jsx)(t.code,{children:"ClsService"})," to get access to the current shared CLS context,"]}),"\n",(0,s.jsx)(t.li,{children:"extract the users's IP address from the request and stores it into the CLS context,"}),"\n"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-ts",metastring:'title="user-ip.interceptor.ts"',children:"@Injectable()\nexport class UserIpInterceptor implements NestInterceptor {\n // highlight-start\n constructor(private readonly cls: ClsService) {}\n // highlight-end\n\n intercept(context: ExecutionContext, next: CallHandler): Observable<any> {\n const request = context.switchToHttp().getRequest();\n const userIp = request.connection.remoteAddress;\n // highlight-start\n this.cls.set('ip', userIp);\n // highlight-end\n return next.handle();\n }\n}\n"})}),"\n",(0,s.jsx)(t.h3,{id:"mount-interceptor-to-controller",children:"Mount interceptor to controller"}),"\n",(0,s.jsxs)(t.p,{children:["By mounting the ",(0,s.jsx)(t.code,{children:"UserIpInterceptor"})," on the controller, it gets access to the same shared CLS context that the ",(0,s.jsx)(t.code,{children:"ClsMiddleware"})," set up."]}),"\n",(0,s.jsxs)(t.p,{children:["Of course, we could also bind the interceptor globally with ",(0,s.jsx)(t.code,{children:"APP_INTERCEPTOR"}),"."]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-ts",metastring:'title="app.controller.ts"',children:"// highlight-start\n@UseInterceptors(UserIpInterceptor)\n// highlight-end\n@Injectable()\nexport class AppController {\n constructor(private readonly appService: AppService) {}\n\n @Get('/hello')\n hello() {\n return this.appService.sayHello();\n }\n}\n"})}),"\n",(0,s.jsx)(t.h3,{id:"access-cls-context-in-service",children:"Access CLS context in service"}),"\n",(0,s.jsxs)(t.p,{children:["In the ",(0,s.jsx)(t.code,{children:"AppService"}),", we can retrieve the user's IP from the CLS context without explicitly passing in anything, and without making the ",(0,s.jsx)(t.code,{children:"AppService"})," request-scoped!"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-ts",metastring:'title="app.service.ts"',children:"@Injectable()\nexport class AppService {\n // highlight-start\n constructor(private readonly cls: ClsService) {}\n // highlight-end\n\n sayHello() {\n // highlight-start\n const userIp = this.cls.get('ip');\n // highlight-end\n return 'Hello ' + userIp + '!';\n }\n}\n"})}),"\n",(0,s.jsx)(t.h3,{id:"thats-it",children:"That's it"}),"\n",(0,s.jsx)(t.p,{children:"This is pretty much all there is to it. This library further provides more quality-of-life features, so read on!"}),"\n",(0,s.jsx)(t.admonition,{type:"info",children:(0,s.jsxs)(t.p,{children:["If your use-case is really simple, you can instead consider ",(0,s.jsxs)(t.a,{href:"https://docs.nestjs.com/recipes/async-local-storage#custom-implementation",children:["creating a custom implementation with ",(0,s.jsx)(t.code,{children:"AsyncLocalStorage"})]}),". Limiting the number of dependencies in your application is always a good idea!"]})})]})}function h(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},1670:(e,t,n)=>{n.d(t,{Z:()=>o,a:()=>c});var s=n(7378);const r={},i=s.createContext(r);function c(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ef9f7d37.246c8683.js b/assets/js/ef9f7d37.246c8683.js deleted file mode 100755 index 623e2d0..0000000 --- a/assets/js/ef9f7d37.246c8683.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[990],{5318:(e,t,r)=>{r.d(t,{Zo:()=>l,kt:()=>m});var n=r(7378);function s(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){s(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function c(e,t){if(null==e)return{};var r,n,s=function(e,t){if(null==e)return{};var r,n,s={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(s[r]=e[r]);return s}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(s[r]=e[r])}return s}var i=n.createContext({}),u=function(e){var t=n.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},l=function(e){var t=u(e.components);return n.createElement(i.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,s=e.mdxType,a=e.originalType,i=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),p=u(r),f=s,m=p["".concat(i,".").concat(f)]||p[f]||d[f]||a;return r?n.createElement(m,o(o({ref:t},l),{},{components:r})):n.createElement(m,o({ref:t},l))}));function m(e,t){var r=arguments,s=t&&t.mdxType;if("string"==typeof e||s){var a=r.length,o=new Array(a);o[0]=f;var c={};for(var i in t)hasOwnProperty.call(t,i)&&(c[i]=t[i]);c.originalType=e,c[p]="string"==typeof e?e:s,o[1]=c;for(var u=2;u<a;u++)o[u]=r[u];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}f.displayName="MDXCreateElement"},6524:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>i,contentTitle:()=>o,default:()=>d,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var n=r(5773),s=(r(7378),r(5318));const a={},o="Features and use cases",c={unversionedId:"features-and-use-cases/index",id:"features-and-use-cases/index",title:"Features and use cases",description:"In addition to the basic functionality described in the Quick start chapter, this module provides several other features to make your life as a developer easier.",source:"@site/docs/03_features-and-use-cases/index.md",sourceDirName:"03_features-and-use-cases",slug:"/features-and-use-cases/",permalink:"/nestjs-cls/features-and-use-cases/",draft:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/03_features-and-use-cases/index.md",tags:[],version:"current",frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Using a Decorator",permalink:"/nestjs-cls/setting-up-cls-context/using-a-decurator"},next:{title:"Request ID",permalink:"/nestjs-cls/features-and-use-cases/request-id"}},i={},u=[],l={toc:u},p="wrapper";function d(e){let{components:t,...r}=e;return(0,s.kt)(p,(0,n.Z)({},l,r,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("h1",{id:"features-and-use-cases"},"Features and use cases"),(0,s.kt)("p",null,"In addition to the basic functionality described in the ",(0,s.kt)("a",{parentName:"p",href:"/nestjs-cls/introduction/quick-start"},"Quick start")," chapter, this module provides several other features to make your life as a developer easier."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ef9f7d37.a21a56ab.js b/assets/js/ef9f7d37.a21a56ab.js new file mode 100644 index 0000000..f7f2401 --- /dev/null +++ b/assets/js/ef9f7d37.a21a56ab.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[990],{2098:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>o,contentTitle:()=>c,default:()=>l,frontMatter:()=>r,metadata:()=>i,toc:()=>u});var n=t(4246),a=t(1670);const r={},c="Features and use cases",i={id:"features-and-use-cases/index",title:"Features and use cases",description:"In addition to the basic functionality described in the Quick start chapter, this module provides several other features to make your life as a developer easier.",source:"@site/docs/03_features-and-use-cases/index.md",sourceDirName:"03_features-and-use-cases",slug:"/features-and-use-cases/",permalink:"/nestjs-cls/features-and-use-cases/",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/03_features-and-use-cases/index.md",tags:[],version:"current",frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Using the ClsService Instance",permalink:"/nestjs-cls/setting-up-cls-context/using_cls_run"},next:{title:"Request ID",permalink:"/nestjs-cls/features-and-use-cases/request-id"}},o={},u=[];function d(e){const s={a:"a",h1:"h1",p:"p",...(0,a.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.h1,{id:"features-and-use-cases",children:"Features and use cases"}),"\n",(0,n.jsxs)(s.p,{children:["In addition to the basic functionality described in the ",(0,n.jsx)(s.a,{href:"/nestjs-cls/introduction/quick-start",children:"Quick start"})," chapter, this module provides several other features to make your life as a developer easier."]})]})}function l(e={}){const{wrapper:s}={...(0,a.a)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},1670:(e,s,t)=>{t.d(s,{Z:()=>i,a:()=>c});var n=t(7378);const a={},r=n.createContext(a);function c(e){const s=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function i(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:c(e.components),n.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1cd7469c.a8f155a8.js b/assets/js/effe0ec2.1d686911.js old mode 100755 new mode 100644 similarity index 66% rename from assets/js/1cd7469c.a8f155a8.js rename to assets/js/effe0ec2.1d686911.js index 025ee25..376affd --- a/assets/js/1cd7469c.a8f155a8.js +++ b/assets/js/effe0ec2.1d686911.js @@ -1 +1 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[665],{3769:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[378],{3769:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/f83e606a.14966a77.js b/assets/js/f83e606a.14966a77.js new file mode 100644 index 0000000..26a822a --- /dev/null +++ b/assets/js/f83e606a.14966a77.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[104],{8472:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var n=s(4246),r=s(1670);const o={},a="Request ID",i={id:"features-and-use-cases/request-id",title:"Request ID",description:"Because of a shared storage, CLS is an ideal tool for tracking request (correlation) IDs for the purpose of logging. This package provides an option to automatically generate request IDs in the middleware/guard/interceptor, if you pass { generateId: true } to its options. By default, the generated ID is a string based on Math.random(), but you can provide a custom function in the idGenerator option.",source:"@site/docs/03_features-and-use-cases/01_request-id.md",sourceDirName:"03_features-and-use-cases",slug:"/features-and-use-cases/request-id",permalink:"/nestjs-cls/features-and-use-cases/request-id",draft:!1,unlisted:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/03_features-and-use-cases/01_request-id.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Features and use cases",permalink:"/nestjs-cls/features-and-use-cases/"},next:{title:"Additional CLS Setup",permalink:"/nestjs-cls/features-and-use-cases/additional-cls-setup"}},c={},d=[];function l(e){const t={code:"code",h1:"h1",p:"p",pre:"pre",...(0,r.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"request-id",children:"Request ID"}),"\n",(0,n.jsxs)(t.p,{children:["Because of a shared storage, CLS is an ideal tool for tracking request (correlation) IDs for the purpose of logging. This package provides an option to automatically generate request IDs in the middleware/guard/interceptor, if you pass ",(0,n.jsx)(t.code,{children:"{ generateId: true }"})," to its options. By default, the generated ID is a string based on ",(0,n.jsx)(t.code,{children:"Math.random()"}),", but you can provide a custom function in the ",(0,n.jsx)(t.code,{children:"idGenerator"})," option."]}),"\n",(0,n.jsxs)(t.p,{children:["This function receives the ",(0,n.jsx)(t.code,{children:"Request"})," (or ",(0,n.jsx)(t.code,{children:"ExecutionContext"})," in case a ",(0,n.jsx)(t.code,{children:"ClsGuard"})," is used) as the first parameter, which can be used in the generation process and should return (or resolve with) a string ID that will be stored in the CLS for later use."]}),"\n",(0,n.jsx)(t.p,{children:"Below is an example of retrieving the request ID from the request header with a fallback to an autogenerated one."}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-ts",children:"ClsModule.forRoot({\n middleware: {\n mount: true,\n // highlight-start\n generateId: true,\n idGenerator: (req: Request) =>\n req.headers['X-Request-Id'] ?? uuid();\n // highlight-end\n }\n})\n"})}),"\n",(0,n.jsxs)(t.p,{children:["The ID is stored under the ",(0,n.jsx)(t.code,{children:"CLS_ID"})," constant in the context. The ",(0,n.jsx)(t.code,{children:"ClsService"})," provides a shorthand method ",(0,n.jsx)(t.code,{children:"getId"})," to quickly retrieve it anywhere. It can be for example used in a custom logger:"]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-ts",metastring:'title="my.logger.ts"',children:"@Injectable()\nclass MyLogger {\n constructor(private readonly cls: ClsService) {}\n\n log(message: string) {\n // highlight-start\n console.log(`<${this.cls.getId()}> ${message}`);\n // highlight-end\n }\n}\n"})}),"\n",(0,n.jsx)(t.p,{children:"Calling this from anywhere within a CLS context results in retrieving the ID:"}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-ts",metastring:'title="my.service.ts"',children:"@Injectable()\nclass MyService {\n constructor(private readonly logger: MyLogger);\n\n hello() {\n this.logger.log('Hello');\n // -> logs for ex.: \"<44c2d8ff-49a6-4244-869f-75a2df11517a> Hello\"\n }\n}\n"})})]})}function u(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},1670:(e,t,s)=>{s.d(t,{Z:()=>i,a:()=>a});var n=s(7378);const r={},o=n.createContext(r);function a(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f83e606a.269bd854.js b/assets/js/f83e606a.269bd854.js deleted file mode 100755 index 75375f6..0000000 --- a/assets/js/f83e606a.269bd854.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[104],{5318:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(7378);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},s=Object.keys(e);for(r=0;r<s.length;r++)n=s[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r<s.length;r++)n=s[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),u=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},g=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,s=e.originalType,l=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=u(n),g=a,f=d["".concat(l,".").concat(g)]||d[g]||p[g]||s;return n?r.createElement(f,o(o({ref:t},c),{},{components:n})):r.createElement(f,o({ref:t},c))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var s=n.length,o=new Array(s);o[0]=g;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[d]="string"==typeof e?e:a,o[1]=i;for(var u=2;u<s;u++)o[u]=n[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}g.displayName="MDXCreateElement"},6722:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>p,frontMatter:()=>s,metadata:()=>i,toc:()=>u});var r=n(5773),a=(n(7378),n(5318));const s={},o="Request ID",i={unversionedId:"features-and-use-cases/request-id",id:"features-and-use-cases/request-id",title:"Request ID",description:"Because of a shared storage, CLS is an ideal tool for tracking request (correlation) IDs for the purpose of logging. This package provides an option to automatically generate request IDs in the middleware/guard/interceptor, if you pass { generateId: true } to its options. By default, the generated ID is a string based on Math.random(), but you can provide a custom function in the idGenerator option.",source:"@site/docs/03_features-and-use-cases/01_request-id.md",sourceDirName:"03_features-and-use-cases",slug:"/features-and-use-cases/request-id",permalink:"/nestjs-cls/features-and-use-cases/request-id",draft:!1,editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/docs/03_features-and-use-cases/01_request-id.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"documentationSidebar",previous:{title:"Features and use cases",permalink:"/nestjs-cls/features-and-use-cases/"},next:{title:"Additional CLS Setup",permalink:"/nestjs-cls/features-and-use-cases/additional-cls-setup"}},l={},u=[],c={toc:u},d="wrapper";function p(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"request-id"},"Request ID"),(0,a.kt)("p",null,"Because of a shared storage, CLS is an ideal tool for tracking request (correlation) IDs for the purpose of logging. This package provides an option to automatically generate request IDs in the middleware/guard/interceptor, if you pass ",(0,a.kt)("inlineCode",{parentName:"p"},"{ generateId: true }")," to its options. By default, the generated ID is a string based on ",(0,a.kt)("inlineCode",{parentName:"p"},"Math.random()"),", but you can provide a custom function in the ",(0,a.kt)("inlineCode",{parentName:"p"},"idGenerator")," option."),(0,a.kt)("p",null,"This function receives the ",(0,a.kt)("inlineCode",{parentName:"p"},"Request")," (or ",(0,a.kt)("inlineCode",{parentName:"p"},"ExecutionContext")," in case a ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsGuard")," is used) as the first parameter, which can be used in the generation process and should return (or resolve with) a string ID that will be stored in the CLS for later use."),(0,a.kt)("p",null,"Below is an example of retrieving the request ID from the request header with a fallback to an autogenerated one."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-ts"},"ClsModule.forRoot({\n middleware: {\n mount: true,\n // highlight-start\n generateId: true,\n idGenerator: (req: Request) =>\n req.headers['X-Request-Id'] ?? uuid();\n // highlight-end\n }\n})\n")),(0,a.kt)("p",null,"The ID is stored under the ",(0,a.kt)("inlineCode",{parentName:"p"},"CLS_ID")," constant in the context. The ",(0,a.kt)("inlineCode",{parentName:"p"},"ClsService")," provides a shorthand method ",(0,a.kt)("inlineCode",{parentName:"p"},"getId")," to quickly retrieve it anywhere. It can be for example used in a custom logger:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-ts",metastring:'title="my.logger.ts"',title:'"my.logger.ts"'},"@Injectable()\nclass MyLogger {\n constructor(private readonly cls: ClsService) {}\n\n log(message: string) {\n // highlight-start\n console.log(`<${this.cls.getId()}> ${message}`);\n // highlight-end\n }\n}\n")),(0,a.kt)("p",null,"Calling this from anywhere within a CLS context results in retrieving the ID:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-ts",metastring:'title="my.service.ts"',title:'"my.service.ts"'},"@Injectable()\nclass MyService {\n constructor(private readonly logger: MyLogger);\n\n hello() {\n this.logger.log('Hello');\n // -> logs for ex.: \"<44c2d8ff-49a6-4244-869f-75a2df11517a> Hello\"\n }\n}\n")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/main.4229acf3.js b/assets/js/main.4229acf3.js deleted file mode 100755 index 7360c90..0000000 --- a/assets/js/main.4229acf3.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.4229acf3.js.LICENSE.txt */ -(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[179],{6623:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7378),a=n(5773),o=n(1237),i=n.n(o),l=n(6887);const s={17896441:[()=>Promise.all([n.e(532),n.e(918)]).then(n.bind(n,6417)),"@theme/DocItem",6417],"1be78505":[()=>Promise.all([n.e(532),n.e(514)]).then(n.bind(n,5553)),"@theme/DocPage",5553],"1cd7469c":[()=>n.e(665).then(n.t.bind(n,3769,19)),"/media/papooch/Storage/Ondra/Stuff/Projects/Node/nestjs-cls/docs/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],"3ac8ff5d":[()=>n.e(332).then(n.bind(n,5948)),"@site/docs/01_introduction/03_how-it-works.md",5948],"3b39bba3":[()=>Promise.all([n.e(532),n.e(546)]).then(n.bind(n,864)),"@site/docs/01_introduction/01_installation.md",864],"4998a0a4":[()=>n.e(872).then(n.bind(n,15)),"@site/docs/03_features-and-use-cases/05_type-safety-and-type-inference.md",15],"4c9a797e":[()=>n.e(720).then(n.bind(n,8499)),"@site/docs/04_api/index.md",8499],"57c14adc":[()=>n.e(507).then(n.bind(n,3129)),"@site/docs/05_considerations/01_security.md",3129],"592cbe55":[()=>n.e(437).then(n.bind(n,3080)),"@site/docs/03_features-and-use-cases/06_proxy-providers.md",3080],"6212613f":[()=>n.e(849).then(n.bind(n,7046)),"@site/docs/03_features-and-use-cases/02_additional-cls-setup.md",7046],"67fa07c1":[()=>n.e(164).then(n.bind(n,275)),"@site/docs/06_migration-guide/01_v2x-v3x.md",275],"75a2ce58":[()=>n.e(678).then(n.bind(n,9882)),"@site/docs/06_migration-guide/index.md",9882],"81cbaa95":[()=>n.e(513).then(n.bind(n,6021)),"@site/docs/02_setting-up-cls-context/04_using-a-decurator.md",6021],"849c94ea":[()=>n.e(756).then(n.bind(n,6973)),"@site/docs/03_features-and-use-cases/03_breakin-out-of-di.md",6973],"86ea57e0":[()=>n.e(202).then(n.bind(n,6906)),"@site/docs/01_introduction/index.md",6906],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"94e5e920":[()=>n.e(575).then(n.bind(n,8337)),"@site/docs/05_considerations/index.md",8337],"97d55a5e":[()=>n.e(823).then(n.bind(n,5769)),"@site/docs/04_api/02_module-options.md",5769],a2c1fdb7:[()=>n.e(776).then(n.bind(n,1930)),"@site/docs/02_setting-up-cls-context/index.md",1930],a8d12efa:[()=>n.e(55).then(n.bind(n,7333)),"@site/docs/03_features-and-use-cases/04_usage-outside-of-web-request.md",7333],ae4976f8:[()=>n.e(93).then(n.bind(n,8642)),"@site/docs/02_setting-up-cls-context/01_using-a-middleware.md",8642],b09df872:[()=>n.e(246).then(n.bind(n,5160)),"@site/docs/02_setting-up-cls-context/03_using-an-interceptor.md",5160],b787da23:[()=>n.e(126).then(n.bind(n,1708)),"@site/docs/05_considerations/02_compatibility.md",1708],d459cca2:[()=>n.e(47).then(n.bind(n,4614)),"@site/docs/02_setting-up-cls-context/02_using-a-guard.md",4614],df604e10:[()=>n.e(775).then(n.bind(n,3250)),"@site/docs/04_api/01_service-interface.md",3250],eca1a52a:[()=>n.e(873).then(n.bind(n,5755)),"@site/docs/01_introduction/02_quick-start.md",5755],ef9f7d37:[()=>n.e(990).then(n.bind(n,6524)),"@site/docs/03_features-and-use-cases/index.md",6524],f83e606a:[()=>n.e(104).then(n.bind(n,6722)),"@site/docs/03_features-and-use-cases/01_request-id.md",6722]};function u(e){let{error:t,retry:n,pastDelay:a}=e;return t?r.createElement("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},r.createElement("p",null,String(t)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var c=n(3361),d=n(6881);function f(e,t){if("*"===e)return i()({loading:u,loader:()=>n.e(893).then(n.bind(n,3893)),modules:["@theme/NotFound"],webpack:()=>[3893],render(e,t){const n=e.default;return r.createElement(d.z,{value:{plugin:{name:"native",id:"default"}}},r.createElement(n,t))}});const o=l[`${e}-${t}`],f={},p=[],m=[],h=(0,c.Z)(o);return Object.entries(h).forEach((e=>{let[t,n]=e;const r=s[n];r&&(f[t]=r[0],p.push(r[1]),m.push(r[2]))})),i().Map({loading:u,loader:f,modules:p,webpack:()=>m,render(t,n){const i=JSON.parse(JSON.stringify(o));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let o=i;const l=n.split(".");l.slice(0,-1).forEach((e=>{o=o[e]})),o[l[l.length-1]]=a}));const l=i.__comp;delete i.__comp;const s=i.__context;return delete i.__context,r.createElement(d.z,{value:s},r.createElement(l,(0,a.Z)({},i,n)))}})}const p=[{path:"/nestjs-cls/",component:f("/nestjs-cls/","716"),routes:[{path:"/nestjs-cls/",component:f("/nestjs-cls/","c45"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/api",component:f("/nestjs-cls/api","212"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/api/module-options",component:f("/nestjs-cls/api/module-options","77a"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/api/service-interface",component:f("/nestjs-cls/api/service-interface","0da"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/considerations",component:f("/nestjs-cls/considerations","416"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/considerations/compatibility",component:f("/nestjs-cls/considerations/compatibility","10c"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/considerations/security",component:f("/nestjs-cls/considerations/security","54f"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/features-and-use-cases",component:f("/nestjs-cls/features-and-use-cases","1da"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/features-and-use-cases/additional-cls-setup",component:f("/nestjs-cls/features-and-use-cases/additional-cls-setup","d4a"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/features-and-use-cases/breakin-out-of-di",component:f("/nestjs-cls/features-and-use-cases/breakin-out-of-di","fdb"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/features-and-use-cases/proxy-providers",component:f("/nestjs-cls/features-and-use-cases/proxy-providers","53b"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/features-and-use-cases/request-id",component:f("/nestjs-cls/features-and-use-cases/request-id","b90"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference",component:f("/nestjs-cls/features-and-use-cases/type-safety-and-type-inference","88f"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/features-and-use-cases/usage-outside-of-web-request",component:f("/nestjs-cls/features-and-use-cases/usage-outside-of-web-request","9b7"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/introduction/how-it-works",component:f("/nestjs-cls/introduction/how-it-works","a84"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/introduction/installation",component:f("/nestjs-cls/introduction/installation","885"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/introduction/quick-start",component:f("/nestjs-cls/introduction/quick-start","cf1"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/migration-guide",component:f("/nestjs-cls/migration-guide","25f"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/migration-guide/v2x-v3x",component:f("/nestjs-cls/migration-guide/v2x-v3x","992"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/setting-up-cls-context",component:f("/nestjs-cls/setting-up-cls-context","e63"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/setting-up-cls-context/using-a-decurator",component:f("/nestjs-cls/setting-up-cls-context/using-a-decurator","b75"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/setting-up-cls-context/using-a-guard",component:f("/nestjs-cls/setting-up-cls-context/using-a-guard","8c0"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/setting-up-cls-context/using-a-middleware",component:f("/nestjs-cls/setting-up-cls-context/using-a-middleware","ad9"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/setting-up-cls-context/using-an-interceptor",component:f("/nestjs-cls/setting-up-cls-context/using-an-interceptor","393"),exact:!0,sidebar:"documentationSidebar"}]},{path:"*",component:f("*")}]},3427:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>o});var r=n(7378);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},6662:(e,t,n)=>{"use strict";var r=n(7378),a=n(1542),o=n(4289),i=n(2883),l=n(161);const s=[n(142),n(3815),n(4374),n(6222)];var u=n(6623),c=n(3620),d=n(5473);function f(e){let{children:t}=e;return r.createElement(r.Fragment,null,t)}var p=n(5773),m=n(7092),h=n(353),g=n(8948),b=n(624),v=n(8831),y=n(3714),w=n(174),k=n(3149),E=n(505);function S(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,h.Z)(),n=(0,y.l)();return r.createElement(m.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:a}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:a})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function x(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.Z)(),a=function(){const{siteConfig:{url:e}}=(0,h.Z)(),{pathname:t}=(0,c.TH)();return e+(0,g.Z)(t)}(),o=t?`${n}${t}`:a;return r.createElement(m.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function _(){const{i18n:{currentLocale:e}}=(0,h.Z)(),{metadata:t,image:n}=(0,b.L)();return r.createElement(r.Fragment,null,r.createElement(m.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:w.h})),n&&r.createElement(v.d,{image:n}),r.createElement(x,null),r.createElement(S,null),r.createElement(E.Z,{tag:k.HX,locale:e}),r.createElement(m.Z,null,t.map(((e,t)=>r.createElement("meta",(0,p.Z)({key:t},e))))))}const C=new Map;function T(e){if(C.has(e.pathname))return{...e,pathname:C.get(e.pathname)};if((0,d.f)(u.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return C.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return C.set(e.pathname,t),{...e,pathname:t}}var A=n(3427),L=n(5547);function N(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];const a=s.map((t=>{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const R=function(e){let{children:t,location:n,previousLocation:a}=e;return(0,r.useLayoutEffect)((()=>{a!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:a}),N("onRouteDidUpdate",{previousLocation:a,location:n}))}),[a,n]),t};function P(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(u.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class O extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.Z.canUseDOM?N("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=N("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),P(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return r.createElement(R,{previousLocation:this.previousLocation,location:t},r.createElement(c.AW,{location:t,render:()=>e}))}}const I=O,D="__docusaurus-base-url-issue-banner-container",M="__docusaurus-base-url-issue-banner",j="__docusaurus-base-url-issue-banner-suggestion-container",F="__DOCUSAURUS_INSERT_BASEURL_BANNER";function B(e){return`\nwindow['${F}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${F}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${D}');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = ${JSON.stringify(function(e){return`\n<div id="${M}" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">${e}</span> ${"/"===e?" (default value)":""}</p>\n <p>We suggest trying baseUrl = <span id="${j}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n var suggestionContainer = document.getElementById('${j}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function z(){const{siteConfig:{baseUrl:e}}=(0,h.Z)();return(0,r.useLayoutEffect)((()=>{window[F]=!1}),[]),r.createElement(r.Fragment,null,!l.Z.canUseDOM&&r.createElement(m.Z,null,r.createElement("script",null,B(e))),r.createElement("div",{id:D}))}function U(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,h.Z)(),{pathname:n}=(0,c.TH)();return t&&n===e?r.createElement(z,null):null}function $(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:a,localeConfigs:o}}=(0,h.Z)(),i=(0,g.Z)(e),{htmlLang:l,direction:s}=o[a];return r.createElement(m.Z,null,r.createElement("html",{lang:l,dir:s}),r.createElement("title",null,t),r.createElement("meta",{property:"og:title",content:t}),r.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&r.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&r.createElement("link",{rel:"icon",href:i}))}var q=n(6293);function H(){const e=(0,d.H)(u.Z),t=(0,c.TH)();return r.createElement(q.Z,null,r.createElement(L.M,null,r.createElement(A.t,null,r.createElement(f,null,r.createElement($,null),r.createElement(_,null),r.createElement(U,null),r.createElement(I,{location:T(t)},e)))))}var G=n(6887);const Z=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var V=n(3361);const W=new Set,Y=new Set,K=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,Q={prefetch(e){if(!(e=>!K()&&!Y.has(e)&&!W.has(e))(e))return!1;W.add(e);const t=(0,d.f)(u.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(G).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,V.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Z(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!K()&&!Y.has(e))(e)&&(Y.add(e),P(e))},X=Object.freeze(Q);if(l.Z.canUseDOM){window.docusaurus=X;const e=a.hydrate;P(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(o.VK,null,r.createElement(H,null))),document.getElementById("__docusaurus"))}))}},5547:(e,t,n)=>{"use strict";n.d(t,{_:()=>c,M:()=>d});var r=n(7378),a=n(6809);const o=JSON.parse('{"docusaurus-lunr-search":{"default":{"fileNames":{"searchDoc":"search-doc-1697660838110.json","lunrIndex":"lunr-index-1697660838110.json"}}},"docusaurus-plugin-content-docs":{"default":{"path":"/nestjs-cls/","versions":[{"name":"current","label":"Next","isLast":true,"path":"/nestjs-cls/","mainDocId":"introduction/index","docs":[{"id":"api/index","path":"/nestjs-cls/api/","sidebar":"documentationSidebar"},{"id":"api/module-options","path":"/nestjs-cls/api/module-options","sidebar":"documentationSidebar"},{"id":"api/service-interface","path":"/nestjs-cls/api/service-interface","sidebar":"documentationSidebar"},{"id":"considerations/compatibility","path":"/nestjs-cls/considerations/compatibility","sidebar":"documentationSidebar"},{"id":"considerations/index","path":"/nestjs-cls/considerations/","sidebar":"documentationSidebar"},{"id":"considerations/security","path":"/nestjs-cls/considerations/security","sidebar":"documentationSidebar"},{"id":"features-and-use-cases/additional-cls-setup","path":"/nestjs-cls/features-and-use-cases/additional-cls-setup","sidebar":"documentationSidebar"},{"id":"features-and-use-cases/breakin-out-of-di","path":"/nestjs-cls/features-and-use-cases/breakin-out-of-di","sidebar":"documentationSidebar"},{"id":"features-and-use-cases/index","path":"/nestjs-cls/features-and-use-cases/","sidebar":"documentationSidebar"},{"id":"features-and-use-cases/proxy-providers","path":"/nestjs-cls/features-and-use-cases/proxy-providers","sidebar":"documentationSidebar"},{"id":"features-and-use-cases/request-id","path":"/nestjs-cls/features-and-use-cases/request-id","sidebar":"documentationSidebar"},{"id":"features-and-use-cases/type-safety-and-type-inference","path":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference","sidebar":"documentationSidebar"},{"id":"features-and-use-cases/usage-outside-of-web-request","path":"/nestjs-cls/features-and-use-cases/usage-outside-of-web-request","sidebar":"documentationSidebar"},{"id":"introduction/how-it-works","path":"/nestjs-cls/introduction/how-it-works","sidebar":"documentationSidebar"},{"id":"introduction/index","path":"/nestjs-cls/","sidebar":"documentationSidebar"},{"id":"introduction/installation","path":"/nestjs-cls/introduction/installation","sidebar":"documentationSidebar"},{"id":"introduction/quick-start","path":"/nestjs-cls/introduction/quick-start","sidebar":"documentationSidebar"},{"id":"migration-guide/index","path":"/nestjs-cls/migration-guide/","sidebar":"documentationSidebar"},{"id":"migration-guide/v2x-v3x","path":"/nestjs-cls/migration-guide/v2x-v3x","sidebar":"documentationSidebar"},{"id":"setting-up-cls-context/index","path":"/nestjs-cls/setting-up-cls-context/","sidebar":"documentationSidebar"},{"id":"setting-up-cls-context/using-a-decurator","path":"/nestjs-cls/setting-up-cls-context/using-a-decurator","sidebar":"documentationSidebar"},{"id":"setting-up-cls-context/using-a-guard","path":"/nestjs-cls/setting-up-cls-context/using-a-guard","sidebar":"documentationSidebar"},{"id":"setting-up-cls-context/using-a-middleware","path":"/nestjs-cls/setting-up-cls-context/using-a-middleware","sidebar":"documentationSidebar"},{"id":"setting-up-cls-context/using-an-interceptor","path":"/nestjs-cls/setting-up-cls-context/using-an-interceptor","sidebar":"documentationSidebar"}],"draftIds":[],"sidebars":{"documentationSidebar":{"link":{"path":"/nestjs-cls/","label":"Introduction"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(7529);const s=JSON.parse('{"docusaurusVersion":"2.4.1","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.1"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.4.1"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.1"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.1"},"docusaurus-lunr-search":{"type":"package","name":"docusaurus-lunr-search","version":"2.3.2"}}}'),u={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},c=r.createContext(u);function d(e){let{children:t}=e;return r.createElement(c.Provider,{value:u},t)}},6293:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7378),a=n(161),o=n(7092),i=n(1721),l=n(9176);function s(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},r.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),r.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),r.createElement(u,{error:t}))}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function c(e){let{error:t,tryAgain:n}=e;return r.createElement(f,{fallback:()=>r.createElement(s,{error:t,tryAgain:n})},r.createElement(o.Z,null,r.createElement("title",null,"Page Error")),r.createElement(l.Z,null,r.createElement(s,{error:t,tryAgain:n})))}const d=e=>r.createElement(c,e);class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??d)(e)}return e??null}}},161:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},7092:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7378),a=n(2883);function o(e){return r.createElement(a.ql,e)}},1884:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(5773),a=n(7378),o=n(4289),i=n(1721),l=n(353),s=n(5626),u=n(161);const c=a.createContext({collectLink:()=>{}});var d=n(8948);function f(e,t){let{isNavLink:n,to:f,href:p,activeClassName:m,isActive:h,"data-noBrokenLinkCheck":g,autoAddBaseUrl:b=!0,...v}=e;const{siteConfig:{trailingSlash:y,baseUrl:w}}=(0,l.Z)(),{withBaseUrl:k}=(0,d.C)(),E=(0,a.useContext)(c),S=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(()=>S.current));const x=f||p;const _=(0,s.Z)(x),C=x?.replace("pathname://","");let T=void 0!==C?(A=C,b&&(e=>e.startsWith("/"))(A)?k(A):A):void 0;var A;T&&_&&(T=(0,i.applyTrailingSlash)(T,{trailingSlash:y,baseUrl:w}));const L=(0,a.useRef)(!1),N=n?o.OL:o.rU,R=u.Z.canUseIntersectionObserver,P=(0,a.useRef)(),O=()=>{L.current||null==T||(window.docusaurus.preload(T),L.current=!0)};(0,a.useEffect)((()=>(!R&&_&&null!=T&&window.docusaurus.prefetch(T),()=>{R&&P.current&&P.current.disconnect()})),[P,T,R,_]);const I=T?.startsWith("#")??!1,D=!T||!_||I;return D||g||E.collectLink(T),D?a.createElement("a",(0,r.Z)({ref:S,href:T},x&&!_&&{target:"_blank",rel:"noopener noreferrer"},v)):a.createElement(N,(0,r.Z)({},v,{onMouseEnter:O,onTouchStart:O,innerRef:e=>{S.current=e,R&&e&&_&&(P.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(P.current.unobserve(e),P.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),P.current.observe(e))},to:T},n&&{isActive:h,activeClassName:m}))}const p=a.forwardRef(f)},9213:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s,I:()=>l});var r=n(7378);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var o=n(7529);function i(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return o[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(i({message:n,id:r}),t)}function s(e){let{children:t,id:n,values:o}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal <Translate> children",t),new Error("The Docusaurus <Translate> component only accept simple string values");const l=i({message:t,id:n});return r.createElement(r.Fragment,null,a(l,o))}},5688:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},5626:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},8948:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>l});var r=n(7378),a=n(353),o=n(5626);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},353:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7378),a=n(5547);function o(){return(0,r.useContext)(a._)}},1869:(e,t,n)=>{"use strict";n.d(t,{OD:()=>o,eZ:()=>i});var r=n(353),a=n(5688);function o(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,r.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}function i(e,t,n){void 0===t&&(t=a.m),void 0===n&&(n={});const r=o(e),i=r?.[t];if(!i&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return i}},6457:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7378),a=n(3427);function o(){return(0,r.useContext)(a._)}},3361:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const l=a?`${a}.${o}`:o;r(i)?e(i,l):t[l]=i}))}(e),t}},6881:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>o});var r=n(7378);const a=r.createContext(null);function o(e){let{children:t,value:n}=e;const o=r.useContext(a),i=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:o,value:n})),[o,n]);return r.createElement(a.Provider,{value:i},t)}},6282:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>p,gA:()=>c,_r:()=>s,Jo:()=>m,zh:()=>u,yW:()=>f,gB:()=>d});var r=n(3620),a=n(1869);const o=e=>e.versions.find((e=>e.isLast));function i(e,t){const n=function(e,t){const n=o(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),a=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const l={},s=()=>(0,a.OD)("docusaurus-plugin-content-docs")??l,u=e=>(0,a.eZ)("docusaurus-plugin-content-docs",e,{failfast:!0});function c(e){void 0===e&&(e={});const t=s(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function d(e){return u(e).versions}function f(e){const t=u(e);return o(t)}function p(e){const t=u(e),{pathname:n}=(0,r.TH)();return i(t,n)}function m(e){const t=u(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=o(e);return{latestDocSuggestion:i(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},4374:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(8504),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},3815:(e,t,n)=>{"use strict";n.r(t);var r=n(2349),a=n(6809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(3392)(`./prism-${e}`)})),delete globalThis.Prism}(r.Z)},6125:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7378);const a={iconExternalLink:"iconExternalLink_nPrP"};function o(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:a.iconExternalLink},r.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},9176:(e,t,n)=>{"use strict";n.d(t,{Z:()=>mt});var r=n(7378),a=n(8944),o=n(6293),i=n(8831),l=n(5773),s=n(3620),u=n(9213),c=n(4993);const d="__docusaurus_skipToContent_fallback";function f(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function p(){const e=(0,r.useRef)(null),{action:t}=(0,s.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&f(t)}),[]);return(0,c.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&f(e.current)})),{containerRef:e,onClick:n}}const m=(0,u.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function h(e){const t=e.children??m,{containerRef:n,onClick:a}=p();return r.createElement("div",{ref:n,role:"region","aria-label":m},r.createElement("a",(0,l.Z)({},e,{href:`#${d}`,onClick:a}),t))}var g=n(5484),b=n(174);const v={skipToContent:"skipToContent_oPtH"};function y(){return r.createElement(h,{className:v.skipToContent})}var w=n(624),k=n(10);function E(e){let{width:t=21,height:n=21,color:a="currentColor",strokeWidth:o=1.2,className:i,...s}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 15 15",width:t,height:n},s),r.createElement("g",{stroke:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const S={closeButton:"closeButton_J5rP"};function x(e){return r.createElement("button",(0,l.Z)({type:"button","aria-label":(0,u.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.Z)("clean-btn close",S.closeButton,e.className)}),r.createElement(E,{width:14,height:14,strokeWidth:3.1}))}const _={content:"content_bSb_"};function C(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return r.createElement("div",(0,l.Z)({},e,{className:(0,a.Z)(_.content,e.className),dangerouslySetInnerHTML:{__html:n}}))}const T={announcementBar:"announcementBar_zJRd",announcementBarPlaceholder:"announcementBarPlaceholder_NpUd",announcementBarClose:"announcementBarClose_Jjdj",announcementBarContent:"announcementBarContent_t7IR"};function A(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:a,textColor:o,isCloseable:i}=e;return r.createElement("div",{className:T.announcementBar,style:{backgroundColor:a,color:o},role:"banner"},i&&r.createElement("div",{className:T.announcementBarPlaceholder}),r.createElement(C,{className:T.announcementBarContent}),i&&r.createElement(x,{onClick:n,className:T.announcementBarClose}))}var L=n(5536),N=n(3457);var R=n(1763),P=n(3471);const O=r.createContext(null);function I(e){let{children:t}=e;const n=function(){const e=(0,L.e)(),t=(0,P.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,R.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return r.createElement(O.Provider,{value:n},t)}function D(e){if(e.component){const t=e.component;return r.createElement(t,e.props)}}function M(){const e=(0,r.useContext)(O);if(!e)throw new R.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,P.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:D(o)})),[a,o,t])}function j(e){let{header:t,primaryMenu:n,secondaryMenu:o}=e;const{shown:i}=M();return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},r.createElement("div",{className:"navbar-sidebar__item menu"},n),r.createElement("div",{className:"navbar-sidebar__item menu"},o)))}var F=n(5421),B=n(6457);function z(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"}))}function U(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"}))}const $={toggle:"toggle_ki11",toggleButton:"toggleButton_MMFG",darkToggleIcon:"darkToggleIcon_U96C",lightToggleIcon:"lightToggleIcon_lgto",toggleButtonDisabled:"toggleButtonDisabled_Uw7m"};function q(e){let{className:t,buttonClassName:n,value:o,onChange:i}=e;const l=(0,B.Z)(),s=(0,u.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===o?(0,u.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,u.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return r.createElement("div",{className:(0,a.Z)($.toggle,t)},r.createElement("button",{className:(0,a.Z)("clean-btn",$.toggleButton,!l&&$.toggleButtonDisabled,n),type:"button",onClick:()=>i("dark"===o?"light":"dark"),disabled:!l,title:s,"aria-label":s,"aria-live":"polite"},r.createElement(z,{className:(0,a.Z)($.toggleIcon,$.lightToggleIcon)}),r.createElement(U,{className:(0,a.Z)($.toggleIcon,$.darkToggleIcon)})))}const H=r.memo(q),G={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_m8pZ"};function Z(e){let{className:t}=e;const n=(0,w.L)().navbar.style,a=(0,w.L)().colorMode.disableSwitch,{colorMode:o,setColorMode:i}=(0,F.I)();return a?null:r.createElement(H,{className:t,buttonClassName:"dark"===n?G.darkNavbarColorModeToggle:void 0,value:o,onChange:i})}var V=n(898);function W(){return r.createElement(V.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function Y(){const e=(0,L.e)();return r.createElement("button",{type:"button","aria-label":(0,u.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle()},r.createElement(E,{color:"var(--ifm-color-emphasis-600)"}))}function K(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(W,null),r.createElement(Z,{className:"margin-right--md"}),r.createElement(Y,null))}var Q=n(1884),X=n(8948),J=n(5626);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(6125);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:a,href:o,label:i,html:s,isDropdownLink:u,prependBaseUrlToHref:c,...d}=e;const f=(0,X.Z)(a),p=(0,X.Z)(t),m=(0,X.Z)(o,{forcePrependBaseUrl:!0}),h=i&&o&&!(0,J.Z)(o),g=s?{dangerouslySetInnerHTML:{__html:s}}:{children:r.createElement(r.Fragment,null,i,h&&r.createElement(te.Z,u&&{width:12,height:12}))};return o?r.createElement(Q.Z,(0,l.Z)({href:c?m:o},d,g)):r.createElement(Q.Z,(0,l.Z)({to:f,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(p)},d,g))}function re(e){let{className:t,isDropdownItem:n=!1,...o}=e;const i=r.createElement(ne,(0,l.Z)({className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},o));return n?r.createElement("li",null,i):i}function ae(e){let{className:t,isDropdownItem:n,...o}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(ne,(0,l.Z)({className:(0,a.Z)("menu__link",t)},o)))}function oe(e){let{mobile:t=!1,position:n,...a}=e;const o=t?ae:re;return r.createElement(o,(0,l.Z)({},a,{activeClassName:a.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var ie=n(376),le=n(8862),se=n(353);function ue(e,t){return e.some((e=>function(e,t){return!!(0,le.Mg)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function ce(e){let{items:t,position:n,className:o,onClick:i,...s}=e;const u=(0,r.useRef)(null),[c,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{u.current&&!u.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[u]),r.createElement("div",{ref:u,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c})},r.createElement(ne,(0,l.Z)({"aria-haspopup":"true","aria-expanded":c,role:"button",href:s.to?void 0:"#",className:(0,a.Z)("navbar__link",o)},s,{onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))}}),s.children??s.label),r.createElement("ul",{className:"dropdown__menu"},t.map(((e,t)=>r.createElement(Te,(0,l.Z)({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:t}))))))}function de(e){let{items:t,className:n,position:o,onClick:i,...u}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,se.Z)(),{pathname:t}=(0,s.TH)();return t.replace(e,"/")}(),d=ue(t,c),{collapsed:f,toggleCollapsed:p,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[c,d,m]),r.createElement("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":f})},r.createElement(ne,(0,l.Z)({role:"button",className:(0,a.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},u,{onClick:e=>{e.preventDefault(),p()}}),u.children??u.label),r.createElement(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:f},t.map(((e,t)=>r.createElement(Te,(0,l.Z)({mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active"},e,{key:t}))))))}function fe(e){let{mobile:t=!1,...n}=e;const a=t?de:ce;return r.createElement(a,n)}var pe=n(3714);function me(e){let{width:t=20,height:n=20,...a}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},a),r.createElement("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"}))}const he="iconLanguage_kvP7";var ge=n(42),be=n.n(ge),ve=n(1869);const ye=e=>{const t=(0,r.useRef)(!1),a=(0,r.useRef)(null),[o,i]=(0,r.useState)(!1),l=(0,s.k6)(),{siteConfig:u={}}=(0,se.Z)(),c=(0,B.Z)(),{baseUrl:d}=u,f=(0,ve.eZ)("docusaurus-lunr-search"),p=()=>{t.current||(Promise.all([fetch(`${d}${f.fileNames.searchDoc}`).then((e=>e.json())),fetch(`${d}${f.fileNames.lunrIndex}`).then((e=>e.json())),Promise.all([n.e(734),n.e(561)]).then(n.bind(n,7213)),Promise.all([n.e(532),n.e(77)]).then(n.bind(n,5077))]).then((e=>{let[t,n,{default:r}]=e;0!==t.length&&(((e,t,n)=>{new n({searchDocs:e,searchIndex:t,baseUrl:d,inputSelector:"#search_input_react",handleSelected:(e,t,n)=>{const r=n.url||"/";document.createElement("a").href=r,l.push(r)}})})(t,n,r),i(!0))})),t.current=!0)},m=(0,r.useCallback)((t=>{a.current.contains(t.target)||a.current.focus(),e.handleSearchBarToggle&&e.handleSearchBarToggle(!e.isSearchBarExpanded)}),[e.isSearchBarExpanded]);return c&&p(),r.createElement("div",{className:"navbar__search",key:"search-box"},r.createElement("span",{"aria-label":"expand searchbar",role:"button",className:be()("search-icon",{"search-icon-hidden":e.isSearchBarExpanded}),onClick:m,onKeyDown:m,tabIndex:0}),r.createElement("input",{id:"search_input_react",type:"search",placeholder:o?"Search":"Loading...","aria-label":"Search",className:be()("navbar__search-input",{"search-bar-expanded":e.isSearchBarExpanded},{"search-bar":!e.isSearchBarExpanded}),onClick:p,onMouseOver:p,onFocus:m,onBlur:m,ref:a,disabled:!o}))},we={searchBox:"searchBox_WqAV"};function ke(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,a.Z)(n,we.searchBox)},t)}var Ee=n(6282),Se=n(5161);var xe=n(4453);const _e=e=>e.docs.find((t=>t.id===e.mainDocId));const Ce={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:a,...o}=e;const{i18n:{currentLocale:i,locales:c,localeConfigs:d}}=(0,se.Z)(),f=(0,pe.l)(),{search:p,hash:m}=(0,s.TH)(),h=[...n,...c.map((e=>{const n=`${`pathname://${f.createUrl({locale:e,fullyQualified:!1})}`}${p}${m}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...a],g=t?(0,u.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return r.createElement(fe,(0,l.Z)({},o,{mobile:t,label:r.createElement(r.Fragment,null,r.createElement(me,{className:he}),g),items:h}))},search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement(ke,{className:n},r.createElement(ye,null))},dropdown:fe,html:function(e){let{value:t,className:n,mobile:o=!1,isDropdownItem:i=!1}=e;const l=i?"li":"div";return r.createElement(l,{className:(0,a.Z)({navbar__item:!o&&!i,"menu__list-item":o},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,Ee.Iw)(a),s=(0,Se.vY)(t,a);return null===s?null:r.createElement(oe,(0,l.Z)({exact:!0},o,{isActive:()=>i?.path===s.path||!!i?.sidebar&&i.sidebar===s.sidebar,label:n??s.id,to:s.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,Ee.Iw)(a),s=(0,Se.oz)(t,a).link;if(!s)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(oe,(0,l.Z)({exact:!0},o,{isActive:()=>i?.sidebar===t,label:n??s.label,to:s.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:a,...o}=e;const i=(0,Se.lO)(a)[0],s=t??i.label,u=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(i).path;return r.createElement(oe,(0,l.Z)({},o,{label:s,to:u}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:a,dropdownItemsBefore:o,dropdownItemsAfter:i,...c}=e;const{search:d,hash:f}=(0,s.TH)(),p=(0,Ee.Iw)(n),m=(0,Ee.gB)(n),{savePreferredVersionName:h}=(0,xe.J)(n),g=[...o,...m.map((e=>{const t=p.alternateDocVersions[e.name]??_e(e);return{label:e.label,to:`${t.path}${d}${f}`,isActive:()=>e===p.activeVersion,onClick:()=>h(e.name)}})),...i],b=(0,Se.lO)(n)[0],v=t&&g.length>1?(0,u.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):b.label,y=t&&g.length>1?void 0:_e(b).path;return g.length<=1?r.createElement(oe,(0,l.Z)({},c,{mobile:t,label:v,to:y,isActive:a?()=>!1:void 0})):r.createElement(fe,(0,l.Z)({},c,{mobile:t,label:v,to:y,items:g,isActive:a?()=>!1:void 0}))}};function Te(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=Ce[a];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(o,n)}function Ae(){const e=(0,L.e)(),t=(0,w.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(Te,(0,l.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function Le(e){return r.createElement("button",(0,l.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),r.createElement(u.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"\u2190 Back to main menu"))}function Ne(){const e=0===(0,w.L)().navbar.items.length,t=M();return r.createElement(r.Fragment,null,!e&&r.createElement(Le,{onClick:()=>t.hide()}),t.content)}function Re(){const e=(0,L.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?r.createElement(j,{header:r.createElement(K,null),primaryMenu:r.createElement(Ae,null),secondaryMenu:r.createElement(Ne,null)}):null}const Pe={navbarHideable:"navbarHideable_hhpl",navbarHidden:"navbarHidden_nmcs"};function Oe(e){return r.createElement("div",(0,l.Z)({role:"presentation"},e,{className:(0,a.Z)("navbar-sidebar__backdrop",e.className)}))}function Ie(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,L.e)(),{navbarRef:l,isNavbarVisible:s}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,N.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i<o.current)return void n(!0);if(a.current)return void(a.current=!1);const l=r?.scrollY,s=document.documentElement.scrollHeight-o.current,u=window.innerHeight;l&&i>=l?n(!1):i+u<s&&n(!0)})),(0,c.S)((t=>{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return r.createElement("nav",{ref:l,"aria-label":(0,u.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[Pe.navbarHideable,!s&&Pe.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown})},t,r.createElement(Oe,{onClick:i.toggle}),r.createElement(Re,null))}var De=n(1721);const Me={errorBoundaryError:"errorBoundaryError_WE6Q"};function je(e){return r.createElement("button",(0,l.Z)({type:"button"},e),r.createElement(u.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error"},"Try again"))}function Fe(e){let{error:t}=e;const n=(0,De.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{className:Me.errorBoundaryError},n)}class Be extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const ze="right";function Ue(e){let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,l.Z)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function $e(){const{toggle:e,shown:t}=(0,L.e)();return r.createElement("button",{onClick:e,"aria-label":(0,u.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button"},r.createElement(Ue,null))}const qe={colorModeToggle:"colorModeToggle_Hewu"};function He(e){let{items:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement(Be,{key:t,onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t})},r.createElement(Te,e)))))}function Ge(e){let{left:t,right:n}=e;return r.createElement("div",{className:"navbar__inner"},r.createElement("div",{className:"navbar__items"},t),r.createElement("div",{className:"navbar__items navbar__items--right"},n))}function Ze(){const e=(0,L.e)(),t=(0,w.L)().navbar.items,[n,a]=function(e){function t(e){return"left"===(e.position??ze)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return r.createElement(Ge,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement($e,null),r.createElement(W,null),r.createElement(He,{items:n})),right:r.createElement(r.Fragment,null,r.createElement(He,{items:a}),r.createElement(Z,{className:qe.colorModeToggle}),!o&&r.createElement(ke,null,r.createElement(ye,null)))})}function Ve(){return r.createElement(Ie,null,r.createElement(Ze,null))}function We(e){let{item:t}=e;const{to:n,href:a,label:o,prependBaseUrlToHref:i,...s}=t,u=(0,X.Z)(n),c=(0,X.Z)(a,{forcePrependBaseUrl:!0});return r.createElement(Q.Z,(0,l.Z)({className:"footer__link-item"},a?{href:i?c:a}:{to:u},s),o,a&&!(0,J.Z)(a)&&r.createElement(te.Z,null))}function Ye(e){let{item:t}=e;return t.html?r.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement("li",{key:t.href??t.to,className:"footer__item"},r.createElement(We,{item:t}))}function Ke(e){let{column:t}=e;return r.createElement("div",{className:"col footer__col"},r.createElement("div",{className:"footer__title"},t.title),r.createElement("ul",{className:"footer__items clean-list"},t.items.map(((e,t)=>r.createElement(Ye,{key:t,item:e})))))}function Qe(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(Ke,{key:t,column:e}))))}function Xe(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function Je(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(We,{item:t})}function et(e){let{links:t}=e;return r.createElement("div",{className:"footer__links text--center"},r.createElement("div",{className:"footer__links"},t.map(((e,n)=>r.createElement(r.Fragment,{key:n},r.createElement(Je,{item:e}),t.length!==n+1&&r.createElement(Xe,null))))))}function tt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?r.createElement(Qe,{columns:t}):r.createElement(et,{links:t})}var nt=n(4034);const rt={footerLogoLink:"footerLogoLink_tutC"};function at(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.C)(),o={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(nt.Z,{className:(0,a.Z)("footer__logo",t.className),alt:t.alt,sources:o,width:t.width,height:t.height,style:t.style})}function ot(e){let{logo:t}=e;return t.href?r.createElement(Q.Z,{href:t.href,className:rt.footerLogoLink,target:t.target},r.createElement(at,{logo:t})):r.createElement(at,{logo:t})}function it(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function lt(e){let{style:t,links:n,logo:o,copyright:i}=e;return r.createElement("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"container container-fluid"},n,(o||i)&&r.createElement("div",{className:"footer__bottom text--center"},o&&r.createElement("div",{className:"margin-bottom--sm"},o),i)))}function st(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:a,style:o}=e;return r.createElement(lt,{style:o,links:n&&n.length>0&&r.createElement(tt,{links:n}),logo:a&&r.createElement(ot,{logo:a}),copyright:t&&r.createElement(it,{copyright:t})})}const ut=r.memo(st),ct=(0,R.Qc)([F.S,k.pl,N.OC,xe.L5,i.VC,function(e){let{children:t}=e;return r.createElement(P.n2,null,r.createElement(L.M,null,r.createElement(I,null,t)))}]);function dt(e){let{children:t}=e;return r.createElement(ct,null,t)}function ft(e){let{error:t,tryAgain:n}=e;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(u.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("div",{className:"margin-vert--lg"},r.createElement(je,{onClick:n,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(Fe,{error:t})))))}const pt={mainWrapper:"mainWrapper_MB5r"};function mt(e){const{children:t,noFooter:n,wrapperClassName:l,title:s,description:u}=e;return(0,b.t)(),r.createElement(dt,null,r.createElement(i.d,{title:s,description:u}),r.createElement(y,null),r.createElement(A,null),r.createElement(Ve,null),r.createElement("div",{id:d,className:(0,a.Z)(g.k.wrapper.main,pt.mainWrapper,l)},r.createElement(o.Z,{fallback:e=>r.createElement(ft,e)},t)),!n&&r.createElement(ut,null))}},898:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(5773),a=n(7378),o=n(1884),i=n(8948),l=n(353),s=n(624),u=n(4034);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,i.Z)(t.src),dark:(0,i.Z)(t.srcDark||t.src)},l=a.createElement(u.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?a.createElement("div",{className:r},l):l}function d(e){const{siteConfig:{title:t}}=(0,l.Z)(),{navbar:{title:n,logo:u}}=(0,s.L)(),{imageClassName:d,titleClassName:f,...p}=e,m=(0,i.Z)(u?.href||"/"),h=n?"":t,g=u?.alt??h;return a.createElement(o.Z,(0,r.Z)({to:m},p,u?.target&&{target:u.target}),u&&a.createElement(c,{logo:u,alt:g,imageClassName:d}),null!=n&&a.createElement("b",{className:f},n))}},505:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7378),a=n(7092);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return r.createElement(a.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},4034:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(5773),a=n(7378),o=n(8944),i=n(6457),l=n(5421);const s={themedImage:"themedImage_BQGR","themedImage--light":"themedImage--light_HAxW","themedImage--dark":"themedImage--dark_bGx0"};function u(e){const t=(0,i.Z)(),{colorMode:n}=(0,l.I)(),{sources:u,className:c,alt:d,...f}=e,p=t?"dark"===n?["dark"]:["light"]:["light","dark"];return a.createElement(a.Fragment,null,p.map((e=>a.createElement("img",(0,r.Z)({key:e,src:u[e],alt:d,className:(0,o.Z)(s.themedImage,s[`themedImage--${e}`],c)},f)))))}},376:(e,t,n)=>{"use strict";n.d(t,{u:()=>s,z:()=>g});var r=n(5773),a=n(7378),o=n(161),i=n(6903);const l="ease-in-out";function s(e){let{initialState:t}=e;const[n,r]=(0,a.useState)(t??!1),o=(0,a.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:o}}const u={display:"none",overflow:"hidden",height:"0px"},c={display:"block",overflow:"visible",height:"auto"};function d(e,t){const n=t?u:c;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const o=(0,a.useRef)(!1);(0,a.useEffect)((()=>{const e=t.current;function a(){const t=e.scrollHeight,n=r?.duration??function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${r?.easing??l}`,height:`${t}px`}}function s(){const t=a();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return d(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(s(),requestAnimationFrame((()=>{e.style.height=u.height,e.style.overflow=u.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{s()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function p(e){if(!o.Z.canUseDOM)return e?u:c}function m(e){let{as:t="div",collapsed:n,children:r,animation:o,onCollapseTransitionEnd:i,className:l,disableSSRStyle:s}=e;const u=(0,a.useRef)(null);return f({collapsibleRef:u,collapsed:n,animation:o}),a.createElement(t,{ref:u,style:s?void 0:p(n),onTransitionEnd:e=>{"height"===e.propertyName&&(d(u.current,n),i?.(n))},className:l},r)}function h(e){let{collapsed:t,...n}=e;const[o,i]=(0,a.useState)(!t),[l,s]=(0,a.useState)(t);return(0,a.useLayoutEffect)((()=>{t||i(!0)}),[t]),(0,a.useLayoutEffect)((()=>{o&&s(t)}),[o,t]),o?a.createElement(m,(0,r.Z)({},n,{collapsed:l})):null}function g(e){let{lazy:t,...n}=e;const r=t?h:m;return a.createElement(r,n)}},10:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>p});var r=n(7378),a=n(6457),o=n(1819),i=n(1763),l=n(624);const s=(0,o.WA)("docusaurus.announcement.dismiss"),u=(0,o.WA)("docusaurus.announcement.id"),c=()=>"true"===s.get(),d=e=>s.set(String(e)),f=r.createContext(null);function p(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&c()));(0,r.useEffect)((()=>{o(c())}),[]);const i=(0,r.useCallback)((()=>{d(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&d(!1),!r&&c()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return r.createElement(f.Provider,{value:n},t)}function m(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},5421:(e,t,n)=>{"use strict";n.d(t,{I:()=>g,S:()=>h});var r=n(7378),a=n(161),o=n(1763),i=n(1819),l=n(624);const s=r.createContext(void 0),u="theme",c=(0,i.WA)(u),d={light:"light",dark:"dark"},f=e=>e===d.dark?d.dark:d.light,p=e=>a.Z.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),m=e=>{c.set(f(e))};function h(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[a,o]=(0,r.useState)(p(e));(0,r.useEffect)((()=>{t&&c.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&m(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?d.dark:d.light:e),c.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=c.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===d.dark},setLightTheme(){i(d.light)},setDarkTheme(){i(d.dark)}})),[a,i])}();return r.createElement(s.Provider,{value:n},t)}function g(){const e=(0,r.useContext)(s);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},4453:(e,t,n)=>{"use strict";n.d(t,{J:()=>v,L5:()=>g});var r=n(7378),a=n(6282),o=n(5688),i=n(624),l=n(5161),s=n(1763),u=n(1819);const c=e=>`docs-preferred-version-${e}`,d={save:(e,t,n)=>{(0,u.WA)(c(e),{persistence:t}).set(n)},read:(e,t)=>(0,u.WA)(c(e),{persistence:t}).get(),clear:(e,t)=>{(0,u.WA)(c(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const p=r.createContext(null);function m(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=d.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(d.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){d.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function h(e){let{children:t}=e;const n=m();return r.createElement(p.Provider,{value:n},t)}function g(e){let{children:t}=e;return l.cE?r.createElement(h,null,t):r.createElement(r.Fragment,null,t)}function b(){const e=(0,r.useContext)(p);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=o.m);const t=(0,a.zh)(e),[n,i]=b(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},2095:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,b:()=>l});var r=n(7378),a=n(1763);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t,name:n,items:a}=e;const o=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocsSidebarProvider");return e}},5536:(e,t,n)=>{"use strict";n.d(t,{M:()=>d,e:()=>f});var r=n(7378),a=n(3471),o=n(8357),i=n(654),l=n(624),s=n(1763);const u=r.createContext(void 0);function c(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,l.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[s,u]=(0,r.useState)(!1);(0,i.Rb)((()=>{if(s)return u(!1),!1}));const c=(0,r.useCallback)((()=>{u((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&u(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:s})),[e,n,c,s])}function d(e){let{children:t}=e;const n=c();return r.createElement(u.Provider,{value:n},t)}function f(){const e=r.useContext(u);if(void 0===e)throw new s.i6("NavbarMobileSidebarProvider");return e}},3471:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>s,n2:()=>i});var r=n(7378),a=n(1763);const o=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,r.useContext)(o);if(!i)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=i,s=(0,a.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},174:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(7378);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},8357:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var r=n(7378),a=n(161);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(){return a.Z.canUseDOM?window.innerWidth>i?o.desktop:o.mobile:o.ssr}const s=!1;function u(){const[e,t]=(0,r.useState)((()=>s?"ssr":l()));return(0,r.useEffect)((()=>{function e(){t(l())}const n=s?window.setTimeout(e,1e3):void 0;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(n)}}),[]),e}},5484:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},6903:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},5161:(e,t,n)=>{"use strict";n.d(t,{Wl:()=>f,_F:()=>h,cE:()=>d,hI:()=>k,lO:()=>v,oz:()=>y,s1:()=>b,vY:()=>w});var r=n(7378),a=n(3620),o=n(5473),i=n(6282),l=n(4453),s=n(2095),u=n(784),c=n(8862);const d=!!i._r;function f(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=f(t);if(e)return e}}}const p=(e,t)=>void 0!==e&&(0,c.Mg)(e,t),m=(e,t)=>e.some((e=>h(e,t)));function h(e,t){return"link"===e.type?p(e.href,t):"category"===e.type&&(p(e.href,t)||m(e.items,t))}function g(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,c.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,c.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function b(){const e=(0,s.V)(),{pathname:t}=(0,a.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?g({sidebarItems:e.items,pathname:t}):null}function v(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,l.J)(e),a=(0,i.yW)(e);return(0,r.useMemo)((()=>(0,u.j)([t,n,a].filter(Boolean))),[t,n,a])}function y(e,t){const n=v(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function w(e,t){const n=v(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${(0,u.j)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function k(e){let{route:t,versionMetadata:n}=e;const r=(0,a.TH)(),i=t.routes,l=i.find((e=>(0,a.LX)(r.pathname,e)));if(!l)return null;const s=l.sidebar,u=s?n.docsSidebars[s]:void 0;return{docElement:(0,o.H)(i),sidebarName:s,sidebarItems:u}}},654:(e,t,n)=>{"use strict";n.d(t,{Rb:()=>l,_X:()=>s});var r=n(7378),a=n(3620),o=n(644),i=n(1763);function l(e){!function(e){const t=(0,a.k6)(),n=(0,i.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function s(e){return function(e){const t=(0,a.k6)();return(0,o.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}},784:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function a(e){return Array.from(new Set(e))}n.d(t,{j:()=>a,l:()=>r})},8831:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>c,VC:()=>p});var r=n(7378),a=n(8944),o=n(7092),i=n(6881);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(8948),u=n(353);function c(e){let{title:t,description:n,keywords:a,image:i,children:l}=e;const c=function(e){const{siteConfig:t}=(0,u.Z)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.C)(),f=i?d(i,{absolute:!0}):void 0;return r.createElement(o.Z,null,t&&r.createElement("title",null,c),t&&r.createElement("meta",{property:"og:title",content:c}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),f&&r.createElement("meta",{property:"og:image",content:f}),f&&r.createElement("meta",{name:"twitter:image",content:f}),l)}const d=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,a.Z)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(o.Z,null,r.createElement("html",{className:l})),n)}function p(e){let{children:t}=e;const n=l(),o=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(f,{className:(0,a.Z)(o,i)},t)}},1763:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,Qc:()=>u,Ql:()=>s,i6:()=>l,zX:()=>o});var r=n(7378);const a=n(161).Z.canUseDOM?r.useLayoutEffect:r.useEffect;function o(e){const t=(0,r.useRef)(e);return a((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return a((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?<name>\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function s(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return r.createElement(r.Fragment,null,e.reduceRight(((e,t)=>r.createElement(t,null,e)),n))}}},8862:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(7378),a=n(6623),o=n(353);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},3457:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>p,OC:()=>s,RF:()=>d,o5:()=>f});var r=n(7378),a=n(161),o=n(6457),i=n(1763);const l=r.createContext(void 0);function s(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return r.createElement(l.Provider,{value:n},t)}function u(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const c=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),a=(0,r.useRef)(c()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=c();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function f(){const e=u(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,r.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,r.useRef)(void 0),a=(0,r.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,r.useLayoutEffect)((()=>{queueMicrotask((()=>n.current?.()))})),{blockElementScrollPositionUntilNextRender:a}}function p(){const e=(0,r.useRef)(null),t=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&a<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(a-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},3149:(e,t,n)=>{"use strict";n.d(t,{HX:()=>r,os:()=>a});n(353);const r="default";function a(e,t){return`docs-${e}-${t}`}},1819:(e,t,n)=>{"use strict";n.d(t,{Nk:()=>d,WA:()=>c});var r=n(7378),a=n(644);const o="localStorage";function i(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function l(e){if(void 0===e&&(e=o),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,s||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),s=!0),null}var t}let s=!1;const u={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function c(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=l(t?.persistence);return null===n?u:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),i({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),i({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}function d(e,t){const n=(0,r.useRef)((()=>null===e?u:c(e,t))).current(),o=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,a.useSyncExternalStore)(o,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}},3714:(e,t,n)=>{"use strict";n.d(t,{l:()=>o});var r=n(353),a=n(3620);function o(){const{siteConfig:{baseUrl:e,url:t},i18n:{defaultLocale:n,currentLocale:o}}=(0,r.Z)(),{pathname:i}=(0,a.TH)(),l=o===n?e:e.replace(`/${o}/`,"/"),s=i.replace(e,"");return{createUrl:function(e){let{locale:r,fullyQualified:a}=e;return`${a?t:""}${function(e){return e===n?`${l}`:`${l}${e}/`}(r)}${s}`}}}},4993:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(7378),a=n(3620),o=n(1763);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},624:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(353);function a(){return(0,r.Z)().siteConfig.themeConfig}},2520:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},6102:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},1721:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(2520);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(6102);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},42:(e,t)=>{var n;!function(){"use strict";var r={}.hasOwnProperty;function a(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var o=typeof n;if("string"===o||"number"===o)e.push(n);else if(Array.isArray(n)){if(n.length){var i=a.apply(null,n);i&&e.push(i)}}else if("object"===o){if(n.toString!==Object.prototype.toString&&!n.toString.toString().includes("[native code]")){e.push(n.toString());continue}for(var l in n)r.call(n,l)&&n[l]&&e.push(l)}}}return e.join(" ")}e.exports?(a.default=a,e.exports=a):void 0===(n=function(){return a}.apply(t,[]))||(e.exports=n)}()},8944:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n);else for(t in e)e[t]&&(a&&(a+=" "),a+=t);return a}n.d(t,{Z:()=>a});const a=function(){for(var e,t,n=0,a="";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}},5036:(e,t,n)=>{"use strict";n.d(t,{lX:()=>w,q_:()=>C,ob:()=>p,PP:()=>A,Ep:()=>f});var r=n(5773);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r<a;n+=1,r+=1)e[n]=e[r];e.pop()}const i=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],i=t&&t.split("/")||[],l=e&&a(e),s=t&&a(t),u=l||s;if(e&&a(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var c=i[i.length-1];n="."===c||".."===c||""===c}else n=!1;for(var d=0,f=i.length;f>=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(2215);function s(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function f(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function p(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var h=!("undefined"==typeof window||!window.document||!window.document.createElement);function g(e,t){t(window.confirm(e))}var b="popstate",v="hashchange";function y(){try{return window.history.state||{}}catch(e){return{}}}function w(e){void 0===e&&(e={}),h||(0,l.Z)(!1);var t,n=window.history,a=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,o=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,u=i.forceRefresh,w=void 0!==u&&u,k=i.getUserConfirmation,E=void 0===k?g:k,S=i.keyLength,x=void 0===S?6:S,_=e.basename?d(s(e.basename)):"";function C(e){var t=e||{},n=t.key,r=t.state,a=window.location,o=a.pathname+a.search+a.hash;return _&&(o=c(o,_)),p(o,r,n)}function T(){return Math.random().toString(36).substr(2,x)}var A=m();function L(e){(0,r.Z)(U,e),U.length=n.length,A.notifyListeners(U.location,U.action)}function N(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||O(C(e.state))}function R(){O(C(y()))}var P=!1;function O(e){if(P)P=!1,L();else{A.confirmTransitionTo(e,"POP",E,(function(t){t?L({action:"POP",location:e}):function(e){var t=U.location,n=D.indexOf(t.key);-1===n&&(n=0);var r=D.indexOf(e.key);-1===r&&(r=0);var a=n-r;a&&(P=!0,j(a))}(e)}))}}var I=C(y()),D=[I.key];function M(e){return _+f(e)}function j(e){n.go(e)}var F=0;function B(e){1===(F+=e)&&1===e?(window.addEventListener(b,N),o&&window.addEventListener(v,R)):0===F&&(window.removeEventListener(b,N),o&&window.removeEventListener(v,R))}var z=!1;var U={length:n.length,action:"POP",location:I,createHref:M,push:function(e,t){var r="PUSH",o=p(e,t,T(),U.location);A.confirmTransitionTo(o,r,E,(function(e){if(e){var t=M(o),i=o.key,l=o.state;if(a)if(n.pushState({key:i,state:l},null,t),w)window.location.href=t;else{var s=D.indexOf(U.location.key),u=D.slice(0,s+1);u.push(o.key),D=u,L({action:r,location:o})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",o=p(e,t,T(),U.location);A.confirmTransitionTo(o,r,E,(function(e){if(e){var t=M(o),i=o.key,l=o.state;if(a)if(n.replaceState({key:i,state:l},null,t),w)window.location.replace(t);else{var s=D.indexOf(U.location.key);-1!==s&&(D[s]=o.key),L({action:r,location:o})}else window.location.replace(t)}}))},go:j,goBack:function(){j(-1)},goForward:function(){j(1)},block:function(e){void 0===e&&(e=!1);var t=A.setPrompt(e);return z||(B(1),z=!0),function(){return z&&(z=!1,B(-1)),t()}},listen:function(e){var t=A.appendListener(e);return B(1),function(){B(-1),t()}}};return U}var k="hashchange",E={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+u(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:u,decodePath:s},slash:{encodePath:s,decodePath:s}};function S(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function x(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function _(e){window.location.replace(S(window.location.href)+"#"+e)}function C(e){void 0===e&&(e={}),h||(0,l.Z)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),a=n.getUserConfirmation,o=void 0===a?g:a,i=n.hashType,u=void 0===i?"slash":i,b=e.basename?d(s(e.basename)):"",v=E[u],y=v.encodePath,w=v.decodePath;function C(){var e=w(x());return b&&(e=c(e,b)),p(e)}var T=m();function A(e){(0,r.Z)(z,e),z.length=t.length,T.notifyListeners(z.location,z.action)}var L=!1,N=null;function R(){var e,t,n=x(),r=y(n);if(n!==r)_(r);else{var a=C(),i=z.location;if(!L&&(t=a,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(N===f(a))return;N=null,function(e){if(L)L=!1,A();else{var t="POP";T.confirmTransitionTo(e,t,o,(function(n){n?A({action:t,location:e}):function(e){var t=z.location,n=D.lastIndexOf(f(t));-1===n&&(n=0);var r=D.lastIndexOf(f(e));-1===r&&(r=0);var a=n-r;a&&(L=!0,M(a))}(e)}))}}(a)}}var P=x(),O=y(P);P!==O&&_(O);var I=C(),D=[f(I)];function M(e){t.go(e)}var j=0;function F(e){1===(j+=e)&&1===e?window.addEventListener(k,R):0===j&&window.removeEventListener(k,R)}var B=!1;var z={length:t.length,action:"POP",location:I,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=S(window.location.href)),n+"#"+y(b+f(e))},push:function(e,t){var n="PUSH",r=p(e,void 0,void 0,z.location);T.confirmTransitionTo(r,n,o,(function(e){if(e){var t=f(r),a=y(b+t);if(x()!==a){N=t,function(e){window.location.hash=e}(a);var o=D.lastIndexOf(f(z.location)),i=D.slice(0,o+1);i.push(t),D=i,A({action:n,location:r})}else A()}}))},replace:function(e,t){var n="REPLACE",r=p(e,void 0,void 0,z.location);T.confirmTransitionTo(r,n,o,(function(e){if(e){var t=f(r),a=y(b+t);x()!==a&&(N=t,_(a));var o=D.indexOf(f(z.location));-1!==o&&(D[o]=t),A({action:n,location:r})}}))},go:M,goBack:function(){M(-1)},goForward:function(){M(1)},block:function(e){void 0===e&&(e=!1);var t=T.setPrompt(e);return B||(F(1),B=!0),function(){return B&&(B=!1,F(-1)),t()}},listen:function(e){var t=T.appendListener(e);return F(1),function(){F(-1),t()}}};return z}function T(e,t,n){return Math.min(Math.max(e,t),n)}function A(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,a=t.initialEntries,o=void 0===a?["/"]:a,i=t.initialIndex,l=void 0===i?0:i,s=t.keyLength,u=void 0===s?6:s,c=m();function d(e){(0,r.Z)(w,e),w.length=w.entries.length,c.notifyListeners(w.location,w.action)}function h(){return Math.random().toString(36).substr(2,u)}var g=T(l,0,o.length-1),b=o.map((function(e){return p(e,void 0,"string"==typeof e?h():e.key||h())})),v=f;function y(e){var t=T(w.index+e,0,w.entries.length-1),r=w.entries[t];c.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:b.length,action:"POP",location:b[g],index:g,entries:b,createHref:v,push:function(e,t){var r="PUSH",a=p(e,t,h(),w.location);c.confirmTransitionTo(a,r,n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=p(e,t,h(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),c.setPrompt(e)},listen:function(e){return c.appendListener(e)}};return w}},5839:(e,t,n)=>{"use strict";var r=n(9185),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=p(n);a&&a!==m&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),h=s(n),g=0;g<i.length;++g){var b=i[g];if(!(o[b]||r&&r[b]||h&&h[b]||l&&l[b])){var v=f(n,b);try{u(t,b,v)}catch(y){}}}}return t}},3996:e=>{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,o,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5182:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},6222:(e,t,n)=>{"use strict";n.r(t)},142:(e,t,n)=>{"use strict";n.r(t)},8504:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function a(e,t,n){return e<t?t:e>n?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&p(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=f(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},2525:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,a){for(var o,i,l=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),s=1;s<arguments.length;s++){for(var u in o=Object(arguments[s]))n.call(o,u)&&(l[u]=o[u]);if(t){i=t(o);for(var c=0;c<i.length;c++)r.call(o,i[c])&&(l[i[c]]=o[i[c]])}}return l}},2349:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var a,o;switch(n=n||{},r.util.type(t)){case"Object":if(o=r.util.objId(t),n[o])return n[o];for(var i in a={},n[o]=a,t)t.hasOwnProperty(i)&&(a[i]=e(t[i],n));return a;case"Array":return o=r.util.objId(t),n[o]?n[o]:(a=[],n[o]=a,t.forEach((function(t,r){a[r]=e(t,n)})),a);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var a=e.classList;if(a.contains(t))return!0;if(a.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var a in t)n[a]=t[a];return n},insertBefore:function(e,t,n,a){var o=(a=a||r.languages)[e],i={};for(var l in o)if(o.hasOwnProperty(l)){if(l==t)for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);n.hasOwnProperty(l)||(i[l]=o[l])}var u=a[e];return a[e]=i,r.languages.DFS(r.languages,(function(t,n){n===u&&t!=e&&(this[t]=i)})),i},DFS:function e(t,n,a,o){o=o||{};var i=r.util.objId;for(var l in t)if(t.hasOwnProperty(l)){n.call(t,l,t[l],a||l);var s=t[l],u=r.util.type(s);"Object"!==u||o[i(s)]?"Array"!==u||o[i(s)]||(o[i(s)]=!0,e(s,n,l,o)):(o[i(s)]=!0,e(s,n,null,o))}}},plugins:{},highlight:function(e,t,n){var o={code:e,grammar:t,language:n};return r.hooks.run("before-tokenize",o),o.tokens=r.tokenize(o.code,o.grammar),r.hooks.run("after-tokenize",o),a.stringify(r.util.encode(o.tokens),o.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var a=new l;return s(a,a.head,e),i(e,a,t,a.head,0),function(e){var t=[],n=e.head.next;for(;n!==e.tail;)t.push(n.value),n=n.next;return t}(a)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var a,o=0;a=n[o++];)a(t)}},Token:a};function a(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function o(e,t,n,r){e.lastIndex=t;var a=e.exec(n);if(a&&r&&a[1]){var o=a[1].length;a.index+=o,a[0]=a[0].slice(o)}return a}function i(e,t,n,l,c,d){for(var f in n)if(n.hasOwnProperty(f)&&n[f]){var p=n[f];p=Array.isArray(p)?p:[p];for(var m=0;m<p.length;++m){if(d&&d.cause==f+","+m)return;var h=p[m],g=h.inside,b=!!h.lookbehind,v=!!h.greedy,y=h.alias;if(v&&!h.pattern.global){var w=h.pattern.toString().match(/[imsuy]*$/)[0];h.pattern=RegExp(h.pattern.source,w+"g")}for(var k=h.pattern||h,E=l.next,S=c;E!==t.tail&&!(d&&S>=d.reach);S+=E.value.length,E=E.next){var x=E.value;if(t.length>e.length)return;if(!(x instanceof a)){var _,C=1;if(v){if(!(_=o(k,S,e,b))||_.index>=e.length)break;var T=_.index,A=_.index+_[0].length,L=S;for(L+=E.value.length;T>=L;)L+=(E=E.next).value.length;if(S=L-=E.value.length,E.value instanceof a)continue;for(var N=E;N!==t.tail&&(L<A||"string"==typeof N.value);N=N.next)C++,L+=N.value.length;C--,x=e.slice(S,L),_.index-=S}else if(!(_=o(k,0,x,b)))continue;T=_.index;var R=_[0],P=x.slice(0,T),O=x.slice(T+R.length),I=S+x.length;d&&I>d.reach&&(d.reach=I);var D=E.prev;if(P&&(D=s(t,D,P),S+=P.length),u(t,D,C),E=s(t,D,new a(f,g?r.tokenize(R,g):R,y,R)),O&&s(t,E,O),C>1){var M={cause:f+","+m,reach:I};i(e,t,n,E.prev,S,M),d&&M.reach>d.reach&&(d.reach=M.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function u(e,t,n){for(var r=t.next,a=0;a<n&&r!==e.tail;a++)r=r.next;t.next=r,r.prev=t,e.length-=a}return a.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var a="";return t.forEach((function(t){a+=e(t,n)})),a}var o={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},i=t.alias;i&&(Array.isArray(i)?Array.prototype.push.apply(o.classes,i):o.classes.push(i)),r.hooks.run("wrap",o);var l="";for(var s in o.attributes)l+=" "+s+'="'+(o.attributes[s]||"").replace(/"/g,""")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+l+">"+o.content+"</"+o.tag+">"},r}(),a=r;r.default=r,a.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i<a.length;i++)o[a[i]]=e.languages.bash[a[i]];e.languages.shell=e.languages.bash}(a),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},a.languages.c.string],char:a.languages.c.char,comment:a.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:a.languages.c}}}}),a.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete a.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(a),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),a.languages.js=a.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(a),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<value>>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<key>>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(a),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var a=t[n];if("code"===a.type){var o=a.content[1],i=a.content[3];if(o&&i&&"code-language"===o.type&&"code-block"===i.type&&"string"==typeof o.content){var l=o.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),s="language-"+(l=(/[a-z][\w-]*/i.exec(l)||[""])[0].toLowerCase());i.alias?"string"==typeof i.alias?i.alias=[i.alias,s]:i.alias.push(s):i.alias=[s]}}else e(a.content)}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,a=t.classes.length;r<a;r++){var o=t.classes[r],u=/language-(.+)/.exec(o);if(u){n=u[1];break}}var c,d=e.languages[n];if(d)t.content=e.highlight((c=t.content,c.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;if("#"===(t=t.toLowerCase())[0])return n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),s(n);var r=l[t];return r||e}))),d,n);else if(n&&"none"!==n&&e.plugins.autoloader){var f="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random());t.attributes.id=f,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(f);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}}}));var i=RegExp(e.languages.markup.tag.pattern.source,"gi"),l={amp:"&",lt:"<",gt:">",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),a.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:a.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},a.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var a=[];if(d(["definition-mutation","punctuation"])&&"("===c(1).content){n+=2;var o=f(/^\($/,/^\)$/);if(-1===o)continue;for(;n<o;n++){var i=c(0);"variable"===i.type&&(p(i,"variable-input"),a.push(i.content))}n=o+1}if(d(["punctuation","property-query"])&&"{"===c(0).content&&(n++,p(c(0),"property-mutation"),a.length>0)){var l=f(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s<l;s++){var u=t[s];"variable"===u.type&&a.indexOf(u.content)>=0&&p(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=c(n+t);if(!r||r.type!==e[n])return!1}return!0}function f(e,r){for(var a=1,o=n;o<t.length;o++){var i=t[o],l=i.content;if("punctuation"===i.type&&"string"==typeof l)if(e.test(l))a++;else if(r.test(l)&&0===--a)return o}return-1}function p(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),a.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,r){var a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function u(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,s(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function c(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,c={},d=s(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=l(i++,r)););return c[n]=a,n})).join(""),n,r),f=Object.keys(c);return i=0,function e(t){for(var n=0;n<t.length;n++){if(i>=f.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=f[i],o="string"==typeof r?r:r.content,l=o.indexOf(a);if(-1!==l){++i;var s=o.substring(0,l),d=u(c[a]),p=o.substring(l+a.length),m=[];if(s&&m.push(s),m.push(d),p){var h=[p];e(h),m.push.apply(m,h)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function f(e){return"string"==typeof e?e:Array.isArray(e)?e.map(f).join(""):f(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,a=n.length;r<a;r++){var o=n[r];if("string"!=typeof o){var i=o.content;if(Array.isArray(i))if("template-string"===o.type){var l=i[1];if(3===i.length&&"string"!=typeof l&&"embedded-code"===l.type){var s=f(l),u=l.alias,d=Array.isArray(u)?u[0]:u,p=e.languages[d];if(!p)continue;i[1]=c(s,p,d)}}else t(i);else"string"!=typeof i&&t([i])}}}(t.tokens)}))}(a),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(a),function(e){function t(e,t){return RegExp(e.replace(/<ID>/g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?<ID>/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r<n.length;r++){var a=n[r],o=e.languages.javascript[a];"RegExp"===e.util.type(o)&&(o=e.languages.javascript[a]={pattern:o});var i=o.inside||{};o.inside=i,i["maybe-class-name"]=/^[A-Z][\s\S]*/}}(a),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,a=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function o(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return a})),RegExp(e,t)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r<t.length;r++){var a=t[r],o=!1;if("string"!=typeof a&&("tag"===a.type&&a.content[0]&&"tag"===a.content[0].type?"</"===a.content[0].content[0].content?n.length>0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(a);r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(s+=i(t[r+1]),t.splice(r+1,1)),r>0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}a.content&&"string"!=typeof a.content&&l(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(a),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.languages.go["class-name"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s<l.length&&!(a>=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],f="string"==typeof u?u:u.content,p=t(r,c),m=f.indexOf(p);if(m>-1){++a;var h=f.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=f.substring(m+p.length),v=[];h&&v.push.apply(v,i([h])),v.push(g),b&&v.push.apply(v,i([b])),"string"==typeof u?l.splice.apply(l,[s,1].concat(v)):u.content=v}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),a.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const o=a},9911:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},3916:(e,t,n)=>{const r=n(9911),a=n(4587),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(3392).resolve(t)],delete Prism.languages[e],n(3392)(t),o.add(e)}))}i.silent=!1,e.exports=i},3392:(e,t,n)=>{var r={"./":3916};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=3392},4587:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function a(r,o){if(!(r in n)){o.push(r);var i=o.indexOf(r);if(i<o.length-1)throw new Error("Circular dependency: "+o.slice(i).join(" -> "));var l={},s=e[r];if(s){function u(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,u),t(s.optional,u),t(s.modify,u)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(s);i=i.map(u),l=(l||[]).map(u);var c=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var f,p=r(s),m=c;a(m);){for(var h in f={},m){var g=s[h];t(g&&g.modify,(function(e){e in d&&(f[e]=!0)}))}for(var b in d)if(!(b in c))for(var v in p(b))if(v in c){f[b]=!0;break}for(var y in m=f)c[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function u(e){if(e in l)return l[e];s[e]=!0;var a,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)a=r(e);else{var f=i(c.map((function(e){var t=u(e);return delete s[e],t})));o?a=o(f,(function(){return r(e)})):r(e)}return l[e]=a}for(var c in n)u(c);var d=[];for(var f in s)d.push(l[f]);return i(d)}(p,c,t,n)}};return w}}();e.exports=t},8772:(e,t,n)=>{"use strict";var r=n(331);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},3615:(e,t,n)=>{e.exports=n(8772)()},331:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},3577:(e,t,n)=>{"use strict";var r=n(7378),a=n(2525),o=n(1102);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(i(227));var l=new Set,s={};function u(e,t){c(e,t),c(e+"Capture",t)}function c(e,t){for(s[e]=t,e=0;e<t.length;e++)l.add(t[e])}var d=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),f=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,p=Object.prototype.hasOwnProperty,m={},h={};function g(e,t,n,r,a,o,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var b={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){b[e]=new g(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];b[t]=new g(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){b[e]=new g(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){b[e]=new g(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){b[e]=new g(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){b[e]=new g(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){b[e]=new g(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){b[e]=new g(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){b[e]=new g(e,5,!1,e.toLowerCase(),null,!1,!1)}));var v=/[\-:]([a-z])/g;function y(e){return e[1].toUpperCase()}function w(e,t,n,r){var a=b.hasOwnProperty(t)?b[t]:null;(null!==a?0===a.type:!r&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,a,r)&&(n=null),r||null===a?function(e){return!!p.call(h,e)||!p.call(m,e)&&(f.test(e)?h[e]=!0:(m[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):a.mustUseProperty?e[a.propertyName]=null===n?3!==a.type&&"":n:(t=a.attributeName,r=a.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(a=a.type)||4===a&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(v,y);b[t]=new g(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(v,y);b[t]=new g(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(v,y);b[t]=new g(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){b[e]=new g(e,1,!1,e.toLowerCase(),null,!1,!1)})),b.xlinkHref=new g("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){b[e]=new g(e,1,!1,e.toLowerCase(),null,!0,!0)}));var k=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,E=60103,S=60106,x=60107,_=60108,C=60114,T=60109,A=60110,L=60112,N=60113,R=60120,P=60115,O=60116,I=60121,D=60128,M=60129,j=60130,F=60131;if("function"==typeof Symbol&&Symbol.for){var B=Symbol.for;E=B("react.element"),S=B("react.portal"),x=B("react.fragment"),_=B("react.strict_mode"),C=B("react.profiler"),T=B("react.provider"),A=B("react.context"),L=B("react.forward_ref"),N=B("react.suspense"),R=B("react.suspense_list"),P=B("react.memo"),O=B("react.lazy"),I=B("react.block"),B("react.scope"),D=B("react.opaque.id"),M=B("react.debug_trace_mode"),j=B("react.offscreen"),F=B("react.legacy_hidden")}var z,U="function"==typeof Symbol&&Symbol.iterator;function $(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=U&&e[U]||e["@@iterator"])?e:null}function q(e){if(void 0===z)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);z=t&&t[1]||""}return"\n"+z+e}var H=!1;function G(e,t){if(!e||H)return"";H=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(s){var r=s}Reflect.construct(e,[],t)}else{try{t.call()}catch(s){r=s}e.call(t.prototype)}else{try{throw Error()}catch(s){r=s}e()}}catch(s){if(s&&r&&"string"==typeof s.stack){for(var a=s.stack.split("\n"),o=r.stack.split("\n"),i=a.length-1,l=o.length-1;1<=i&&0<=l&&a[i]!==o[l];)l--;for(;1<=i&&0<=l;i--,l--)if(a[i]!==o[l]){if(1!==i||1!==l)do{if(i--,0>--l||a[i]!==o[l])return"\n"+a[i].replace(" at new "," at ")}while(1<=i&&0<=l);break}}}finally{H=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?q(e):""}function Z(e){switch(e.tag){case 5:return q(e.type);case 16:return q("Lazy");case 13:return q("Suspense");case 19:return q("SuspenseList");case 0:case 2:case 15:return e=G(e.type,!1);case 11:return e=G(e.type.render,!1);case 22:return e=G(e.type._render,!1);case 1:return e=G(e.type,!0);default:return""}}function V(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case x:return"Fragment";case S:return"Portal";case C:return"Profiler";case _:return"StrictMode";case N:return"Suspense";case R:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case A:return(e.displayName||"Context")+".Consumer";case T:return(e._context.displayName||"Context")+".Provider";case L:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case P:return V(e.type);case I:return V(e._render);case O:t=e._payload,e=e._init;try{return V(e(t))}catch(n){}}return null}function W(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function Y(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function K(e){e._valueTracker||(e._valueTracker=function(e){var t=Y(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var a=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){r=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function Q(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Y(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function X(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function J(e,t){var n=t.checked;return a({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=W(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function te(e,t){null!=(t=t.checked)&&w(e,"checked",t,!1)}function ne(e,t){te(e,t);var n=W(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ae(e,t.type,n):t.hasOwnProperty("defaultValue")&&ae(e,t.type,W(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function re(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ae(e,t,n){"number"===t&&X(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function oe(e,t){return e=a({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function ie(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+W(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function le(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(i(91));return a({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function se(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(i(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(i(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:W(n)}}function ue(e,t){var n=W(t.value),r=W(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ce(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var de={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function fe(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function pe(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?fe(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var me,he,ge=(he=function(e,t){if(e.namespaceURI!==de.svg||"innerHTML"in e)e.innerHTML=t;else{for((me=me||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=me.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return he(e,t)}))}:he);function be(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var ve={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ye=["Webkit","ms","Moz","O"];function we(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||ve.hasOwnProperty(e)&&ve[e]?(""+t).trim():t+"px"}function ke(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),a=we(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}Object.keys(ve).forEach((function(e){ye.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ve[t]=ve[e]}))}));var Ee=a({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Se(e,t){if(t){if(Ee[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(i(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(i(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(i(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(i(62))}}function xe(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function _e(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Ce=null,Te=null,Ae=null;function Le(e){if(e=na(e)){if("function"!=typeof Ce)throw Error(i(280));var t=e.stateNode;t&&(t=aa(t),Ce(e.stateNode,e.type,t))}}function Ne(e){Te?Ae?Ae.push(e):Ae=[e]:Te=e}function Re(){if(Te){var e=Te,t=Ae;if(Ae=Te=null,Le(e),t)for(e=0;e<t.length;e++)Le(t[e])}}function Pe(e,t){return e(t)}function Oe(e,t,n,r,a){return e(t,n,r,a)}function Ie(){}var De=Pe,Me=!1,je=!1;function Fe(){null===Te&&null===Ae||(Ie(),Re())}function Be(e,t){var n=e.stateNode;if(null===n)return null;var r=aa(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(i(231,t,typeof n));return n}var ze=!1;if(d)try{var Ue={};Object.defineProperty(Ue,"passive",{get:function(){ze=!0}}),window.addEventListener("test",Ue,Ue),window.removeEventListener("test",Ue,Ue)}catch(he){ze=!1}function $e(e,t,n,r,a,o,i,l,s){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(c){this.onError(c)}}var qe=!1,He=null,Ge=!1,Ze=null,Ve={onError:function(e){qe=!0,He=e}};function We(e,t,n,r,a,o,i,l,s){qe=!1,He=null,$e.apply(Ve,arguments)}function Ye(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function Ke(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function Qe(e){if(Ye(e)!==e)throw Error(i(188))}function Xe(e){if(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ye(e)))throw Error(i(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var o=a.alternate;if(null===o){if(null!==(r=a.return)){n=r;continue}break}if(a.child===o.child){for(o=a.child;o;){if(o===n)return Qe(a),e;if(o===r)return Qe(a),t;o=o.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=o;else{for(var l=!1,s=a.child;s;){if(s===n){l=!0,n=a,r=o;break}if(s===r){l=!0,r=a,n=o;break}s=s.sibling}if(!l){for(s=o.child;s;){if(s===n){l=!0,n=o,r=a;break}if(s===r){l=!0,r=o,n=a;break}s=s.sibling}if(!l)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(3!==n.tag)throw Error(i(188));return n.stateNode.current===n?e:t}(e),!e)return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function Je(e,t){for(var n=e.alternate;null!==t;){if(t===e||t===n)return!0;t=t.return}return!1}var et,tt,nt,rt,at=!1,ot=[],it=null,lt=null,st=null,ut=new Map,ct=new Map,dt=[],ft="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function pt(e,t,n,r,a){return{blockedOn:e,domEventName:t,eventSystemFlags:16|n,nativeEvent:a,targetContainers:[r]}}function mt(e,t){switch(e){case"focusin":case"focusout":it=null;break;case"dragenter":case"dragleave":lt=null;break;case"mouseover":case"mouseout":st=null;break;case"pointerover":case"pointerout":ut.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":ct.delete(t.pointerId)}}function ht(e,t,n,r,a,o){return null===e||e.nativeEvent!==o?(e=pt(t,n,r,a,o),null!==t&&(null!==(t=na(t))&&tt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function gt(e){var t=ta(e.target);if(null!==t){var n=Ye(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Ke(n)))return e.blockedOn=t,void rt(e.lanePriority,(function(){o.unstable_runWithPriority(e.priority,(function(){nt(n)}))}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function bt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Xt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=na(n))&&tt(t),e.blockedOn=n,!1;t.shift()}return!0}function vt(e,t,n){bt(e)&&n.delete(t)}function yt(){for(at=!1;0<ot.length;){var e=ot[0];if(null!==e.blockedOn){null!==(e=na(e.blockedOn))&&et(e);break}for(var t=e.targetContainers;0<t.length;){var n=Xt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n){e.blockedOn=n;break}t.shift()}null===e.blockedOn&&ot.shift()}null!==it&&bt(it)&&(it=null),null!==lt&&bt(lt)&&(lt=null),null!==st&&bt(st)&&(st=null),ut.forEach(vt),ct.forEach(vt)}function wt(e,t){e.blockedOn===t&&(e.blockedOn=null,at||(at=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,yt)))}function kt(e){function t(t){return wt(t,e)}if(0<ot.length){wt(ot[0],e);for(var n=1;n<ot.length;n++){var r=ot[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==it&&wt(it,e),null!==lt&&wt(lt,e),null!==st&&wt(st,e),ut.forEach(t),ct.forEach(t),n=0;n<dt.length;n++)(r=dt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<dt.length&&null===(n=dt[0]).blockedOn;)gt(n),null===n.blockedOn&&dt.shift()}function Et(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var St={animationend:Et("Animation","AnimationEnd"),animationiteration:Et("Animation","AnimationIteration"),animationstart:Et("Animation","AnimationStart"),transitionend:Et("Transition","TransitionEnd")},xt={},_t={};function Ct(e){if(xt[e])return xt[e];if(!St[e])return e;var t,n=St[e];for(t in n)if(n.hasOwnProperty(t)&&t in _t)return xt[e]=n[t];return e}d&&(_t=document.createElement("div").style,"AnimationEvent"in window||(delete St.animationend.animation,delete St.animationiteration.animation,delete St.animationstart.animation),"TransitionEvent"in window||delete St.transitionend.transition);var Tt=Ct("animationend"),At=Ct("animationiteration"),Lt=Ct("animationstart"),Nt=Ct("transitionend"),Rt=new Map,Pt=new Map,Ot=["abort","abort",Tt,"animationEnd",At,"animationIteration",Lt,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",Nt,"transitionEnd","waiting","waiting"];function It(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],a=e[n+1];a="on"+(a[0].toUpperCase()+a.slice(1)),Pt.set(r,t),Rt.set(r,a),u(a,[r])}}(0,o.unstable_now)();var Dt=8;function Mt(e){if(0!=(1&e))return Dt=15,1;if(0!=(2&e))return Dt=14,2;if(0!=(4&e))return Dt=13,4;var t=24&e;return 0!==t?(Dt=12,t):0!=(32&e)?(Dt=11,32):0!==(t=192&e)?(Dt=10,t):0!=(256&e)?(Dt=9,256):0!==(t=3584&e)?(Dt=8,t):0!=(4096&e)?(Dt=7,4096):0!==(t=4186112&e)?(Dt=6,t):0!==(t=62914560&e)?(Dt=5,t):67108864&e?(Dt=4,67108864):0!=(134217728&e)?(Dt=3,134217728):0!==(t=805306368&e)?(Dt=2,t):0!=(1073741824&e)?(Dt=1,1073741824):(Dt=8,e)}function jt(e,t){var n=e.pendingLanes;if(0===n)return Dt=0;var r=0,a=0,o=e.expiredLanes,i=e.suspendedLanes,l=e.pingedLanes;if(0!==o)r=o,a=Dt=15;else if(0!==(o=134217727&n)){var s=o&~i;0!==s?(r=Mt(s),a=Dt):0!==(l&=o)&&(r=Mt(l),a=Dt)}else 0!==(o=n&~i)?(r=Mt(o),a=Dt):0!==l&&(r=Mt(l),a=Dt);if(0===r)return 0;if(r=n&((0>(r=31-qt(r))?0:1<<r)<<1)-1,0!==t&&t!==r&&0==(t&i)){if(Mt(t),a<=Dt)return t;Dt=a}if(0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)a=1<<(n=31-qt(t)),r|=e[n],t&=~a;return r}function Ft(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function Bt(e,t){switch(e){case 15:return 1;case 14:return 2;case 12:return 0===(e=zt(24&~t))?Bt(10,t):e;case 10:return 0===(e=zt(192&~t))?Bt(8,t):e;case 8:return 0===(e=zt(3584&~t))&&(0===(e=zt(4186112&~t))&&(e=512)),e;case 2:return 0===(t=zt(805306368&~t))&&(t=268435456),t}throw Error(i(358,e))}function zt(e){return e&-e}function Ut(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function $t(e,t,n){e.pendingLanes|=t;var r=t-1;e.suspendedLanes&=r,e.pingedLanes&=r,(e=e.eventTimes)[t=31-qt(t)]=n}var qt=Math.clz32?Math.clz32:function(e){return 0===e?32:31-(Ht(e)/Gt|0)|0},Ht=Math.log,Gt=Math.LN2;var Zt=o.unstable_UserBlockingPriority,Vt=o.unstable_runWithPriority,Wt=!0;function Yt(e,t,n,r){Me||Ie();var a=Qt,o=Me;Me=!0;try{Oe(a,e,t,n,r)}finally{(Me=o)||Fe()}}function Kt(e,t,n,r){Vt(Zt,Qt.bind(null,e,t,n,r))}function Qt(e,t,n,r){var a;if(Wt)if((a=0==(4&t))&&0<ot.length&&-1<ft.indexOf(e))e=pt(null,e,t,n,r),ot.push(e);else{var o=Xt(e,t,n,r);if(null===o)a&&mt(e,r);else{if(a){if(-1<ft.indexOf(e))return e=pt(o,e,t,n,r),void ot.push(e);if(function(e,t,n,r,a){switch(t){case"focusin":return it=ht(it,e,t,n,r,a),!0;case"dragenter":return lt=ht(lt,e,t,n,r,a),!0;case"mouseover":return st=ht(st,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return ut.set(o,ht(ut.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,ct.set(o,ht(ct.get(o)||null,e,t,n,r,a)),!0}return!1}(o,e,t,n,r))return;mt(e,r)}Ir(e,t,r,null,n)}}}function Xt(e,t,n,r){var a=_e(r);if(null!==(a=ta(a))){var o=Ye(a);if(null===o)a=null;else{var i=o.tag;if(13===i){if(null!==(a=Ke(o)))return a;a=null}else if(3===i){if(o.stateNode.hydrate)return 3===o.tag?o.stateNode.containerInfo:null;a=null}else o!==a&&(a=null)}}return Ir(e,t,r,a,n),null}var Jt=null,en=null,tn=null;function nn(){if(tn)return tn;var e,t,n=en,r=n.length,a="value"in Jt?Jt.value:Jt.textContent,o=a.length;for(e=0;e<r&&n[e]===a[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===a[o-t];t++);return tn=a.slice(e,1<t?1-t:void 0)}function rn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function an(){return!0}function on(){return!1}function ln(e){function t(t,n,r,a,o){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=a,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(a):a[i]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?an:on,this.isPropagationStopped=on,this}return a(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=an)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=an)},persist:function(){},isPersistent:an}),t}var sn,un,cn,dn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},fn=ln(dn),pn=a({},dn,{view:0,detail:0}),mn=ln(pn),hn=a({},pn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Tn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==cn&&(cn&&"mousemove"===e.type?(sn=e.screenX-cn.screenX,un=e.screenY-cn.screenY):un=sn=0,cn=e),sn)},movementY:function(e){return"movementY"in e?e.movementY:un}}),gn=ln(hn),bn=ln(a({},hn,{dataTransfer:0})),vn=ln(a({},pn,{relatedTarget:0})),yn=ln(a({},dn,{animationName:0,elapsedTime:0,pseudoElement:0})),wn=a({},dn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),kn=ln(wn),En=ln(a({},dn,{data:0})),Sn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},xn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},_n={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Cn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=_n[e])&&!!t[e]}function Tn(){return Cn}var An=a({},pn,{key:function(e){if(e.key){var t=Sn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=rn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?xn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Tn,charCode:function(e){return"keypress"===e.type?rn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?rn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Ln=ln(An),Nn=ln(a({},hn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Rn=ln(a({},pn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Tn})),Pn=ln(a({},dn,{propertyName:0,elapsedTime:0,pseudoElement:0})),On=a({},hn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),In=ln(On),Dn=[9,13,27,32],Mn=d&&"CompositionEvent"in window,jn=null;d&&"documentMode"in document&&(jn=document.documentMode);var Fn=d&&"TextEvent"in window&&!jn,Bn=d&&(!Mn||jn&&8<jn&&11>=jn),zn=String.fromCharCode(32),Un=!1;function $n(e,t){switch(e){case"keyup":return-1!==Dn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function qn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Hn=!1;var Gn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Zn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Gn[e.type]:"textarea"===t}function Vn(e,t,n,r){Ne(r),0<(t=Mr(t,"onChange")).length&&(n=new fn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Wn=null,Yn=null;function Kn(e){Ar(e,0)}function Qn(e){if(Q(ra(e)))return e}function Xn(e,t){if("change"===e)return t}var Jn=!1;if(d){var er;if(d){var tr="oninput"in document;if(!tr){var nr=document.createElement("div");nr.setAttribute("oninput","return;"),tr="function"==typeof nr.oninput}er=tr}else er=!1;Jn=er&&(!document.documentMode||9<document.documentMode)}function rr(){Wn&&(Wn.detachEvent("onpropertychange",ar),Yn=Wn=null)}function ar(e){if("value"===e.propertyName&&Qn(Yn)){var t=[];if(Vn(t,Yn,e,_e(e)),e=Kn,Me)e(t);else{Me=!0;try{Pe(e,t)}finally{Me=!1,Fe()}}}}function or(e,t,n){"focusin"===e?(rr(),Yn=n,(Wn=t).attachEvent("onpropertychange",ar)):"focusout"===e&&rr()}function ir(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Qn(Yn)}function lr(e,t){if("click"===e)return Qn(t)}function sr(e,t){if("input"===e||"change"===e)return Qn(t)}var ur="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},cr=Object.prototype.hasOwnProperty;function dr(e,t){if(ur(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!cr.call(t,n[r])||!ur(e[n[r]],t[n[r]]))return!1;return!0}function fr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function pr(e,t){var n,r=fr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=fr(r)}}function mr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?mr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function hr(){for(var e=window,t=X();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=X((e=t.contentWindow).document)}return t}function gr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var br=d&&"documentMode"in document&&11>=document.documentMode,vr=null,yr=null,wr=null,kr=!1;function Er(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;kr||null==vr||vr!==X(r)||("selectionStart"in(r=vr)&&gr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},wr&&dr(wr,r)||(wr=r,0<(r=Mr(yr,"onSelect")).length&&(t=new fn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=vr)))}It("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),It("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),It(Ot,2);for(var Sr="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),xr=0;xr<Sr.length;xr++)Pt.set(Sr[xr],0);c("onMouseEnter",["mouseout","mouseover"]),c("onMouseLeave",["mouseout","mouseover"]),c("onPointerEnter",["pointerout","pointerover"]),c("onPointerLeave",["pointerout","pointerover"]),u("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),u("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),u("onBeforeInput",["compositionend","keypress","textInput","paste"]),u("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var _r="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Cr=new Set("cancel close invalid load scroll toggle".split(" ").concat(_r));function Tr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,a,o,l,s,u){if(We.apply(this,arguments),qe){if(!qe)throw Error(i(198));var c=He;qe=!1,He=null,Ge||(Ge=!0,Ze=c)}}(r,t,void 0,e),e.currentTarget=null}function Ar(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],a=r.event;r=r.listeners;e:{var o=void 0;if(t)for(var i=r.length-1;0<=i;i--){var l=r[i],s=l.instance,u=l.currentTarget;if(l=l.listener,s!==o&&a.isPropagationStopped())break e;Tr(a,l,u),o=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,u=l.currentTarget,l=l.listener,s!==o&&a.isPropagationStopped())break e;Tr(a,l,u),o=s}}}if(Ge)throw e=Ze,Ge=!1,Ze=null,e}function Lr(e,t){var n=oa(t),r=e+"__bubble";n.has(r)||(Or(t,e,2,!1),n.add(r))}var Nr="_reactListening"+Math.random().toString(36).slice(2);function Rr(e){e[Nr]||(e[Nr]=!0,l.forEach((function(t){Cr.has(t)||Pr(t,!1,e,null),Pr(t,!0,e,null)})))}function Pr(e,t,n,r){var a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,o=n;if("selectionchange"===e&&9!==n.nodeType&&(o=n.ownerDocument),null!==r&&!t&&Cr.has(e)){if("scroll"!==e)return;a|=2,o=r}var i=oa(o),l=e+"__"+(t?"capture":"bubble");i.has(l)||(t&&(a|=4),Or(o,e,a,t),i.add(l))}function Or(e,t,n,r){var a=Pt.get(t);switch(void 0===a?2:a){case 0:a=Yt;break;case 1:a=Kt;break;default:a=Qt}n=a.bind(null,t,n,e),a=void 0,!ze||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(a=!0),r?void 0!==a?e.addEventListener(t,n,{capture:!0,passive:a}):e.addEventListener(t,n,!0):void 0!==a?e.addEventListener(t,n,{passive:a}):e.addEventListener(t,n,!1)}function Ir(e,t,n,r,a){var o=r;if(0==(1&t)&&0==(2&t)&&null!==r)e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var l=r.stateNode.containerInfo;if(l===a||8===l.nodeType&&l.parentNode===a)break;if(4===i)for(i=r.return;null!==i;){var s=i.tag;if((3===s||4===s)&&((s=i.stateNode.containerInfo)===a||8===s.nodeType&&s.parentNode===a))return;i=i.return}for(;null!==l;){if(null===(i=ta(l)))return;if(5===(s=i.tag)||6===s){r=o=i;continue e}l=l.parentNode}}r=r.return}!function(e,t,n){if(je)return e(t,n);je=!0;try{return De(e,t,n)}finally{je=!1,Fe()}}((function(){var r=o,a=_e(n),i=[];e:{var l=Rt.get(e);if(void 0!==l){var s=fn,u=e;switch(e){case"keypress":if(0===rn(n))break e;case"keydown":case"keyup":s=Ln;break;case"focusin":u="focus",s=vn;break;case"focusout":u="blur",s=vn;break;case"beforeblur":case"afterblur":s=vn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":s=gn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":s=bn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":s=Rn;break;case Tt:case At:case Lt:s=yn;break;case Nt:s=Pn;break;case"scroll":s=mn;break;case"wheel":s=In;break;case"copy":case"cut":case"paste":s=kn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":s=Nn}var c=0!=(4&t),d=!c&&"scroll"===e,f=c?null!==l?l+"Capture":null:l;c=[];for(var p,m=r;null!==m;){var h=(p=m).stateNode;if(5===p.tag&&null!==h&&(p=h,null!==f&&(null!=(h=Be(m,f))&&c.push(Dr(m,h,p)))),d)break;m=m.return}0<c.length&&(l=new s(l,u,null,n,a),i.push({event:l,listeners:c}))}}if(0==(7&t)){if(s="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||0!=(16&t)||!(u=n.relatedTarget||n.fromElement)||!ta(u)&&!u[Jr])&&(s||l)&&(l=a.window===a?a:(l=a.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(u=(u=n.relatedTarget||n.toElement)?ta(u):null)&&(u!==(d=Ye(u))||5!==u.tag&&6!==u.tag)&&(u=null)):(s=null,u=r),s!==u)){if(c=gn,h="onMouseLeave",f="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(c=Nn,h="onPointerLeave",f="onPointerEnter",m="pointer"),d=null==s?l:ra(s),p=null==u?l:ra(u),(l=new c(h,m+"leave",s,n,a)).target=d,l.relatedTarget=p,h=null,ta(a)===r&&((c=new c(f,m+"enter",u,n,a)).target=p,c.relatedTarget=d,h=c),d=h,s&&u)e:{for(f=u,m=0,p=c=s;p;p=jr(p))m++;for(p=0,h=f;h;h=jr(h))p++;for(;0<m-p;)c=jr(c),m--;for(;0<p-m;)f=jr(f),p--;for(;m--;){if(c===f||null!==f&&c===f.alternate)break e;c=jr(c),f=jr(f)}c=null}else c=null;null!==s&&Fr(i,l,s,c,!1),null!==u&&null!==d&&Fr(i,d,u,c,!0)}if("select"===(s=(l=r?ra(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===s&&"file"===l.type)var g=Xn;else if(Zn(l))if(Jn)g=sr;else{g=ir;var b=or}else(s=l.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(g=lr);switch(g&&(g=g(e,r))?Vn(i,g,n,a):(b&&b(e,l,r),"focusout"===e&&(b=l._wrapperState)&&b.controlled&&"number"===l.type&&ae(l,"number",l.value)),b=r?ra(r):window,e){case"focusin":(Zn(b)||"true"===b.contentEditable)&&(vr=b,yr=r,wr=null);break;case"focusout":wr=yr=vr=null;break;case"mousedown":kr=!0;break;case"contextmenu":case"mouseup":case"dragend":kr=!1,Er(i,n,a);break;case"selectionchange":if(br)break;case"keydown":case"keyup":Er(i,n,a)}var v;if(Mn)e:{switch(e){case"compositionstart":var y="onCompositionStart";break e;case"compositionend":y="onCompositionEnd";break e;case"compositionupdate":y="onCompositionUpdate";break e}y=void 0}else Hn?$n(e,n)&&(y="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(y="onCompositionStart");y&&(Bn&&"ko"!==n.locale&&(Hn||"onCompositionStart"!==y?"onCompositionEnd"===y&&Hn&&(v=nn()):(en="value"in(Jt=a)?Jt.value:Jt.textContent,Hn=!0)),0<(b=Mr(r,y)).length&&(y=new En(y,e,null,n,a),i.push({event:y,listeners:b}),v?y.data=v:null!==(v=qn(n))&&(y.data=v))),(v=Fn?function(e,t){switch(e){case"compositionend":return qn(t);case"keypress":return 32!==t.which?null:(Un=!0,zn);case"textInput":return(e=t.data)===zn&&Un?null:e;default:return null}}(e,n):function(e,t){if(Hn)return"compositionend"===e||!Mn&&$n(e,t)?(e=nn(),tn=en=Jt=null,Hn=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Bn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=Mr(r,"onBeforeInput")).length&&(a=new En("onBeforeInput","beforeinput",null,n,a),i.push({event:a,listeners:r}),a.data=v))}Ar(i,t)}))}function Dr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Mr(e,t){for(var n=t+"Capture",r=[];null!==e;){var a=e,o=a.stateNode;5===a.tag&&null!==o&&(a=o,null!=(o=Be(e,n))&&r.unshift(Dr(e,o,a)),null!=(o=Be(e,t))&&r.push(Dr(e,o,a))),e=e.return}return r}function jr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Fr(e,t,n,r,a){for(var o=t._reactName,i=[];null!==n&&n!==r;){var l=n,s=l.alternate,u=l.stateNode;if(null!==s&&s===r)break;5===l.tag&&null!==u&&(l=u,a?null!=(s=Be(n,o))&&i.unshift(Dr(n,s,l)):a||null!=(s=Be(n,o))&&i.push(Dr(n,s,l))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}function Br(){}var zr=null,Ur=null;function $r(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function qr(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var Hr="function"==typeof setTimeout?setTimeout:void 0,Gr="function"==typeof clearTimeout?clearTimeout:void 0;function Zr(e){1===e.nodeType?e.textContent="":9===e.nodeType&&(null!=(e=e.body)&&(e.textContent=""))}function Vr(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function Wr(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var Yr=0;var Kr=Math.random().toString(36).slice(2),Qr="__reactFiber$"+Kr,Xr="__reactProps$"+Kr,Jr="__reactContainer$"+Kr,ea="__reactEvents$"+Kr;function ta(e){var t=e[Qr];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Jr]||n[Qr]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Wr(e);null!==e;){if(n=e[Qr])return n;e=Wr(e)}return t}n=(e=n).parentNode}return null}function na(e){return!(e=e[Qr]||e[Jr])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function ra(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(i(33))}function aa(e){return e[Xr]||null}function oa(e){var t=e[ea];return void 0===t&&(t=e[ea]=new Set),t}var ia=[],la=-1;function sa(e){return{current:e}}function ua(e){0>la||(e.current=ia[la],ia[la]=null,la--)}function ca(e,t){la++,ia[la]=e.current,e.current=t}var da={},fa=sa(da),pa=sa(!1),ma=da;function ha(e,t){var n=e.type.contextTypes;if(!n)return da;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a,o={};for(a in n)o[a]=t[a];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function ga(e){return null!=(e=e.childContextTypes)}function ba(){ua(pa),ua(fa)}function va(e,t,n){if(fa.current!==da)throw Error(i(168));ca(fa,t),ca(pa,n)}function ya(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in e))throw Error(i(108,V(t)||"Unknown",o));return a({},n,r)}function wa(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||da,ma=fa.current,ca(fa,e),ca(pa,pa.current),!0}function ka(e,t,n){var r=e.stateNode;if(!r)throw Error(i(169));n?(e=ya(e,t,ma),r.__reactInternalMemoizedMergedChildContext=e,ua(pa),ua(fa),ca(fa,e)):ua(pa),ca(pa,n)}var Ea=null,Sa=null,xa=o.unstable_runWithPriority,_a=o.unstable_scheduleCallback,Ca=o.unstable_cancelCallback,Ta=o.unstable_shouldYield,Aa=o.unstable_requestPaint,La=o.unstable_now,Na=o.unstable_getCurrentPriorityLevel,Ra=o.unstable_ImmediatePriority,Pa=o.unstable_UserBlockingPriority,Oa=o.unstable_NormalPriority,Ia=o.unstable_LowPriority,Da=o.unstable_IdlePriority,Ma={},ja=void 0!==Aa?Aa:function(){},Fa=null,Ba=null,za=!1,Ua=La(),$a=1e4>Ua?La:function(){return La()-Ua};function qa(){switch(Na()){case Ra:return 99;case Pa:return 98;case Oa:return 97;case Ia:return 96;case Da:return 95;default:throw Error(i(332))}}function Ha(e){switch(e){case 99:return Ra;case 98:return Pa;case 97:return Oa;case 96:return Ia;case 95:return Da;default:throw Error(i(332))}}function Ga(e,t){return e=Ha(e),xa(e,t)}function Za(e,t,n){return e=Ha(e),_a(e,t,n)}function Va(){if(null!==Ba){var e=Ba;Ba=null,Ca(e)}Wa()}function Wa(){if(!za&&null!==Fa){za=!0;var e=0;try{var t=Fa;Ga(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Fa=null}catch(n){throw null!==Fa&&(Fa=Fa.slice(e+1)),_a(Ra,Va),n}finally{za=!1}}}var Ya=k.ReactCurrentBatchConfig;function Ka(e,t){if(e&&e.defaultProps){for(var n in t=a({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var Qa=sa(null),Xa=null,Ja=null,eo=null;function to(){eo=Ja=Xa=null}function no(e){var t=Qa.current;ua(Qa),e.type._context._currentValue=t}function ro(e,t){for(;null!==e;){var n=e.alternate;if((e.childLanes&t)===t){if(null===n||(n.childLanes&t)===t)break;n.childLanes|=t}else e.childLanes|=t,null!==n&&(n.childLanes|=t);e=e.return}}function ao(e,t){Xa=e,eo=Ja=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(Mi=!0),e.firstContext=null)}function oo(e,t){if(eo!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(eo=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Ja){if(null===Xa)throw Error(i(308));Ja=t,Xa.dependencies={lanes:0,firstContext:t,responders:null}}else Ja=Ja.next=t;return e._currentValue}var io=!1;function lo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function so(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function uo(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function co(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function fo(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===o?a=o=i:o=o.next=i,n=n.next}while(null!==n);null===o?a=o=t:o=o.next=t}else a=o=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:o,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function po(e,t,n,r){var o=e.updateQueue;io=!1;var i=o.firstBaseUpdate,l=o.lastBaseUpdate,s=o.shared.pending;if(null!==s){o.shared.pending=null;var u=s,c=u.next;u.next=null,null===l?i=c:l.next=c,l=u;var d=e.alternate;if(null!==d){var f=(d=d.updateQueue).lastBaseUpdate;f!==l&&(null===f?d.firstBaseUpdate=c:f.next=c,d.lastBaseUpdate=u)}}if(null!==i){for(f=o.baseState,l=0,d=c=u=null;;){s=i.lane;var p=i.eventTime;if((r&s)===s){null!==d&&(d=d.next={eventTime:p,lane:0,tag:i.tag,payload:i.payload,callback:i.callback,next:null});e:{var m=e,h=i;switch(s=t,p=n,h.tag){case 1:if("function"==typeof(m=h.payload)){f=m.call(p,f,s);break e}f=m;break e;case 3:m.flags=-4097&m.flags|64;case 0:if(null==(s="function"==typeof(m=h.payload)?m.call(p,f,s):m))break e;f=a({},f,s);break e;case 2:io=!0}}null!==i.callback&&(e.flags|=32,null===(s=o.effects)?o.effects=[i]:s.push(i))}else p={eventTime:p,lane:s,tag:i.tag,payload:i.payload,callback:i.callback,next:null},null===d?(c=d=p,u=f):d=d.next=p,l|=s;if(null===(i=i.next)){if(null===(s=o.shared.pending))break;i=s.next,s.next=null,o.lastBaseUpdate=s,o.shared.pending=null}}null===d&&(u=f),o.baseState=u,o.firstBaseUpdate=c,o.lastBaseUpdate=d,Ul|=l,e.lanes=l,e.memoizedState=f}}function mo(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],a=r.callback;if(null!==a){if(r.callback=null,r=n,"function"!=typeof a)throw Error(i(191,a));a.call(r)}}}var ho=(new r.Component).refs;function go(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:a({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var bo={isMounted:function(e){return!!(e=e._reactInternals)&&Ye(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=fs(),a=ps(e),o=uo(r,a);o.payload=t,null!=n&&(o.callback=n),co(e,o),ms(e,a,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=fs(),a=ps(e),o=uo(r,a);o.tag=1,o.payload=t,null!=n&&(o.callback=n),co(e,o),ms(e,a,r)},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=fs(),r=ps(e),a=uo(n,r);a.tag=2,null!=t&&(a.callback=t),co(e,a),ms(e,r,n)}};function vo(e,t,n,r,a,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,i):!t.prototype||!t.prototype.isPureReactComponent||(!dr(n,r)||!dr(a,o))}function yo(e,t,n){var r=!1,a=da,o=t.contextType;return"object"==typeof o&&null!==o?o=oo(o):(a=ga(t)?ma:fa.current,o=(r=null!=(r=t.contextTypes))?ha(e,a):da),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=bo,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=o),t}function wo(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&bo.enqueueReplaceState(t,t.state,null)}function ko(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs=ho,lo(e);var o=t.contextType;"object"==typeof o&&null!==o?a.context=oo(o):(o=ga(t)?ma:fa.current,a.context=ha(e,o)),po(e,n,a,r),a.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&(go(e,t,o,n),a.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(t=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),t!==a.state&&bo.enqueueReplaceState(a,a.state,null),po(e,n,a,r),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.flags|=4)}var Eo=Array.isArray;function So(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(i(309));var r=n.stateNode}if(!r)throw Error(i(147,e));var a=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===a?t.ref:(t=function(e){var t=r.refs;t===ho&&(t=r.refs={}),null===e?delete t[a]:t[a]=e},t._stringRef=a,t)}if("string"!=typeof e)throw Error(i(284));if(!n._owner)throw Error(i(290,e))}return e}function xo(e,t){if("textarea"!==e.type)throw Error(i(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t))}function _o(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.flags=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function a(e,t){return(e=Zs(e,t)).index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags=2,n):r:(t.flags=2,n):n}function l(t){return e&&null===t.alternate&&(t.flags=2),t}function s(e,t,n,r){return null===t||6!==t.tag?((t=Ks(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function u(e,t,n,r){return null!==t&&t.elementType===n.type?((r=a(t,n.props)).ref=So(e,t,n),r.return=e,r):((r=Vs(n.type,n.key,n.props,null,e.mode,r)).ref=So(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Qs(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function d(e,t,n,r,o){return null===t||7!==t.tag?((t=Ws(n,e.mode,r,o)).return=e,t):((t=a(t,n)).return=e,t)}function f(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Ks(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case E:return(n=Vs(t.type,t.key,t.props,null,e.mode,n)).ref=So(e,null,t),n.return=e,n;case S:return(t=Qs(t,e.mode,n)).return=e,t}if(Eo(t)||$(t))return(t=Ws(t,e.mode,n,null)).return=e,t;xo(e,t)}return null}function p(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==a?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case E:return n.key===a?n.type===x?d(e,t,n.props.children,r,a):u(e,t,n,r):null;case S:return n.key===a?c(e,t,n,r):null}if(Eo(n)||$(n))return null!==a?null:d(e,t,n,r,null);xo(e,n)}return null}function m(e,t,n,r,a){if("string"==typeof r||"number"==typeof r)return s(t,e=e.get(n)||null,""+r,a);if("object"==typeof r&&null!==r){switch(r.$$typeof){case E:return e=e.get(null===r.key?n:r.key)||null,r.type===x?d(t,e,r.props.children,a,r.key):u(t,e,r,a);case S:return c(t,e=e.get(null===r.key?n:r.key)||null,r,a)}if(Eo(r)||$(r))return d(t,e=e.get(n)||null,r,a,null);xo(t,r)}return null}function h(a,i,l,s){for(var u=null,c=null,d=i,h=i=0,g=null;null!==d&&h<l.length;h++){d.index>h?(g=d,d=null):g=d.sibling;var b=p(a,d,l[h],s);if(null===b){null===d&&(d=g);break}e&&d&&null===b.alternate&&t(a,d),i=o(b,i,h),null===c?u=b:c.sibling=b,c=b,d=g}if(h===l.length)return n(a,d),u;if(null===d){for(;h<l.length;h++)null!==(d=f(a,l[h],s))&&(i=o(d,i,h),null===c?u=d:c.sibling=d,c=d);return u}for(d=r(a,d);h<l.length;h++)null!==(g=m(d,a,h,l[h],s))&&(e&&null!==g.alternate&&d.delete(null===g.key?h:g.key),i=o(g,i,h),null===c?u=g:c.sibling=g,c=g);return e&&d.forEach((function(e){return t(a,e)})),u}function g(a,l,s,u){var c=$(s);if("function"!=typeof c)throw Error(i(150));if(null==(s=c.call(s)))throw Error(i(151));for(var d=c=null,h=l,g=l=0,b=null,v=s.next();null!==h&&!v.done;g++,v=s.next()){h.index>g?(b=h,h=null):b=h.sibling;var y=p(a,h,v.value,u);if(null===y){null===h&&(h=b);break}e&&h&&null===y.alternate&&t(a,h),l=o(y,l,g),null===d?c=y:d.sibling=y,d=y,h=b}if(v.done)return n(a,h),c;if(null===h){for(;!v.done;g++,v=s.next())null!==(v=f(a,v.value,u))&&(l=o(v,l,g),null===d?c=v:d.sibling=v,d=v);return c}for(h=r(a,h);!v.done;g++,v=s.next())null!==(v=m(h,a,g,v.value,u))&&(e&&null!==v.alternate&&h.delete(null===v.key?g:v.key),l=o(v,l,g),null===d?c=v:d.sibling=v,d=v);return e&&h.forEach((function(e){return t(a,e)})),c}return function(e,r,o,s){var u="object"==typeof o&&null!==o&&o.type===x&&null===o.key;u&&(o=o.props.children);var c="object"==typeof o&&null!==o;if(c)switch(o.$$typeof){case E:e:{for(c=o.key,u=r;null!==u;){if(u.key===c){if(7===u.tag){if(o.type===x){n(e,u.sibling),(r=a(u,o.props.children)).return=e,e=r;break e}}else if(u.elementType===o.type){n(e,u.sibling),(r=a(u,o.props)).ref=So(e,u,o),r.return=e,e=r;break e}n(e,u);break}t(e,u),u=u.sibling}o.type===x?((r=Ws(o.props.children,e.mode,s,o.key)).return=e,e=r):((s=Vs(o.type,o.key,o.props,null,e.mode,s)).ref=So(e,r,o),s.return=e,e=s)}return l(e);case S:e:{for(u=o.key;null!==r;){if(r.key===u){if(4===r.tag&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),(r=a(r,o.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Qs(o,e.mode,s)).return=e,e=r}return l(e)}if("string"==typeof o||"number"==typeof o)return o=""+o,null!==r&&6===r.tag?(n(e,r.sibling),(r=a(r,o)).return=e,e=r):(n(e,r),(r=Ks(o,e.mode,s)).return=e,e=r),l(e);if(Eo(o))return h(e,r,o,s);if($(o))return g(e,r,o,s);if(c&&xo(e,o),void 0===o&&!u)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(i(152,V(e.type)||"Component"))}return n(e,r)}}var Co=_o(!0),To=_o(!1),Ao={},Lo=sa(Ao),No=sa(Ao),Ro=sa(Ao);function Po(e){if(e===Ao)throw Error(i(174));return e}function Oo(e,t){switch(ca(Ro,t),ca(No,e),ca(Lo,Ao),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:pe(null,"");break;default:t=pe(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}ua(Lo),ca(Lo,t)}function Io(){ua(Lo),ua(No),ua(Ro)}function Do(e){Po(Ro.current);var t=Po(Lo.current),n=pe(t,e.type);t!==n&&(ca(No,e),ca(Lo,n))}function Mo(e){No.current===e&&(ua(Lo),ua(No))}var jo=sa(0);function Fo(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Bo=null,zo=null,Uo=!1;function $o(e,t){var n=Hs(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function qo(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);default:return!1}}function Ho(e){if(Uo){var t=zo;if(t){var n=t;if(!qo(e,t)){if(!(t=Vr(n.nextSibling))||!qo(e,t))return e.flags=-1025&e.flags|2,Uo=!1,void(Bo=e);$o(Bo,n)}Bo=e,zo=Vr(t.firstChild)}else e.flags=-1025&e.flags|2,Uo=!1,Bo=e}}function Go(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;Bo=e}function Zo(e){if(e!==Bo)return!1;if(!Uo)return Go(e),Uo=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!qr(t,e.memoizedProps))for(t=zo;t;)$o(e,t),t=Vr(t.nextSibling);if(Go(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){zo=Vr(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}zo=null}}else zo=Bo?Vr(e.stateNode.nextSibling):null;return!0}function Vo(){zo=Bo=null,Uo=!1}var Wo=[];function Yo(){for(var e=0;e<Wo.length;e++)Wo[e]._workInProgressVersionPrimary=null;Wo.length=0}var Ko=k.ReactCurrentDispatcher,Qo=k.ReactCurrentBatchConfig,Xo=0,Jo=null,ei=null,ti=null,ni=!1,ri=!1;function ai(){throw Error(i(321))}function oi(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!ur(e[n],t[n]))return!1;return!0}function ii(e,t,n,r,a,o){if(Xo=o,Jo=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Ko.current=null===e||null===e.memoizedState?Pi:Oi,e=n(r,a),ri){o=0;do{if(ri=!1,!(25>o))throw Error(i(301));o+=1,ti=ei=null,t.updateQueue=null,Ko.current=Ii,e=n(r,a)}while(ri)}if(Ko.current=Ri,t=null!==ei&&null!==ei.next,Xo=0,ti=ei=Jo=null,ni=!1,t)throw Error(i(300));return e}function li(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===ti?Jo.memoizedState=ti=e:ti=ti.next=e,ti}function si(){if(null===ei){var e=Jo.alternate;e=null!==e?e.memoizedState:null}else e=ei.next;var t=null===ti?Jo.memoizedState:ti.next;if(null!==t)ti=t,ei=e;else{if(null===e)throw Error(i(310));e={memoizedState:(ei=e).memoizedState,baseState:ei.baseState,baseQueue:ei.baseQueue,queue:ei.queue,next:null},null===ti?Jo.memoizedState=ti=e:ti=ti.next=e}return ti}function ui(e,t){return"function"==typeof t?t(e):t}function ci(e){var t=si(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=ei,a=r.baseQueue,o=n.pending;if(null!==o){if(null!==a){var l=a.next;a.next=o.next,o.next=l}r.baseQueue=a=o,n.pending=null}if(null!==a){a=a.next,r=r.baseState;var s=l=o=null,u=a;do{var c=u.lane;if((Xo&c)===c)null!==s&&(s=s.next={lane:0,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null}),r=u.eagerReducer===e?u.eagerState:e(r,u.action);else{var d={lane:c,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null};null===s?(l=s=d,o=r):s=s.next=d,Jo.lanes|=c,Ul|=c}u=u.next}while(null!==u&&u!==a);null===s?o=r:s.next=l,ur(r,t.memoizedState)||(Mi=!0),t.memoizedState=r,t.baseState=o,t.baseQueue=s,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function di(e){var t=si(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(null!==a){n.pending=null;var l=a=a.next;do{o=e(o,l.action),l=l.next}while(l!==a);ur(o,t.memoizedState)||(Mi=!0),t.memoizedState=o,null===t.baseQueue&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function fi(e,t,n){var r=t._getVersion;r=r(t._source);var a=t._workInProgressVersionPrimary;if(null!==a?e=a===r:(e=e.mutableReadLanes,(e=(Xo&e)===e)&&(t._workInProgressVersionPrimary=r,Wo.push(t))),e)return n(t._source);throw Wo.push(t),Error(i(350))}function pi(e,t,n,r){var a=Ol;if(null===a)throw Error(i(349));var o=t._getVersion,l=o(t._source),s=Ko.current,u=s.useState((function(){return fi(a,t,n)})),c=u[1],d=u[0];u=ti;var f=e.memoizedState,p=f.refs,m=p.getSnapshot,h=f.source;f=f.subscribe;var g=Jo;return e.memoizedState={refs:p,source:t,subscribe:r},s.useEffect((function(){p.getSnapshot=n,p.setSnapshot=c;var e=o(t._source);if(!ur(l,e)){e=n(t._source),ur(d,e)||(c(e),e=ps(g),a.mutableReadLanes|=e&a.pendingLanes),e=a.mutableReadLanes,a.entangledLanes|=e;for(var r=a.entanglements,i=e;0<i;){var s=31-qt(i),u=1<<s;r[s]|=e,i&=~u}}}),[n,t,r]),s.useEffect((function(){return r(t._source,(function(){var e=p.getSnapshot,n=p.setSnapshot;try{n(e(t._source));var r=ps(g);a.mutableReadLanes|=r&a.pendingLanes}catch(o){n((function(){throw o}))}}))}),[t,r]),ur(m,n)&&ur(h,t)&&ur(f,r)||((e={pending:null,dispatch:null,lastRenderedReducer:ui,lastRenderedState:d}).dispatch=c=Ni.bind(null,Jo,e),u.queue=e,u.baseQueue=null,d=fi(a,t,n),u.memoizedState=u.baseState=d),d}function mi(e,t,n){return pi(si(),e,t,n)}function hi(e){var t=li();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:ui,lastRenderedState:e}).dispatch=Ni.bind(null,Jo,e),[t.memoizedState,e]}function gi(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=Jo.updateQueue)?(t={lastEffect:null},Jo.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function bi(e){return e={current:e},li().memoizedState=e}function vi(){return si().memoizedState}function yi(e,t,n,r){var a=li();Jo.flags|=e,a.memoizedState=gi(1|t,n,void 0,void 0===r?null:r)}function wi(e,t,n,r){var a=si();r=void 0===r?null:r;var o=void 0;if(null!==ei){var i=ei.memoizedState;if(o=i.destroy,null!==r&&oi(r,i.deps))return void gi(t,n,o,r)}Jo.flags|=e,a.memoizedState=gi(1|t,n,o,r)}function ki(e,t){return yi(516,4,e,t)}function Ei(e,t){return wi(516,4,e,t)}function Si(e,t){return wi(4,2,e,t)}function xi(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function _i(e,t,n){return n=null!=n?n.concat([e]):null,wi(4,2,xi.bind(null,t,e),n)}function Ci(){}function Ti(e,t){var n=si();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Ai(e,t){var n=si();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Li(e,t){var n=qa();Ga(98>n?98:n,(function(){e(!0)})),Ga(97<n?97:n,(function(){var n=Qo.transition;Qo.transition=1;try{e(!1),t()}finally{Qo.transition=n}}))}function Ni(e,t,n){var r=fs(),a=ps(e),o={lane:a,action:n,eagerReducer:null,eagerState:null,next:null},i=t.pending;if(null===i?o.next=o:(o.next=i.next,i.next=o),t.pending=o,i=e.alternate,e===Jo||null!==i&&i===Jo)ri=ni=!0;else{if(0===e.lanes&&(null===i||0===i.lanes)&&null!==(i=t.lastRenderedReducer))try{var l=t.lastRenderedState,s=i(l,n);if(o.eagerReducer=i,o.eagerState=s,ur(s,l))return}catch(u){}ms(e,a,r)}}var Ri={readContext:oo,useCallback:ai,useContext:ai,useEffect:ai,useImperativeHandle:ai,useLayoutEffect:ai,useMemo:ai,useReducer:ai,useRef:ai,useState:ai,useDebugValue:ai,useDeferredValue:ai,useTransition:ai,useMutableSource:ai,useOpaqueIdentifier:ai,unstable_isNewReconciler:!1},Pi={readContext:oo,useCallback:function(e,t){return li().memoizedState=[e,void 0===t?null:t],e},useContext:oo,useEffect:ki,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,yi(4,2,xi.bind(null,t,e),n)},useLayoutEffect:function(e,t){return yi(4,2,e,t)},useMemo:function(e,t){var n=li();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=li();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=Ni.bind(null,Jo,e),[r.memoizedState,e]},useRef:bi,useState:hi,useDebugValue:Ci,useDeferredValue:function(e){var t=hi(e),n=t[0],r=t[1];return ki((function(){var t=Qo.transition;Qo.transition=1;try{r(e)}finally{Qo.transition=t}}),[e]),n},useTransition:function(){var e=hi(!1),t=e[0];return bi(e=Li.bind(null,e[1])),[e,t]},useMutableSource:function(e,t,n){var r=li();return r.memoizedState={refs:{getSnapshot:t,setSnapshot:null},source:e,subscribe:n},pi(r,e,t,n)},useOpaqueIdentifier:function(){if(Uo){var e=!1,t=function(e){return{$$typeof:D,toString:e,valueOf:e}}((function(){throw e||(e=!0,n("r:"+(Yr++).toString(36))),Error(i(355))})),n=hi(t)[1];return 0==(2&Jo.mode)&&(Jo.flags|=516,gi(5,(function(){n("r:"+(Yr++).toString(36))}),void 0,null)),t}return hi(t="r:"+(Yr++).toString(36)),t},unstable_isNewReconciler:!1},Oi={readContext:oo,useCallback:Ti,useContext:oo,useEffect:Ei,useImperativeHandle:_i,useLayoutEffect:Si,useMemo:Ai,useReducer:ci,useRef:vi,useState:function(){return ci(ui)},useDebugValue:Ci,useDeferredValue:function(e){var t=ci(ui),n=t[0],r=t[1];return Ei((function(){var t=Qo.transition;Qo.transition=1;try{r(e)}finally{Qo.transition=t}}),[e]),n},useTransition:function(){var e=ci(ui)[0];return[vi().current,e]},useMutableSource:mi,useOpaqueIdentifier:function(){return ci(ui)[0]},unstable_isNewReconciler:!1},Ii={readContext:oo,useCallback:Ti,useContext:oo,useEffect:Ei,useImperativeHandle:_i,useLayoutEffect:Si,useMemo:Ai,useReducer:di,useRef:vi,useState:function(){return di(ui)},useDebugValue:Ci,useDeferredValue:function(e){var t=di(ui),n=t[0],r=t[1];return Ei((function(){var t=Qo.transition;Qo.transition=1;try{r(e)}finally{Qo.transition=t}}),[e]),n},useTransition:function(){var e=di(ui)[0];return[vi().current,e]},useMutableSource:mi,useOpaqueIdentifier:function(){return di(ui)[0]},unstable_isNewReconciler:!1},Di=k.ReactCurrentOwner,Mi=!1;function ji(e,t,n,r){t.child=null===e?To(t,null,n,r):Co(t,e.child,n,r)}function Fi(e,t,n,r,a){n=n.render;var o=t.ref;return ao(t,a),r=ii(e,t,n,r,o,a),null===e||Mi?(t.flags|=1,ji(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function Bi(e,t,n,r,a,o){if(null===e){var i=n.type;return"function"!=typeof i||Gs(i)||void 0!==i.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Vs(n.type,null,r,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,zi(e,t,i,r,a,o))}return i=e.child,0==(a&o)&&(a=i.memoizedProps,(n=null!==(n=n.compare)?n:dr)(a,r)&&e.ref===t.ref)?ol(e,t,o):(t.flags|=1,(e=Zs(i,r)).ref=t.ref,e.return=t,t.child=e)}function zi(e,t,n,r,a,o){if(null!==e&&dr(e.memoizedProps,r)&&e.ref===t.ref){if(Mi=!1,0==(o&a))return t.lanes=e.lanes,ol(e,t,o);0!=(16384&e.flags)&&(Mi=!0)}return qi(e,t,n,r,o)}function Ui(e,t,n){var r=t.pendingProps,a=r.children,o=null!==e?e.memoizedState:null;if("hidden"===r.mode||"unstable-defer-without-hiding"===r.mode)if(0==(4&t.mode))t.memoizedState={baseLanes:0},Es(t,n);else{if(0==(1073741824&n))return e=null!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e},Es(t,e),null;t.memoizedState={baseLanes:0},Es(t,null!==o?o.baseLanes:n)}else null!==o?(r=o.baseLanes|n,t.memoizedState=null):r=n,Es(t,r);return ji(e,t,a,n),t.child}function $i(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=128)}function qi(e,t,n,r,a){var o=ga(n)?ma:fa.current;return o=ha(t,o),ao(t,a),n=ii(e,t,n,r,o,a),null===e||Mi?(t.flags|=1,ji(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function Hi(e,t,n,r,a){if(ga(n)){var o=!0;wa(t)}else o=!1;if(ao(t,a),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),yo(t,n,r),ko(t,n,r,a),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var s=i.context,u=n.contextType;"object"==typeof u&&null!==u?u=oo(u):u=ha(t,u=ga(n)?ma:fa.current);var c=n.getDerivedStateFromProps,d="function"==typeof c||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==r||s!==u)&&wo(t,i,r,u),io=!1;var f=t.memoizedState;i.state=f,po(t,r,i,a),s=t.memoizedState,l!==r||f!==s||pa.current||io?("function"==typeof c&&(go(t,n,c,r),s=t.memoizedState),(l=io||vo(t,n,l,r,f,s,u))?(d||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.flags|=4)):("function"==typeof i.componentDidMount&&(t.flags|=4),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=u,r=l):("function"==typeof i.componentDidMount&&(t.flags|=4),r=!1)}else{i=t.stateNode,so(e,t),l=t.memoizedProps,u=t.type===t.elementType?l:Ka(t.type,l),i.props=u,d=t.pendingProps,f=i.context,"object"==typeof(s=n.contextType)&&null!==s?s=oo(s):s=ha(t,s=ga(n)?ma:fa.current);var p=n.getDerivedStateFromProps;(c="function"==typeof p||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==d||f!==s)&&wo(t,i,r,s),io=!1,f=t.memoizedState,i.state=f,po(t,r,i,a);var m=t.memoizedState;l!==d||f!==m||pa.current||io?("function"==typeof p&&(go(t,n,p,r),m=t.memoizedState),(u=io||vo(t,n,u,r,f,m,s))?(c||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,m,s),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,m,s)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=256)):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=256),t.memoizedProps=r,t.memoizedState=m),i.props=r,i.state=m,i.context=s,r=u):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=256),r=!1)}return Gi(e,t,n,r,o,a)}function Gi(e,t,n,r,a,o){$i(e,t);var i=0!=(64&t.flags);if(!r&&!i)return a&&ka(t,n,!1),ol(e,t,o);r=t.stateNode,Di.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=Co(t,e.child,null,o),t.child=Co(t,null,l,o)):ji(e,t,l,o),t.memoizedState=r.state,a&&ka(t,n,!0),t.child}function Zi(e){var t=e.stateNode;t.pendingContext?va(0,t.pendingContext,t.pendingContext!==t.context):t.context&&va(0,t.context,!1),Oo(e,t.containerInfo)}var Vi,Wi,Yi,Ki,Qi={dehydrated:null,retryLane:0};function Xi(e,t,n){var r,a=t.pendingProps,o=jo.current,i=!1;return(r=0!=(64&t.flags))||(r=(null===e||null!==e.memoizedState)&&0!=(2&o)),r?(i=!0,t.flags&=-65):null!==e&&null===e.memoizedState||void 0===a.fallback||!0===a.unstable_avoidThisFallback||(o|=1),ca(jo,1&o),null===e?(void 0!==a.fallback&&Ho(t),e=a.children,o=a.fallback,i?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Qi,e):"number"==typeof a.unstable_expectedLoadTime?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Qi,t.lanes=33554432,e):((n=Ys({mode:"visible",children:e},t.mode,n,null)).return=t,t.child=n)):(e.memoizedState,i?(a=tl(e,t,a.children,a.fallback,n),i=t.child,o=e.child.memoizedState,i.memoizedState=null===o?{baseLanes:n}:{baseLanes:o.baseLanes|n},i.childLanes=e.childLanes&~n,t.memoizedState=Qi,a):(n=el(e,t,a.children,n),t.memoizedState=null,n))}function Ji(e,t,n,r){var a=e.mode,o=e.child;return t={mode:"hidden",children:t},0==(2&a)&&null!==o?(o.childLanes=0,o.pendingProps=t):o=Ys(t,a,0,null),n=Ws(n,a,r,null),o.return=e,n.return=e,o.sibling=n,e.child=o,n}function el(e,t,n,r){var a=e.child;return e=a.sibling,n=Zs(a,{mode:"visible",children:n}),0==(2&t.mode)&&(n.lanes=r),n.return=t,n.sibling=null,null!==e&&(e.nextEffect=null,e.flags=8,t.firstEffect=t.lastEffect=e),t.child=n}function tl(e,t,n,r,a){var o=t.mode,i=e.child;e=i.sibling;var l={mode:"hidden",children:n};return 0==(2&o)&&t.child!==i?((n=t.child).childLanes=0,n.pendingProps=l,null!==(i=n.lastEffect)?(t.firstEffect=n.firstEffect,t.lastEffect=i,i.nextEffect=null):t.firstEffect=t.lastEffect=null):n=Zs(i,l),null!==e?r=Zs(e,r):(r=Ws(r,o,a,null)).flags|=2,r.return=t,n.return=t,n.sibling=r,t.child=n,r}function nl(e,t){e.lanes|=t;var n=e.alternate;null!==n&&(n.lanes|=t),ro(e.return,t)}function rl(e,t,n,r,a,o){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a,lastEffect:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=a,i.lastEffect=o)}function al(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;if(ji(e,t,r.children,n),0!=(2&(r=jo.current)))r=1&r|2,t.flags|=64;else{if(null!==e&&0!=(64&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&nl(e,n);else if(19===e.tag)nl(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(ca(jo,r),0==(2&t.mode))t.memoizedState=null;else switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===Fo(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),rl(t,!1,a,n,o,t.lastEffect);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===Fo(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}rl(t,!0,n,null,o,t.lastEffect);break;case"together":rl(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function ol(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Ul|=t.lanes,0!=(n&t.childLanes)){if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(n=Zs(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Zs(e,e.pendingProps)).return=t;n.sibling=null}return t.child}return null}function il(e,t){if(!Uo)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function ll(e,t,n){var r=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:case 17:return ga(t.type)&&ba(),null;case 3:return Io(),ua(pa),ua(fa),Yo(),(r=t.stateNode).pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(Zo(t)?t.flags|=4:r.hydrate||(t.flags|=256)),Wi(t),null;case 5:Mo(t);var o=Po(Ro.current);if(n=t.type,null!==e&&null!=t.stateNode)Yi(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=128);else{if(!r){if(null===t.stateNode)throw Error(i(166));return null}if(e=Po(Lo.current),Zo(t)){r=t.stateNode,n=t.type;var l=t.memoizedProps;switch(r[Qr]=t,r[Xr]=l,n){case"dialog":Lr("cancel",r),Lr("close",r);break;case"iframe":case"object":case"embed":Lr("load",r);break;case"video":case"audio":for(e=0;e<_r.length;e++)Lr(_r[e],r);break;case"source":Lr("error",r);break;case"img":case"image":case"link":Lr("error",r),Lr("load",r);break;case"details":Lr("toggle",r);break;case"input":ee(r,l),Lr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!l.multiple},Lr("invalid",r);break;case"textarea":se(r,l),Lr("invalid",r)}for(var u in Se(n,l),e=null,l)l.hasOwnProperty(u)&&(o=l[u],"children"===u?"string"==typeof o?r.textContent!==o&&(e=["children",o]):"number"==typeof o&&r.textContent!==""+o&&(e=["children",""+o]):s.hasOwnProperty(u)&&null!=o&&"onScroll"===u&&Lr("scroll",r));switch(n){case"input":K(r),re(r,l,!0);break;case"textarea":K(r),ce(r);break;case"select":case"option":break;default:"function"==typeof l.onClick&&(r.onclick=Br)}r=e,t.updateQueue=r,null!==r&&(t.flags|=4)}else{switch(u=9===o.nodeType?o:o.ownerDocument,e===de.html&&(e=fe(n)),e===de.html?"script"===n?((e=u.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=u.createElement(n,{is:r.is}):(e=u.createElement(n),"select"===n&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,n),e[Qr]=t,e[Xr]=r,Vi(e,t,!1,!1),t.stateNode=e,u=xe(n,r),n){case"dialog":Lr("cancel",e),Lr("close",e),o=r;break;case"iframe":case"object":case"embed":Lr("load",e),o=r;break;case"video":case"audio":for(o=0;o<_r.length;o++)Lr(_r[o],e);o=r;break;case"source":Lr("error",e),o=r;break;case"img":case"image":case"link":Lr("error",e),Lr("load",e),o=r;break;case"details":Lr("toggle",e),o=r;break;case"input":ee(e,r),o=J(e,r),Lr("invalid",e);break;case"option":o=oe(e,r);break;case"select":e._wrapperState={wasMultiple:!!r.multiple},o=a({},r,{value:void 0}),Lr("invalid",e);break;case"textarea":se(e,r),o=le(e,r),Lr("invalid",e);break;default:o=r}Se(n,o);var c=o;for(l in c)if(c.hasOwnProperty(l)){var d=c[l];"style"===l?ke(e,d):"dangerouslySetInnerHTML"===l?null!=(d=d?d.__html:void 0)&&ge(e,d):"children"===l?"string"==typeof d?("textarea"!==n||""!==d)&&be(e,d):"number"==typeof d&&be(e,""+d):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(s.hasOwnProperty(l)?null!=d&&"onScroll"===l&&Lr("scroll",e):null!=d&&w(e,l,d,u))}switch(n){case"input":K(e),re(e,r,!1);break;case"textarea":K(e),ce(e);break;case"option":null!=r.value&&e.setAttribute("value",""+W(r.value));break;case"select":e.multiple=!!r.multiple,null!=(l=r.value)?ie(e,!!r.multiple,l,!1):null!=r.defaultValue&&ie(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof o.onClick&&(e.onclick=Br)}$r(n,r)&&(t.flags|=4)}null!==t.ref&&(t.flags|=128)}return null;case 6:if(e&&null!=t.stateNode)Ki(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));n=Po(Ro.current),Po(Lo.current),Zo(t)?(r=t.stateNode,n=t.memoizedProps,r[Qr]=t,r.nodeValue!==n&&(t.flags|=4)):((r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[Qr]=t,t.stateNode=r)}return null;case 13:return ua(jo),r=t.memoizedState,0!=(64&t.flags)?(t.lanes=n,t):(r=null!==r,n=!1,null===e?void 0!==t.memoizedProps.fallback&&Zo(t):n=null!==e.memoizedState,r&&!n&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&jo.current)?0===Fl&&(Fl=3):(0!==Fl&&3!==Fl||(Fl=4),null===Ol||0==(134217727&Ul)&&0==(134217727&$l)||vs(Ol,Dl))),(r||n)&&(t.flags|=4),null);case 4:return Io(),Wi(t),null===e&&Rr(t.stateNode.containerInfo),null;case 10:return no(t),null;case 19:if(ua(jo),null===(r=t.memoizedState))return null;if(l=0!=(64&t.flags),null===(u=r.rendering))if(l)il(r,!1);else{if(0!==Fl||null!==e&&0!=(64&e.flags))for(e=t.child;null!==e;){if(null!==(u=Fo(e))){for(t.flags|=64,il(r,!1),null!==(l=u.updateQueue)&&(t.updateQueue=l,t.flags|=4),null===r.lastEffect&&(t.firstEffect=null),t.lastEffect=r.lastEffect,r=n,n=t.child;null!==n;)e=r,(l=n).flags&=2,l.nextEffect=null,l.firstEffect=null,l.lastEffect=null,null===(u=l.alternate)?(l.childLanes=0,l.lanes=e,l.child=null,l.memoizedProps=null,l.memoizedState=null,l.updateQueue=null,l.dependencies=null,l.stateNode=null):(l.childLanes=u.childLanes,l.lanes=u.lanes,l.child=u.child,l.memoizedProps=u.memoizedProps,l.memoizedState=u.memoizedState,l.updateQueue=u.updateQueue,l.type=u.type,e=u.dependencies,l.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return ca(jo,1&jo.current|2),t.child}e=e.sibling}null!==r.tail&&$a()>Zl&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432)}else{if(!l)if(null!==(e=Fo(u))){if(t.flags|=64,l=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),il(r,!0),null===r.tail&&"hidden"===r.tailMode&&!u.alternate&&!Uo)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*$a()-r.renderingStartTime>Zl&&1073741824!==n&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432);r.isBackwards?(u.sibling=t.child,t.child=u):(null!==(n=r.last)?n.sibling=u:t.child=u,r.last=u)}return null!==r.tail?(n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=$a(),n.sibling=null,t=jo.current,ca(jo,l?1&t|2:1&t),n):null;case 23:case 24:return Ss(),null!==e&&null!==e.memoizedState!=(null!==t.memoizedState)&&"unstable-defer-without-hiding"!==r.mode&&(t.flags|=4),null}throw Error(i(156,t.tag))}function sl(e){switch(e.tag){case 1:ga(e.type)&&ba();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Io(),ua(pa),ua(fa),Yo(),0!=(64&(t=e.flags)))throw Error(i(285));return e.flags=-4097&t|64,e;case 5:return Mo(e),null;case 13:return ua(jo),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return ua(jo),null;case 4:return Io(),null;case 10:return no(e),null;case 23:case 24:return Ss(),null;default:return null}}function ul(e,t){try{var n="",r=t;do{n+=Z(r),r=r.return}while(r);var a=n}catch(o){a="\nError generating stack: "+o.message+"\n"+o.stack}return{value:e,source:t,stack:a}}function cl(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}Vi=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Wi=function(){},Yi=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,Po(Lo.current);var i,l=null;switch(n){case"input":o=J(e,o),r=J(e,r),l=[];break;case"option":o=oe(e,o),r=oe(e,r),l=[];break;case"select":o=a({},o,{value:void 0}),r=a({},r,{value:void 0}),l=[];break;case"textarea":o=le(e,o),r=le(e,r),l=[];break;default:"function"!=typeof o.onClick&&"function"==typeof r.onClick&&(e.onclick=Br)}for(d in Se(n,r),n=null,o)if(!r.hasOwnProperty(d)&&o.hasOwnProperty(d)&&null!=o[d])if("style"===d){var u=o[d];for(i in u)u.hasOwnProperty(i)&&(n||(n={}),n[i]="")}else"dangerouslySetInnerHTML"!==d&&"children"!==d&&"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&"autoFocus"!==d&&(s.hasOwnProperty(d)?l||(l=[]):(l=l||[]).push(d,null));for(d in r){var c=r[d];if(u=null!=o?o[d]:void 0,r.hasOwnProperty(d)&&c!==u&&(null!=c||null!=u))if("style"===d)if(u){for(i in u)!u.hasOwnProperty(i)||c&&c.hasOwnProperty(i)||(n||(n={}),n[i]="");for(i in c)c.hasOwnProperty(i)&&u[i]!==c[i]&&(n||(n={}),n[i]=c[i])}else n||(l||(l=[]),l.push(d,n)),n=c;else"dangerouslySetInnerHTML"===d?(c=c?c.__html:void 0,u=u?u.__html:void 0,null!=c&&u!==c&&(l=l||[]).push(d,c)):"children"===d?"string"!=typeof c&&"number"!=typeof c||(l=l||[]).push(d,""+c):"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&(s.hasOwnProperty(d)?(null!=c&&"onScroll"===d&&Lr("scroll",e),l||u===c||(l=[])):"object"==typeof c&&null!==c&&c.$$typeof===D?c.toString():(l=l||[]).push(d,c))}n&&(l=l||[]).push("style",n);var d=l;(t.updateQueue=d)&&(t.flags|=4)}},Ki=function(e,t,n,r){n!==r&&(t.flags|=4)};var dl="function"==typeof WeakMap?WeakMap:Map;function fl(e,t,n){(n=uo(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Kl||(Kl=!0,Ql=r),cl(0,t)},n}function pl(e,t,n){(n=uo(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var a=t.value;n.payload=function(){return cl(0,t),r(a)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Xl?Xl=new Set([this]):Xl.add(this),cl(0,t));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}var ml="function"==typeof WeakSet?WeakSet:Set;function hl(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(n){zs(e,n)}else t.current=null}function gl(e,t){switch(t.tag){case 0:case 11:case 15:case 22:case 5:case 6:case 4:case 17:return;case 1:if(256&t.flags&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Ka(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&Zr(t.stateNode.containerInfo))}throw Error(i(163))}function bl(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{if(3==(3&e.tag)){var r=e.create;e.destroy=r()}e=e.next}while(e!==t)}if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{var a=e;r=a.next,0!=(4&(a=a.tag))&&0!=(1&a)&&(js(n,e),Ms(n,e)),e=r}while(e!==t)}return;case 1:return e=n.stateNode,4&n.flags&&(null===t?e.componentDidMount():(r=n.elementType===n.type?t.memoizedProps:Ka(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&mo(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:case 1:e=n.child.stateNode}mo(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&$r(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:case 19:case 17:case 20:case 21:case 23:case 24:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&kt(n)))))}throw Error(i(163))}function vl(e,t){for(var n=e;;){if(5===n.tag){var r=n.stateNode;if(t)"function"==typeof(r=r.style).setProperty?r.setProperty("display","none","important"):r.display="none";else{r=n.stateNode;var a=n.memoizedProps.style;a=null!=a&&a.hasOwnProperty("display")?a.display:null,r.style.display=we("display",a)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else if((23!==n.tag&&24!==n.tag||null===n.memoizedState||n===e)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function yl(e,t){if(Sa&&"function"==typeof Sa.onCommitFiberUnmount)try{Sa.onCommitFiberUnmount(Ea,t)}catch(o){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var n=e=e.next;do{var r=n,a=r.destroy;if(r=r.tag,void 0!==a)if(0!=(4&r))js(t,n);else{r=t;try{a()}catch(o){zs(r,o)}}n=n.next}while(n!==e)}break;case 1:if(hl(t),"function"==typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(o){zs(t,o)}break;case 5:hl(t);break;case 4:_l(e,t)}}function wl(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function kl(e){return 5===e.tag||3===e.tag||4===e.tag}function El(e){e:{for(var t=e.return;null!==t;){if(kl(t))break e;t=t.return}throw Error(i(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(i(161))}16&n.flags&&(be(t,""),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||kl(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.flags)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.flags)){n=n.stateNode;break e}}r?Sl(e,n,t):xl(e,n,t)}function Sl(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Br));else if(4!==r&&null!==(e=e.child))for(Sl(e,t,n),e=e.sibling;null!==e;)Sl(e,t,n),e=e.sibling}function xl(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(xl(e,t,n),e=e.sibling;null!==e;)xl(e,t,n),e=e.sibling}function _l(e,t){for(var n,r,a=t,o=!1;;){if(!o){o=a.return;e:for(;;){if(null===o)throw Error(i(160));switch(n=o.stateNode,o.tag){case 5:r=!1;break e;case 3:case 4:n=n.containerInfo,r=!0;break e}o=o.return}o=!0}if(5===a.tag||6===a.tag){e:for(var l=e,s=a,u=s;;)if(yl(l,u),null!==u.child&&4!==u.tag)u.child.return=u,u=u.child;else{if(u===s)break e;for(;null===u.sibling;){if(null===u.return||u.return===s)break e;u=u.return}u.sibling.return=u.return,u=u.sibling}r?(l=n,s=a.stateNode,8===l.nodeType?l.parentNode.removeChild(s):l.removeChild(s)):n.removeChild(a.stateNode)}else if(4===a.tag){if(null!==a.child){n=a.stateNode.containerInfo,r=!0,a.child.return=a,a=a.child;continue}}else if(yl(e,a),null!==a.child){a.child.return=a,a=a.child;continue}if(a===t)break;for(;null===a.sibling;){if(null===a.return||a.return===t)return;4===(a=a.return).tag&&(o=!1)}a.sibling.return=a.return,a=a.sibling}}function Cl(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(null!==(n=null!==n?n.lastEffect:null)){var r=n=n.next;do{3==(3&r.tag)&&(e=r.destroy,r.destroy=void 0,void 0!==e&&e()),r=r.next}while(r!==n)}return;case 1:case 12:case 17:return;case 5:if(null!=(n=t.stateNode)){r=t.memoizedProps;var a=null!==e?e.memoizedProps:r;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,null!==o){for(n[Xr]=r,"input"===e&&"radio"===r.type&&null!=r.name&&te(n,r),xe(e,a),t=xe(e,r),a=0;a<o.length;a+=2){var l=o[a],s=o[a+1];"style"===l?ke(n,s):"dangerouslySetInnerHTML"===l?ge(n,s):"children"===l?be(n,s):w(n,l,s,t)}switch(e){case"input":ne(n,r);break;case"textarea":ue(n,r);break;case"select":e=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(o=r.value)?ie(n,!!r.multiple,o,!1):e!==!!r.multiple&&(null!=r.defaultValue?ie(n,!!r.multiple,r.defaultValue,!0):ie(n,!!r.multiple,r.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(i(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((n=t.stateNode).hydrate&&(n.hydrate=!1,kt(n.containerInfo)));case 13:return null!==t.memoizedState&&(Gl=$a(),vl(t.child,!0)),void Tl(t);case 19:return void Tl(t);case 23:case 24:return void vl(t,null!==t.memoizedState)}throw Error(i(163))}function Tl(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new ml),t.forEach((function(t){var r=$s.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function Al(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&(null!==(t=t.memoizedState)&&null===t.dehydrated)}var Ll=Math.ceil,Nl=k.ReactCurrentDispatcher,Rl=k.ReactCurrentOwner,Pl=0,Ol=null,Il=null,Dl=0,Ml=0,jl=sa(0),Fl=0,Bl=null,zl=0,Ul=0,$l=0,ql=0,Hl=null,Gl=0,Zl=1/0;function Vl(){Zl=$a()+500}var Wl,Yl=null,Kl=!1,Ql=null,Xl=null,Jl=!1,es=null,ts=90,ns=[],rs=[],as=null,os=0,is=null,ls=-1,ss=0,us=0,cs=null,ds=!1;function fs(){return 0!=(48&Pl)?$a():-1!==ls?ls:ls=$a()}function ps(e){if(0==(2&(e=e.mode)))return 1;if(0==(4&e))return 99===qa()?1:2;if(0===ss&&(ss=zl),0!==Ya.transition){0!==us&&(us=null!==Hl?Hl.pendingLanes:0),e=ss;var t=4186112&~us;return 0===(t&=-t)&&(0===(t=(e=4186112&~e)&-e)&&(t=8192)),t}return e=qa(),0!=(4&Pl)&&98===e?e=Bt(12,ss):e=Bt(e=function(e){switch(e){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}(e),ss),e}function ms(e,t,n){if(50<os)throw os=0,is=null,Error(i(185));if(null===(e=hs(e,t)))return null;$t(e,t,n),e===Ol&&($l|=t,4===Fl&&vs(e,Dl));var r=qa();1===t?0!=(8&Pl)&&0==(48&Pl)?ys(e):(gs(e,n),0===Pl&&(Vl(),Va())):(0==(4&Pl)||98!==r&&99!==r||(null===as?as=new Set([e]):as.add(e)),gs(e,n)),Hl=e}function hs(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}function gs(e,t){for(var n=e.callbackNode,r=e.suspendedLanes,a=e.pingedLanes,o=e.expirationTimes,l=e.pendingLanes;0<l;){var s=31-qt(l),u=1<<s,c=o[s];if(-1===c){if(0==(u&r)||0!=(u&a)){c=t,Mt(u);var d=Dt;o[s]=10<=d?c+250:6<=d?c+5e3:-1}}else c<=t&&(e.expiredLanes|=u);l&=~u}if(r=jt(e,e===Ol?Dl:0),t=Dt,0===r)null!==n&&(n!==Ma&&Ca(n),e.callbackNode=null,e.callbackPriority=0);else{if(null!==n){if(e.callbackPriority===t)return;n!==Ma&&Ca(n)}15===t?(n=ys.bind(null,e),null===Fa?(Fa=[n],Ba=_a(Ra,Wa)):Fa.push(n),n=Ma):14===t?n=Za(99,ys.bind(null,e)):(n=function(e){switch(e){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(i(358,e))}}(t),n=Za(n,bs.bind(null,e))),e.callbackPriority=t,e.callbackNode=n}}function bs(e){if(ls=-1,us=ss=0,0!=(48&Pl))throw Error(i(327));var t=e.callbackNode;if(Ds()&&e.callbackNode!==t)return null;var n=jt(e,e===Ol?Dl:0);if(0===n)return null;var r=n,a=Pl;Pl|=16;var o=Cs();for(Ol===e&&Dl===r||(Vl(),xs(e,r));;)try{Ls();break}catch(s){_s(e,s)}if(to(),Nl.current=o,Pl=a,null!==Il?r=0:(Ol=null,Dl=0,r=Fl),0!=(zl&$l))xs(e,0);else if(0!==r){if(2===r&&(Pl|=64,e.hydrate&&(e.hydrate=!1,Zr(e.containerInfo)),0!==(n=Ft(e))&&(r=Ts(e,n))),1===r)throw t=Bl,xs(e,0),vs(e,n),gs(e,$a()),t;switch(e.finishedWork=e.current.alternate,e.finishedLanes=n,r){case 0:case 1:throw Error(i(345));case 2:case 5:Ps(e);break;case 3:if(vs(e,n),(62914560&n)===n&&10<(r=Gl+500-$a())){if(0!==jt(e,0))break;if(((a=e.suspendedLanes)&n)!==n){fs(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=Hr(Ps.bind(null,e),r);break}Ps(e);break;case 4:if(vs(e,n),(4186112&n)===n)break;for(r=e.eventTimes,a=-1;0<n;){var l=31-qt(n);o=1<<l,(l=r[l])>a&&(a=l),n&=~o}if(n=a,10<(n=(120>(n=$a()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Ll(n/1960))-n)){e.timeoutHandle=Hr(Ps.bind(null,e),n);break}Ps(e);break;default:throw Error(i(329))}}return gs(e,$a()),e.callbackNode===t?bs.bind(null,e):null}function vs(e,t){for(t&=~ql,t&=~$l,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-qt(t),r=1<<n;e[n]=-1,t&=~r}}function ys(e){if(0!=(48&Pl))throw Error(i(327));if(Ds(),e===Ol&&0!=(e.expiredLanes&Dl)){var t=Dl,n=Ts(e,t);0!=(zl&$l)&&(n=Ts(e,t=jt(e,t)))}else n=Ts(e,t=jt(e,0));if(0!==e.tag&&2===n&&(Pl|=64,e.hydrate&&(e.hydrate=!1,Zr(e.containerInfo)),0!==(t=Ft(e))&&(n=Ts(e,t))),1===n)throw n=Bl,xs(e,0),vs(e,t),gs(e,$a()),n;return e.finishedWork=e.current.alternate,e.finishedLanes=t,Ps(e),gs(e,$a()),null}function ws(e,t){var n=Pl;Pl|=1;try{return e(t)}finally{0===(Pl=n)&&(Vl(),Va())}}function ks(e,t){var n=Pl;Pl&=-2,Pl|=8;try{return e(t)}finally{0===(Pl=n)&&(Vl(),Va())}}function Es(e,t){ca(jl,Ml),Ml|=t,zl|=t}function Ss(){Ml=jl.current,ua(jl)}function xs(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,Gr(n)),null!==Il)for(n=Il.return;null!==n;){var r=n;switch(r.tag){case 1:null!=(r=r.type.childContextTypes)&&ba();break;case 3:Io(),ua(pa),ua(fa),Yo();break;case 5:Mo(r);break;case 4:Io();break;case 13:case 19:ua(jo);break;case 10:no(r);break;case 23:case 24:Ss()}n=n.return}Ol=e,Il=Zs(e.current,null),Dl=Ml=zl=t,Fl=0,Bl=null,ql=$l=Ul=0}function _s(e,t){for(;;){var n=Il;try{if(to(),Ko.current=Ri,ni){for(var r=Jo.memoizedState;null!==r;){var a=r.queue;null!==a&&(a.pending=null),r=r.next}ni=!1}if(Xo=0,ti=ei=Jo=null,ri=!1,Rl.current=null,null===n||null===n.return){Fl=1,Bl=t,Il=null;break}e:{var o=e,i=n.return,l=n,s=t;if(t=Dl,l.flags|=2048,l.firstEffect=l.lastEffect=null,null!==s&&"object"==typeof s&&"function"==typeof s.then){var u=s;if(0==(2&l.mode)){var c=l.alternate;c?(l.updateQueue=c.updateQueue,l.memoizedState=c.memoizedState,l.lanes=c.lanes):(l.updateQueue=null,l.memoizedState=null)}var d=0!=(1&jo.current),f=i;do{var p;if(p=13===f.tag){var m=f.memoizedState;if(null!==m)p=null!==m.dehydrated;else{var h=f.memoizedProps;p=void 0!==h.fallback&&(!0!==h.unstable_avoidThisFallback||!d)}}if(p){var g=f.updateQueue;if(null===g){var b=new Set;b.add(u),f.updateQueue=b}else g.add(u);if(0==(2&f.mode)){if(f.flags|=64,l.flags|=16384,l.flags&=-2981,1===l.tag)if(null===l.alternate)l.tag=17;else{var v=uo(-1,1);v.tag=2,co(l,v)}l.lanes|=1;break e}s=void 0,l=t;var y=o.pingCache;if(null===y?(y=o.pingCache=new dl,s=new Set,y.set(u,s)):void 0===(s=y.get(u))&&(s=new Set,y.set(u,s)),!s.has(l)){s.add(l);var w=Us.bind(null,o,u,l);u.then(w,w)}f.flags|=4096,f.lanes=t;break e}f=f.return}while(null!==f);s=Error((V(l.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.")}5!==Fl&&(Fl=2),s=ul(s,l),f=i;do{switch(f.tag){case 3:o=s,f.flags|=4096,t&=-t,f.lanes|=t,fo(f,fl(0,o,t));break e;case 1:o=s;var k=f.type,E=f.stateNode;if(0==(64&f.flags)&&("function"==typeof k.getDerivedStateFromError||null!==E&&"function"==typeof E.componentDidCatch&&(null===Xl||!Xl.has(E)))){f.flags|=4096,t&=-t,f.lanes|=t,fo(f,pl(f,o,t));break e}}f=f.return}while(null!==f)}Rs(n)}catch(S){t=S,Il===n&&null!==n&&(Il=n=n.return);continue}break}}function Cs(){var e=Nl.current;return Nl.current=Ri,null===e?Ri:e}function Ts(e,t){var n=Pl;Pl|=16;var r=Cs();for(Ol===e&&Dl===t||xs(e,t);;)try{As();break}catch(a){_s(e,a)}if(to(),Pl=n,Nl.current=r,null!==Il)throw Error(i(261));return Ol=null,Dl=0,Fl}function As(){for(;null!==Il;)Ns(Il)}function Ls(){for(;null!==Il&&!Ta();)Ns(Il)}function Ns(e){var t=Wl(e.alternate,e,Ml);e.memoizedProps=e.pendingProps,null===t?Rs(e):Il=t,Rl.current=null}function Rs(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(2048&t.flags)){if(null!==(n=ll(n,t,Ml)))return void(Il=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!=(1073741824&Ml)||0==(4&n.mode)){for(var r=0,a=n.child;null!==a;)r|=a.lanes|a.childLanes,a=a.sibling;n.childLanes=r}null!==e&&0==(2048&e.flags)&&(null===e.firstEffect&&(e.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1<t.flags&&(null!==e.lastEffect?e.lastEffect.nextEffect=t:e.firstEffect=t,e.lastEffect=t))}else{if(null!==(n=sl(t)))return n.flags&=2047,void(Il=n);null!==e&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}if(null!==(t=t.sibling))return void(Il=t);Il=t=e}while(null!==t);0===Fl&&(Fl=5)}function Ps(e){var t=qa();return Ga(99,Os.bind(null,e,t)),null}function Os(e,t){do{Ds()}while(null!==es);if(0!=(48&Pl))throw Error(i(327));var n=e.finishedWork;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(i(177));e.callbackNode=null;var r=n.lanes|n.childLanes,a=r,o=e.pendingLanes&~a;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=a,e.mutableReadLanes&=a,e.entangledLanes&=a,a=e.entanglements;for(var l=e.eventTimes,s=e.expirationTimes;0<o;){var u=31-qt(o),c=1<<u;a[u]=0,l[u]=-1,s[u]=-1,o&=~c}if(null!==as&&0==(24&r)&&as.has(e)&&as.delete(e),e===Ol&&(Il=Ol=null,Dl=0),1<n.flags?null!==n.lastEffect?(n.lastEffect.nextEffect=n,r=n.firstEffect):r=n:r=n.firstEffect,null!==r){if(a=Pl,Pl|=32,Rl.current=null,zr=Wt,gr(l=hr())){if("selectionStart"in l)s={start:l.selectionStart,end:l.selectionEnd};else e:if(s=(s=l.ownerDocument)&&s.defaultView||window,(c=s.getSelection&&s.getSelection())&&0!==c.rangeCount){s=c.anchorNode,o=c.anchorOffset,u=c.focusNode,c=c.focusOffset;try{s.nodeType,u.nodeType}catch(C){s=null;break e}var d=0,f=-1,p=-1,m=0,h=0,g=l,b=null;t:for(;;){for(var v;g!==s||0!==o&&3!==g.nodeType||(f=d+o),g!==u||0!==c&&3!==g.nodeType||(p=d+c),3===g.nodeType&&(d+=g.nodeValue.length),null!==(v=g.firstChild);)b=g,g=v;for(;;){if(g===l)break t;if(b===s&&++m===o&&(f=d),b===u&&++h===c&&(p=d),null!==(v=g.nextSibling))break;b=(g=b).parentNode}g=v}s=-1===f||-1===p?null:{start:f,end:p}}else s=null;s=s||{start:0,end:0}}else s=null;Ur={focusedElem:l,selectionRange:s},Wt=!1,cs=null,ds=!1,Yl=r;do{try{Is()}catch(C){if(null===Yl)throw Error(i(330));zs(Yl,C),Yl=Yl.nextEffect}}while(null!==Yl);cs=null,Yl=r;do{try{for(l=e;null!==Yl;){var y=Yl.flags;if(16&y&&be(Yl.stateNode,""),128&y){var w=Yl.alternate;if(null!==w){var k=w.ref;null!==k&&("function"==typeof k?k(null):k.current=null)}}switch(1038&y){case 2:El(Yl),Yl.flags&=-3;break;case 6:El(Yl),Yl.flags&=-3,Cl(Yl.alternate,Yl);break;case 1024:Yl.flags&=-1025;break;case 1028:Yl.flags&=-1025,Cl(Yl.alternate,Yl);break;case 4:Cl(Yl.alternate,Yl);break;case 8:_l(l,s=Yl);var E=s.alternate;wl(s),null!==E&&wl(E)}Yl=Yl.nextEffect}}catch(C){if(null===Yl)throw Error(i(330));zs(Yl,C),Yl=Yl.nextEffect}}while(null!==Yl);if(k=Ur,w=hr(),y=k.focusedElem,l=k.selectionRange,w!==y&&y&&y.ownerDocument&&mr(y.ownerDocument.documentElement,y)){null!==l&&gr(y)&&(w=l.start,void 0===(k=l.end)&&(k=w),"selectionStart"in y?(y.selectionStart=w,y.selectionEnd=Math.min(k,y.value.length)):(k=(w=y.ownerDocument||document)&&w.defaultView||window).getSelection&&(k=k.getSelection(),s=y.textContent.length,E=Math.min(l.start,s),l=void 0===l.end?E:Math.min(l.end,s),!k.extend&&E>l&&(s=l,l=E,E=s),s=pr(y,E),o=pr(y,l),s&&o&&(1!==k.rangeCount||k.anchorNode!==s.node||k.anchorOffset!==s.offset||k.focusNode!==o.node||k.focusOffset!==o.offset)&&((w=w.createRange()).setStart(s.node,s.offset),k.removeAllRanges(),E>l?(k.addRange(w),k.extend(o.node,o.offset)):(w.setEnd(o.node,o.offset),k.addRange(w))))),w=[];for(k=y;k=k.parentNode;)1===k.nodeType&&w.push({element:k,left:k.scrollLeft,top:k.scrollTop});for("function"==typeof y.focus&&y.focus(),y=0;y<w.length;y++)(k=w[y]).element.scrollLeft=k.left,k.element.scrollTop=k.top}Wt=!!zr,Ur=zr=null,e.current=n,Yl=r;do{try{for(y=e;null!==Yl;){var S=Yl.flags;if(36&S&&bl(y,Yl.alternate,Yl),128&S){w=void 0;var x=Yl.ref;if(null!==x){var _=Yl.stateNode;Yl.tag,w=_,"function"==typeof x?x(w):x.current=w}}Yl=Yl.nextEffect}}catch(C){if(null===Yl)throw Error(i(330));zs(Yl,C),Yl=Yl.nextEffect}}while(null!==Yl);Yl=null,ja(),Pl=a}else e.current=n;if(Jl)Jl=!1,es=e,ts=t;else for(Yl=r;null!==Yl;)t=Yl.nextEffect,Yl.nextEffect=null,8&Yl.flags&&((S=Yl).sibling=null,S.stateNode=null),Yl=t;if(0===(r=e.pendingLanes)&&(Xl=null),1===r?e===is?os++:(os=0,is=e):os=0,n=n.stateNode,Sa&&"function"==typeof Sa.onCommitFiberRoot)try{Sa.onCommitFiberRoot(Ea,n,void 0,64==(64&n.current.flags))}catch(C){}if(gs(e,$a()),Kl)throw Kl=!1,e=Ql,Ql=null,e;return 0!=(8&Pl)||Va(),null}function Is(){for(;null!==Yl;){var e=Yl.alternate;ds||null===cs||(0!=(8&Yl.flags)?Je(Yl,cs)&&(ds=!0):13===Yl.tag&&Al(e,Yl)&&Je(Yl,cs)&&(ds=!0));var t=Yl.flags;0!=(256&t)&&gl(e,Yl),0==(512&t)||Jl||(Jl=!0,Za(97,(function(){return Ds(),null}))),Yl=Yl.nextEffect}}function Ds(){if(90!==ts){var e=97<ts?97:ts;return ts=90,Ga(e,Fs)}return!1}function Ms(e,t){ns.push(t,e),Jl||(Jl=!0,Za(97,(function(){return Ds(),null})))}function js(e,t){rs.push(t,e),Jl||(Jl=!0,Za(97,(function(){return Ds(),null})))}function Fs(){if(null===es)return!1;var e=es;if(es=null,0!=(48&Pl))throw Error(i(331));var t=Pl;Pl|=32;var n=rs;rs=[];for(var r=0;r<n.length;r+=2){var a=n[r],o=n[r+1],l=a.destroy;if(a.destroy=void 0,"function"==typeof l)try{l()}catch(u){if(null===o)throw Error(i(330));zs(o,u)}}for(n=ns,ns=[],r=0;r<n.length;r+=2){a=n[r],o=n[r+1];try{var s=a.create;a.destroy=s()}catch(u){if(null===o)throw Error(i(330));zs(o,u)}}for(s=e.current.firstEffect;null!==s;)e=s.nextEffect,s.nextEffect=null,8&s.flags&&(s.sibling=null,s.stateNode=null),s=e;return Pl=t,Va(),!0}function Bs(e,t,n){co(e,t=fl(0,t=ul(n,t),1)),t=fs(),null!==(e=hs(e,1))&&($t(e,1,t),gs(e,t))}function zs(e,t){if(3===e.tag)Bs(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){Bs(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Xl||!Xl.has(r))){var a=pl(n,e=ul(t,e),1);if(co(n,a),a=fs(),null!==(n=hs(n,1)))$t(n,1,a),gs(n,a);else if("function"==typeof r.componentDidCatch&&(null===Xl||!Xl.has(r)))try{r.componentDidCatch(t,e)}catch(o){}break}}n=n.return}}function Us(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=fs(),e.pingedLanes|=e.suspendedLanes&n,Ol===e&&(Dl&n)===n&&(4===Fl||3===Fl&&(62914560&Dl)===Dl&&500>$a()-Gl?xs(e,0):ql|=n),gs(e,t)}function $s(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(0==(2&(t=e.mode))?t=1:0==(4&t)?t=99===qa()?1:2:(0===ss&&(ss=zl),0===(t=zt(62914560&~ss))&&(t=4194304))),n=fs(),null!==(e=hs(e,t))&&($t(e,t,n),gs(e,n))}function qs(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function Hs(e,t,n,r){return new qs(e,t,n,r)}function Gs(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Zs(e,t){var n=e.alternate;return null===n?((n=Hs(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Vs(e,t,n,r,a,o){var l=2;if(r=e,"function"==typeof e)Gs(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case x:return Ws(n.children,a,o,t);case M:l=8,a|=16;break;case _:l=8,a|=1;break;case C:return(e=Hs(12,n,t,8|a)).elementType=C,e.type=C,e.lanes=o,e;case N:return(e=Hs(13,n,t,a)).type=N,e.elementType=N,e.lanes=o,e;case R:return(e=Hs(19,n,t,a)).elementType=R,e.lanes=o,e;case j:return Ys(n,a,o,t);case F:return(e=Hs(24,n,t,a)).elementType=F,e.lanes=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case T:l=10;break e;case A:l=9;break e;case L:l=11;break e;case P:l=14;break e;case O:l=16,r=null;break e;case I:l=22;break e}throw Error(i(130,null==e?e:typeof e,""))}return(t=Hs(l,n,t,a)).elementType=e,t.type=r,t.lanes=o,t}function Ws(e,t,n,r){return(e=Hs(7,e,r,t)).lanes=n,e}function Ys(e,t,n,r){return(e=Hs(23,e,r,t)).elementType=j,e.lanes=n,e}function Ks(e,t,n){return(e=Hs(6,e,null,t)).lanes=n,e}function Qs(e,t,n){return(t=Hs(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Xs(e,t,n){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=Ut(0),this.expirationTimes=Ut(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ut(0),this.mutableSourceEagerHydrationData=null}function Js(e,t,n,r){var a=t.current,o=fs(),l=ps(a);e:if(n){t:{if(Ye(n=n._reactInternals)!==n||1!==n.tag)throw Error(i(170));var s=n;do{switch(s.tag){case 3:s=s.stateNode.context;break t;case 1:if(ga(s.type)){s=s.stateNode.__reactInternalMemoizedMergedChildContext;break t}}s=s.return}while(null!==s);throw Error(i(171))}if(1===n.tag){var u=n.type;if(ga(u)){n=ya(n,u,s);break e}}n=s}else n=da;return null===t.context?t.context=n:t.pendingContext=n,(t=uo(o,l)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),co(a,t),ms(a,l,o),l}function eu(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function tu(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function nu(e,t){tu(e,t),(e=e.alternate)&&tu(e,t)}function ru(e,t,n){var r=null!=n&&null!=n.hydrationOptions&&n.hydrationOptions.mutableSources||null;if(n=new Xs(e,t,null!=n&&!0===n.hydrate),t=Hs(3,null,null,2===t?7:1===t?3:0),n.current=t,t.stateNode=n,lo(t),e[Jr]=n.current,Rr(8===e.nodeType?e.parentNode:e),r)for(e=0;e<r.length;e++){var a=(t=r[e])._getVersion;a=a(t._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[t,a]:n.mutableSourceEagerHydrationData.push(t,a)}this._internalRoot=n}function au(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function ou(e,t,n,r,a){var o=n._reactRootContainer;if(o){var i=o._internalRoot;if("function"==typeof a){var l=a;a=function(){var e=eu(i);l.call(e)}}Js(t,i,e,a)}else{if(o=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new ru(e,0,t?{hydrate:!0}:void 0)}(n,r),i=o._internalRoot,"function"==typeof a){var s=a;a=function(){var e=eu(i);s.call(e)}}ks((function(){Js(t,i,e,a)}))}return eu(i)}function iu(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!au(t))throw Error(i(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:S,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)}Wl=function(e,t,n){var r=t.lanes;if(null!==e)if(e.memoizedProps!==t.pendingProps||pa.current)Mi=!0;else{if(0==(n&r)){switch(Mi=!1,t.tag){case 3:Zi(t),Vo();break;case 5:Do(t);break;case 1:ga(t.type)&&wa(t);break;case 4:Oo(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value;var a=t.type._context;ca(Qa,a._currentValue),a._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!=(n&t.child.childLanes)?Xi(e,t,n):(ca(jo,1&jo.current),null!==(t=ol(e,t,n))?t.sibling:null);ca(jo,1&jo.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(64&e.flags)){if(r)return al(e,t,n);t.flags|=64}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),ca(jo,jo.current),r)break;return null;case 23:case 24:return t.lanes=0,Ui(e,t,n)}return ol(e,t,n)}Mi=0!=(16384&e.flags)}else Mi=!1;switch(t.lanes=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=ha(t,fa.current),ao(t,n),a=ii(null,t,r,e,a,n),t.flags|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,ga(r)){var o=!0;wa(t)}else o=!1;t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,lo(t);var l=r.getDerivedStateFromProps;"function"==typeof l&&go(t,r,l,e),a.updater=bo,t.stateNode=a,a._reactInternals=t,ko(t,r,e,n),t=Gi(null,t,r,!0,o,n)}else t.tag=0,ji(null,t,a,n),t=t.child;return t;case 16:a=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=(o=a._init)(a._payload),t.type=a,o=t.tag=function(e){if("function"==typeof e)return Gs(e)?1:0;if(null!=e){if((e=e.$$typeof)===L)return 11;if(e===P)return 14}return 2}(a),e=Ka(a,e),o){case 0:t=qi(null,t,a,e,n);break e;case 1:t=Hi(null,t,a,e,n);break e;case 11:t=Fi(null,t,a,e,n);break e;case 14:t=Bi(null,t,a,Ka(a.type,e),r,n);break e}throw Error(i(306,a,""))}return t;case 0:return r=t.type,a=t.pendingProps,qi(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 1:return r=t.type,a=t.pendingProps,Hi(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 3:if(Zi(t),r=t.updateQueue,null===e||null===r)throw Error(i(282));if(r=t.pendingProps,a=null!==(a=t.memoizedState)?a.element:null,so(e,t),po(t,r,null,n),(r=t.memoizedState.element)===a)Vo(),t=ol(e,t,n);else{if((o=(a=t.stateNode).hydrate)&&(zo=Vr(t.stateNode.containerInfo.firstChild),Bo=t,o=Uo=!0),o){if(null!=(e=a.mutableSourceEagerHydrationData))for(a=0;a<e.length;a+=2)(o=e[a])._workInProgressVersionPrimary=e[a+1],Wo.push(o);for(n=To(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|1024,n=n.sibling}else ji(e,t,r,n),Vo();t=t.child}return t;case 5:return Do(t),null===e&&Ho(t),r=t.type,a=t.pendingProps,o=null!==e?e.memoizedProps:null,l=a.children,qr(r,a)?l=null:null!==o&&qr(r,o)&&(t.flags|=16),$i(e,t),ji(e,t,l,n),t.child;case 6:return null===e&&Ho(t),null;case 13:return Xi(e,t,n);case 4:return Oo(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Co(t,null,r,n):ji(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,Fi(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 7:return ji(e,t,t.pendingProps,n),t.child;case 8:case 12:return ji(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,a=t.pendingProps,l=t.memoizedProps,o=a.value;var s=t.type._context;if(ca(Qa,s._currentValue),s._currentValue=o,null!==l)if(s=l.value,0===(o=ur(s,o)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(s,o):1073741823))){if(l.children===a.children&&!pa.current){t=ol(e,t,n);break e}}else for(null!==(s=t.child)&&(s.return=t);null!==s;){var u=s.dependencies;if(null!==u){l=s.child;for(var c=u.firstContext;null!==c;){if(c.context===r&&0!=(c.observedBits&o)){1===s.tag&&((c=uo(-1,n&-n)).tag=2,co(s,c)),s.lanes|=n,null!==(c=s.alternate)&&(c.lanes|=n),ro(s.return,n),u.lanes|=n;break}c=c.next}}else l=10===s.tag&&s.type===t.type?null:s.child;if(null!==l)l.return=s;else for(l=s;null!==l;){if(l===t){l=null;break}if(null!==(s=l.sibling)){s.return=l.return,l=s;break}l=l.return}s=l}ji(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=(o=t.pendingProps).children,ao(t,n),r=r(a=oo(a,o.unstable_observedBits)),t.flags|=1,ji(e,t,r,n),t.child;case 14:return o=Ka(a=t.type,t.pendingProps),Bi(e,t,a,o=Ka(a.type,o),r,n);case 15:return zi(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:Ka(r,a),null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),t.tag=1,ga(r)?(e=!0,wa(t)):e=!1,ao(t,n),yo(t,r,a),ko(t,r,a,n),Gi(null,t,r,!0,e,n);case 19:return al(e,t,n);case 23:case 24:return Ui(e,t,n)}throw Error(i(156,t.tag))},ru.prototype.render=function(e){Js(e,this._internalRoot,null,null)},ru.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Js(null,e,null,(function(){t[Jr]=null}))},et=function(e){13===e.tag&&(ms(e,4,fs()),nu(e,4))},tt=function(e){13===e.tag&&(ms(e,67108864,fs()),nu(e,67108864))},nt=function(e){if(13===e.tag){var t=fs(),n=ps(e);ms(e,n,t),nu(e,n)}},rt=function(e,t){return t()},Ce=function(e,t,n){switch(t){case"input":if(ne(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=aa(r);if(!a)throw Error(i(90));Q(r),ne(r,a)}}}break;case"textarea":ue(e,n);break;case"select":null!=(t=n.value)&&ie(e,!!n.multiple,t,!1)}},Pe=ws,Oe=function(e,t,n,r,a){var o=Pl;Pl|=4;try{return Ga(98,e.bind(null,t,n,r,a))}finally{0===(Pl=o)&&(Vl(),Va())}},Ie=function(){0==(49&Pl)&&(function(){if(null!==as){var e=as;as=null,e.forEach((function(e){e.expiredLanes|=24&e.pendingLanes,gs(e,$a())}))}Va()}(),Ds())},De=function(e,t){var n=Pl;Pl|=2;try{return e(t)}finally{0===(Pl=n)&&(Vl(),Va())}};var lu={Events:[na,ra,aa,Ne,Re,Ds,{current:!1}]},su={findFiberByHostInstance:ta,bundleType:0,version:"17.0.2",rendererPackageName:"react-dom"},uu={bundleType:su.bundleType,version:su.version,rendererPackageName:su.rendererPackageName,rendererConfig:su.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:k.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Xe(e))?null:e.stateNode},findFiberByHostInstance:su.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var cu=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!cu.isDisabled&&cu.supportsFiber)try{Ea=cu.inject(uu),Sa=cu}catch(he){}}t.hydrate=function(e,t,n){if(!au(t))throw Error(i(200));return ou(null,e,t,!0,n)}},1542:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(3577)},4335:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,a="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function o(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var l,s,u,c;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(!o(e[s],i[s]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;for(c=e.entries();!(s=c.next()).done;)if(!o(s.value[1],i.get(s.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;return!0}if(a&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(e[s]!==i[s])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof i.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof i.toString)return e.toString()===i.toString();if((l=(u=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!=s--;)if(!Object.prototype.hasOwnProperty.call(i,u[s]))return!1;if(t&&e instanceof Element)return!1;for(s=l;0!=s--;)if(("_owner"!==u[s]&&"__v"!==u[s]&&"__o"!==u[s]||!e.$$typeof)&&!o(e[u[s]],i[u[s]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return o(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},2883:(e,t,n)=>{"use strict";n.d(t,{B6:()=>G,ql:()=>J});var r=n(7378),a=n(3615),o=n.n(a),i=n(4335),l=n.n(i),s=n(3996),u=n.n(s),c=n(4445),d=n.n(c);function f(){return f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},f.apply(this,arguments)}function p(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,m(e,t)}function m(e,t){return m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},m(e,t)}function h(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(n=o[r])>=0||(a[n]=e[n]);return a}var g={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},b={rel:["amphtml","canonical","alternate"]},v={type:["application/ld+json"]},y={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(g).map((function(e){return g[e]})),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},E=Object.keys(k).reduce((function(e,t){return e[k[t]]=t,e}),{}),S=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},x=function(e){var t=S(e,g.TITLE),n=S(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=S(e,"defaultTitle");return t||r||void 0},_=function(e){return S(e,"onChangeClientState")||function(){}},C=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return f({},e,t)}),{})},T=function(e,t){return t.filter((function(e){return void 0!==e[g.BASE]})).map((function(e){return e[g.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),a=0;a<r.length;a+=1){var o=r[a].toLowerCase();if(-1!==e.indexOf(o)&&n[o])return t.concat(n)}return t}),[])},A=function(e,t,n){var r={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var a={};n.filter((function(e){for(var n,o=Object.keys(e),i=0;i<o.length;i+=1){var l=o[i],s=l.toLowerCase();-1===t.indexOf(s)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===s&&"stylesheet"===e[s].toLowerCase()||(n=s),-1===t.indexOf(l)||"innerHTML"!==l&&"cssText"!==l&&"itemprop"!==l||(n=l)}if(!n||!e[n])return!1;var u=e[n].toLowerCase();return r[n]||(r[n]={}),a[n]||(a[n]={}),!r[n][u]&&(a[n][u]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var o=Object.keys(a),i=0;i<o.length;i+=1){var l=o[i],s=f({},r[l],a[l]);r[l]=s}return e}),[]).reverse()},L=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},N=function(e){return Array.isArray(e)?e.join(""):e},R=function(e,t){return Array.isArray(e)?e.reduce((function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e}),{priority:[],default:[]}):{default:e}},P=function(e,t){var n;return f({},e,((n={})[t]=void 0,n))},O=[g.NOSCRIPT,g.SCRIPT,g.STYLE],I=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},D=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},M=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[k[n]||n]=e[n],t}),t)},j=function(e,t){return t.map((function(t,n){var a,o=((a={key:n})["data-rh"]=!0,a);return Object.keys(t).forEach((function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]})),r.createElement(e,o)}))},F=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=M(n,a),[r.createElement(g.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=D(n),o=N(t);return a?"<"+e+' data-rh="true" '+a+">"+I(o,r)+"</"+e+">":"<"+e+' data-rh="true">'+I(o,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return M(t)},toString:function(){return D(t)}};default:return{toComponent:function(){return j(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var a=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var a=void 0===r[t]?t:t+'="'+I(r[t],n)+'"';return e?e+" "+a:a}),""),o=r.innerHTML||r.cssText||"",i=-1===O.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+"</"+e+">")}),"")}(e,t,n)}}}},B=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.noscriptTags,i=e.styleTags,l=e.title,s=void 0===l?"":l,u=e.titleAttributes,c=e.linkTags,d=e.metaTags,f=e.scriptTags,p={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var m=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,a=R(e.metaTags,y),o=R(t,b),i=R(n,v);return{priorityMethods:{toComponent:function(){return[].concat(j(g.META,a.priority),j(g.LINK,o.priority),j(g.SCRIPT,i.priority))},toString:function(){return F(g.META,a.priority,r)+" "+F(g.LINK,o.priority,r)+" "+F(g.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);p=m.priorityMethods,c=m.linkTags,d=m.metaTags,f=m.scriptTags}return{priority:p,base:F(g.BASE,t,r),bodyAttributes:F("bodyAttributes",n,r),htmlAttributes:F("htmlAttributes",a,r),link:F(g.LINK,c,r),meta:F(g.META,d,r),noscript:F(g.NOSCRIPT,o,r),script:F(g.SCRIPT,f,r),style:F(g.STYLE,i,r),title:F(g.TITLE,{title:s,titleAttributes:u},r)}},z=[],U=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?z:n.instances},add:function(e){(n.canUseDOM?z:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?z:n.instances).indexOf(e);(n.canUseDOM?z:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=B({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},$=r.createContext({}),q=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),H="undefined"!=typeof document,G=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new U(r.props.context,t.canUseDOM),r}return p(t,e),t.prototype.render=function(){return r.createElement($.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);G.canUseDOM=H,G.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},G.defaultProps={context:{}},G.displayName="HelmetProvider";var Z=function(e,t){var n,r=document.head||document.querySelector(g.HEAD),a=r.querySelectorAll(e+"[data-rh]"),o=[].slice.call(a),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&("innerHTML"===a?r.innerHTML=t.innerHTML:"cssText"===a?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(a,void 0===t[a]?"":t[a]));r.setAttribute("data-rh","true"),o.some((function(e,t){return n=t,r.isEqualNode(e)}))?o.splice(n,1):i.push(r)})),o.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:o,newTags:i}},V=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),l=0;l<i.length;l+=1){var s=i[l],u=t[s]||"";n.getAttribute(s)!==u&&n.setAttribute(s,u),-1===a.indexOf(s)&&a.push(s);var c=o.indexOf(s);-1!==c&&o.splice(c,1)}for(var d=o.length-1;d>=0;d-=1)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},W=function(e,t){var n=e.baseTag,r=e.htmlAttributes,a=e.linkTags,o=e.metaTags,i=e.noscriptTags,l=e.onChangeClientState,s=e.scriptTags,u=e.styleTags,c=e.title,d=e.titleAttributes;V(g.BODY,e.bodyAttributes),V(g.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=N(e)),V(g.TITLE,t)}(c,d);var f={baseTag:Z(g.BASE,n),linkTags:Z(g.LINK,a),metaTags:Z(g.META,o),noscriptTags:Z(g.NOSCRIPT,i),scriptTags:Z(g.SCRIPT,s),styleTags:Z(g.STYLE,u)},p={},m={};Object.keys(f).forEach((function(e){var t=f[e],n=t.newTags,r=t.oldTags;n.length&&(p[e]=n),r.length&&(m[e]=f[e].oldTags)})),t&&t(),l(e,p,m)},Y=null,K=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,a=null,o=(e=n.helmetInstances.get().map((function(e){var t=f({},e.props);return delete t.context,t})),{baseTag:T(["href"],e),bodyAttributes:C("bodyAttributes",e),defer:S(e,"defer"),encode:S(e,"encodeSpecialCharacters"),htmlAttributes:C("htmlAttributes",e),linkTags:A(g.LINK,["rel","href"],e),metaTags:A(g.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:A(g.NOSCRIPT,["innerHTML"],e),onChangeClientState:_(e),scriptTags:A(g.SCRIPT,["src","innerHTML"],e),styleTags:A(g.STYLE,["cssText"],e),title:x(e),titleAttributes:C("titleAttributes",e),prioritizeSeoTags:L(e,"prioritizeSeoTags")});G.canUseDOM?(t=o,Y&&cancelAnimationFrame(Y),t.defer?Y=requestAnimationFrame((function(){W(t,(function(){Y=null}))})):(W(t),Y=null)):B&&(a=B(o)),r(a)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);K.propTypes={context:q.isRequired},K.displayName="HelmetDispatcher";var Q=["children"],X=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!l()(P(this.props,"helmetData"),P(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case g.SCRIPT:case g.NOSCRIPT:return{innerHTML:t};case g.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return f({},r,((t={})[n.type]=[].concat(r[n.type]||[],[f({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case g.TITLE:return f({},a,((t={})[r.type]=i,t.titleAttributes=f({},o),t));case g.BODY:return f({},a,{bodyAttributes:f({},o)});case g.HTML:return f({},a,{htmlAttributes:f({},o)});default:return f({},a,((n={})[r.type]=f({},o),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=f({},t);return Object.keys(e).forEach((function(t){var r;n=f({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return u()(w.some((function(t){return e.type===t})),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),u()(!t||"string"==typeof t||Array.isArray(t)&&!t.some((function(e){return"string"!=typeof e})),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,a={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,o=r.children,i=h(r,Q),l=Object.keys(i).reduce((function(e,t){return e[E[t]||t]=i[t],e}),{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,o),s){case g.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:l,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:o})}}})),this.mapArrayTypeChildrenToProps(a,t)},n.render=function(){var e=this.props,t=e.children,n=h(e,X),a=f({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof U||(o=new U(o.context,o.instances)),o?r.createElement(K,f({},a,{context:o.value,helmetData:void 0})):r.createElement($.Consumer,null,(function(e){return r.createElement(K,f({},a,{context:e}))}))},t}(r.Component);J.propTypes={base:o().object,bodyAttributes:o().object,children:o().oneOfType([o().arrayOf(o().node),o().node]),defaultTitle:o().string,defer:o().bool,encodeSpecialCharacters:o().bool,htmlAttributes:o().object,link:o().arrayOf(o().object),meta:o().arrayOf(o().object),noscript:o().arrayOf(o().object),onChangeClientState:o().func,script:o().arrayOf(o().object),style:o().arrayOf(o().object),title:o().string,titleAttributes:o().object,titleTemplate:o().string,prioritizeSeoTags:o().bool,helmetData:o().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},8702:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,a=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,f=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,h=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,b=n?Symbol.for("react.block"):60121,v=n?Symbol.for("react.fundamental"):60117,y=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case d:case o:case l:case i:case p:return e;default:switch(e=e&&e.$$typeof){case u:case f:case g:case h:case s:return e;default:return t}}case a:return t}}}function E(e){return k(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=u,t.ContextProvider=s,t.Element=r,t.ForwardRef=f,t.Fragment=o,t.Lazy=g,t.Memo=h,t.Portal=a,t.Profiler=l,t.StrictMode=i,t.Suspense=p,t.isAsyncMode=function(e){return E(e)||k(e)===c},t.isConcurrentMode=E,t.isContextConsumer=function(e){return k(e)===u},t.isContextProvider=function(e){return k(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===f},t.isFragment=function(e){return k(e)===o},t.isLazy=function(e){return k(e)===g},t.isMemo=function(e){return k(e)===h},t.isPortal=function(e){return k(e)===a},t.isProfiler=function(e){return k(e)===l},t.isStrictMode=function(e){return k(e)===i},t.isSuspense=function(e){return k(e)===p},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===l||e===i||e===p||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===h||e.$$typeof===s||e.$$typeof===u||e.$$typeof===f||e.$$typeof===v||e.$$typeof===y||e.$$typeof===w||e.$$typeof===b)},t.typeOf=k},9185:(e,t,n)=>{"use strict";e.exports=n(8702)},1237:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}var l=n(7378),s=n(3615),u=[],c=[];function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then((function(e){return n.loading=!1,n.loaded=e,e})).catch((function(e){throw n.loading=!1,n.error=e,e})),n}function f(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(r){var a=d(e[r]);a.loading?t.loading=!0:(t.loaded[r]=a.loaded,t.error=a.error),n.push(a.promise),a.promise.then((function(e){t.loaded[r]=e})).catch((function(e){t.error=e}))}))}catch(r){t.error=r}return t.promise=Promise.all(n).then((function(e){return t.loading=!1,e})).catch((function(e){throw t.loading=!1,e})),t}function p(e,t){return l.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function m(e,t){var d,f;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var m=i({loader:null,loading:null,delay:200,timeout:null,render:p,webpack:null,modules:null},t),h=null;function g(){return h||(h=e(m.loader)),h.promise}return u.push(g),"function"==typeof m.webpack&&c.push((function(){if((0,m.webpack)().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return g()})),f=d=function(t){function n(n){var r;return o(a(a(r=t.call(this,n)||this)),"retry",(function(){r.setState({error:null,loading:!0,timedOut:!1}),h=e(m.loader),r._loadModule()})),g(),r.state={error:h.error,pastDelay:!1,timedOut:!1,loading:h.loading,loaded:h.loaded},r}r(n,t),n.preload=function(){return g()};var i=n.prototype;return i.UNSAFE_componentWillMount=function(){this._loadModule()},i.componentDidMount=function(){this._mounted=!0},i._loadModule=function(){var e=this;if(this.context.loadable&&Array.isArray(m.modules)&&m.modules.forEach((function(t){e.context.loadable.report(t)})),h.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof m.delay&&(0===m.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),m.delay)),"number"==typeof m.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),m.timeout));var n=function(){t({error:h.error,loaded:h.loaded,loading:h.loading}),e._clearTimeouts()};h.promise.then((function(){return n(),null})).catch((function(e){return n(),null}))}},i.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},i._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},i.render=function(){return this.state.loading||this.state.error?l.createElement(m.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?m.render(this.state.loaded,this.props):null},n}(l.Component),o(d,"contextTypes",{loadable:s.shape({report:s.func.isRequired})}),f}function h(e){return m(d,e)}h.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return m(f,e)};var g=function(e){function t(){return e.apply(this,arguments)||this}r(t,e);var n=t.prototype;return n.getChildContext=function(){return{loadable:{report:this.props.report}}},n.render=function(){return l.Children.only(this.props.children)},t}(l.Component);function b(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return b(e)}))}o(g,"propTypes",{report:s.func.isRequired}),o(g,"childContextTypes",{loadable:s.shape({report:s.func.isRequired}).isRequired}),h.Capture=g,h.preloadAll=function(){return new Promise((function(e,t){b(u).then(e,t)}))},h.preloadReady=function(){return new Promise((function(e,t){b(c).then(e,e)}))},e.exports=h},5473:(e,t,n)=>{"use strict";n.d(t,{H:()=>l,f:()=>i});var r=n(3620),a=n(5773),o=n(7378);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var a=e.path?(0,r.LX)(t,e):n.length?n[n.length-1].match:r.F0.computeRootMatch(t);return a&&(n.push({route:e,match:a}),e.routes&&i(e.routes,t,n)),a})),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?o.createElement(r.rs,n,e.map((function(e,n){return o.createElement(r.AW,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,a.Z)({},n,{},t,{route:e})):o.createElement(e.component,(0,a.Z)({},n,t,{route:e}))}})}))):null}},4289:(e,t,n)=>{"use strict";n.d(t,{OL:()=>y,VK:()=>c,rU:()=>g});var r=n(3620),a=n(351),o=n(7378),i=n(5036),l=n(5773),s=n(808),u=n(2215),c=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.lX)(t.props),t}return(0,a.Z)(t,e),t.prototype.render=function(){return o.createElement(r.F0,{history:this.history,children:this.props.children})},t}(o.Component);o.Component;var d=function(e,t){return"function"==typeof e?e(t):e},f=function(e,t){return"string"==typeof e?(0,i.ob)(e,null,null,t):e},p=function(e){return e},m=o.forwardRef;void 0===m&&(m=p);var h=m((function(e,t){var n=e.innerRef,r=e.navigate,a=e.onClick,i=(0,s.Z)(e,["innerRef","navigate","onClick"]),u=i.target,c=(0,l.Z)({},i,{onClick:function(e){try{a&&a(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||u&&"_self"!==u||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return c.ref=p!==m&&t||n,o.createElement("a",c)}));var g=m((function(e,t){var n=e.component,a=void 0===n?h:n,c=e.replace,g=e.to,b=e.innerRef,v=(0,s.Z)(e,["component","replace","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=e.history,r=f(d(g,e.location),e.location),s=r?n.createHref(r):"",h=(0,l.Z)({},v,{href:s,navigate:function(){var t=d(g,e.location),r=(0,i.Ep)(e.location)===(0,i.Ep)(f(t));(c||r?n.replace:n.push)(t)}});return p!==m?h.ref=t||b:h.innerRef=b,o.createElement(a,h)}))})),b=function(e){return e},v=o.forwardRef;void 0===v&&(v=b);var y=v((function(e,t){var n=e["aria-current"],a=void 0===n?"page":n,i=e.activeClassName,c=void 0===i?"active":i,p=e.activeStyle,m=e.className,h=e.exact,y=e.isActive,w=e.location,k=e.sensitive,E=e.strict,S=e.style,x=e.to,_=e.innerRef,C=(0,s.Z)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=w||e.location,i=f(d(x,n),n),s=i.pathname,T=s&&s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),A=T?(0,r.LX)(n.pathname,{path:T,exact:h,sensitive:k,strict:E}):null,L=!!(y?y(A,n):A),N="function"==typeof m?m(L):m,R="function"==typeof S?S(L):S;L&&(N=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(N,c),R=(0,l.Z)({},R,p));var P=(0,l.Z)({"aria-current":L&&a||null,className:N,style:R,to:i},C);return b!==v?P.ref=t||_:P.innerRef=_,o.createElement(g,P)}))}))},3620:(e,t,n)=>{"use strict";n.d(t,{AW:()=>x,F0:()=>y,LX:()=>S,TH:()=>O,k6:()=>P,rs:()=>N,s6:()=>v});var r=n(351),a=n(7378),o=n(3615),i=n.n(o),l=n(5036),s=n(2215),u=n(5773),c=n(4039),d=n.n(c),f=(n(9185),n(808)),p=(n(5839),1073741823),m="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var h=a.createContext||function(e,t){var n,o,l="__create-react-context-"+function(){var e="__global_unique_id__";return m[e]=(m[e]||0)+1}()+"__",s=function(e){function n(){for(var t,n,r,a=arguments.length,o=new Array(a),i=0;i<a;i++)o[i]=arguments[i];return(t=e.call.apply(e,[this].concat(o))||this).emitter=(n=t.props.value,r=[],{on:function(e){r.push(e)},off:function(e){r=r.filter((function(t){return t!==e}))},get:function(){return n},set:function(e,t){n=e,r.forEach((function(e){return e(n,t)}))}}),t}(0,r.Z)(n,e);var a=n.prototype;return a.getChildContext=function(){var e;return(e={})[l]=this.emitter,e},a.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,a=e.value;((o=r)===(i=a)?0!==o||1/o==1/i:o!=o&&i!=i)?n=0:(n="function"==typeof t?t(r,a):p,0!==(n|=0)&&this.emitter.set(e.value,n))}var o,i},a.render=function(){return this.props.children},n}(a.Component);s.childContextTypes=((n={})[l]=i().object.isRequired,n);var u=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){0!=((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}(0,r.Z)(n,t);var a=n.prototype;return a.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?p:t},a.componentDidMount=function(){this.context[l]&&this.context[l].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?p:e},a.componentWillUnmount=function(){this.context[l]&&this.context[l].off(this.onUpdate)},a.getValue=function(){return this.context[l]?this.context[l].get():e},a.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(a.Component);return u.contextTypes=((o={})[l]=i().object,o),{Provider:s,Consumer:u}},g=function(e){var t=h();return t.displayName=e,t},b=g("Router-History"),v=g("Router"),y=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._pendingLocation=e}))),n}(0,r.Z)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen((function(t){e._isMounted&&e.setState({location:t})}))),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return a.createElement(v.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},a.createElement(b.Provider,{children:this.props.children||null,value:this.props.history}))},t}(a.Component);a.Component;a.Component;var w={},k=1e4,E=0;function S(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,a=n.exact,o=void 0!==a&&a,i=n.strict,l=void 0!==i&&i,s=n.sensitive,u=void 0!==s&&s;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=w[n]||(w[n]={});if(r[e])return r[e];var a=[],o={regexp:d()(e,a,t),keys:a};return E<k&&(r[e]=o,E++),o}(n,{end:o,strict:l,sensitive:u}),a=r.regexp,i=r.keys,s=a.exec(e);if(!s)return null;var c=s[0],f=s.slice(1),p=e===c;return o&&!p?null:{path:n,url:"/"===n&&""===c?"/":c,isExact:p,params:i.reduce((function(e,t,n){return e[t.name]=f[n],e}),{})}}),null)}var x=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(v.Consumer,null,(function(t){t||(0,s.Z)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?S(n.pathname,e.props):t.match,o=(0,u.Z)({},t,{location:n,match:r}),i=e.props,l=i.children,c=i.component,d=i.render;return Array.isArray(l)&&function(e){return 0===a.Children.count(e)}(l)&&(l=null),a.createElement(v.Provider,{value:o},o.match?l?"function"==typeof l?l(o):l:c?a.createElement(c,o):d?d(o):null:"function"==typeof l?l(o):null)}))},t}(a.Component);function _(e){return"/"===e.charAt(0)?e:"/"+e}function C(e,t){if(!e)return t;var n=_(e);return 0!==t.pathname.indexOf(n)?t:(0,u.Z)({},t,{pathname:t.pathname.substr(n.length)})}function T(e){return"string"==typeof e?e:(0,l.Ep)(e)}function A(e){return function(){(0,s.Z)(!1)}}function L(){}a.Component;var N=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(v.Consumer,null,(function(t){t||(0,s.Z)(!1);var n,r,o=e.props.location||t.location;return a.Children.forEach(e.props.children,(function(e){if(null==r&&a.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?S(o.pathname,(0,u.Z)({},e.props,{path:i})):t.match}})),r?a.cloneElement(n,{location:o,computedMatch:r}):null}))},t}(a.Component);var R=a.useContext;function P(){return R(b)}function O(){return R(v).location}},4039:(e,t,n)=>{var r=n(5182);e.exports=p,e.exports.parse=o,e.exports.compile=function(e,t){return l(o(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=f;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,l="",c=t&&t.delimiter||"/";null!=(n=a.exec(e));){var d=n[0],f=n[1],p=n.index;if(l+=e.slice(i,p),i=p+d.length,f)l+=f[1];else{var m=e[i],h=n[2],g=n[3],b=n[4],v=n[5],y=n[6],w=n[7];l&&(r.push(l),l="");var k=null!=h&&null!=m&&m!==h,E="+"===y||"*"===y,S="?"===y||"*"===y,x=n[2]||c,_=b||v;r.push({name:g||o++,prefix:h||"",delimiter:x,optional:S,repeat:E,partial:k,asterisk:!!w,pattern:_?u(_):w?".*":"[^"+s(x)+"]+?"})}}return i<e.length&&(l+=e.substr(i)),l&&r.push(l),r}function i(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function l(e,t){for(var n=new Array(e.length),a=0;a<e.length;a++)"object"==typeof e[a]&&(n[a]=new RegExp("^(?:"+e[a].pattern+")$",d(t)));return function(t,a){for(var o="",l=t||{},s=(a||{}).pretty?i:encodeURIComponent,u=0;u<e.length;u++){var c=e[u];if("string"!=typeof c){var d,f=l[c.name];if(null==f){if(c.optional){c.partial&&(o+=c.prefix);continue}throw new TypeError('Expected "'+c.name+'" to be defined')}if(r(f)){if(!c.repeat)throw new TypeError('Expected "'+c.name+'" to not repeat, but received `'+JSON.stringify(f)+"`");if(0===f.length){if(c.optional)continue;throw new TypeError('Expected "'+c.name+'" to not be empty')}for(var p=0;p<f.length;p++){if(d=s(f[p]),!n[u].test(d))throw new TypeError('Expected all "'+c.name+'" to match "'+c.pattern+'", but received `'+JSON.stringify(d)+"`");o+=(0===p?c.prefix:c.delimiter)+d}}else{if(d=c.asterisk?encodeURI(f).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):s(f),!n[u].test(d))throw new TypeError('Expected "'+c.name+'" to match "'+c.pattern+'", but received "'+d+'"');o+=c.prefix+d}}else o+=c}return o}}function s(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function u(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function c(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function f(e,t,n){r(t)||(n=t||n,t=[]);for(var a=(n=n||{}).strict,o=!1!==n.end,i="",l=0;l<e.length;l++){var u=e[l];if("string"==typeof u)i+=s(u);else{var f=s(u.prefix),p="(?:"+u.pattern+")";t.push(u),u.repeat&&(p+="(?:"+f+p+")*"),i+=p=u.optional?u.partial?f+"("+p+")?":"(?:"+f+"("+p+"))?":f+"("+p+")"}}var m=s(n.delimiter||"/"),h=i.slice(-m.length)===m;return a||(i=(h?i.slice(0,-m.length):i)+"(?:"+m+"(?=$))?"),i+=o?"$":a&&h?"":"(?="+m+"|$)",c(new RegExp("^"+i,d(n)),t)}function p(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return c(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],a=0;a<e.length;a++)r.push(p(e[a],t,n).source);return c(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return f(o(e,n),t,n)}(e,t,n)}},1535:(e,t,n)=>{"use strict";var r=n(2525),a=60103,o=60106;t.Fragment=60107,t.StrictMode=60108,t.Profiler=60114;var i=60109,l=60110,s=60112;t.Suspense=60113;var u=60115,c=60116;if("function"==typeof Symbol&&Symbol.for){var d=Symbol.for;a=d("react.element"),o=d("react.portal"),t.Fragment=d("react.fragment"),t.StrictMode=d("react.strict_mode"),t.Profiler=d("react.profiler"),i=d("react.provider"),l=d("react.context"),s=d("react.forward_ref"),t.Suspense=d("react.suspense"),u=d("react.memo"),c=d("react.lazy")}var f="function"==typeof Symbol&&Symbol.iterator;function p(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},h={};function g(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}function b(){}function v(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}g.prototype.isReactComponent={},g.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(p(85));this.updater.enqueueSetState(this,e,t,"setState")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=g.prototype;var y=v.prototype=new b;y.constructor=v,r(y,g.prototype),y.isPureReactComponent=!0;var w={current:null},k=Object.prototype.hasOwnProperty,E={key:!0,ref:!0,__self:!0,__source:!0};function S(e,t,n){var r,o={},i=null,l=null;if(null!=t)for(r in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(i=""+t.key),t)k.call(t,r)&&!E.hasOwnProperty(r)&&(o[r]=t[r]);var s=arguments.length-2;if(1===s)o.children=n;else if(1<s){for(var u=Array(s),c=0;c<s;c++)u[c]=arguments[c+2];o.children=u}if(e&&e.defaultProps)for(r in s=e.defaultProps)void 0===o[r]&&(o[r]=s[r]);return{$$typeof:a,type:e,key:i,ref:l,props:o,_owner:w.current}}function x(e){return"object"==typeof e&&null!==e&&e.$$typeof===a}var _=/\/+/g;function C(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function T(e,t,n,r,i){var l=typeof e;"undefined"!==l&&"boolean"!==l||(e=null);var s=!1;if(null===e)s=!0;else switch(l){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case a:case o:s=!0}}if(s)return i=i(s=e),e=""===r?"."+C(s,0):r,Array.isArray(i)?(n="",null!=e&&(n=e.replace(_,"$&/")+"/"),T(i,t,n,"",(function(e){return e}))):null!=i&&(x(i)&&(i=function(e,t){return{$$typeof:a,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,n+(!i.key||s&&s.key===i.key?"":(""+i.key).replace(_,"$&/")+"/")+e)),t.push(i)),1;if(s=0,r=""===r?".":r+":",Array.isArray(e))for(var u=0;u<e.length;u++){var c=r+C(l=e[u],u);s+=T(l,t,n,c,i)}else if(c=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=f&&e[f]||e["@@iterator"])?e:null}(e),"function"==typeof c)for(e=c.call(e),u=0;!(l=e.next()).done;)s+=T(l=l.value,t,n,c=r+C(l,u++),i);else if("object"===l)throw t=""+e,Error(p(31,"[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t));return s}function A(e,t,n){if(null==e)return e;var r=[],a=0;return T(e,r,"","",(function(e){return t.call(n,e,a++)})),r}function L(e){if(-1===e._status){var t=e._result;t=t(),e._status=0,e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}if(1===e._status)return e._result;throw e._result}var N={current:null};function R(){var e=N.current;if(null===e)throw Error(p(321));return e}var P={ReactCurrentDispatcher:N,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:w,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:A,forEach:function(e,t,n){A(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return A(e,(function(){t++})),t},toArray:function(e){return A(e,(function(e){return e}))||[]},only:function(e){if(!x(e))throw Error(p(143));return e}},t.Component=g,t.PureComponent=v,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=P,t.cloneElement=function(e,t,n){if(null==e)throw Error(p(267,e));var o=r({},e.props),i=e.key,l=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(l=t.ref,s=w.current),void 0!==t.key&&(i=""+t.key),e.type&&e.type.defaultProps)var u=e.type.defaultProps;for(c in t)k.call(t,c)&&!E.hasOwnProperty(c)&&(o[c]=void 0===t[c]&&void 0!==u?u[c]:t[c])}var c=arguments.length-2;if(1===c)o.children=n;else if(1<c){u=Array(c);for(var d=0;d<c;d++)u[d]=arguments[d+2];o.children=u}return{$$typeof:a,type:e.type,key:i,ref:l,props:o,_owner:s}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:l,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:i,_context:e},e.Consumer=e},t.createElement=S,t.createFactory=function(e){var t=S.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:s,render:e}},t.isValidElement=x,t.lazy=function(e){return{$$typeof:c,_payload:{_status:-1,_result:e},_init:L}},t.memo=function(e,t){return{$$typeof:u,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return R().useCallback(e,t)},t.useContext=function(e,t){return R().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return R().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return R().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return R().useLayoutEffect(e,t)},t.useMemo=function(e,t){return R().useMemo(e,t)},t.useReducer=function(e,t,n){return R().useReducer(e,t,n)},t.useRef=function(e){return R().useRef(e)},t.useState=function(e){return R().useState(e)},t.version="17.0.2"},7378:(e,t,n)=>{"use strict";e.exports=n(1535)},3323:(e,t)=>{"use strict";var n,r,a,o;if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}if("undefined"==typeof window||"function"!=typeof MessageChannel){var u=null,c=null,d=function(){if(null!==u)try{var e=t.unstable_now();u(!0,e),u=null}catch(n){throw setTimeout(d,0),n}};n=function(e){null!==u?setTimeout(n,0,e):(u=e,setTimeout(d,0))},r=function(e,t){c=setTimeout(e,t)},a=function(){clearTimeout(c)},t.unstable_shouldYield=function(){return!1},o=t.unstable_forceFrameRate=function(){}}else{var f=window.setTimeout,p=window.clearTimeout;if("undefined"!=typeof console){var m=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),"function"!=typeof m&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var h=!1,g=null,b=-1,v=5,y=0;t.unstable_shouldYield=function(){return t.unstable_now()>=y},o=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):v=0<e?Math.floor(1e3/e):5};var w=new MessageChannel,k=w.port2;w.port1.onmessage=function(){if(null!==g){var e=t.unstable_now();y=e+v;try{g(!0,e)?k.postMessage(null):(h=!1,g=null)}catch(n){throw k.postMessage(null),n}}else h=!1},n=function(e){g=e,h||(h=!0,k.postMessage(null))},r=function(e,n){b=f((function(){e(t.unstable_now())}),n)},a=function(){p(b),b=-1}}function E(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,a=e[r];if(!(void 0!==a&&0<_(a,t)))break e;e[r]=t,e[n]=a,n=r}}function S(e){return void 0===(e=e[0])?null:e}function x(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length;r<a;){var o=2*(r+1)-1,i=e[o],l=o+1,s=e[l];if(void 0!==i&&0>_(i,n))void 0!==s&&0>_(s,i)?(e[r]=s,e[l]=n,r=l):(e[r]=i,e[o]=n,r=o);else{if(!(void 0!==s&&0>_(s,n)))break e;e[r]=s,e[l]=n,r=l}}}return t}return null}function _(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var C=[],T=[],A=1,L=null,N=3,R=!1,P=!1,O=!1;function I(e){for(var t=S(T);null!==t;){if(null===t.callback)x(T);else{if(!(t.startTime<=e))break;x(T),t.sortIndex=t.expirationTime,E(C,t)}t=S(T)}}function D(e){if(O=!1,I(e),!P)if(null!==S(C))P=!0,n(M);else{var t=S(T);null!==t&&r(D,t.startTime-e)}}function M(e,n){P=!1,O&&(O=!1,a()),R=!0;var o=N;try{for(I(n),L=S(C);null!==L&&(!(L.expirationTime>n)||e&&!t.unstable_shouldYield());){var i=L.callback;if("function"==typeof i){L.callback=null,N=L.priorityLevel;var l=i(L.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?L.callback=l:L===S(C)&&x(C),I(n)}else x(C);L=S(C)}if(null!==L)var s=!0;else{var u=S(T);null!==u&&r(D,u.startTime-n),s=!1}return s}finally{L=null,N=o,R=!1}}var j=o;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){P||R||(P=!0,n(M))},t.unstable_getCurrentPriorityLevel=function(){return N},t.unstable_getFirstCallbackNode=function(){return S(C)},t.unstable_next=function(e){switch(N){case 1:case 2:case 3:var t=3;break;default:t=N}var n=N;N=t;try{return e()}finally{N=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=j,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=N;N=e;try{return t()}finally{N=n}},t.unstable_scheduleCallback=function(e,o,i){var l=t.unstable_now();switch("object"==typeof i&&null!==i?i="number"==typeof(i=i.delay)&&0<i?l+i:l:i=l,e){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return e={id:A++,callback:o,priorityLevel:e,startTime:i,expirationTime:s=i+s,sortIndex:-1},i>l?(e.sortIndex=i,E(T,e),null===S(C)&&e===S(T)&&(O?a():O=!0,r(D,i-l))):(e.sortIndex=s,E(C,e),P||R||(P=!0,n(M))),e},t.unstable_wrapCallback=function(e){var t=N;return function(){var n=N;N=t;try{return e.apply(this,arguments)}finally{N=n}}}},1102:(e,t,n)=>{"use strict";e.exports=n(3323)},4445:e=>{e.exports=function(e,t,n,r){var a=n?n.call(r,e,t):void 0;if(void 0!==a)return!!a;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s<o.length;s++){var u=o[s];if(!l(u))return!1;var c=e[u],d=t[u];if(!1===(a=n?n.call(r,c,d,u):void 0)||void 0===a&&c!==d)return!1}return!0}},4047:(e,t,n)=>{"use strict";var r=n(7378);var a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=r.useState,i=r.useEffect,l=r.useLayoutEffect,s=r.useDebugValue;function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!a(e,n)}catch(r){return!0}}var c="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=o({inst:{value:n,getSnapshot:t}}),a=r[0].inst,c=r[1];return l((function(){a.value=n,a.getSnapshot=t,u(a)&&c({inst:a})}),[e,n,t]),i((function(){return u(a)&&c({inst:a}),e((function(){u(a)&&c({inst:a})}))}),[e]),s(n),n};t.useSyncExternalStore=void 0!==r.useSyncExternalStore?r.useSyncExternalStore:c},644:(e,t,n)=>{"use strict";e.exports=n(4047)},6809:(e,t,n)=>{"use strict";n.d(t,{default:()=>r});const r={title:"NestJS CLS",tagline:"A continuation-local storage (async context) module compatible with NestJS's dependency injection.",favicon:"img/favicon.ico",url:"https://papooch.github.io",baseUrl:"/nestjs-cls/",trailingSlash:!1,organizationName:"papooch",projectName:"nestjs-cls",deploymentBranch:"gh-pages",onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",i18n:{defaultLocale:"en",locales:["en"],path:"i18n",localeConfigs:{}},plugins:[["/media/papooch/Storage/Ondra/Stuff/Projects/Node/nestjs-cls/node_modules/docusaurus-lunr-search/src/index.js",{indexBaseUrl:!0}]],presets:[["classic",{docs:{routeBasePath:"/",sidebarCollapsed:!0,sidebarPath:"/media/papooch/Storage/Ondra/Stuff/Projects/Node/nestjs-cls/docs/sidebars.js",editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/"},theme:{customCss:"/media/papooch/Storage/Ondra/Stuff/Projects/Node/nestjs-cls/docs/src/css/custom.css"}}]],themeConfig:{metadata:[{name:"keywords",content:"async, context, request, scope, cls, asynclocalstorage, nestjs, proxy"}],navbar:{title:"NestJS CLS",logo:{alt:"NestJS CLS Logo",src:"img/logo.png"},items:[{type:"docSidebar",sidebarId:"documentationSidebar",position:"left",label:"Documentation"},{href:"https://github.com/papooch/nestjs-cls",label:"GitHub",position:"right"},{href:"https://www.npmjs.com/package/nestjs-cls",label:"npm",position:"right"}],hideOnScroll:!1},footer:{style:"dark",links:[{title:"Community",items:[{label:"NestJS Discord",href:"https://discord.gg/nestjs"}]}],copyright:"Copyright \xa9 2023 Ond\u0159ej \u0160vanda (Papooch). Built with Docusaurus."},prism:{theme:{plain:{color:"#000000",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(0, 128, 0)"}},{types:["builtin"],style:{color:"rgb(0, 112, 193)"}},{types:["number","variable","inserted"],style:{color:"rgb(9, 134, 88)"}},{types:["operator"],style:{color:"rgb(0, 0, 0)"}},{types:["constant","char"],style:{color:"rgb(129, 31, 63)"}},{types:["tag"],style:{color:"rgb(128, 0, 0)"}},{types:["attr-name"],style:{color:"rgb(255, 0, 0)"}},{types:["deleted","string"],style:{color:"rgb(163, 21, 21)"}},{types:["changed","punctuation"],style:{color:"rgb(4, 81, 165)"}},{types:["function","keyword"],style:{color:"rgb(0, 0, 255)"}},{types:["class-name"],style:{color:"rgb(38, 127, 153)"}}]},darkTheme:{plain:{color:"#9CDCFE",backgroundColor:"#1E1E1E"},styles:[{types:["prolog"],style:{color:"rgb(0, 0, 128)"}},{types:["comment"],style:{color:"rgb(106, 153, 85)"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"rgb(86, 156, 214)"}},{types:["number","inserted"],style:{color:"rgb(181, 206, 168)"}},{types:["constant"],style:{color:"rgb(100, 102, 149)"}},{types:["attr-name","variable"],style:{color:"rgb(156, 220, 254)"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"rgb(206, 145, 120)"}},{types:["selector"],style:{color:"rgb(215, 186, 125)"}},{types:["tag"],style:{color:"rgb(78, 201, 176)"}},{types:["tag"],languages:["markup"],style:{color:"rgb(86, 156, 214)"}},{types:["punctuation","operator"],style:{color:"rgb(212, 212, 212)"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"rgb(220, 220, 170)"}},{types:["class-name"],style:{color:"rgb(78, 201, 176)"}},{types:["char"],style:{color:"rgb(209, 105, 105)"}}]},additionalLanguages:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},colorMode:{defaultMode:"dark",respectPrefersColorScheme:!0,disableSwitch:!1},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},baseUrlIssueBanner:!0,onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},themes:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1,markdown:{mermaid:!1}}},5773:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(this,arguments)}n.d(t,{Z:()=>r})},351:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function a(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{Z:()=>a})},808:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}n.d(t,{Z:()=>r})},2215:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=!0,a="Invariant failed";function o(e,t){if(!e){if(r)throw new Error(a);var n="function"==typeof t?t():t,o=n?"".concat(a,": ").concat(n):a;throw new Error(o)}}},7529:e=>{"use strict";e.exports={}},6887:e=>{"use strict";e.exports=JSON.parse('{"/nestjs-cls/-716":{"__comp":"1be78505","__context":{"plugin":"1cd7469c"},"versionMetadata":"935f2afb"},"/nestjs-cls/-c45":{"__comp":"17896441","content":"86ea57e0"},"/nestjs-cls/api-212":{"__comp":"17896441","content":"4c9a797e"},"/nestjs-cls/api/module-options-77a":{"__comp":"17896441","content":"97d55a5e"},"/nestjs-cls/api/service-interface-0da":{"__comp":"17896441","content":"df604e10"},"/nestjs-cls/considerations-416":{"__comp":"17896441","content":"94e5e920"},"/nestjs-cls/considerations/compatibility-10c":{"__comp":"17896441","content":"b787da23"},"/nestjs-cls/considerations/security-54f":{"__comp":"17896441","content":"57c14adc"},"/nestjs-cls/features-and-use-cases-1da":{"__comp":"17896441","content":"ef9f7d37"},"/nestjs-cls/features-and-use-cases/additional-cls-setup-d4a":{"__comp":"17896441","content":"6212613f"},"/nestjs-cls/features-and-use-cases/breakin-out-of-di-fdb":{"__comp":"17896441","content":"849c94ea"},"/nestjs-cls/features-and-use-cases/proxy-providers-53b":{"__comp":"17896441","content":"592cbe55"},"/nestjs-cls/features-and-use-cases/request-id-b90":{"__comp":"17896441","content":"f83e606a"},"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference-88f":{"__comp":"17896441","content":"4998a0a4"},"/nestjs-cls/features-and-use-cases/usage-outside-of-web-request-9b7":{"__comp":"17896441","content":"a8d12efa"},"/nestjs-cls/introduction/how-it-works-a84":{"__comp":"17896441","content":"3ac8ff5d"},"/nestjs-cls/introduction/installation-885":{"__comp":"17896441","content":"3b39bba3"},"/nestjs-cls/introduction/quick-start-cf1":{"__comp":"17896441","content":"eca1a52a"},"/nestjs-cls/migration-guide-25f":{"__comp":"17896441","content":"75a2ce58"},"/nestjs-cls/migration-guide/v2x-v3x-992":{"__comp":"17896441","content":"67fa07c1"},"/nestjs-cls/setting-up-cls-context-e63":{"__comp":"17896441","content":"a2c1fdb7"},"/nestjs-cls/setting-up-cls-context/using-a-decurator-b75":{"__comp":"17896441","content":"81cbaa95"},"/nestjs-cls/setting-up-cls-context/using-a-guard-8c0":{"__comp":"17896441","content":"d459cca2"},"/nestjs-cls/setting-up-cls-context/using-a-middleware-ad9":{"__comp":"17896441","content":"ae4976f8"},"/nestjs-cls/setting-up-cls-context/using-an-interceptor-393":{"__comp":"17896441","content":"b09df872"}}')}},e=>{e.O(0,[532],(()=>{return t=6662,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/assets/js/main.ca4c7257.js b/assets/js/main.ca4c7257.js new file mode 100644 index 0000000..b8c1aa2 --- /dev/null +++ b/assets/js/main.ca4c7257.js @@ -0,0 +1,2 @@ +/*! For license information please see main.ca4c7257.js.LICENSE.txt */ +(self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[]).push([[179],{3512:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});n(7378);var r=n(1237),a=n.n(r),o=n(6887);const i={"075c86f0":[()=>n.e(506).then(n.bind(n,9658)),"@site/docs/10_migration-guide/01_v3x-v4x.md",9658],17896441:[()=>Promise.all([n.e(532),n.e(918)]).then(n.bind(n,8135)),"@theme/DocItem",8135],"18c15bff":[()=>n.e(399).then(n.bind(n,6752)),"@site/docs/02_setting-up-cls-context/05_using_cls_run.md",6752],"2d4cceda":[()=>Promise.all([n.e(532),n.e(285)]).then(n.bind(n,2822)),"@site/docs/06_plugins/01_available-plugins/01-transactional/01-prisma-adapter.md",2822],"3ac8ff5d":[()=>n.e(332).then(n.bind(n,4760)),"@site/docs/01_introduction/03_how-it-works.md",4760],"3b39bba3":[()=>Promise.all([n.e(532),n.e(546)]).then(n.bind(n,7309)),"@site/docs/01_introduction/01_installation.md",7309],"4998a0a4":[()=>n.e(872).then(n.bind(n,5436)),"@site/docs/03_features-and-use-cases/05_type-safety-and-type-inference.md",5436],"4c9a797e":[()=>n.e(720).then(n.bind(n,5875)),"@site/docs/04_api/index.md",5875],"57c14adc":[()=>n.e(507).then(n.bind(n,3253)),"@site/docs/05_considerations/01_security.md",3253],"592cbe55":[()=>n.e(437).then(n.bind(n,652)),"@site/docs/03_features-and-use-cases/06_proxy-providers.md",652],"5e95c892":[()=>n.e(661).then(n.bind(n,32)),"@theme/DocsRoot",32],"6212613f":[()=>n.e(849).then(n.bind(n,2867)),"@site/docs/03_features-and-use-cases/02_additional-cls-setup.md",2867],"6bb5cc7f":[()=>n.e(499).then(n.bind(n,6035)),"@site/docs/03_features-and-use-cases/03_breaking-out-of-di.md",6035],"6fbaaecb":[()=>n.e(979).then(n.bind(n,726)),"@site/docs/10_migration-guide/index.md",726],"739a1e5f":[()=>Promise.all([n.e(532),n.e(180)]).then(n.bind(n,7518)),"@site/docs/06_plugins/01_available-plugins/01-transactional/index.md",7518],"86ea57e0":[()=>n.e(202).then(n.bind(n,5737)),"@site/docs/01_introduction/index.md",5737],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"94e5e920":[()=>n.e(575).then(n.bind(n,9257)),"@site/docs/05_considerations/index.md",9257],"97d55a5e":[()=>n.e(823).then(n.bind(n,6274)),"@site/docs/04_api/02_module-options.md",6274],a2c1fdb7:[()=>n.e(776).then(n.bind(n,5308)),"@site/docs/02_setting-up-cls-context/index.md",5308],a7bd4aaa:[()=>n.e(518).then(n.bind(n,2922)),"@theme/DocVersionRoot",2922],a886e75a:[()=>n.e(466).then(n.bind(n,877)),"@site/docs/06_plugins/01_available-plugins/01-transactional/10-creating-custom-adapter.md",877],a8d12efa:[()=>n.e(55).then(n.bind(n,9446)),"@site/docs/03_features-and-use-cases/04_usage-outside-of-web-request.md",9446],a94703ab:[()=>Promise.all([n.e(532),n.e(368)]).then(n.bind(n,552)),"@theme/DocRoot",552],ae4976f8:[()=>n.e(93).then(n.bind(n,5934)),"@site/docs/02_setting-up-cls-context/01_using-a-middleware.md",5934],b09df872:[()=>n.e(246).then(n.bind(n,8625)),"@site/docs/02_setting-up-cls-context/03_using-an-interceptor.md",8625],b67d68ed:[()=>n.e(241).then(n.bind(n,5575)),"@site/docs/06_plugins/02_plugin-api.md",5575],b787da23:[()=>n.e(126).then(n.bind(n,9622)),"@site/docs/05_considerations/02_compatibility.md",9622],baa2f4d8:[()=>n.e(423).then(n.bind(n,8711)),"@site/docs/10_migration-guide/02_v2x-v3x.md",8711],d459cca2:[()=>n.e(47).then(n.bind(n,2041)),"@site/docs/02_setting-up-cls-context/02_using-a-guard.md",2041],df604e10:[()=>n.e(775).then(n.bind(n,1763)),"@site/docs/04_api/01_service-interface.md",1763],e2112352:[()=>n.e(826).then(n.bind(n,1267)),"@site/docs/06_plugins/01_available-plugins/index.md",1267],e83b8e0a:[()=>n.e(446).then(n.bind(n,5834)),"@site/docs/06_plugins/index.md",5834],eb9c95da:[()=>n.e(715).then(n.bind(n,8258)),"@site/docs/02_setting-up-cls-context/04_using-a-decorator.md",8258],eca1a52a:[()=>n.e(873).then(n.bind(n,5638)),"@site/docs/01_introduction/02_quick-start.md",5638],ef9f7d37:[()=>n.e(990).then(n.bind(n,2098)),"@site/docs/03_features-and-use-cases/index.md",2098],effe0ec2:[()=>n.e(378).then(n.t.bind(n,3769,19)),"/home/ondrej/repos/nestjs-cls/docs/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],f83e606a:[()=>n.e(104).then(n.bind(n,8472)),"@site/docs/03_features-and-use-cases/01_request-id.md",8472]};var l=n(4246);function s(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,l.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,l.jsx)("p",{children:String(t)}),(0,l.jsx)("div",{children:(0,l.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,l.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,l.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,l.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,l.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var u=n(7308),c=n(2729);function d(e,t){if("*"===e)return a()({loading:s,loader:()=>n.e(765).then(n.bind(n,765)),modules:["@theme/NotFound"],webpack:()=>[765],render(e,t){const n=e.default;return(0,l.jsx)(c.z,{value:{plugin:{name:"native",id:"default"}},children:(0,l.jsx)(n,{...t})})}});const r=o[`${e}-${t}`],d={},p=[],f=[],m=(0,u.Z)(r);return Object.entries(m).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),a().Map({loading:s,loader:d,modules:p,webpack:()=>f,render(t,n){const a=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const o=r.default;if(!o)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof o&&"function"!=typeof o||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{o[e]=r[e]}));let i=a;const l=n.split(".");l.slice(0,-1).forEach((e=>{i=i[e]})),i[l[l.length-1]]=o}));const o=a.__comp;delete a.__comp;const i=a.__context;return delete a.__context,(0,l.jsx)(c.z,{value:i,children:(0,l.jsx)(o,{...a,...n})})}})}const p=[{path:"/nestjs-cls/",component:d("/nestjs-cls/","499"),routes:[{path:"/nestjs-cls/",component:d("/nestjs-cls/","c85"),routes:[{path:"/nestjs-cls/",component:d("/nestjs-cls/","2fa"),routes:[{path:"/nestjs-cls/api",component:d("/nestjs-cls/api","212"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/api/module-options",component:d("/nestjs-cls/api/module-options","77a"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/api/service-interface",component:d("/nestjs-cls/api/service-interface","0da"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/considerations",component:d("/nestjs-cls/considerations","416"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/considerations/compatibility",component:d("/nestjs-cls/considerations/compatibility","10c"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/considerations/security",component:d("/nestjs-cls/considerations/security","54f"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/features-and-use-cases",component:d("/nestjs-cls/features-and-use-cases","1da"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/features-and-use-cases/additional-cls-setup",component:d("/nestjs-cls/features-and-use-cases/additional-cls-setup","d4a"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/features-and-use-cases/breaking-out-of-di",component:d("/nestjs-cls/features-and-use-cases/breaking-out-of-di","38a"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/features-and-use-cases/proxy-providers",component:d("/nestjs-cls/features-and-use-cases/proxy-providers","53b"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/features-and-use-cases/request-id",component:d("/nestjs-cls/features-and-use-cases/request-id","b90"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference",component:d("/nestjs-cls/features-and-use-cases/type-safety-and-type-inference","88f"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/features-and-use-cases/usage-outside-of-web-request",component:d("/nestjs-cls/features-and-use-cases/usage-outside-of-web-request","9b7"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/introduction/how-it-works",component:d("/nestjs-cls/introduction/how-it-works","a84"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/introduction/installation",component:d("/nestjs-cls/introduction/installation","885"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/introduction/quick-start",component:d("/nestjs-cls/introduction/quick-start","cf1"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/migration-guide",component:d("/nestjs-cls/migration-guide","225"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/migration-guide/v2x-v3x",component:d("/nestjs-cls/migration-guide/v2x-v3x","553"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/migration-guide/v3x-v4x",component:d("/nestjs-cls/migration-guide/v3x-v4x","09e"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/plugins",component:d("/nestjs-cls/plugins","3b3"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/plugins/available-plugins",component:d("/nestjs-cls/plugins/available-plugins","3a5"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/plugins/available-plugins/transactional",component:d("/nestjs-cls/plugins/available-plugins/transactional","927"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/plugins/available-plugins/transactional/creating-custom-adapter",component:d("/nestjs-cls/plugins/available-plugins/transactional/creating-custom-adapter","09b"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/plugins/available-plugins/transactional/prisma-adapter",component:d("/nestjs-cls/plugins/available-plugins/transactional/prisma-adapter","b91"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/plugins/plugin-api",component:d("/nestjs-cls/plugins/plugin-api","8c2"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/setting-up-cls-context",component:d("/nestjs-cls/setting-up-cls-context","e63"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/setting-up-cls-context/using_cls_run",component:d("/nestjs-cls/setting-up-cls-context/using_cls_run","361"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/setting-up-cls-context/using-a-decorator",component:d("/nestjs-cls/setting-up-cls-context/using-a-decorator","cc5"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/setting-up-cls-context/using-a-guard",component:d("/nestjs-cls/setting-up-cls-context/using-a-guard","8c0"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/setting-up-cls-context/using-a-middleware",component:d("/nestjs-cls/setting-up-cls-context/using-a-middleware","ad9"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/setting-up-cls-context/using-an-interceptor",component:d("/nestjs-cls/setting-up-cls-context/using-an-interceptor","393"),exact:!0,sidebar:"documentationSidebar"},{path:"/nestjs-cls/",component:d("/nestjs-cls/","c45"),exact:!0,sidebar:"documentationSidebar"}]}]}]},{path:"*",component:d("*")}]},3210:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,t:()=>i});var r=n(7378),a=n(4246);const o=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,a.jsx)(o.Provider,{value:n,children:t})}},9921:(e,t,n)=>{"use strict";var r=n(7378),a=n(7634),o=n(4289),i=n(2883),l=n(5894);const s=[n(142),n(3887),n(8833),n(6222)];var u=n(3512),c=n(3620),d=n(5473),p=n(4246);function f(e){let{children:t}=e;return(0,p.jsx)(p.Fragment,{children:t})}var m=n(2750),h=n(9939),g=n(1847),y=n(9899),b=n(8836),v=n(9699),w=n(1706),k=n(2064),x=n(2615),S=n(4386);function E(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,h.Z)(),r=(0,v.l)(),a=n[e].htmlLang,o=e=>e.replace("-","_");return(0,p.jsxs)(m.Z,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,p.jsx)("meta",{property:"og:locale",content:o(a)}),Object.values(n).filter((e=>a!==e.htmlLang)).map((e=>(0,p.jsx)("meta",{property:"og:locale:alternate",content:o(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function C(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.Z)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,h.Z)(),{pathname:r}=(0,c.TH)();return e+(0,x.applyTrailingSlash)((0,g.Z)(r),{trailingSlash:n,baseUrl:t})}(),a=t?`${n}${t}`:r;return(0,p.jsxs)(m.Z,{children:[(0,p.jsx)("meta",{property:"og:url",content:a}),(0,p.jsx)("link",{rel:"canonical",href:a})]})}function _(){const{i18n:{currentLocale:e}}=(0,h.Z)(),{metadata:t,image:n}=(0,y.L)();return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(m.Z,{children:[(0,p.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,p.jsx)("body",{className:w.h})]}),n&&(0,p.jsx)(b.d,{image:n}),(0,p.jsx)(C,{}),(0,p.jsx)(E,{}),(0,p.jsx)(S.Z,{tag:k.HX,locale:e}),(0,p.jsx)(m.Z,{children:t.map(((e,t)=>(0,p.jsx)("meta",{...e},t)))})]})}const j=new Map;function T(e){if(j.has(e.pathname))return{...e,pathname:j.get(e.pathname)};if((0,d.f)(u.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return j.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return j.set(e.pathname,t),{...e,pathname:t}}var N=n(3210),R=n(2014),A=n(9749);function L(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];const a=s.map((t=>{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const P=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,A.Z)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),L("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function O(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(u.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class I extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.Z.canUseDOM?L("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=L("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),O(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,p.jsx)(P,{previousLocation:this.previousLocation,location:t,children:(0,p.jsx)(c.AW,{location:t,render:()=>e})})}}const D=I,M="__docusaurus-base-url-issue-banner-container",F="__docusaurus-base-url-issue-banner",z="__docusaurus-base-url-issue-banner-suggestion-container";function B(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${M}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n<div id="${F}" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">${e}</span> ${"/"===e?" (default value)":""}</p>\n <p>We suggest trying baseUrl = <span id="${z}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n document.body.prepend(bannerContainer);\n var suggestionContainer = document.getElementById('${z}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function $(){const{siteConfig:{baseUrl:e}}=(0,h.Z)();return(0,p.jsx)(p.Fragment,{children:!l.Z.canUseDOM&&(0,p.jsx)(m.Z,{children:(0,p.jsx)("script",{children:B(e)})})})}function U(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,h.Z)(),{pathname:n}=(0,c.TH)();return t&&n===e?(0,p.jsx)($,{}):null}function q(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:r,localeConfigs:a}}=(0,h.Z)(),o=(0,g.Z)(e),{htmlLang:i,direction:l}=a[r];return(0,p.jsxs)(m.Z,{children:[(0,p.jsx)("html",{lang:i,dir:l}),(0,p.jsx)("title",{children:t}),(0,p.jsx)("meta",{property:"og:title",content:t}),(0,p.jsx)("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&(0,p.jsx)("meta",{name:"robots",content:"noindex, nofollow"}),e&&(0,p.jsx)("link",{rel:"icon",href:o})]})}var H=n(5526),Z=n(362);function G(){const e=(0,Z.Z)();return(0,p.jsx)(m.Z,{children:(0,p.jsx)("html",{"data-has-hydrated":e})})}function W(){const e=(0,d.H)(u.Z),t=(0,c.TH)();return(0,p.jsx)(H.Z,{children:(0,p.jsx)(R.M,{children:(0,p.jsxs)(N.t,{children:[(0,p.jsxs)(f,{children:[(0,p.jsx)(q,{}),(0,p.jsx)(_,{}),(0,p.jsx)(U,{}),(0,p.jsx)(D,{location:T(t),children:e})]}),(0,p.jsx)(G,{})]})})})}var V=n(6887);const Q=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var K=n(7308);const Y=new Set,J=new Set,X=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ee={prefetch(e){if(!(e=>!X()&&!J.has(e)&&!Y.has(e))(e))return!1;Y.add(e);const t=(0,d.f)(u.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(V).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,K.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Q(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!X()&&!J.has(e))(e)&&(J.add(e),O(e))},te=Object.freeze(ee),ne=Boolean(!0);if(l.Z.canUseDOM){window.docusaurus=te;const e=document.getElementById("__docusaurus"),t=(0,p.jsx)(i.B6,{children:(0,p.jsx)(o.VK,{children:(0,p.jsx)(W,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},l=()=>{if(ne)r.startTransition((()=>{a.hydrateRoot(e,t,{onRecoverableError:n})}));else{const o=a.createRoot(e,{onRecoverableError:n});r.startTransition((()=>{o.render(t)}))}};O(window.location.pathname).then(l)}},2014:(e,t,n)=>{"use strict";n.d(t,{_:()=>d,M:()=>p});var r=n(7378),a=n(6809);const o=JSON.parse('{"docusaurus-lunr-search":{"default":{"fileNames":{"searchDoc":"search-doc-1705944535620.json","lunrIndex":"lunr-index-1705944535620.json"}}},"docusaurus-plugin-content-docs":{"default":{"path":"/nestjs-cls/","versions":[{"name":"current","label":"Next","isLast":true,"path":"/nestjs-cls/","mainDocId":"introduction/index","docs":[{"id":"api/index","path":"/nestjs-cls/api/","sidebar":"documentationSidebar"},{"id":"api/module-options","path":"/nestjs-cls/api/module-options","sidebar":"documentationSidebar"},{"id":"api/service-interface","path":"/nestjs-cls/api/service-interface","sidebar":"documentationSidebar"},{"id":"considerations/compatibility","path":"/nestjs-cls/considerations/compatibility","sidebar":"documentationSidebar"},{"id":"considerations/index","path":"/nestjs-cls/considerations/","sidebar":"documentationSidebar"},{"id":"considerations/security","path":"/nestjs-cls/considerations/security","sidebar":"documentationSidebar"},{"id":"features-and-use-cases/additional-cls-setup","path":"/nestjs-cls/features-and-use-cases/additional-cls-setup","sidebar":"documentationSidebar"},{"id":"features-and-use-cases/breaking-out-of-di","path":"/nestjs-cls/features-and-use-cases/breaking-out-of-di","sidebar":"documentationSidebar"},{"id":"features-and-use-cases/index","path":"/nestjs-cls/features-and-use-cases/","sidebar":"documentationSidebar"},{"id":"features-and-use-cases/proxy-providers","path":"/nestjs-cls/features-and-use-cases/proxy-providers","sidebar":"documentationSidebar"},{"id":"features-and-use-cases/request-id","path":"/nestjs-cls/features-and-use-cases/request-id","sidebar":"documentationSidebar"},{"id":"features-and-use-cases/type-safety-and-type-inference","path":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference","sidebar":"documentationSidebar"},{"id":"features-and-use-cases/usage-outside-of-web-request","path":"/nestjs-cls/features-and-use-cases/usage-outside-of-web-request","sidebar":"documentationSidebar"},{"id":"introduction/how-it-works","path":"/nestjs-cls/introduction/how-it-works","sidebar":"documentationSidebar"},{"id":"introduction/index","path":"/nestjs-cls/","sidebar":"documentationSidebar"},{"id":"introduction/installation","path":"/nestjs-cls/introduction/installation","sidebar":"documentationSidebar"},{"id":"introduction/quick-start","path":"/nestjs-cls/introduction/quick-start","sidebar":"documentationSidebar"},{"id":"migration-guide/index","path":"/nestjs-cls/migration-guide/","sidebar":"documentationSidebar"},{"id":"migration-guide/v2x-v3x","path":"/nestjs-cls/migration-guide/v2x-v3x","sidebar":"documentationSidebar"},{"id":"migration-guide/v3x-v4x","path":"/nestjs-cls/migration-guide/v3x-v4x","sidebar":"documentationSidebar"},{"id":"plugins/available-plugins/index","path":"/nestjs-cls/plugins/available-plugins/","sidebar":"documentationSidebar"},{"id":"plugins/available-plugins/transactional/creating-custom-adapter","path":"/nestjs-cls/plugins/available-plugins/transactional/creating-custom-adapter","sidebar":"documentationSidebar"},{"id":"plugins/available-plugins/transactional/index","path":"/nestjs-cls/plugins/available-plugins/transactional/","sidebar":"documentationSidebar"},{"id":"plugins/available-plugins/transactional/prisma-adapter","path":"/nestjs-cls/plugins/available-plugins/transactional/prisma-adapter","sidebar":"documentationSidebar"},{"id":"plugins/index","path":"/nestjs-cls/plugins/","sidebar":"documentationSidebar"},{"id":"plugins/plugin-api","path":"/nestjs-cls/plugins/plugin-api","sidebar":"documentationSidebar"},{"id":"setting-up-cls-context/index","path":"/nestjs-cls/setting-up-cls-context/","sidebar":"documentationSidebar"},{"id":"setting-up-cls-context/using_cls_run","path":"/nestjs-cls/setting-up-cls-context/using_cls_run","sidebar":"documentationSidebar"},{"id":"setting-up-cls-context/using-a-decorator","path":"/nestjs-cls/setting-up-cls-context/using-a-decorator","sidebar":"documentationSidebar"},{"id":"setting-up-cls-context/using-a-guard","path":"/nestjs-cls/setting-up-cls-context/using-a-guard","sidebar":"documentationSidebar"},{"id":"setting-up-cls-context/using-a-middleware","path":"/nestjs-cls/setting-up-cls-context/using-a-middleware","sidebar":"documentationSidebar"},{"id":"setting-up-cls-context/using-an-interceptor","path":"/nestjs-cls/setting-up-cls-context/using-an-interceptor","sidebar":"documentationSidebar"}],"draftIds":[],"sidebars":{"documentationSidebar":{"link":{"path":"/nestjs-cls/","label":"Introduction"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(7529);const s=JSON.parse('{"docusaurusVersion":"3.1.0","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.1.0"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.1.0"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.1.0"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.1.0"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.1.0"},"docusaurus-lunr-search":{"type":"package","name":"docusaurus-lunr-search","version":"3.3.2"}}}');var u=n(4246);const c={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},d=r.createContext(c);function p(e){let{children:t}=e;return(0,u.jsx)(d.Provider,{value:c,children:t})}},5526:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7378),a=n(5894),o=n(2750),i=n(2615),l=n(9145),s=n(4246);function u(e){let{error:t,tryAgain:n}=e;return(0,s.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,s.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,s.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,s.jsx)(c,{error:t})]})}function c(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,s.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function d(e){let{error:t,tryAgain:n}=e;return(0,s.jsxs)(f,{fallback:()=>(0,s.jsx)(u,{error:t,tryAgain:n}),children:[(0,s.jsx)(o.Z,{children:(0,s.jsx)("title",{children:"Page Error"})}),(0,s.jsx)(l.Z,{children:(0,s.jsx)(u,{error:t,tryAgain:n})})]})}const p=e=>(0,s.jsx)(d,{...e});class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??p)(e)}return e??null}}},5894:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},2750:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(7378);var r=n(2883),a=n(4246);function o(e){return(0,a.jsx)(r.ql,{...e})}},5237:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7378),a=n(4289),o=n(2615),i=n(9939),l=n(4715),s=n(5894),u=n(5741),c=n(1847),d=n(4246);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:h,"data-noBrokenLinkCheck":g,autoAddBaseUrl:y=!0,...b}=e;const{siteConfig:{trailingSlash:v,baseUrl:w}}=(0,i.Z)(),{withBaseUrl:k}=(0,c.C)(),x=(0,u.Z)(),S=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>S.current));const E=p||f;const C=(0,l.Z)(E),_=E?.replace("pathname://","");let j=void 0!==_?(T=_,y&&(e=>e.startsWith("/"))(T)?k(T):T):void 0;var T;j&&C&&(j=(0,o.applyTrailingSlash)(j,{trailingSlash:v,baseUrl:w}));const N=(0,r.useRef)(!1),R=n?a.OL:a.rU,A=s.Z.canUseIntersectionObserver,L=(0,r.useRef)(),P=()=>{N.current||null==j||(window.docusaurus.preload(j),N.current=!0)};(0,r.useEffect)((()=>(!A&&C&&null!=j&&window.docusaurus.prefetch(j),()=>{A&&L.current&&L.current.disconnect()})),[L,j,A,C]);const O=j?.startsWith("#")??!1,I=!j||!C||O;return I||g||x.collectLink(j),I?(0,d.jsx)("a",{ref:S,href:j,...E&&!C&&{target:"_blank",rel:"noopener noreferrer"},...b}):(0,d.jsx)(R,{...b,onMouseEnter:P,onTouchStart:P,innerRef:e=>{S.current=e,A&&e&&C&&(L.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(L.current.unobserve(e),L.current.disconnect(),null!=j&&window.docusaurus.prefetch(j))}))})),L.current.observe(e))},to:j,...n&&{isActive:h,activeClassName:m}})}const f=r.forwardRef(p)},7419:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u,I:()=>s});var r=n(7378),a=n(4246);function o(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(7529);function l(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[t??n]??n??t}function s(e,t){let{message:n,id:r}=e;return o(l({message:n,id:r}),t)}function u(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal <Translate> children",t),new Error("The Docusaurus <Translate> component only accept simple string values");const i=l({message:t,id:n});return(0,a.jsx)(a.Fragment,{children:o(i,r)})}},5167:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},4715:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},1847:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>l});var r=n(7378),a=n(9939),o=n(4715);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},5741:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(7378);n(4246);const a=r.createContext({collectAnchor:()=>{},collectLink:()=>{}}),o=()=>(0,r.useContext)(a);function i(){return o()}},9939:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7378),a=n(2014);function o(){return(0,r.useContext)(a._)}},353:(e,t,n)=>{"use strict";n.d(t,{OD:()=>o,eZ:()=>i});var r=n(9939),a=n(5167);function o(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,r.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}function i(e,t,n){void 0===t&&(t=a.m),void 0===n&&(n={});const r=o(e),i=r?.[t];if(!i&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return i}},362:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7378),a=n(3210);function o(){return(0,r.useContext)(a._)}},9749:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7378);const a=n(5894).Z.canUseDOM?r.useLayoutEffect:r.useEffect},7308:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const l=a?`${a}.${o}`:o;r(i)?e(i,l):t[l]=i}))}(e),t}},2729:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,z:()=>i});var r=n(7378),a=n(4246);const o=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(o),l=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,a.jsx)(o.Provider,{value:l,children:t})}},4924:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>f,gA:()=>c,_r:()=>s,Jo:()=>m,zh:()=>u,yW:()=>p,gB:()=>d});var r=n(3620),a=n(353);const o=e=>e.versions.find((e=>e.isLast));function i(e,t){const n=function(e,t){const n=o(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),a=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const l={},s=()=>(0,a.OD)("docusaurus-plugin-content-docs")??l,u=e=>(0,a.eZ)("docusaurus-plugin-content-docs",e,{failfast:!0});function c(e){void 0===e&&(e={});const t=s(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function d(e){return u(e).versions}function p(e){const t=u(e);return o(t)}function f(e){const t=u(e),{pathname:n}=(0,r.TH)();return i(t,n)}function m(e){const t=u(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=o(e);return{latestDocSuggestion:i(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},8833:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(8504),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},3887:(e,t,n)=>{"use strict";n.r(t);var r=n(6101),a=n(6809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(3109),n(3392)(`./prism-${e}`)})),delete globalThis.Prism}(r.p1)},8825:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});n(7378);var r=n(624),a=n(7419),o=n(9899),i=n(5237),l=n(5741);const s={anchorWithStickyNavbar:"anchorWithStickyNavbar_JmGV",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_pMLv"};var u=n(4246);function c(e){let{as:t,id:n,...c}=e;const d=(0,l.Z)(),{navbar:{hideOnScroll:p}}=(0,o.L)();if("h1"===t||!n)return(0,u.jsx)(t,{...c,id:void 0});d.collectAnchor(n);const f=(0,a.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof c.children?c.children:n});return(0,u.jsxs)(t,{...c,className:(0,r.Z)("anchor",p?s.anchorWithHideOnScrollNavbar:s.anchorWithStickyNavbar,c.className),id:n,children:[c.children,(0,u.jsx)(i.Z,{className:"hash-link",to:`#${n}`,"aria-label":f,title:f,children:"\u200b"})]})}},1858:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(7378);const r={iconExternalLink:"iconExternalLink_nPrP"};var a=n(4246);function o(e){let{width:t=13.5,height:n=13.5}=e;return(0,a.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,a.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},9145:(e,t,n)=>{"use strict";n.d(t,{Z:()=>vt});var r=n(7378),a=n(624),o=n(5526),i=n(8836),l=n(3620),s=n(7419),u=n(6847),c=n(4246);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,l.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,u.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(0,s.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function h(e){const t=e.children??m,{containerRef:n,onClick:r}=f();return(0,c.jsx)("div",{ref:n,role:"region","aria-label":m,children:(0,c.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var g=n(5854),y=n(1706);const b={skipToContent:"skipToContent_oPtH"};function v(){return(0,c.jsx)(h,{className:b.skipToContent})}var w=n(9899),k=n(4234);function x(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:a=1.2,className:o,...i}=e;return(0,c.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,c.jsx)("g",{stroke:r,strokeWidth:a,children:(0,c.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const S={closeButton:"closeButton_J5rP"};function E(e){return(0,c.jsx)("button",{type:"button","aria-label":(0,s.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,a.Z)("clean-btn close",S.closeButton,e.className),children:(0,c.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const C={content:"content_bSb_"};function _(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return(0,c.jsx)("div",{...e,className:(0,a.Z)(C.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const j={announcementBar:"announcementBar_zJRd",announcementBarPlaceholder:"announcementBarPlaceholder_NpUd",announcementBarClose:"announcementBarClose_Jjdj",announcementBarContent:"announcementBarContent_t7IR"};function T(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:r,textColor:a,isCloseable:o}=e;return(0,c.jsxs)("div",{className:j.announcementBar,style:{backgroundColor:r,color:a},role:"banner",children:[o&&(0,c.jsx)("div",{className:j.announcementBarPlaceholder}),(0,c.jsx)(_,{className:j.announcementBarContent}),o&&(0,c.jsx)(E,{onClick:n,className:j.announcementBarClose})]})}var N=n(9067),R=n(9169);var A=n(3879),L=n(197);const P=r.createContext(null);function O(e){let{children:t}=e;const n=function(){const e=(0,N.e)(),t=(0,L.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,A.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return(0,c.jsx)(P.Provider,{value:n,children:t})}function I(e){if(e.component){const t=e.component;return(0,c.jsx)(t,{...e.props})}}function D(){const e=(0,r.useContext)(P);if(!e)throw new A.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,L.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:I(o)})),[a,o,t])}function M(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:o}=D();return(0,c.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,c.jsxs)("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":o}),children:[(0,c.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,c.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var F=n(4561),z=n(362);function B(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function $(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const U={toggle:"toggle_ki11",toggleButton:"toggleButton_MMFG",darkToggleIcon:"darkToggleIcon_U96C",lightToggleIcon:"lightToggleIcon_lgto",toggleButtonDisabled:"toggleButtonDisabled_Uw7m"};function q(e){let{className:t,buttonClassName:n,value:r,onChange:o}=e;const i=(0,z.Z)(),l=(0,s.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,s.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,s.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,c.jsx)("div",{className:(0,a.Z)(U.toggle,t),children:(0,c.jsxs)("button",{className:(0,a.Z)("clean-btn",U.toggleButton,!i&&U.toggleButtonDisabled,n),type:"button",onClick:()=>o("dark"===r?"light":"dark"),disabled:!i,title:l,"aria-label":l,"aria-live":"polite",children:[(0,c.jsx)(B,{className:(0,a.Z)(U.toggleIcon,U.lightToggleIcon)}),(0,c.jsx)($,{className:(0,a.Z)(U.toggleIcon,U.darkToggleIcon)})]})})}const H=r.memo(q),Z={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_m8pZ"};function G(e){let{className:t}=e;const n=(0,w.L)().navbar.style,r=(0,w.L)().colorMode.disableSwitch,{colorMode:a,setColorMode:o}=(0,F.I)();return r?null:(0,c.jsx)(H,{className:t,buttonClassName:"dark"===n?Z.darkNavbarColorModeToggle:void 0,value:a,onChange:o})}var W=n(8340);function V(){return(0,c.jsx)(W.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function Q(){const e=(0,N.e)();return(0,c.jsx)("button",{type:"button","aria-label":(0,s.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,c.jsx)(x,{color:"var(--ifm-color-emphasis-600)"})})}function K(){return(0,c.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,c.jsx)(V,{}),(0,c.jsx)(G,{className:"margin-right--md"}),(0,c.jsx)(Q,{})]})}var Y=n(5237),J=n(1847),X=n(4715);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(1858);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:a,label:o,html:i,isDropdownLink:l,prependBaseUrlToHref:s,...u}=e;const d=(0,J.Z)(r),p=(0,J.Z)(t),f=(0,J.Z)(a,{forcePrependBaseUrl:!0}),m=o&&a&&!(0,X.Z)(a),h=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,c.jsxs)(c.Fragment,{children:[o,m&&(0,c.jsx)(te.Z,{...l&&{width:12,height:12}})]})};return a?(0,c.jsx)(Y.Z,{href:s?f:a,...u,...h}):(0,c.jsx)(Y.Z,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(p)},...u,...h})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const o=(0,c.jsx)(ne,{className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,c.jsx)("li",{children:o}):o}function ae(e){let{className:t,isDropdownItem:n,...r}=e;return(0,c.jsx)("li",{className:"menu__list-item",children:(0,c.jsx)(ne,{className:(0,a.Z)("menu__link",t),...r})})}function oe(e){let{mobile:t=!1,position:n,...r}=e;const a=t?ae:re;return(0,c.jsx)(a,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(4229),le=n(6440),se=n(9939);const ue={dropdownNavbarItemMobile:"dropdownNavbarItemMobile_MJ1i"};function ce(e,t){return e.some((e=>function(e,t){return!!(0,le.Mg)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function de(e){let{items:t,position:n,className:o,onClick:i,...l}=e;const s=(0,r.useRef)(null),[u,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{s.current&&!s.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[s]),(0,c.jsxs)("div",{ref:s,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":u}),children:[(0,c.jsx)(ne,{"aria-haspopup":"true","aria-expanded":u,role:"button",href:l.to?void 0:"#",className:(0,a.Z)("navbar__link",o),...l,onClick:l.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!u))},children:l.children??l.label}),(0,c.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(Ae,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function pe(e){let{items:t,className:n,position:o,onClick:i,...s}=e;const u=function(){const{siteConfig:{baseUrl:e}}=(0,se.Z)(),{pathname:t}=(0,l.TH)();return t.replace(e,"/")}(),d=ce(t,u),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[u,d,m]),(0,c.jsxs)("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":p}),children:[(0,c.jsx)(ne,{role:"button",className:(0,a.Z)(ue.dropdownNavbarItemMobile,"menu__link menu__link--sublist menu__link--sublist-caret",n),...s,onClick:e=>{e.preventDefault(),f()},children:s.children??s.label}),(0,c.jsx)(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:p,children:t.map(((e,t)=>(0,r.createElement)(Ae,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function fe(e){let{mobile:t=!1,...n}=e;const r=t?pe:de;return(0,c.jsx)(r,{...n})}var me=n(9699);function he(e){let{width:t=20,height:n=20,...r}=e;return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const ge="iconLanguage_kvP7";function ye(e){var t,n,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=ye(e[t]))&&(r&&(r+=" "),r+=n);else for(t in e)e[t]&&(r&&(r+=" "),r+=t);return r}const be=function(){for(var e,t,n=0,r="";n<arguments.length;)(e=arguments[n++])&&(t=ye(e))&&(r&&(r+=" "),r+=t);return r};var ve=n(353),we=n(8312),ke=n.n(we);function xe(){const e=(0,l.TH)(),t=(0,l.k6)(),{siteConfig:{baseUrl:n}}=(0,se.Z)(),[a,o]=(0,r.useState)({wordToHighlight:"",isTitleSuggestion:!1,titleText:""});return(0,r.useEffect)((()=>{if(!e.state?.highlightState||0===e.state.highlightState.wordToHighlight.length)return;o(e.state.highlightState);const{highlightState:n,...r}=e.state;t.replace({...e,state:r})}),[e.state?.highlightState,t,e]),(0,r.useEffect)((()=>{if(0===a.wordToHighlight.length)return;const e=document.getElementsByTagName("article")[0]??document.getElementsByTagName("main")[0];if(!e)return;const t=new(ke())(e),n={ignoreJoiners:!0};return t.mark(a.wordToHighlight,n),()=>t.unmark(n)}),[a,n]),null}const Se=e=>{const t=(0,r.useRef)(!1),a=(0,r.useRef)(null),[o,i]=(0,r.useState)(!1),s=(0,l.k6)(),{siteConfig:u={}}=(0,se.Z)(),d=(u.plugins||[]).find((e=>Array.isArray(e)&&"string"==typeof e[0]&&e[0].includes("docusaurus-lunr-search"))),p=(0,z.Z)(),{baseUrl:f}=u,m=d&&d[1]?.assetUrl||f,h=(0,ve.eZ)("docusaurus-lunr-search"),g=()=>{t.current||(Promise.all([fetch(`${m}${h.fileNames.searchDoc}`).then((e=>e.json())),fetch(`${m}${h.fileNames.lunrIndex}`).then((e=>e.json())),Promise.all([n.e(49),n.e(471)]).then(n.bind(n,2082)),Promise.all([n.e(532),n.e(807)]).then(n.bind(n,7807))]).then((e=>{let[t,n,{default:r}]=e;const{searchDocs:a,options:o}=t;a&&0!==a.length&&(((e,t,n,r)=>{new n({searchDocs:e,searchIndex:t,baseUrl:f,inputSelector:"#search_input_react",handleSelected:(e,t,n)=>{const a=n.url||"/";document.createElement("a").href=a,e.setVal(""),t.target.blur();let o="";if(r.highlightResult)try{const e=(n.text||n.subcategory||n.title).match(new RegExp("<span.+span>\\w*","g"));if(e&&e.length>0){const t=document.createElement("div");t.innerHTML=e[0],o=t.textContent}}catch(i){console.log(i)}s.push(a,{highlightState:{wordToHighlight:o}})},maxHits:r.maxHits})})(a,n,r,o),i(!0))})),t.current=!0)},y=(0,r.useCallback)((t=>{a.current.contains(t.target)||a.current.focus(),e.handleSearchBarToggle&&e.handleSearchBarToggle(!e.isSearchBarExpanded)}),[e.isSearchBarExpanded]);let b;return p&&(g(),b=window.navigator.platform.startsWith("Mac")?"Search \u2318+K":"Search Ctrl+K"),(0,c.jsxs)("div",{className:"navbar__search",children:[(0,c.jsx)("span",{"aria-label":"expand searchbar",role:"button",className:be("search-icon",{"search-icon-hidden":e.isSearchBarExpanded}),onClick:y,onKeyDown:y,tabIndex:0}),(0,c.jsx)("input",{id:"search_input_react",type:"search",placeholder:o?b:"Loading...","aria-label":"Search",className:be("navbar__search-input",{"search-bar-expanded":e.isSearchBarExpanded},{"search-bar":!e.isSearchBarExpanded}),onClick:g,onMouseOver:g,onFocus:y,onBlur:y,ref:a,disabled:!o}),(0,c.jsx)(xe,{})]},"search-box")},Ee={navbarSearchContainer:"navbarSearchContainer_bzqh"};function Ce(e){let{children:t,className:n}=e;return(0,c.jsx)("div",{className:(0,a.Z)(n,Ee.navbarSearchContainer),children:t})}var _e=n(4924),je=n(7470);var Te=n(8072);const Ne=e=>e.docs.find((t=>t.id===e.mainDocId));const Re={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:a="",...o}=e;const{i18n:{currentLocale:i,locales:u,localeConfigs:d}}=(0,se.Z)(),p=(0,me.l)(),{search:f,hash:m}=(0,l.TH)(),h=[...n,...u.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}${a}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],g=t?(0,s.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,c.jsx)(fe,{...o,mobile:t,label:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(he,{className:ge}),g]}),items:h})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,c.jsx)(Ce,{className:n,children:(0,c.jsx)(Se,{})})},dropdown:fe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:o=!1}=e;const i=o?"li":"div";return(0,c.jsx)(i,{className:(0,a.Z)({navbar__item:!r&&!o,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,_e.Iw)(r),i=(0,je.vY)(t,r),l=o?.path===i?.path;return null===i||i.unlisted&&!l?null:(0,c.jsx)(oe,{exact:!0,...a,isActive:()=>l||!!o?.sidebar&&o.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,_e.Iw)(r),i=(0,je.oz)(t,r).link;if(!i)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return(0,c.jsx)(oe,{exact:!0,...a,isActive:()=>o?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...a}=e;const o=(0,je.lO)(r)[0],i=t??o.label,l=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(o).path;return(0,c.jsx)(oe,{...a,label:i,to:l})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:a,dropdownItemsAfter:o,...i}=e;const{search:u,hash:d}=(0,l.TH)(),p=(0,_e.Iw)(n),f=(0,_e.gB)(n),{savePreferredVersionName:m}=(0,Te.J)(n),h=[...a,...f.map((e=>{const t=p.alternateDocVersions[e.name]??Ne(e);return{label:e.label,to:`${t.path}${u}${d}`,isActive:()=>e===p.activeVersion,onClick:()=>m(e.name)}})),...o],g=(0,je.lO)(n)[0],y=t&&h.length>1?(0,s.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):g.label,b=t&&h.length>1?void 0:Ne(g).path;return h.length<=1?(0,c.jsx)(oe,{...i,mobile:t,label:y,to:b,isActive:r?()=>!1:void 0}):(0,c.jsx)(fe,{...i,mobile:t,label:y,to:b,items:h,isActive:r?()=>!1:void 0})}};function Ae(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),a=Re[r];if(!a)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,c.jsx)(a,{...n})}function Le(){const e=(0,N.e)(),t=(0,w.L)().navbar.items;return(0,c.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(Ae,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function Pe(e){return(0,c.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,c.jsx)(s.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function Oe(){const e=0===(0,w.L)().navbar.items.length,t=D();return(0,c.jsxs)(c.Fragment,{children:[!e&&(0,c.jsx)(Pe,{onClick:()=>t.hide()}),t.content]})}function Ie(){const e=(0,N.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,c.jsx)(M,{header:(0,c.jsx)(K,{}),primaryMenu:(0,c.jsx)(Le,{}),secondaryMenu:(0,c.jsx)(Oe,{})}):null}const De={navbarHideable:"navbarHideable_hhpl",navbarHidden:"navbarHidden_nmcs"};function Me(e){return(0,c.jsx)("div",{role:"presentation",...e,className:(0,a.Z)("navbar-sidebar__backdrop",e.className)})}function Fe(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,N.e)(),{navbarRef:l,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,R.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i<o.current)return void n(!0);if(a.current)return void(a.current=!1);const l=r?.scrollY,s=document.documentElement.scrollHeight-o.current,u=window.innerHeight;l&&i>=l?n(!1):i+u<s&&n(!0)})),(0,u.S)((t=>{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,c.jsxs)("nav",{ref:l,"aria-label":(0,s.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[De.navbarHideable,!d&&De.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown}),children:[t,(0,c.jsx)(Me,{onClick:i.toggle}),(0,c.jsx)(Ie,{})]})}var ze=n(2615);const Be={errorBoundaryError:"errorBoundaryError_WE6Q",errorBoundaryFallback:"errorBoundaryFallback_bdJX"};function $e(e){return(0,c.jsx)("button",{type:"button",...e,children:(0,c.jsx)(s.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function Ue(e){let{error:t}=e;const n=(0,ze.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,c.jsx)("p",{className:Be.errorBoundaryError,children:n})}class qe extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const He="right";function Ze(e){let{width:t=30,height:n=30,className:r,...a}=e;return(0,c.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...a,children:(0,c.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function Ge(){const{toggle:e,shown:t}=(0,N.e)();return(0,c.jsx)("button",{onClick:e,"aria-label":(0,s.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,c.jsx)(Ze,{})})}const We={colorModeToggle:"colorModeToggle_Hewu"};function Ve(e){let{items:t}=e;return(0,c.jsx)(c.Fragment,{children:t.map(((e,t)=>(0,c.jsx)(qe,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,c.jsx)(Ae,{...e})},t)))})}function Qe(e){let{left:t,right:n}=e;return(0,c.jsxs)("div",{className:"navbar__inner",children:[(0,c.jsx)("div",{className:"navbar__items",children:t}),(0,c.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function Ke(){const e=(0,N.e)(),t=(0,w.L)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??He)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),a=t.find((e=>"search"===e.type));return(0,c.jsx)(Qe,{left:(0,c.jsxs)(c.Fragment,{children:[!e.disabled&&(0,c.jsx)(Ge,{}),(0,c.jsx)(V,{}),(0,c.jsx)(Ve,{items:n})]}),right:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(Ve,{items:r}),(0,c.jsx)(G,{className:We.colorModeToggle}),!a&&(0,c.jsx)(Ce,{children:(0,c.jsx)(Se,{})})]})})}function Ye(){return(0,c.jsx)(Fe,{children:(0,c.jsx)(Ke,{})})}function Je(e){let{item:t}=e;const{to:n,href:r,label:a,prependBaseUrlToHref:o,...i}=t,l=(0,J.Z)(n),s=(0,J.Z)(r,{forcePrependBaseUrl:!0});return(0,c.jsxs)(Y.Z,{className:"footer__link-item",...r?{href:o?s:r}:{to:l},...i,children:[a,r&&!(0,X.Z)(r)&&(0,c.jsx)(te.Z,{})]})}function Xe(e){let{item:t}=e;return t.html?(0,c.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):(0,c.jsx)("li",{className:"footer__item",children:(0,c.jsx)(Je,{item:t})},t.href??t.to)}function et(e){let{column:t}=e;return(0,c.jsxs)("div",{className:"col footer__col",children:[(0,c.jsx)("div",{className:"footer__title",children:t.title}),(0,c.jsx)("ul",{className:"footer__items clean-list",children:t.items.map(((e,t)=>(0,c.jsx)(Xe,{item:e},t)))})]})}function tt(e){let{columns:t}=e;return(0,c.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,c.jsx)(et,{column:e},t)))})}function nt(){return(0,c.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function rt(e){let{item:t}=e;return t.html?(0,c.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,c.jsx)(Je,{item:t})}function at(e){let{links:t}=e;return(0,c.jsx)("div",{className:"footer__links text--center",children:(0,c.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,c.jsxs)(r.Fragment,{children:[(0,c.jsx)(rt,{item:e}),t.length!==n+1&&(0,c.jsx)(nt,{})]},n)))})})}function ot(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,c.jsx)(tt,{columns:t}):(0,c.jsx)(at,{links:t})}var it=n(1412);const lt={footerLogoLink:"footerLogoLink_tutC"};function st(e){let{logo:t}=e;const{withBaseUrl:n}=(0,J.C)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return(0,c.jsx)(it.Z,{className:(0,a.Z)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function ut(e){let{logo:t}=e;return t.href?(0,c.jsx)(Y.Z,{href:t.href,className:lt.footerLogoLink,target:t.target,children:(0,c.jsx)(st,{logo:t})}):(0,c.jsx)(st,{logo:t})}function ct(e){let{copyright:t}=e;return(0,c.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function dt(e){let{style:t,links:n,logo:r,copyright:o}=e;return(0,c.jsx)("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t}),children:(0,c.jsxs)("div",{className:"container container-fluid",children:[n,(r||o)&&(0,c.jsxs)("div",{className:"footer__bottom text--center",children:[r&&(0,c.jsx)("div",{className:"margin-bottom--sm",children:r}),o]})]})})}function pt(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:r,style:a}=e;return(0,c.jsx)(dt,{style:a,links:n&&n.length>0&&(0,c.jsx)(ot,{links:n}),logo:r&&(0,c.jsx)(ut,{logo:r}),copyright:t&&(0,c.jsx)(ct,{copyright:t})})}const ft=r.memo(pt),mt=(0,A.Qc)([F.S,k.pl,R.OC,Te.L5,i.VC,function(e){let{children:t}=e;return(0,c.jsx)(L.n2,{children:(0,c.jsx)(N.M,{children:(0,c.jsx)(O,{children:t})})})}]);function ht(e){let{children:t}=e;return(0,c.jsx)(mt,{children:t})}var gt=n(8825);function yt(e){let{error:t,tryAgain:n}=e;return(0,c.jsx)("main",{className:"container margin-vert--xl",children:(0,c.jsx)("div",{className:"row",children:(0,c.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,c.jsx)(gt.Z,{as:"h1",className:"hero__title",children:(0,c.jsx)(s.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,c.jsx)("div",{className:"margin-vert--lg",children:(0,c.jsx)($e,{onClick:n,className:"button button--primary shadow--lw"})}),(0,c.jsx)("hr",{}),(0,c.jsx)("div",{className:"margin-vert--md",children:(0,c.jsx)(Ue,{error:t})})]})})})}const bt={mainWrapper:"mainWrapper_MB5r"};function vt(e){const{children:t,noFooter:n,wrapperClassName:r,title:l,description:s}=e;return(0,y.t)(),(0,c.jsxs)(ht,{children:[(0,c.jsx)(i.d,{title:l,description:s}),(0,c.jsx)(v,{}),(0,c.jsx)(T,{}),(0,c.jsx)(Ye,{}),(0,c.jsx)("div",{id:d,className:(0,a.Z)(g.k.wrapper.main,bt.mainWrapper,r),children:(0,c.jsx)(o.Z,{fallback:e=>(0,c.jsx)(yt,{...e}),children:t})}),!n&&(0,c.jsx)(ft,{})]})}},8340:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});n(7378);var r=n(5237),a=n(1847),o=n(9939),i=n(9899),l=n(1412),s=n(4246);function u(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,a.Z)(t.src),dark:(0,a.Z)(t.srcDark||t.src)},i=(0,s.jsx)(l.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,s.jsx)("div",{className:r,children:i}):i}function c(e){const{siteConfig:{title:t}}=(0,o.Z)(),{navbar:{title:n,logo:l}}=(0,i.L)(),{imageClassName:c,titleClassName:d,...p}=e,f=(0,a.Z)(l?.href||"/"),m=n?"":t,h=l?.alt??m;return(0,s.jsxs)(r.Z,{to:f,...p,...l?.target&&{target:l.target},children:[l&&(0,s.jsx)(u,{logo:l,alt:h,imageClassName:c}),null!=n&&(0,s.jsx)("b",{className:d,children:n})]})}},4386:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(7378);var r=n(2750),a=n(4246);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return(0,a.jsxs)(r.Z,{children:[t&&(0,a.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,a.jsx)("meta",{name:"docusaurus_version",content:n}),o&&(0,a.jsx)("meta",{name:"docusaurus_tag",content:o}),i&&(0,a.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,a.jsx)("meta",{name:"docsearch:version",content:n}),o&&(0,a.jsx)("meta",{name:"docsearch:docusaurus_tag",content:o})]})}},1412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7378),a=n(624),o=n(362),i=n(4561);const l={themedComponent:"themedComponent_siVc","themedComponent--light":"themedComponent--light_hHel","themedComponent--dark":"themedComponent--dark_yETr"};var s=n(4246);function u(e){let{className:t,children:n}=e;const u=(0,o.Z)(),{colorMode:c}=(0,i.I)();return(0,s.jsx)(s.Fragment,{children:(u?"dark"===c?["dark"]:["light"]:["light","dark"]).map((e=>{const o=n({theme:e,className:(0,a.Z)(t,l.themedComponent,l[`themedComponent--${e}`])});return(0,s.jsx)(r.Fragment,{children:o},e)}))})}function c(e){const{sources:t,className:n,alt:r,...a}=e;return(0,s.jsx)(u,{className:n,children:e=>{let{theme:n,className:o}=e;return(0,s.jsx)("img",{src:t[n],alt:r,className:o,...a})}})}},4229:(e,t,n)=>{"use strict";n.d(t,{u:()=>u,z:()=>y});var r=n(7378),a=n(5894),o=n(9749),i=n(5122),l=n(4246);const s="ease-in-out";function u(e){let{initialState:t}=e;const[n,a]=(0,r.useState)(t??!1),o=(0,r.useCallback)((()=>{a((e=>!e))}),[]);return{collapsed:n,setCollapsed:a,toggleCollapsed:o}}const c={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function p(e,t){const n=t?c:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:a}=e;const o=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=a?.duration??function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${a?.easing??s}`,height:`${t}px`}}function l(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return p(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(l(),requestAnimationFrame((()=>{e.style.height=c.height,e.style.overflow=c.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{l()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,a])}function m(e){if(!a.Z.canUseDOM)return e?c:d}function h(e){let{as:t="div",collapsed:n,children:a,animation:o,onCollapseTransitionEnd:i,className:s,disableSSRStyle:u}=e;const c=(0,r.useRef)(null);return f({collapsibleRef:c,collapsed:n,animation:o}),(0,l.jsx)(t,{ref:c,style:u?void 0:m(n),onTransitionEnd:e=>{"height"===e.propertyName&&(p(c.current,n),i?.(n))},className:s,children:a})}function g(e){let{collapsed:t,...n}=e;const[a,i]=(0,r.useState)(!t),[s,u]=(0,r.useState)(t);return(0,o.Z)((()=>{t||i(!0)}),[t]),(0,o.Z)((()=>{a&&u(t)}),[a,t]),a?(0,l.jsx)(h,{...n,collapsed:s}):null}function y(e){let{lazy:t,...n}=e;const r=t?g:h;return(0,l.jsx)(r,{...n})}},4234:(e,t,n)=>{"use strict";n.d(t,{nT:()=>h,pl:()=>m});var r=n(7378),a=n(362),o=n(8796),i=n(3879),l=n(9899),s=n(4246);const u=(0,o.WA)("docusaurus.announcement.dismiss"),c=(0,o.WA)("docusaurus.announcement.id"),d=()=>"true"===u.get(),p=e=>u.set(String(e)),f=r.createContext(null);function m(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{o(d())}),[]);const i=(0,r.useCallback)((()=>{p(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=c.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;c.set(t),r&&p(!1),!r&&d()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,s.jsx)(f.Provider,{value:n,children:t})}function h(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},4561:(e,t,n)=>{"use strict";n.d(t,{I:()=>y,S:()=>g});var r=n(7378),a=n(5894),o=n(3879),i=n(8796),l=n(9899),s=n(4246);const u=r.createContext(void 0),c="theme",d=(0,i.WA)(c),p={light:"light",dark:"dark"},f=e=>e===p.dark?p.dark:p.light,m=e=>a.Z.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),h=e=>{d.set(f(e))};function g(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[a,o]=(0,r.useState)(m(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&h(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?p.dark:p.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==c)return;const t=d.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===p.dark},setLightTheme(){i(p.light)},setDarkTheme(){i(p.dark)}})),[a,i])}();return(0,s.jsx)(u.Provider,{value:n,children:t})}function y(){const e=(0,r.useContext)(u);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},8072:(e,t,n)=>{"use strict";n.d(t,{J:()=>v,L5:()=>y});var r=n(7378),a=n(4924),o=n(5167),i=n(9899),l=n(7470),s=n(3879),u=n(8796),c=n(4246);const d=e=>`docs-preferred-version-${e}`,p={save:(e,t,n)=>{(0,u.WA)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,u.WA)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,u.WA)(d(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const m=r.createContext(null);function h(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=p.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(p.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){p.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function g(e){let{children:t}=e;const n=h();return(0,c.jsx)(m.Provider,{value:n,children:t})}function y(e){let{children:t}=e;return l.cE?(0,c.jsx)(g,{children:t}):(0,c.jsx)(c.Fragment,{children:t})}function b(){const e=(0,r.useContext)(m);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=o.m);const t=(0,a.zh)(e),[n,i]=b(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},8774:(e,t,n)=>{"use strict";n.d(t,{V:()=>u,b:()=>s});var r=n(7378),a=n(3879),o=n(4246);const i=Symbol("EmptyContext"),l=r.createContext(i);function s(e){let{children:t,name:n,items:a}=e;const i=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return(0,o.jsx)(l.Provider,{value:i,children:t})}function u(){const e=(0,r.useContext)(l);if(e===i)throw new a.i6("DocsSidebarProvider");return e}},2885:(e,t,n)=>{"use strict";n.d(t,{E:()=>s,q:()=>l});var r=n(7378),a=n(3879),o=n(4246);const i=r.createContext(null);function l(e){let{children:t,version:n}=e;return(0,o.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(null===e)throw new a.i6("DocsVersionProvider");return e}},9067:(e,t,n)=>{"use strict";n.d(t,{M:()=>p,e:()=>f});var r=n(7378),a=n(197),o=n(7980),i=n(8981),l=n(9899),s=n(3879),u=n(4246);const c=r.createContext(void 0);function d(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,l.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[s,u]=(0,r.useState)(!1);(0,i.Rb)((()=>{if(s)return u(!1),!1}));const c=(0,r.useCallback)((()=>{u((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&u(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:s})),[e,n,c,s])}function p(e){let{children:t}=e;const n=d();return(0,u.jsx)(c.Provider,{value:n,children:t})}function f(){const e=r.useContext(c);if(void 0===e)throw new s.i6("NavbarMobileSidebarProvider");return e}},197:(e,t,n)=>{"use strict";n.d(t,{HY:()=>s,Zo:()=>u,n2:()=>l});var r=n(7378),a=n(3879),o=n(4246);const i=r.createContext(null);function l(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,o.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function u(e){let{component:t,props:n}=e;const o=(0,r.useContext)(i);if(!o)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=o,s=(0,a.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},1706:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(7378);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},7980:(e,t,n)=>{"use strict";n.d(t,{i:()=>l});var r=n(7378),a=n(5894);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(e){let{desktopBreakpoint:t=i}=void 0===e?{}:e;const[n,l]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){l(function(e){if(!a.Z.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?o.desktop:o.mobile}(t))}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[t]),n}},5854:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},5122:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},7470:(e,t,n)=>{"use strict";n.d(t,{LM:()=>f,SN:()=>E,_F:()=>g,cE:()=>p,f:()=>b,lO:()=>k,oz:()=>x,s1:()=>w,vY:()=>S});var r=n(7378),a=n(3620),o=n(5473),i=n(4924),l=n(8072),s=n(2885),u=n(8774),c=n(56),d=n(6440);const p=!!i._r;function f(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=f(t);if(e)return e}}(e):void 0:e.href}const m=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),h=(e,t)=>e.some((e=>g(e,t)));function g(e,t){return"link"===e.type?m(e.href,t):"category"===e.type&&(m(e.href,t)||h(e.items,t))}function y(e,t){switch(e.type){case"category":return g(e,t)||e.items.some((e=>y(e,t)));case"link":return!e.unlisted||g(e,t);default:return!0}}function b(e,t){return(0,r.useMemo)((()=>e.filter((e=>y(e,t)))),[e,t])}function v(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,d.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,d.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function w(){const e=(0,u.V)(),{pathname:t}=(0,a.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?v({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,l.J)(e),a=(0,i.yW)(e);return(0,r.useMemo)((()=>(0,c.j)([t,n,a].filter(Boolean))),[t,n,a])}function x(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function S(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${(0,c.j)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function E(e){let{route:t}=e;const n=(0,a.TH)(),r=(0,s.E)(),i=t.routes,l=i.find((e=>(0,a.LX)(n.pathname,e)));if(!l)return null;const u=l.sidebar,c=u?r.docsSidebars[u]:void 0;return{docElement:(0,o.H)(i),sidebarName:u,sidebarItems:c}}},8981:(e,t,n)=>{"use strict";n.d(t,{Rb:()=>i,_X:()=>l});var r=n(7378),a=n(3620),o=n(3879);function i(e){!function(e){const t=(0,a.k6)(),n=(0,o.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function l(e){return function(e){const t=(0,a.k6)();return(0,r.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}},56:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function a(e){return Array.from(new Set(e))}n.d(t,{j:()=>a,l:()=>r})},8836:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>d,VC:()=>m});var r=n(7378),a=n(624),o=n(2750),i=n(2729);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(1847),u=n(9939);var c=n(4246);function d(e){let{title:t,description:n,keywords:r,image:a,children:i}=e;const l=function(e){const{siteConfig:t}=(0,u.Z)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.C)(),p=a?d(a,{absolute:!0}):void 0;return(0,c.jsxs)(o.Z,{children:[t&&(0,c.jsx)("title",{children:l}),t&&(0,c.jsx)("meta",{property:"og:title",content:l}),n&&(0,c.jsx)("meta",{name:"description",content:n}),n&&(0,c.jsx)("meta",{property:"og:description",content:n}),r&&(0,c.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&(0,c.jsx)("meta",{property:"og:image",content:p}),p&&(0,c.jsx)("meta",{name:"twitter:image",content:p}),i]})}const p=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(p),l=(0,a.Z)(i,t);return(0,c.jsxs)(p.Provider,{value:l,children:[(0,c.jsx)(o.Z,{children:(0,c.jsx)("html",{className:l})}),n]})}function m(e){let{children:t}=e;const n=l(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const o=`plugin-id-${n.plugin.id}`;return(0,c.jsx)(f,{className:(0,a.Z)(r,o),children:t})}},3879:(e,t,n)=>{"use strict";n.d(t,{D9:()=>l,Qc:()=>c,Ql:()=>u,i6:()=>s,zX:()=>i});var r=n(7378),a=n(9749),o=n(4246);function i(e){const t=(0,r.useRef)(e);return(0,a.Z)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function l(e){const t=(0,r.useRef)();return(0,a.Z)((()=>{t.current=e})),t.current}class s extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?<name>\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function u(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function c(e){return t=>{let{children:n}=t;return(0,o.jsx)(o.Fragment,{children:e.reduceRight(((e,t)=>(0,o.jsx)(t,{children:e})),n)})}}},6440:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(7378),a=n(3512),o=n(9939);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},9169:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>h,OC:()=>c,RF:()=>f,o5:()=>m});var r=n(7378),a=n(5894),o=n(362),i=n(9749),l=n(3879),s=n(4246);const u=r.createContext(void 0);function c(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,s.jsx)(u.Provider,{value:n,children:t})}function d(){const e=(0,r.useContext)(u);if(null==e)throw new l.i6("ScrollControllerProvider");return e}const p=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function f(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=d(),a=(0,r.useRef)(p()),o=(0,l.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=p();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function m(){const e=d(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,r.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,r.useRef)(void 0),a=(0,r.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,i.Z)((()=>{queueMicrotask((()=>n.current?.()))})),{blockElementScrollPositionUntilNextRender:a}}function h(){const e=(0,r.useRef)(null),t=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&a<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(a-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},2064:(e,t,n)=>{"use strict";n.d(t,{HX:()=>r,os:()=>a});n(9939);const r="default";function a(e,t){return`docs-${e}-${t}`}},8796:(e,t,n)=>{"use strict";n.d(t,{Nk:()=>c,WA:()=>u});var r=n(7378);const a="localStorage";function o(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function i(e){if(void 0===e&&(e=a),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,l||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),l=!0),null}var t}let l=!1;const s={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function u(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=i(t?.persistence);return null===n?s:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),o({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),o({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}function c(e,t){const n=(0,r.useRef)((()=>null===e?s:u(e,t))).current(),a=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,r.useSyncExternalStore)(a,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}},9699:(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var r=n(9939),a=n(3620),o=n(2615);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:l}}=(0,r.Z)(),{pathname:s}=(0,a.TH)(),u=(0,o.applyTrailingSlash)(s,{trailingSlash:n,baseUrl:e}),c=l===i?e:e.replace(`/${l}/`,"/"),d=u.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${c}`:`${c}${e}/`}(n)}${d}`}}}},6847:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(7378),a=n(3620),o=n(3879);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},9899:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(9939);function a(){return(0,r.Z)().siteConfig.themeConfig}},4454:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},6824:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},2615:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(4454);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(6824);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},5036:(e,t,n)=>{"use strict";n.d(t,{lX:()=>w,q_:()=>_,ob:()=>f,PP:()=>T,Ep:()=>p});var r=n(2685);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r<a;n+=1,r+=1)e[n]=e[r];e.pop()}const i=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],i=t&&t.split("/")||[],l=e&&a(e),s=t&&a(t),u=l||s;if(e&&a(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var c=i[i.length-1];n="."===c||".."===c||""===c}else n=!1;for(var d=0,p=i.length;p>=0;p--){var f=i[p];"."===f?o(i,p):".."===f?(o(i,p),d++):d&&(o(i,p),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(2215);function s(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function f(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var h=!("undefined"==typeof window||!window.document||!window.document.createElement);function g(e,t){t(window.confirm(e))}var y="popstate",b="hashchange";function v(){try{return window.history.state||{}}catch(e){return{}}}function w(e){void 0===e&&(e={}),h||(0,l.Z)(!1);var t,n=window.history,a=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,o=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,u=i.forceRefresh,w=void 0!==u&&u,k=i.getUserConfirmation,x=void 0===k?g:k,S=i.keyLength,E=void 0===S?6:S,C=e.basename?d(s(e.basename)):"";function _(e){var t=e||{},n=t.key,r=t.state,a=window.location,o=a.pathname+a.search+a.hash;return C&&(o=c(o,C)),f(o,r,n)}function j(){return Math.random().toString(36).substr(2,E)}var T=m();function N(e){(0,r.Z)($,e),$.length=n.length,T.notifyListeners($.location,$.action)}function R(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||P(_(e.state))}function A(){P(_(v()))}var L=!1;function P(e){if(L)L=!1,N();else{T.confirmTransitionTo(e,"POP",x,(function(t){t?N({action:"POP",location:e}):function(e){var t=$.location,n=I.indexOf(t.key);-1===n&&(n=0);var r=I.indexOf(e.key);-1===r&&(r=0);var a=n-r;a&&(L=!0,M(a))}(e)}))}}var O=_(v()),I=[O.key];function D(e){return C+p(e)}function M(e){n.go(e)}var F=0;function z(e){1===(F+=e)&&1===e?(window.addEventListener(y,R),o&&window.addEventListener(b,A)):0===F&&(window.removeEventListener(y,R),o&&window.removeEventListener(b,A))}var B=!1;var $={length:n.length,action:"POP",location:O,createHref:D,push:function(e,t){var r="PUSH",o=f(e,t,j(),$.location);T.confirmTransitionTo(o,r,x,(function(e){if(e){var t=D(o),i=o.key,l=o.state;if(a)if(n.pushState({key:i,state:l},null,t),w)window.location.href=t;else{var s=I.indexOf($.location.key),u=I.slice(0,s+1);u.push(o.key),I=u,N({action:r,location:o})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",o=f(e,t,j(),$.location);T.confirmTransitionTo(o,r,x,(function(e){if(e){var t=D(o),i=o.key,l=o.state;if(a)if(n.replaceState({key:i,state:l},null,t),w)window.location.replace(t);else{var s=I.indexOf($.location.key);-1!==s&&(I[s]=o.key),N({action:r,location:o})}else window.location.replace(t)}}))},go:M,goBack:function(){M(-1)},goForward:function(){M(1)},block:function(e){void 0===e&&(e=!1);var t=T.setPrompt(e);return B||(z(1),B=!0),function(){return B&&(B=!1,z(-1)),t()}},listen:function(e){var t=T.appendListener(e);return z(1),function(){z(-1),t()}}};return $}var k="hashchange",x={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+u(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:u,decodePath:s},slash:{encodePath:s,decodePath:s}};function S(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function E(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function C(e){window.location.replace(S(window.location.href)+"#"+e)}function _(e){void 0===e&&(e={}),h||(0,l.Z)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),a=n.getUserConfirmation,o=void 0===a?g:a,i=n.hashType,u=void 0===i?"slash":i,y=e.basename?d(s(e.basename)):"",b=x[u],v=b.encodePath,w=b.decodePath;function _(){var e=w(E());return y&&(e=c(e,y)),f(e)}var j=m();function T(e){(0,r.Z)(B,e),B.length=t.length,j.notifyListeners(B.location,B.action)}var N=!1,R=null;function A(){var e,t,n=E(),r=v(n);if(n!==r)C(r);else{var a=_(),i=B.location;if(!N&&(t=a,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(R===p(a))return;R=null,function(e){if(N)N=!1,T();else{var t="POP";j.confirmTransitionTo(e,t,o,(function(n){n?T({action:t,location:e}):function(e){var t=B.location,n=I.lastIndexOf(p(t));-1===n&&(n=0);var r=I.lastIndexOf(p(e));-1===r&&(r=0);var a=n-r;a&&(N=!0,D(a))}(e)}))}}(a)}}var L=E(),P=v(L);L!==P&&C(P);var O=_(),I=[p(O)];function D(e){t.go(e)}var M=0;function F(e){1===(M+=e)&&1===e?window.addEventListener(k,A):0===M&&window.removeEventListener(k,A)}var z=!1;var B={length:t.length,action:"POP",location:O,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=S(window.location.href)),n+"#"+v(y+p(e))},push:function(e,t){var n="PUSH",r=f(e,void 0,void 0,B.location);j.confirmTransitionTo(r,n,o,(function(e){if(e){var t=p(r),a=v(y+t);if(E()!==a){R=t,function(e){window.location.hash=e}(a);var o=I.lastIndexOf(p(B.location)),i=I.slice(0,o+1);i.push(t),I=i,T({action:n,location:r})}else T()}}))},replace:function(e,t){var n="REPLACE",r=f(e,void 0,void 0,B.location);j.confirmTransitionTo(r,n,o,(function(e){if(e){var t=p(r),a=v(y+t);E()!==a&&(R=t,C(a));var o=I.indexOf(p(B.location));-1!==o&&(I[o]=t),T({action:n,location:r})}}))},go:D,goBack:function(){D(-1)},goForward:function(){D(1)},block:function(e){void 0===e&&(e=!1);var t=j.setPrompt(e);return z||(F(1),z=!0),function(){return z&&(z=!1,F(-1)),t()}},listen:function(e){var t=j.appendListener(e);return F(1),function(){F(-1),t()}}};return B}function j(e,t,n){return Math.min(Math.max(e,t),n)}function T(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,a=t.initialEntries,o=void 0===a?["/"]:a,i=t.initialIndex,l=void 0===i?0:i,s=t.keyLength,u=void 0===s?6:s,c=m();function d(e){(0,r.Z)(w,e),w.length=w.entries.length,c.notifyListeners(w.location,w.action)}function h(){return Math.random().toString(36).substr(2,u)}var g=j(l,0,o.length-1),y=o.map((function(e){return f(e,void 0,"string"==typeof e?h():e.key||h())})),b=p;function v(e){var t=j(w.index+e,0,w.entries.length-1),r=w.entries[t];c.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:y.length,action:"POP",location:y[g],index:g,entries:y,createHref:b,push:function(e,t){var r="PUSH",a=f(e,t,h(),w.location);c.confirmTransitionTo(a,r,n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=f(e,t,h(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),c.setPrompt(e)},listen:function(e){return c.appendListener(e)}};return w}},5839:(e,t,n)=>{"use strict";var r=n(9185),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=f(n);a&&a!==m&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),h=s(n),g=0;g<i.length;++g){var y=i[g];if(!(o[y]||r&&r[y]||h&&h[y]||l&&l[y])){var b=p(n,y);try{u(t,y,b)}catch(v){}}}}return t}},3996:e=>{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,o,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5182:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},8312:function(e){e.exports=function(){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},n=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},a=function(){function e(n){var r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5e3;t(this,e),this.ctx=n,this.iframes=r,this.exclude=a,this.iframesTimeout=o}return n(e,[{key:"getContexts",value:function(){var e=[];return(void 0!==this.ctx&&this.ctx?NodeList.prototype.isPrototypeOf(this.ctx)?Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?this.ctx:"string"==typeof this.ctx?Array.prototype.slice.call(document.querySelectorAll(this.ctx)):[this.ctx]:[]).forEach((function(t){var n=e.filter((function(e){return e.contains(t)})).length>0;-1!==e.indexOf(t)||n||e.push(t)})),e}},{key:"getIframeContents",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},r=void 0;try{var a=e.contentWindow;if(r=a.document,!a||!r)throw new Error("iframe inaccessible")}catch(o){n()}r&&t(r)}},{key:"isIframeBlank",value:function(e){var t="about:blank",n=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&n!==t&&n}},{key:"observeIframeLoad",value:function(e,t,n){var r=this,a=!1,o=null,i=function i(){if(!a){a=!0,clearTimeout(o);try{r.isIframeBlank(e)||(e.removeEventListener("load",i),r.getIframeContents(e,t,n))}catch(l){n()}}};e.addEventListener("load",i),o=setTimeout(i,this.iframesTimeout)}},{key:"onIframeReady",value:function(e,t,n){try{"complete"===e.contentWindow.document.readyState?this.isIframeBlank(e)?this.observeIframeLoad(e,t,n):this.getIframeContents(e,t,n):this.observeIframeLoad(e,t,n)}catch(r){n()}}},{key:"waitForIframes",value:function(e,t){var n=this,r=0;this.forEachIframe(e,(function(){return!0}),(function(e){r++,n.waitForIframes(e.querySelector("html"),(function(){--r||t()}))}),(function(e){e||t()}))}},{key:"forEachIframe",value:function(t,n,r){var a=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},i=t.querySelectorAll("iframe"),l=i.length,s=0;i=Array.prototype.slice.call(i);var u=function(){--l<=0&&o(s)};l||u(),i.forEach((function(t){e.matches(t,a.exclude)?u():a.onIframeReady(t,(function(e){n(t)&&(s++,r(e)),u()}),u)}))}},{key:"createIterator",value:function(e,t,n){return document.createNodeIterator(e,t,n,!1)}},{key:"createInstanceOnIframe",value:function(t){return new e(t.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(e,t,n){if(e.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_PRECEDING){if(null===t)return!0;if(t.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING)return!0}return!1}},{key:"getIteratorNode",value:function(e){var t=e.previousNode();return{prevNode:t,node:(null===t||e.nextNode())&&e.nextNode()}}},{key:"checkIframeFilter",value:function(e,t,n,r){var a=!1,o=!1;return r.forEach((function(e,t){e.val===n&&(a=t,o=e.handled)})),this.compareNodeIframe(e,t,n)?(!1!==a||o?!1===a||o||(r[a].handled=!0):r.push({val:n,handled:!0}),!0):(!1===a&&r.push({val:n,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(e,t,n,r){var a=this;e.forEach((function(e){e.handled||a.getIframeContents(e.val,(function(e){a.createInstanceOnIframe(e).forEachNode(t,n,r)}))}))}},{key:"iterateThroughNodes",value:function(e,t,n,r,a){for(var o=this,i=this.createIterator(t,e,r),l=[],s=[],u=void 0,c=void 0,d=function(){var e=o.getIteratorNode(i);return c=e.prevNode,u=e.node};d();)this.iframes&&this.forEachIframe(t,(function(e){return o.checkIframeFilter(u,c,e,l)}),(function(t){o.createInstanceOnIframe(t).forEachNode(e,(function(e){return s.push(e)}),r)})),s.push(u);s.forEach((function(e){n(e)})),this.iframes&&this.handleOpenIframes(l,e,n,r),a()}},{key:"forEachNode",value:function(e,t,n){var r=this,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},o=this.getContexts(),i=o.length;i||a(),o.forEach((function(o){var l=function(){r.iterateThroughNodes(e,o,t,n,(function(){--i<=0&&a()}))};r.iframes?r.waitForIframes(o,l):l()}))}}],[{key:"matches",value:function(e,t){var n="string"==typeof t?[t]:t,r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(r){var a=!1;return n.every((function(t){return!r.call(e,t)||(a=!0,!1)})),a}return!1}}]),e}(),o=function(){function o(e){t(this,o),this.ctx=e,this.ie=!1;var n=window.navigator.userAgent;(n.indexOf("MSIE")>-1||n.indexOf("Trident")>-1)&&(this.ie=!0)}return n(o,[{key:"log",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"debug",r=this.opt.log;this.opt.debug&&"object"===(void 0===r?"undefined":e(r))&&"function"==typeof r[n]&&r[n]("mark.js: "+t)}},{key:"escapeStr",value:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(e){return"disabled"!==this.opt.wildcards&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),"disabled"!==this.opt.wildcards&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e)}},{key:"createSynonymsRegExp",value:function(e){var t=this.opt.synonyms,n=this.opt.caseSensitive?"":"i",r=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(var a in t)if(t.hasOwnProperty(a)){var o=t[a],i="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(a):this.escapeStr(a),l="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(o):this.escapeStr(o);""!==i&&""!==l&&(e=e.replace(new RegExp("("+this.escapeStr(i)+"|"+this.escapeStr(l)+")","gm"+n),r+"("+this.processSynomyms(i)+"|"+this.processSynomyms(l)+")"+r))}return e}},{key:"processSynomyms",value:function(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}},{key:"setupWildcardsRegExp",value:function(e){return(e=e.replace(/(?:\\)*\?/g,(function(e){return"\\"===e.charAt(0)?"?":"\x01"}))).replace(/(?:\\)*\*/g,(function(e){return"\\"===e.charAt(0)?"*":"\x02"}))}},{key:"createWildcardsRegExp",value:function(e){var t="withSpaces"===this.opt.wildcards;return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(e){return e.replace(/[^(|)\\]/g,(function(e,t,n){var r=n.charAt(t+1);return/[(|)\\]/.test(r)||""===r?e:e+"\0"}))}},{key:"createJoinersRegExp",value:function(e){var t=[],n=this.opt.ignorePunctuation;return Array.isArray(n)&&n.length&&t.push(this.escapeStr(n.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join("["+t.join("")+"]*"):e}},{key:"createDiacriticsRegExp",value:function(e){var t=this.opt.caseSensitive?"":"i",n=this.opt.caseSensitive?["a\xe0\xe1\u1ea3\xe3\u1ea1\u0103\u1eb1\u1eaf\u1eb3\u1eb5\u1eb7\xe2\u1ea7\u1ea5\u1ea9\u1eab\u1ead\xe4\xe5\u0101\u0105","A\xc0\xc1\u1ea2\xc3\u1ea0\u0102\u1eb0\u1eae\u1eb2\u1eb4\u1eb6\xc2\u1ea6\u1ea4\u1ea8\u1eaa\u1eac\xc4\xc5\u0100\u0104","c\xe7\u0107\u010d","C\xc7\u0106\u010c","d\u0111\u010f","D\u0110\u010e","e\xe8\xe9\u1ebb\u1ebd\u1eb9\xea\u1ec1\u1ebf\u1ec3\u1ec5\u1ec7\xeb\u011b\u0113\u0119","E\xc8\xc9\u1eba\u1ebc\u1eb8\xca\u1ec0\u1ebe\u1ec2\u1ec4\u1ec6\xcb\u011a\u0112\u0118","i\xec\xed\u1ec9\u0129\u1ecb\xee\xef\u012b","I\xcc\xcd\u1ec8\u0128\u1eca\xce\xcf\u012a","l\u0142","L\u0141","n\xf1\u0148\u0144","N\xd1\u0147\u0143","o\xf2\xf3\u1ecf\xf5\u1ecd\xf4\u1ed3\u1ed1\u1ed5\u1ed7\u1ed9\u01a1\u1edf\u1ee1\u1edb\u1edd\u1ee3\xf6\xf8\u014d","O\xd2\xd3\u1ece\xd5\u1ecc\xd4\u1ed2\u1ed0\u1ed4\u1ed6\u1ed8\u01a0\u1ede\u1ee0\u1eda\u1edc\u1ee2\xd6\xd8\u014c","r\u0159","R\u0158","s\u0161\u015b\u0219\u015f","S\u0160\u015a\u0218\u015e","t\u0165\u021b\u0163","T\u0164\u021a\u0162","u\xf9\xfa\u1ee7\u0169\u1ee5\u01b0\u1eeb\u1ee9\u1eed\u1eef\u1ef1\xfb\xfc\u016f\u016b","U\xd9\xda\u1ee6\u0168\u1ee4\u01af\u1eea\u1ee8\u1eec\u1eee\u1ef0\xdb\xdc\u016e\u016a","y\xfd\u1ef3\u1ef7\u1ef9\u1ef5\xff","Y\xdd\u1ef2\u1ef6\u1ef8\u1ef4\u0178","z\u017e\u017c\u017a","Z\u017d\u017b\u0179"]:["a\xe0\xe1\u1ea3\xe3\u1ea1\u0103\u1eb1\u1eaf\u1eb3\u1eb5\u1eb7\xe2\u1ea7\u1ea5\u1ea9\u1eab\u1ead\xe4\xe5\u0101\u0105A\xc0\xc1\u1ea2\xc3\u1ea0\u0102\u1eb0\u1eae\u1eb2\u1eb4\u1eb6\xc2\u1ea6\u1ea4\u1ea8\u1eaa\u1eac\xc4\xc5\u0100\u0104","c\xe7\u0107\u010dC\xc7\u0106\u010c","d\u0111\u010fD\u0110\u010e","e\xe8\xe9\u1ebb\u1ebd\u1eb9\xea\u1ec1\u1ebf\u1ec3\u1ec5\u1ec7\xeb\u011b\u0113\u0119E\xc8\xc9\u1eba\u1ebc\u1eb8\xca\u1ec0\u1ebe\u1ec2\u1ec4\u1ec6\xcb\u011a\u0112\u0118","i\xec\xed\u1ec9\u0129\u1ecb\xee\xef\u012bI\xcc\xcd\u1ec8\u0128\u1eca\xce\xcf\u012a","l\u0142L\u0141","n\xf1\u0148\u0144N\xd1\u0147\u0143","o\xf2\xf3\u1ecf\xf5\u1ecd\xf4\u1ed3\u1ed1\u1ed5\u1ed7\u1ed9\u01a1\u1edf\u1ee1\u1edb\u1edd\u1ee3\xf6\xf8\u014dO\xd2\xd3\u1ece\xd5\u1ecc\xd4\u1ed2\u1ed0\u1ed4\u1ed6\u1ed8\u01a0\u1ede\u1ee0\u1eda\u1edc\u1ee2\xd6\xd8\u014c","r\u0159R\u0158","s\u0161\u015b\u0219\u015fS\u0160\u015a\u0218\u015e","t\u0165\u021b\u0163T\u0164\u021a\u0162","u\xf9\xfa\u1ee7\u0169\u1ee5\u01b0\u1eeb\u1ee9\u1eed\u1eef\u1ef1\xfb\xfc\u016f\u016bU\xd9\xda\u1ee6\u0168\u1ee4\u01af\u1eea\u1ee8\u1eec\u1eee\u1ef0\xdb\xdc\u016e\u016a","y\xfd\u1ef3\u1ef7\u1ef9\u1ef5\xffY\xdd\u1ef2\u1ef6\u1ef8\u1ef4\u0178","z\u017e\u017c\u017aZ\u017d\u017b\u0179"],r=[];return e.split("").forEach((function(a){n.every((function(n){if(-1!==n.indexOf(a)){if(r.indexOf(n)>-1)return!1;e=e.replace(new RegExp("["+n+"]","gm"+t),"["+n+"]"),r.push(n)}return!0}))})),e}},{key:"createMergedBlanksRegExp",value:function(e){return e.replace(/[\s]+/gim,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(e){var t=this,n="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\xa1\xbf",r=this.opt.accuracy,a="string"==typeof r?r:r.value,o="string"==typeof r?[]:r.limiters,i="";switch(o.forEach((function(e){i+="|"+t.escapeStr(e)})),a){case"partially":default:return"()("+e+")";case"complementary":return"()([^"+(i="\\s"+(i||this.escapeStr(n)))+"]*"+e+"[^"+i+"]*)";case"exactly":return"(^|\\s"+i+")("+e+")(?=$|\\s"+i+")"}}},{key:"getSeparatedKeywords",value:function(e){var t=this,n=[];return e.forEach((function(e){t.opt.separateWordSearch?e.split(" ").forEach((function(e){e.trim()&&-1===n.indexOf(e)&&n.push(e)})):e.trim()&&-1===n.indexOf(e)&&n.push(e)})),{keywords:n.sort((function(e,t){return t.length-e.length})),length:n.length}}},{key:"isNumeric",value:function(e){return Number(parseFloat(e))==e}},{key:"checkRanges",value:function(e){var t=this;if(!Array.isArray(e)||"[object Object]"!==Object.prototype.toString.call(e[0]))return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];var n=[],r=0;return e.sort((function(e,t){return e.start-t.start})).forEach((function(e){var a=t.callNoMatchOnInvalidRanges(e,r),o=a.start,i=a.end;a.valid&&(e.start=o,e.length=i-o,n.push(e),r=i)})),n}},{key:"callNoMatchOnInvalidRanges",value:function(e,t){var n=void 0,r=void 0,a=!1;return e&&void 0!==e.start?(r=(n=parseInt(e.start,10))+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&r-t>0&&r-n>0?a=!0:(this.log("Ignoring invalid or overlapping range: "+JSON.stringify(e)),this.opt.noMatch(e))):(this.log("Ignoring invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:n,end:r,valid:a}}},{key:"checkWhitespaceRanges",value:function(e,t,n){var r=void 0,a=!0,o=n.length,i=t-o,l=parseInt(e.start,10)-i;return(r=(l=l>o?o:l)+parseInt(e.length,10))>o&&(r=o,this.log("End range automatically set to the max value of "+o)),l<0||r-l<0||l>o||r>o?(a=!1,this.log("Invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)):""===n.substring(l,r).replace(/\s+/g,"")&&(a=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:l,end:r,valid:a}}},{key:"getTextNodes",value:function(e){var t=this,n="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,(function(e){r.push({start:n.length,end:(n+=e.textContent).length,node:e})}),(function(e){return t.matchesExclude(e.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),(function(){e({value:n,nodes:r})}))}},{key:"matchesExclude",value:function(e){return a.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(e,t,n){var r=this.opt.element?this.opt.element:"mark",a=e.splitText(t),o=a.splitText(n-t),i=document.createElement(r);return i.setAttribute("data-markjs","true"),this.opt.className&&i.setAttribute("class",this.opt.className),i.textContent=a.textContent,a.parentNode.replaceChild(i,a),o}},{key:"wrapRangeInMappedTextNode",value:function(e,t,n,r,a){var o=this;e.nodes.every((function(i,l){var s=e.nodes[l+1];if(void 0===s||s.start>t){if(!r(i.node))return!1;var u=t-i.start,c=(n>i.end?i.end:n)-i.start,d=e.value.substr(0,i.start),p=e.value.substr(c+i.start);if(i.node=o.wrapRangeInTextNode(i.node,u,c),e.value=d+p,e.nodes.forEach((function(t,n){n>=l&&(e.nodes[n].start>0&&n!==l&&(e.nodes[n].start-=c),e.nodes[n].end-=c)})),n-=c,a(i.node.previousSibling,i.start),!(n>i.end))return!1;t=i.end}return!0}))}},{key:"wrapMatches",value:function(e,t,n,r,a){var o=this,i=0===t?0:t+1;this.getTextNodes((function(t){t.nodes.forEach((function(t){t=t.node;for(var a=void 0;null!==(a=e.exec(t.textContent))&&""!==a[i];)if(n(a[i],t)){var l=a.index;if(0!==i)for(var s=1;s<i;s++)l+=a[s].length;t=o.wrapRangeInTextNode(t,l,l+a[i].length),r(t.previousSibling),e.lastIndex=0}})),a()}))}},{key:"wrapMatchesAcrossElements",value:function(e,t,n,r,a){var o=this,i=0===t?0:t+1;this.getTextNodes((function(t){for(var l=void 0;null!==(l=e.exec(t.value))&&""!==l[i];){var s=l.index;if(0!==i)for(var u=1;u<i;u++)s+=l[u].length;var c=s+l[i].length;o.wrapRangeInMappedTextNode(t,s,c,(function(e){return n(l[i],e)}),(function(t,n){e.lastIndex=n,r(t)}))}a()}))}},{key:"wrapRangeFromIndex",value:function(e,t,n,r){var a=this;this.getTextNodes((function(o){var i=o.value.length;e.forEach((function(e,r){var l=a.checkWhitespaceRanges(e,i,o.value),s=l.start,u=l.end;l.valid&&a.wrapRangeInMappedTextNode(o,s,u,(function(n){return t(n,e,o.value.substring(s,u),r)}),(function(t){n(t,e)}))})),r()}))}},{key:"unwrapMatches",value:function(e){for(var t=e.parentNode,n=document.createDocumentFragment();e.firstChild;)n.appendChild(e.removeChild(e.firstChild));t.replaceChild(n,e),this.ie?this.normalizeTextNode(t):t.normalize()}},{key:"normalizeTextNode",value:function(e){if(e){if(3===e.nodeType)for(;e.nextSibling&&3===e.nextSibling.nodeType;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}},{key:"markRegExp",value:function(e,t){var n=this;this.opt=t,this.log('Searching with expression "'+e+'"');var r=0,a="wrapMatches",o=function(e){r++,n.opt.each(e)};this.opt.acrossElements&&(a="wrapMatchesAcrossElements"),this[a](e,this.opt.ignoreGroups,(function(e,t){return n.opt.filter(t,e,r)}),o,(function(){0===r&&n.opt.noMatch(e),n.opt.done(r)}))}},{key:"mark",value:function(e,t){var n=this;this.opt=t;var r=0,a="wrapMatches",o=this.getSeparatedKeywords("string"==typeof e?[e]:e),i=o.keywords,l=o.length,s=this.opt.caseSensitive?"":"i",u=function e(t){var o=new RegExp(n.createRegExp(t),"gm"+s),u=0;n.log('Searching with expression "'+o+'"'),n[a](o,1,(function(e,a){return n.opt.filter(a,t,r,u)}),(function(e){u++,r++,n.opt.each(e)}),(function(){0===u&&n.opt.noMatch(t),i[l-1]===t?n.opt.done(r):e(i[i.indexOf(t)+1])}))};this.opt.acrossElements&&(a="wrapMatchesAcrossElements"),0===l?this.opt.done(r):u(i[0])}},{key:"markRanges",value:function(e,t){var n=this;this.opt=t;var r=0,a=this.checkRanges(e);a&&a.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(a)),this.wrapRangeFromIndex(a,(function(e,t,r,a){return n.opt.filter(e,t,r,a)}),(function(e,t){r++,n.opt.each(e,t)}),(function(){n.opt.done(r)}))):this.opt.done(r)}},{key:"unmark",value:function(e){var t=this;this.opt=e;var n=this.opt.element?this.opt.element:"*";n+="[data-markjs]",this.opt.className&&(n+="."+this.opt.className),this.log('Removal selector "'+n+'"'),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,(function(e){t.unwrapMatches(e)}),(function(e){var r=a.matches(e,n),o=t.matchesExclude(e);return!r||o?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),this.opt.done)}},{key:"opt",set:function(e){this._opt=r({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:function(){},noMatch:function(){},filter:function(){return!0},done:function(){},debug:!1,log:window.console},e)},get:function(){return this._opt}},{key:"iterator",get:function(){return new a(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}}]),o}();function i(e){var t=this,n=new o(e);return this.mark=function(e,r){return n.mark(e,r),t},this.markRegExp=function(e,r){return n.markRegExp(e,r),t},this.markRanges=function(e,r){return n.markRanges(e,r),t},this.unmark=function(e){return n.unmark(e),t},this}return i}()},6222:(e,t,n)=>{"use strict";n.r(t)},142:(e,t,n)=>{"use strict";n.r(t)},8504:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function a(e,t,n){return e<t?t:e>n?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=p(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},9911:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},3916:(e,t,n)=>{const r=n(9911),a=n(4587),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(3392).resolve(t)],delete Prism.languages[e],n(3392)(t),o.add(e)}))}i.silent=!1,e.exports=i},3109:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s<l.length&&!(a>=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],p="string"==typeof u?u:u.content,f=t(r,c),m=p.indexOf(f);if(m>-1){++a;var h=p.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),y=p.substring(m+f.length),b=[];h&&b.push.apply(b,i([h])),b.push(g),y&&b.push.apply(b,i([y])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(Prism)},3392:(e,t,n)=>{var r={"./":3916};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=3392},4587:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function a(r,o){if(!(r in n)){o.push(r);var i=o.indexOf(r);if(i<o.length-1)throw new Error("Circular dependency: "+o.slice(i).join(" -> "));var l={},s=e[r];if(s){function u(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,u),t(s.optional,u),t(s.modify,u)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(s);i=i.map(u),l=(l||[]).map(u);var c=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var p,f=r(s),m=c;a(m);){for(var h in p={},m){var g=s[h];t(g&&g.modify,(function(e){e in d&&(p[e]=!0)}))}for(var y in d)if(!(y in c))for(var b in f(y))if(b in c){p[y]=!0;break}for(var v in m=p)c[v]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function u(e){if(e in l)return l[e];s[e]=!0;var a,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)a=r(e);else{var p=i(c.map((function(e){var t=u(e);return delete s[e],t})));o?a=o(p,(function(){return r(e)})):r(e)}return l[e]=a}for(var c in n)u(c);var d=[];for(var p in s)d.push(l[p]);return i(d)}(f,c,t,n)}};return w}}();e.exports=t},8772:(e,t,n)=>{"use strict";var r=n(331);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},3615:(e,t,n)=>{e.exports=n(8772)()},331:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},3577:(e,t,n)=>{"use strict";var r=n(7378),a=n(3637);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var i=new Set,l={};function s(e,t){u(e,t),u(e+"Capture",t)}function u(e,t){for(l[e]=t,e=0;e<t.length;e++)i.add(t[e])}var c=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),d=Object.prototype.hasOwnProperty,p=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,f={},m={};function h(e,t,n,r,a,o,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var g={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){g[e]=new h(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];g[t]=new h(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){g[e]=new h(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){g[e]=new h(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){g[e]=new h(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){g[e]=new h(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){g[e]=new h(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){g[e]=new h(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){g[e]=new h(e,5,!1,e.toLowerCase(),null,!1,!1)}));var y=/[\-:]([a-z])/g;function b(e){return e[1].toUpperCase()}function v(e,t,n,r){var a=g.hasOwnProperty(t)?g[t]:null;(null!==a?0!==a.type:r||!(2<t.length)||"o"!==t[0]&&"O"!==t[0]||"n"!==t[1]&&"N"!==t[1])&&(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,a,r)&&(n=null),r||null===a?function(e){return!!d.call(m,e)||!d.call(f,e)&&(p.test(e)?m[e]=!0:(f[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):a.mustUseProperty?e[a.propertyName]=null===n?3!==a.type&&"":n:(t=a.attributeName,r=a.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(a=a.type)||4===a&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(y,b);g[t]=new h(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(y,b);g[t]=new h(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(y,b);g[t]=new h(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){g[e]=new h(e,1,!1,e.toLowerCase(),null,!1,!1)})),g.xlinkHref=new h("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){g[e]=new h(e,1,!1,e.toLowerCase(),null,!0,!0)}));var w=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,k=Symbol.for("react.element"),x=Symbol.for("react.portal"),S=Symbol.for("react.fragment"),E=Symbol.for("react.strict_mode"),C=Symbol.for("react.profiler"),_=Symbol.for("react.provider"),j=Symbol.for("react.context"),T=Symbol.for("react.forward_ref"),N=Symbol.for("react.suspense"),R=Symbol.for("react.suspense_list"),A=Symbol.for("react.memo"),L=Symbol.for("react.lazy");Symbol.for("react.scope"),Symbol.for("react.debug_trace_mode");var P=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden"),Symbol.for("react.cache"),Symbol.for("react.tracing_marker");var O=Symbol.iterator;function I(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=O&&e[O]||e["@@iterator"])?e:null}var D,M=Object.assign;function F(e){if(void 0===D)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);D=t&&t[1]||""}return"\n"+D+e}var z=!1;function B(e,t){if(!e||z)return"";z=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(u){var r=u}Reflect.construct(e,[],t)}else{try{t.call()}catch(u){r=u}e.call(t.prototype)}else{try{throw Error()}catch(u){r=u}e()}}catch(u){if(u&&r&&"string"==typeof u.stack){for(var a=u.stack.split("\n"),o=r.stack.split("\n"),i=a.length-1,l=o.length-1;1<=i&&0<=l&&a[i]!==o[l];)l--;for(;1<=i&&0<=l;i--,l--)if(a[i]!==o[l]){if(1!==i||1!==l)do{if(i--,0>--l||a[i]!==o[l]){var s="\n"+a[i].replace(" at new "," at ");return e.displayName&&s.includes("<anonymous>")&&(s=s.replace("<anonymous>",e.displayName)),s}}while(1<=i&&0<=l);break}}}finally{z=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?F(e):""}function $(e){switch(e.tag){case 5:return F(e.type);case 16:return F("Lazy");case 13:return F("Suspense");case 19:return F("SuspenseList");case 0:case 2:case 15:return e=B(e.type,!1);case 11:return e=B(e.type.render,!1);case 1:return e=B(e.type,!0);default:return""}}function U(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case S:return"Fragment";case x:return"Portal";case C:return"Profiler";case E:return"StrictMode";case N:return"Suspense";case R:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case j:return(e.displayName||"Context")+".Consumer";case _:return(e._context.displayName||"Context")+".Provider";case T:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case A:return null!==(t=e.displayName||null)?t:U(e.type)||"Memo";case L:t=e._payload,e=e._init;try{return U(e(t))}catch(n){}}return null}function q(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=(e=t.render).displayName||e.name||"",t.displayName||(""!==e?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return U(t);case 8:return t===E?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"==typeof t)return t.displayName||t.name||null;if("string"==typeof t)return t}return null}function H(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function Z(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function G(e){e._valueTracker||(e._valueTracker=function(e){var t=Z(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var a=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){r=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function W(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Z(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function V(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function Q(e,t){var n=t.checked;return M({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function K(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=H(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function Y(e,t){null!=(t=t.checked)&&v(e,"checked",t,!1)}function J(e,t){Y(e,t);var n=H(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ee(e,t.type,n):t.hasOwnProperty("defaultValue")&&ee(e,t.type,H(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function X(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ee(e,t,n){"number"===t&&V(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var te=Array.isArray;function ne(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+H(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function re(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(o(91));return M({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function ae(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(o(92));if(te(n)){if(1<n.length)throw Error(o(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:H(n)}}function oe(e,t){var n=H(t.value),r=H(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ie(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}function le(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function se(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?le(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var ue,ce,de=(ce=function(e,t){if("http://www.w3.org/2000/svg"!==e.namespaceURI||"innerHTML"in e)e.innerHTML=t;else{for((ue=ue||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=ue.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ce(e,t)}))}:ce);function pe(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var fe={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},me=["Webkit","ms","Moz","O"];function he(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||fe.hasOwnProperty(e)&&fe[e]?(""+t).trim():t+"px"}function ge(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),a=he(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}Object.keys(fe).forEach((function(e){me.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),fe[t]=fe[e]}))}));var ye=M({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function be(e,t){if(t){if(ye[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(o(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(o(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(o(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(o(62))}}function ve(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var we=null;function ke(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var xe=null,Se=null,Ee=null;function Ce(e){if(e=va(e)){if("function"!=typeof xe)throw Error(o(280));var t=e.stateNode;t&&(t=ka(t),xe(e.stateNode,e.type,t))}}function _e(e){Se?Ee?Ee.push(e):Ee=[e]:Se=e}function je(){if(Se){var e=Se,t=Ee;if(Ee=Se=null,Ce(e),t)for(e=0;e<t.length;e++)Ce(t[e])}}function Te(e,t){return e(t)}function Ne(){}var Re=!1;function Ae(e,t,n){if(Re)return e(t,n);Re=!0;try{return Te(e,t,n)}finally{Re=!1,(null!==Se||null!==Ee)&&(Ne(),je())}}function Le(e,t){var n=e.stateNode;if(null===n)return null;var r=ka(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(o(231,t,typeof n));return n}var Pe=!1;if(c)try{var Oe={};Object.defineProperty(Oe,"passive",{get:function(){Pe=!0}}),window.addEventListener("test",Oe,Oe),window.removeEventListener("test",Oe,Oe)}catch(ce){Pe=!1}function Ie(e,t,n,r,a,o,i,l,s){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(c){this.onError(c)}}var De=!1,Me=null,Fe=!1,ze=null,Be={onError:function(e){De=!0,Me=e}};function $e(e,t,n,r,a,o,i,l,s){De=!1,Me=null,Ie.apply(Be,arguments)}function Ue(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(4098&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function qe(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function He(e){if(Ue(e)!==e)throw Error(o(188))}function Ze(e){return null!==(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ue(e)))throw Error(o(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var i=a.alternate;if(null===i){if(null!==(r=a.return)){n=r;continue}break}if(a.child===i.child){for(i=a.child;i;){if(i===n)return He(a),e;if(i===r)return He(a),t;i=i.sibling}throw Error(o(188))}if(n.return!==r.return)n=a,r=i;else{for(var l=!1,s=a.child;s;){if(s===n){l=!0,n=a,r=i;break}if(s===r){l=!0,r=a,n=i;break}s=s.sibling}if(!l){for(s=i.child;s;){if(s===n){l=!0,n=i,r=a;break}if(s===r){l=!0,r=i,n=a;break}s=s.sibling}if(!l)throw Error(o(189))}}if(n.alternate!==r)throw Error(o(190))}if(3!==n.tag)throw Error(o(188));return n.stateNode.current===n?e:t}(e))?Ge(e):null}function Ge(e){if(5===e.tag||6===e.tag)return e;for(e=e.child;null!==e;){var t=Ge(e);if(null!==t)return t;e=e.sibling}return null}var We=a.unstable_scheduleCallback,Ve=a.unstable_cancelCallback,Qe=a.unstable_shouldYield,Ke=a.unstable_requestPaint,Ye=a.unstable_now,Je=a.unstable_getCurrentPriorityLevel,Xe=a.unstable_ImmediatePriority,et=a.unstable_UserBlockingPriority,tt=a.unstable_NormalPriority,nt=a.unstable_LowPriority,rt=a.unstable_IdlePriority,at=null,ot=null;var it=Math.clz32?Math.clz32:function(e){return e>>>=0,0===e?32:31-(lt(e)/st|0)|0},lt=Math.log,st=Math.LN2;var ut=64,ct=4194304;function dt(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&e;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&e;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function pt(e,t){var n=e.pendingLanes;if(0===n)return 0;var r=0,a=e.suspendedLanes,o=e.pingedLanes,i=268435455&n;if(0!==i){var l=i&~a;0!==l?r=dt(l):0!==(o&=i)&&(r=dt(o))}else 0!==(i=n&~a)?r=dt(i):0!==o&&(r=dt(o));if(0===r)return 0;if(0!==t&&t!==r&&0==(t&a)&&((a=r&-r)>=(o=t&-t)||16===a&&0!=(4194240&o)))return t;if(0!=(4&r)&&(r|=16&n),0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)a=1<<(n=31-it(t)),r|=e[n],t&=~a;return r}function ft(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function mt(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function ht(){var e=ut;return 0==(4194240&(ut<<=1))&&(ut=64),e}function gt(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function yt(e,t,n){e.pendingLanes|=t,536870912!==t&&(e.suspendedLanes=0,e.pingedLanes=0),(e=e.eventTimes)[t=31-it(t)]=n}function bt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-it(n),a=1<<r;a&t|e[r]&t&&(e[r]|=t),n&=~a}}var vt=0;function wt(e){return 1<(e&=-e)?4<e?0!=(268435455&e)?16:536870912:4:1}var kt,xt,St,Et,Ct,_t=!1,jt=[],Tt=null,Nt=null,Rt=null,At=new Map,Lt=new Map,Pt=[],Ot="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function It(e,t){switch(e){case"focusin":case"focusout":Tt=null;break;case"dragenter":case"dragleave":Nt=null;break;case"mouseover":case"mouseout":Rt=null;break;case"pointerover":case"pointerout":At.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":Lt.delete(t.pointerId)}}function Dt(e,t,n,r,a,o){return null===e||e.nativeEvent!==o?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:o,targetContainers:[a]},null!==t&&(null!==(t=va(t))&&xt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function Mt(e){var t=ba(e.target);if(null!==t){var n=Ue(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=qe(n)))return e.blockedOn=t,void Ct(e.priority,(function(){St(n)}))}else if(3===t&&n.stateNode.current.memoizedState.isDehydrated)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function Ft(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Qt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=va(n))&&xt(t),e.blockedOn=n,!1;var r=new(n=e.nativeEvent).constructor(n.type,n);we=r,n.target.dispatchEvent(r),we=null,t.shift()}return!0}function zt(e,t,n){Ft(e)&&n.delete(t)}function Bt(){_t=!1,null!==Tt&&Ft(Tt)&&(Tt=null),null!==Nt&&Ft(Nt)&&(Nt=null),null!==Rt&&Ft(Rt)&&(Rt=null),At.forEach(zt),Lt.forEach(zt)}function $t(e,t){e.blockedOn===t&&(e.blockedOn=null,_t||(_t=!0,a.unstable_scheduleCallback(a.unstable_NormalPriority,Bt)))}function Ut(e){function t(t){return $t(t,e)}if(0<jt.length){$t(jt[0],e);for(var n=1;n<jt.length;n++){var r=jt[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==Tt&&$t(Tt,e),null!==Nt&&$t(Nt,e),null!==Rt&&$t(Rt,e),At.forEach(t),Lt.forEach(t),n=0;n<Pt.length;n++)(r=Pt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<Pt.length&&null===(n=Pt[0]).blockedOn;)Mt(n),null===n.blockedOn&&Pt.shift()}var qt=w.ReactCurrentBatchConfig,Ht=!0;function Zt(e,t,n,r){var a=vt,o=qt.transition;qt.transition=null;try{vt=1,Wt(e,t,n,r)}finally{vt=a,qt.transition=o}}function Gt(e,t,n,r){var a=vt,o=qt.transition;qt.transition=null;try{vt=4,Wt(e,t,n,r)}finally{vt=a,qt.transition=o}}function Wt(e,t,n,r){if(Ht){var a=Qt(e,t,n,r);if(null===a)Hr(e,t,r,Vt,n),It(e,r);else if(function(e,t,n,r,a){switch(t){case"focusin":return Tt=Dt(Tt,e,t,n,r,a),!0;case"dragenter":return Nt=Dt(Nt,e,t,n,r,a),!0;case"mouseover":return Rt=Dt(Rt,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return At.set(o,Dt(At.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,Lt.set(o,Dt(Lt.get(o)||null,e,t,n,r,a)),!0}return!1}(a,e,t,n,r))r.stopPropagation();else if(It(e,r),4&t&&-1<Ot.indexOf(e)){for(;null!==a;){var o=va(a);if(null!==o&&kt(o),null===(o=Qt(e,t,n,r))&&Hr(e,t,r,Vt,n),o===a)break;a=o}null!==a&&r.stopPropagation()}else Hr(e,t,r,null,n)}}var Vt=null;function Qt(e,t,n,r){if(Vt=null,null!==(e=ba(e=ke(r))))if(null===(t=Ue(e)))e=null;else if(13===(n=t.tag)){if(null!==(e=qe(t)))return e;e=null}else if(3===n){if(t.stateNode.current.memoizedState.isDehydrated)return 3===t.tag?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null);return Vt=e,null}function Kt(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(Je()){case Xe:return 1;case et:return 4;case tt:case nt:return 16;case rt:return 536870912;default:return 16}default:return 16}}var Yt=null,Jt=null,Xt=null;function en(){if(Xt)return Xt;var e,t,n=Jt,r=n.length,a="value"in Yt?Yt.value:Yt.textContent,o=a.length;for(e=0;e<r&&n[e]===a[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===a[o-t];t++);return Xt=a.slice(e,1<t?1-t:void 0)}function tn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function nn(){return!0}function rn(){return!1}function an(e){function t(t,n,r,a,o){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=a,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(a):a[i]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?nn:rn,this.isPropagationStopped=rn,this}return M(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=nn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=nn)},persist:function(){},isPersistent:nn}),t}var on,ln,sn,un={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},cn=an(un),dn=M({},un,{view:0,detail:0}),pn=an(dn),fn=M({},dn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Cn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==sn&&(sn&&"mousemove"===e.type?(on=e.screenX-sn.screenX,ln=e.screenY-sn.screenY):ln=on=0,sn=e),on)},movementY:function(e){return"movementY"in e?e.movementY:ln}}),mn=an(fn),hn=an(M({},fn,{dataTransfer:0})),gn=an(M({},dn,{relatedTarget:0})),yn=an(M({},un,{animationName:0,elapsedTime:0,pseudoElement:0})),bn=M({},un,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),vn=an(bn),wn=an(M({},un,{data:0})),kn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},xn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Sn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function En(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Sn[e])&&!!t[e]}function Cn(){return En}var _n=M({},dn,{key:function(e){if(e.key){var t=kn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=tn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?xn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Cn,charCode:function(e){return"keypress"===e.type?tn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?tn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),jn=an(_n),Tn=an(M({},fn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Nn=an(M({},dn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Cn})),Rn=an(M({},un,{propertyName:0,elapsedTime:0,pseudoElement:0})),An=M({},fn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Ln=an(An),Pn=[9,13,27,32],On=c&&"CompositionEvent"in window,In=null;c&&"documentMode"in document&&(In=document.documentMode);var Dn=c&&"TextEvent"in window&&!In,Mn=c&&(!On||In&&8<In&&11>=In),Fn=String.fromCharCode(32),zn=!1;function Bn(e,t){switch(e){case"keyup":return-1!==Pn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function $n(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Un=!1;var qn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Hn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!qn[e.type]:"textarea"===t}function Zn(e,t,n,r){_e(r),0<(t=Gr(t,"onChange")).length&&(n=new cn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Gn=null,Wn=null;function Vn(e){Fr(e,0)}function Qn(e){if(W(wa(e)))return e}function Kn(e,t){if("change"===e)return t}var Yn=!1;if(c){var Jn;if(c){var Xn="oninput"in document;if(!Xn){var er=document.createElement("div");er.setAttribute("oninput","return;"),Xn="function"==typeof er.oninput}Jn=Xn}else Jn=!1;Yn=Jn&&(!document.documentMode||9<document.documentMode)}function tr(){Gn&&(Gn.detachEvent("onpropertychange",nr),Wn=Gn=null)}function nr(e){if("value"===e.propertyName&&Qn(Wn)){var t=[];Zn(t,Wn,e,ke(e)),Ae(Vn,t)}}function rr(e,t,n){"focusin"===e?(tr(),Wn=n,(Gn=t).attachEvent("onpropertychange",nr)):"focusout"===e&&tr()}function ar(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Qn(Wn)}function or(e,t){if("click"===e)return Qn(t)}function ir(e,t){if("input"===e||"change"===e)return Qn(t)}var lr="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t};function sr(e,t){if(lr(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var a=n[r];if(!d.call(t,a)||!lr(e[a],t[a]))return!1}return!0}function ur(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function cr(e,t){var n,r=ur(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=ur(r)}}function dr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?dr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function pr(){for(var e=window,t=V();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=V((e=t.contentWindow).document)}return t}function fr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}function mr(e){var t=pr(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&dr(n.ownerDocument.documentElement,n)){if(null!==r&&fr(n))if(t=r.start,void 0===(e=r.end)&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if((e=(t=n.ownerDocument||document)&&t.defaultView||window).getSelection){e=e.getSelection();var a=n.textContent.length,o=Math.min(r.start,a);r=void 0===r.end?o:Math.min(r.end,a),!e.extend&&o>r&&(a=r,r=o,o=a),a=cr(n,o);var i=cr(n,r);a&&i&&(1!==e.rangeCount||e.anchorNode!==a.node||e.anchorOffset!==a.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&((t=t.createRange()).setStart(a.node,a.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"==typeof n.focus&&n.focus(),n=0;n<t.length;n++)(e=t[n]).element.scrollLeft=e.left,e.element.scrollTop=e.top}}var hr=c&&"documentMode"in document&&11>=document.documentMode,gr=null,yr=null,br=null,vr=!1;function wr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;vr||null==gr||gr!==V(r)||("selectionStart"in(r=gr)&&fr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},br&&sr(br,r)||(br=r,0<(r=Gr(yr,"onSelect")).length&&(t=new cn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=gr)))}function kr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var xr={animationend:kr("Animation","AnimationEnd"),animationiteration:kr("Animation","AnimationIteration"),animationstart:kr("Animation","AnimationStart"),transitionend:kr("Transition","TransitionEnd")},Sr={},Er={};function Cr(e){if(Sr[e])return Sr[e];if(!xr[e])return e;var t,n=xr[e];for(t in n)if(n.hasOwnProperty(t)&&t in Er)return Sr[e]=n[t];return e}c&&(Er=document.createElement("div").style,"AnimationEvent"in window||(delete xr.animationend.animation,delete xr.animationiteration.animation,delete xr.animationstart.animation),"TransitionEvent"in window||delete xr.transitionend.transition);var _r=Cr("animationend"),jr=Cr("animationiteration"),Tr=Cr("animationstart"),Nr=Cr("transitionend"),Rr=new Map,Ar="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function Lr(e,t){Rr.set(e,t),s(t,[e])}for(var Pr=0;Pr<Ar.length;Pr++){var Or=Ar[Pr];Lr(Or.toLowerCase(),"on"+(Or[0].toUpperCase()+Or.slice(1)))}Lr(_r,"onAnimationEnd"),Lr(jr,"onAnimationIteration"),Lr(Tr,"onAnimationStart"),Lr("dblclick","onDoubleClick"),Lr("focusin","onFocus"),Lr("focusout","onBlur"),Lr(Nr,"onTransitionEnd"),u("onMouseEnter",["mouseout","mouseover"]),u("onMouseLeave",["mouseout","mouseover"]),u("onPointerEnter",["pointerout","pointerover"]),u("onPointerLeave",["pointerout","pointerover"]),s("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),s("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),s("onBeforeInput",["compositionend","keypress","textInput","paste"]),s("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),s("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),s("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Ir="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Dr=new Set("cancel close invalid load scroll toggle".split(" ").concat(Ir));function Mr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,a,i,l,s,u){if($e.apply(this,arguments),De){if(!De)throw Error(o(198));var c=Me;De=!1,Me=null,Fe||(Fe=!0,ze=c)}}(r,t,void 0,e),e.currentTarget=null}function Fr(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],a=r.event;r=r.listeners;e:{var o=void 0;if(t)for(var i=r.length-1;0<=i;i--){var l=r[i],s=l.instance,u=l.currentTarget;if(l=l.listener,s!==o&&a.isPropagationStopped())break e;Mr(a,l,u),o=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,u=l.currentTarget,l=l.listener,s!==o&&a.isPropagationStopped())break e;Mr(a,l,u),o=s}}}if(Fe)throw e=ze,Fe=!1,ze=null,e}function zr(e,t){var n=t[ha];void 0===n&&(n=t[ha]=new Set);var r=e+"__bubble";n.has(r)||(qr(t,e,2,!1),n.add(r))}function Br(e,t,n){var r=0;t&&(r|=4),qr(n,e,r,t)}var $r="_reactListening"+Math.random().toString(36).slice(2);function Ur(e){if(!e[$r]){e[$r]=!0,i.forEach((function(t){"selectionchange"!==t&&(Dr.has(t)||Br(t,!1,e),Br(t,!0,e))}));var t=9===e.nodeType?e:e.ownerDocument;null===t||t[$r]||(t[$r]=!0,Br("selectionchange",!1,t))}}function qr(e,t,n,r){switch(Kt(t)){case 1:var a=Zt;break;case 4:a=Gt;break;default:a=Wt}n=a.bind(null,t,n,e),a=void 0,!Pe||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(a=!0),r?void 0!==a?e.addEventListener(t,n,{capture:!0,passive:a}):e.addEventListener(t,n,!0):void 0!==a?e.addEventListener(t,n,{passive:a}):e.addEventListener(t,n,!1)}function Hr(e,t,n,r,a){var o=r;if(0==(1&t)&&0==(2&t)&&null!==r)e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var l=r.stateNode.containerInfo;if(l===a||8===l.nodeType&&l.parentNode===a)break;if(4===i)for(i=r.return;null!==i;){var s=i.tag;if((3===s||4===s)&&((s=i.stateNode.containerInfo)===a||8===s.nodeType&&s.parentNode===a))return;i=i.return}for(;null!==l;){if(null===(i=ba(l)))return;if(5===(s=i.tag)||6===s){r=o=i;continue e}l=l.parentNode}}r=r.return}Ae((function(){var r=o,a=ke(n),i=[];e:{var l=Rr.get(e);if(void 0!==l){var s=cn,u=e;switch(e){case"keypress":if(0===tn(n))break e;case"keydown":case"keyup":s=jn;break;case"focusin":u="focus",s=gn;break;case"focusout":u="blur",s=gn;break;case"beforeblur":case"afterblur":s=gn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":s=mn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":s=hn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":s=Nn;break;case _r:case jr:case Tr:s=yn;break;case Nr:s=Rn;break;case"scroll":s=pn;break;case"wheel":s=Ln;break;case"copy":case"cut":case"paste":s=vn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":s=Tn}var c=0!=(4&t),d=!c&&"scroll"===e,p=c?null!==l?l+"Capture":null:l;c=[];for(var f,m=r;null!==m;){var h=(f=m).stateNode;if(5===f.tag&&null!==h&&(f=h,null!==p&&(null!=(h=Le(m,p))&&c.push(Zr(m,h,f)))),d)break;m=m.return}0<c.length&&(l=new s(l,u,null,n,a),i.push({event:l,listeners:c}))}}if(0==(7&t)){if(s="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||n===we||!(u=n.relatedTarget||n.fromElement)||!ba(u)&&!u[ma])&&(s||l)&&(l=a.window===a?a:(l=a.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(u=(u=n.relatedTarget||n.toElement)?ba(u):null)&&(u!==(d=Ue(u))||5!==u.tag&&6!==u.tag)&&(u=null)):(s=null,u=r),s!==u)){if(c=mn,h="onMouseLeave",p="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(c=Tn,h="onPointerLeave",p="onPointerEnter",m="pointer"),d=null==s?l:wa(s),f=null==u?l:wa(u),(l=new c(h,m+"leave",s,n,a)).target=d,l.relatedTarget=f,h=null,ba(a)===r&&((c=new c(p,m+"enter",u,n,a)).target=f,c.relatedTarget=d,h=c),d=h,s&&u)e:{for(p=u,m=0,f=c=s;f;f=Wr(f))m++;for(f=0,h=p;h;h=Wr(h))f++;for(;0<m-f;)c=Wr(c),m--;for(;0<f-m;)p=Wr(p),f--;for(;m--;){if(c===p||null!==p&&c===p.alternate)break e;c=Wr(c),p=Wr(p)}c=null}else c=null;null!==s&&Vr(i,l,s,c,!1),null!==u&&null!==d&&Vr(i,d,u,c,!0)}if("select"===(s=(l=r?wa(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===s&&"file"===l.type)var g=Kn;else if(Hn(l))if(Yn)g=ir;else{g=ar;var y=rr}else(s=l.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(g=or);switch(g&&(g=g(e,r))?Zn(i,g,n,a):(y&&y(e,l,r),"focusout"===e&&(y=l._wrapperState)&&y.controlled&&"number"===l.type&&ee(l,"number",l.value)),y=r?wa(r):window,e){case"focusin":(Hn(y)||"true"===y.contentEditable)&&(gr=y,yr=r,br=null);break;case"focusout":br=yr=gr=null;break;case"mousedown":vr=!0;break;case"contextmenu":case"mouseup":case"dragend":vr=!1,wr(i,n,a);break;case"selectionchange":if(hr)break;case"keydown":case"keyup":wr(i,n,a)}var b;if(On)e:{switch(e){case"compositionstart":var v="onCompositionStart";break e;case"compositionend":v="onCompositionEnd";break e;case"compositionupdate":v="onCompositionUpdate";break e}v=void 0}else Un?Bn(e,n)&&(v="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(v="onCompositionStart");v&&(Mn&&"ko"!==n.locale&&(Un||"onCompositionStart"!==v?"onCompositionEnd"===v&&Un&&(b=en()):(Jt="value"in(Yt=a)?Yt.value:Yt.textContent,Un=!0)),0<(y=Gr(r,v)).length&&(v=new wn(v,e,null,n,a),i.push({event:v,listeners:y}),b?v.data=b:null!==(b=$n(n))&&(v.data=b))),(b=Dn?function(e,t){switch(e){case"compositionend":return $n(t);case"keypress":return 32!==t.which?null:(zn=!0,Fn);case"textInput":return(e=t.data)===Fn&&zn?null:e;default:return null}}(e,n):function(e,t){if(Un)return"compositionend"===e||!On&&Bn(e,t)?(e=en(),Xt=Jt=Yt=null,Un=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Mn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=Gr(r,"onBeforeInput")).length&&(a=new wn("onBeforeInput","beforeinput",null,n,a),i.push({event:a,listeners:r}),a.data=b))}Fr(i,t)}))}function Zr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Gr(e,t){for(var n=t+"Capture",r=[];null!==e;){var a=e,o=a.stateNode;5===a.tag&&null!==o&&(a=o,null!=(o=Le(e,n))&&r.unshift(Zr(e,o,a)),null!=(o=Le(e,t))&&r.push(Zr(e,o,a))),e=e.return}return r}function Wr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Vr(e,t,n,r,a){for(var o=t._reactName,i=[];null!==n&&n!==r;){var l=n,s=l.alternate,u=l.stateNode;if(null!==s&&s===r)break;5===l.tag&&null!==u&&(l=u,a?null!=(s=Le(n,o))&&i.unshift(Zr(n,s,l)):a||null!=(s=Le(n,o))&&i.push(Zr(n,s,l))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}var Qr=/\r\n?/g,Kr=/\u0000|\uFFFD/g;function Yr(e){return("string"==typeof e?e:""+e).replace(Qr,"\n").replace(Kr,"")}function Jr(e,t,n){if(t=Yr(t),Yr(e)!==t&&n)throw Error(o(425))}function Xr(){}var ea=null,ta=null;function na(e,t){return"textarea"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var ra="function"==typeof setTimeout?setTimeout:void 0,aa="function"==typeof clearTimeout?clearTimeout:void 0,oa="function"==typeof Promise?Promise:void 0,ia="function"==typeof queueMicrotask?queueMicrotask:void 0!==oa?function(e){return oa.resolve(null).then(e).catch(la)}:ra;function la(e){setTimeout((function(){throw e}))}function sa(e,t){var n=t,r=0;do{var a=n.nextSibling;if(e.removeChild(n),a&&8===a.nodeType)if("/$"===(n=a.data)){if(0===r)return e.removeChild(a),void Ut(t);r--}else"$"!==n&&"$?"!==n&&"$!"!==n||r++;n=a}while(n);Ut(t)}function ua(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break;if(8===t){if("$"===(t=e.data)||"$!"===t||"$?"===t)break;if("/$"===t)return null}}return e}function ca(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var da=Math.random().toString(36).slice(2),pa="__reactFiber$"+da,fa="__reactProps$"+da,ma="__reactContainer$"+da,ha="__reactEvents$"+da,ga="__reactListeners$"+da,ya="__reactHandles$"+da;function ba(e){var t=e[pa];if(t)return t;for(var n=e.parentNode;n;){if(t=n[ma]||n[pa]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=ca(e);null!==e;){if(n=e[pa])return n;e=ca(e)}return t}n=(e=n).parentNode}return null}function va(e){return!(e=e[pa]||e[ma])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function wa(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(o(33))}function ka(e){return e[fa]||null}var xa=[],Sa=-1;function Ea(e){return{current:e}}function Ca(e){0>Sa||(e.current=xa[Sa],xa[Sa]=null,Sa--)}function _a(e,t){Sa++,xa[Sa]=e.current,e.current=t}var ja={},Ta=Ea(ja),Na=Ea(!1),Ra=ja;function Aa(e,t){var n=e.type.contextTypes;if(!n)return ja;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a,o={};for(a in n)o[a]=t[a];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function La(e){return null!=(e=e.childContextTypes)}function Pa(){Ca(Na),Ca(Ta)}function Oa(e,t,n){if(Ta.current!==ja)throw Error(o(168));_a(Ta,t),_a(Na,n)}function Ia(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var a in r=r.getChildContext())if(!(a in t))throw Error(o(108,q(e)||"Unknown",a));return M({},n,r)}function Da(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||ja,Ra=Ta.current,_a(Ta,e),_a(Na,Na.current),!0}function Ma(e,t,n){var r=e.stateNode;if(!r)throw Error(o(169));n?(e=Ia(e,t,Ra),r.__reactInternalMemoizedMergedChildContext=e,Ca(Na),Ca(Ta),_a(Ta,e)):Ca(Na),_a(Na,n)}var Fa=null,za=!1,Ba=!1;function $a(e){null===Fa?Fa=[e]:Fa.push(e)}function Ua(){if(!Ba&&null!==Fa){Ba=!0;var e=0,t=vt;try{var n=Fa;for(vt=1;e<n.length;e++){var r=n[e];do{r=r(!0)}while(null!==r)}Fa=null,za=!1}catch(a){throw null!==Fa&&(Fa=Fa.slice(e+1)),We(Xe,Ua),a}finally{vt=t,Ba=!1}}return null}var qa=[],Ha=0,Za=null,Ga=0,Wa=[],Va=0,Qa=null,Ka=1,Ya="";function Ja(e,t){qa[Ha++]=Ga,qa[Ha++]=Za,Za=e,Ga=t}function Xa(e,t,n){Wa[Va++]=Ka,Wa[Va++]=Ya,Wa[Va++]=Qa,Qa=e;var r=Ka;e=Ya;var a=32-it(r)-1;r&=~(1<<a),n+=1;var o=32-it(t)+a;if(30<o){var i=a-a%5;o=(r&(1<<i)-1).toString(32),r>>=i,a-=i,Ka=1<<32-it(t)+a|n<<a|r,Ya=o+e}else Ka=1<<o|n<<a|r,Ya=e}function eo(e){null!==e.return&&(Ja(e,1),Xa(e,1,0))}function to(e){for(;e===Za;)Za=qa[--Ha],qa[Ha]=null,Ga=qa[--Ha],qa[Ha]=null;for(;e===Qa;)Qa=Wa[--Va],Wa[Va]=null,Ya=Wa[--Va],Wa[Va]=null,Ka=Wa[--Va],Wa[Va]=null}var no=null,ro=null,ao=!1,oo=null;function io(e,t){var n=Lu(5,null,null,0);n.elementType="DELETED",n.stateNode=t,n.return=e,null===(t=e.deletions)?(e.deletions=[n],e.flags|=16):t.push(n)}function lo(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,no=e,ro=ua(t.firstChild),!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,no=e,ro=null,!0);case 13:return null!==(t=8!==t.nodeType?null:t)&&(n=null!==Qa?{id:Ka,overflow:Ya}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},(n=Lu(18,null,null,0)).stateNode=t,n.return=e,e.child=n,no=e,ro=null,!0);default:return!1}}function so(e){return 0!=(1&e.mode)&&0==(128&e.flags)}function uo(e){if(ao){var t=ro;if(t){var n=t;if(!lo(e,t)){if(so(e))throw Error(o(418));t=ua(n.nextSibling);var r=no;t&&lo(e,t)?io(r,n):(e.flags=-4097&e.flags|2,ao=!1,no=e)}}else{if(so(e))throw Error(o(418));e.flags=-4097&e.flags|2,ao=!1,no=e}}}function co(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;no=e}function po(e){if(e!==no)return!1;if(!ao)return co(e),ao=!0,!1;var t;if((t=3!==e.tag)&&!(t=5!==e.tag)&&(t="head"!==(t=e.type)&&"body"!==t&&!na(e.type,e.memoizedProps)),t&&(t=ro)){if(so(e))throw fo(),Error(o(418));for(;t;)io(e,t),t=ua(t.nextSibling)}if(co(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(o(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){ro=ua(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}ro=null}}else ro=no?ua(e.stateNode.nextSibling):null;return!0}function fo(){for(var e=ro;e;)e=ua(e.nextSibling)}function mo(){ro=no=null,ao=!1}function ho(e){null===oo?oo=[e]:oo.push(e)}var go=w.ReactCurrentBatchConfig;function yo(e,t){if(e&&e.defaultProps){for(var n in t=M({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var bo=Ea(null),vo=null,wo=null,ko=null;function xo(){ko=wo=vo=null}function So(e){var t=bo.current;Ca(bo),e._currentValue=t}function Eo(e,t,n){for(;null!==e;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,null!==r&&(r.childLanes|=t)):null!==r&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function Co(e,t){vo=e,ko=wo=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(wl=!0),e.firstContext=null)}function _o(e){var t=e._currentValue;if(ko!==e)if(e={context:e,memoizedValue:t,next:null},null===wo){if(null===vo)throw Error(o(308));wo=e,vo.dependencies={lanes:0,firstContext:e}}else wo=wo.next=e;return t}var jo=null;function To(e){null===jo?jo=[e]:jo.push(e)}function No(e,t,n,r){var a=t.interleaved;return null===a?(n.next=n,To(t)):(n.next=a.next,a.next=n),t.interleaved=n,Ro(e,r)}function Ro(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}var Ao=!1;function Lo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Po(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Oo(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Io(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,0!=(2&Ns)){var a=r.pending;return null===a?t.next=t:(t.next=a.next,a.next=t),r.pending=t,Ro(e,n)}return null===(a=r.interleaved)?(t.next=t,To(r)):(t.next=a.next,a.next=t),r.interleaved=t,Ro(e,n)}function Do(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,0!=(4194240&n))){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,bt(e,n)}}function Mo(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===o?a=o=i:o=o.next=i,n=n.next}while(null!==n);null===o?a=o=t:o=o.next=t}else a=o=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:o,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Fo(e,t,n,r){var a=e.updateQueue;Ao=!1;var o=a.firstBaseUpdate,i=a.lastBaseUpdate,l=a.shared.pending;if(null!==l){a.shared.pending=null;var s=l,u=s.next;s.next=null,null===i?o=u:i.next=u,i=s;var c=e.alternate;null!==c&&((l=(c=c.updateQueue).lastBaseUpdate)!==i&&(null===l?c.firstBaseUpdate=u:l.next=u,c.lastBaseUpdate=s))}if(null!==o){var d=a.baseState;for(i=0,c=u=s=null,l=o;;){var p=l.lane,f=l.eventTime;if((r&p)===p){null!==c&&(c=c.next={eventTime:f,lane:0,tag:l.tag,payload:l.payload,callback:l.callback,next:null});e:{var m=e,h=l;switch(p=t,f=n,h.tag){case 1:if("function"==typeof(m=h.payload)){d=m.call(f,d,p);break e}d=m;break e;case 3:m.flags=-65537&m.flags|128;case 0:if(null==(p="function"==typeof(m=h.payload)?m.call(f,d,p):m))break e;d=M({},d,p);break e;case 2:Ao=!0}}null!==l.callback&&0!==l.lane&&(e.flags|=64,null===(p=a.effects)?a.effects=[l]:p.push(l))}else f={eventTime:f,lane:p,tag:l.tag,payload:l.payload,callback:l.callback,next:null},null===c?(u=c=f,s=d):c=c.next=f,i|=p;if(null===(l=l.next)){if(null===(l=a.shared.pending))break;l=(p=l).next,p.next=null,a.lastBaseUpdate=p,a.shared.pending=null}}if(null===c&&(s=d),a.baseState=s,a.firstBaseUpdate=u,a.lastBaseUpdate=c,null!==(t=a.shared.interleaved)){a=t;do{i|=a.lane,a=a.next}while(a!==t)}else null===o&&(a.shared.lanes=0);Ms|=i,e.lanes=i,e.memoizedState=d}}function zo(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],a=r.callback;if(null!==a){if(r.callback=null,r=n,"function"!=typeof a)throw Error(o(191,a));a.call(r)}}}var Bo=(new r.Component).refs;function $o(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:M({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var Uo={isMounted:function(e){return!!(e=e._reactInternals)&&Ue(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=tu(),a=nu(e),o=Oo(r,a);o.payload=t,null!=n&&(o.callback=n),null!==(t=Io(e,o,a))&&(ru(t,e,a,r),Do(t,e,a))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=tu(),a=nu(e),o=Oo(r,a);o.tag=1,o.payload=t,null!=n&&(o.callback=n),null!==(t=Io(e,o,a))&&(ru(t,e,a,r),Do(t,e,a))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=tu(),r=nu(e),a=Oo(n,r);a.tag=2,null!=t&&(a.callback=t),null!==(t=Io(e,a,r))&&(ru(t,e,r,n),Do(t,e,r))}};function qo(e,t,n,r,a,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,i):!t.prototype||!t.prototype.isPureReactComponent||(!sr(n,r)||!sr(a,o))}function Ho(e,t,n){var r=!1,a=ja,o=t.contextType;return"object"==typeof o&&null!==o?o=_o(o):(a=La(t)?Ra:Ta.current,o=(r=null!=(r=t.contextTypes))?Aa(e,a):ja),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=Uo,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=o),t}function Zo(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&Uo.enqueueReplaceState(t,t.state,null)}function Go(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs=Bo,Lo(e);var o=t.contextType;"object"==typeof o&&null!==o?a.context=_o(o):(o=La(t)?Ra:Ta.current,a.context=Aa(e,o)),a.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&($o(e,t,o,n),a.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(t=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),t!==a.state&&Uo.enqueueReplaceState(a,a.state,null),Fo(e,n,a,r),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.flags|=4194308)}function Wo(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(o(309));var r=n.stateNode}if(!r)throw Error(o(147,e));var a=r,i=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===i?t.ref:(t=function(e){var t=a.refs;t===Bo&&(t=a.refs={}),null===e?delete t[i]:t[i]=e},t._stringRef=i,t)}if("string"!=typeof e)throw Error(o(284));if(!n._owner)throw Error(o(290,e))}return e}function Vo(e,t){throw e=Object.prototype.toString.call(t),Error(o(31,"[object Object]"===e?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function Qo(e){return(0,e._init)(e._payload)}function Ko(e){function t(t,n){if(e){var r=t.deletions;null===r?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function a(e,t){return(e=Ou(e,t)).index=0,e.sibling=null,e}function i(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags|=2,n):r:(t.flags|=2,n):(t.flags|=1048576,n)}function l(t){return e&&null===t.alternate&&(t.flags|=2),t}function s(e,t,n,r){return null===t||6!==t.tag?((t=Fu(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function u(e,t,n,r){var o=n.type;return o===S?d(e,t,n.props.children,r,n.key):null!==t&&(t.elementType===o||"object"==typeof o&&null!==o&&o.$$typeof===L&&Qo(o)===t.type)?((r=a(t,n.props)).ref=Wo(e,t,n),r.return=e,r):((r=Iu(n.type,n.key,n.props,null,e.mode,r)).ref=Wo(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=zu(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function d(e,t,n,r,o){return null===t||7!==t.tag?((t=Du(n,e.mode,r,o)).return=e,t):((t=a(t,n)).return=e,t)}function p(e,t,n){if("string"==typeof t&&""!==t||"number"==typeof t)return(t=Fu(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case k:return(n=Iu(t.type,t.key,t.props,null,e.mode,n)).ref=Wo(e,null,t),n.return=e,n;case x:return(t=zu(t,e.mode,n)).return=e,t;case L:return p(e,(0,t._init)(t._payload),n)}if(te(t)||I(t))return(t=Du(t,e.mode,n,null)).return=e,t;Vo(e,t)}return null}function f(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof n&&""!==n||"number"==typeof n)return null!==a?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case k:return n.key===a?u(e,t,n,r):null;case x:return n.key===a?c(e,t,n,r):null;case L:return f(e,t,(a=n._init)(n._payload),r)}if(te(n)||I(n))return null!==a?null:d(e,t,n,r,null);Vo(e,n)}return null}function m(e,t,n,r,a){if("string"==typeof r&&""!==r||"number"==typeof r)return s(t,e=e.get(n)||null,""+r,a);if("object"==typeof r&&null!==r){switch(r.$$typeof){case k:return u(t,e=e.get(null===r.key?n:r.key)||null,r,a);case x:return c(t,e=e.get(null===r.key?n:r.key)||null,r,a);case L:return m(e,t,n,(0,r._init)(r._payload),a)}if(te(r)||I(r))return d(t,e=e.get(n)||null,r,a,null);Vo(t,r)}return null}function h(a,o,l,s){for(var u=null,c=null,d=o,h=o=0,g=null;null!==d&&h<l.length;h++){d.index>h?(g=d,d=null):g=d.sibling;var y=f(a,d,l[h],s);if(null===y){null===d&&(d=g);break}e&&d&&null===y.alternate&&t(a,d),o=i(y,o,h),null===c?u=y:c.sibling=y,c=y,d=g}if(h===l.length)return n(a,d),ao&&Ja(a,h),u;if(null===d){for(;h<l.length;h++)null!==(d=p(a,l[h],s))&&(o=i(d,o,h),null===c?u=d:c.sibling=d,c=d);return ao&&Ja(a,h),u}for(d=r(a,d);h<l.length;h++)null!==(g=m(d,a,h,l[h],s))&&(e&&null!==g.alternate&&d.delete(null===g.key?h:g.key),o=i(g,o,h),null===c?u=g:c.sibling=g,c=g);return e&&d.forEach((function(e){return t(a,e)})),ao&&Ja(a,h),u}function g(a,l,s,u){var c=I(s);if("function"!=typeof c)throw Error(o(150));if(null==(s=c.call(s)))throw Error(o(151));for(var d=c=null,h=l,g=l=0,y=null,b=s.next();null!==h&&!b.done;g++,b=s.next()){h.index>g?(y=h,h=null):y=h.sibling;var v=f(a,h,b.value,u);if(null===v){null===h&&(h=y);break}e&&h&&null===v.alternate&&t(a,h),l=i(v,l,g),null===d?c=v:d.sibling=v,d=v,h=y}if(b.done)return n(a,h),ao&&Ja(a,g),c;if(null===h){for(;!b.done;g++,b=s.next())null!==(b=p(a,b.value,u))&&(l=i(b,l,g),null===d?c=b:d.sibling=b,d=b);return ao&&Ja(a,g),c}for(h=r(a,h);!b.done;g++,b=s.next())null!==(b=m(h,a,g,b.value,u))&&(e&&null!==b.alternate&&h.delete(null===b.key?g:b.key),l=i(b,l,g),null===d?c=b:d.sibling=b,d=b);return e&&h.forEach((function(e){return t(a,e)})),ao&&Ja(a,g),c}return function e(r,o,i,s){if("object"==typeof i&&null!==i&&i.type===S&&null===i.key&&(i=i.props.children),"object"==typeof i&&null!==i){switch(i.$$typeof){case k:e:{for(var u=i.key,c=o;null!==c;){if(c.key===u){if((u=i.type)===S){if(7===c.tag){n(r,c.sibling),(o=a(c,i.props.children)).return=r,r=o;break e}}else if(c.elementType===u||"object"==typeof u&&null!==u&&u.$$typeof===L&&Qo(u)===c.type){n(r,c.sibling),(o=a(c,i.props)).ref=Wo(r,c,i),o.return=r,r=o;break e}n(r,c);break}t(r,c),c=c.sibling}i.type===S?((o=Du(i.props.children,r.mode,s,i.key)).return=r,r=o):((s=Iu(i.type,i.key,i.props,null,r.mode,s)).ref=Wo(r,o,i),s.return=r,r=s)}return l(r);case x:e:{for(c=i.key;null!==o;){if(o.key===c){if(4===o.tag&&o.stateNode.containerInfo===i.containerInfo&&o.stateNode.implementation===i.implementation){n(r,o.sibling),(o=a(o,i.children||[])).return=r,r=o;break e}n(r,o);break}t(r,o),o=o.sibling}(o=zu(i,r.mode,s)).return=r,r=o}return l(r);case L:return e(r,o,(c=i._init)(i._payload),s)}if(te(i))return h(r,o,i,s);if(I(i))return g(r,o,i,s);Vo(r,i)}return"string"==typeof i&&""!==i||"number"==typeof i?(i=""+i,null!==o&&6===o.tag?(n(r,o.sibling),(o=a(o,i)).return=r,r=o):(n(r,o),(o=Fu(i,r.mode,s)).return=r,r=o),l(r)):n(r,o)}}var Yo=Ko(!0),Jo=Ko(!1),Xo={},ei=Ea(Xo),ti=Ea(Xo),ni=Ea(Xo);function ri(e){if(e===Xo)throw Error(o(174));return e}function ai(e,t){switch(_a(ni,t),_a(ti,e),_a(ei,Xo),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:se(null,"");break;default:t=se(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}Ca(ei),_a(ei,t)}function oi(){Ca(ei),Ca(ti),Ca(ni)}function ii(e){ri(ni.current);var t=ri(ei.current),n=se(t,e.type);t!==n&&(_a(ti,e),_a(ei,n))}function li(e){ti.current===e&&(Ca(ei),Ca(ti))}var si=Ea(0);function ui(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(128&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var ci=[];function di(){for(var e=0;e<ci.length;e++)ci[e]._workInProgressVersionPrimary=null;ci.length=0}var pi=w.ReactCurrentDispatcher,fi=w.ReactCurrentBatchConfig,mi=0,hi=null,gi=null,yi=null,bi=!1,vi=!1,wi=0,ki=0;function xi(){throw Error(o(321))}function Si(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!lr(e[n],t[n]))return!1;return!0}function Ei(e,t,n,r,a,i){if(mi=i,hi=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,pi.current=null===e||null===e.memoizedState?ll:sl,e=n(r,a),vi){i=0;do{if(vi=!1,wi=0,25<=i)throw Error(o(301));i+=1,yi=gi=null,t.updateQueue=null,pi.current=ul,e=n(r,a)}while(vi)}if(pi.current=il,t=null!==gi&&null!==gi.next,mi=0,yi=gi=hi=null,bi=!1,t)throw Error(o(300));return e}function Ci(){var e=0!==wi;return wi=0,e}function _i(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===yi?hi.memoizedState=yi=e:yi=yi.next=e,yi}function ji(){if(null===gi){var e=hi.alternate;e=null!==e?e.memoizedState:null}else e=gi.next;var t=null===yi?hi.memoizedState:yi.next;if(null!==t)yi=t,gi=e;else{if(null===e)throw Error(o(310));e={memoizedState:(gi=e).memoizedState,baseState:gi.baseState,baseQueue:gi.baseQueue,queue:gi.queue,next:null},null===yi?hi.memoizedState=yi=e:yi=yi.next=e}return yi}function Ti(e,t){return"function"==typeof t?t(e):t}function Ni(e){var t=ji(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var r=gi,a=r.baseQueue,i=n.pending;if(null!==i){if(null!==a){var l=a.next;a.next=i.next,i.next=l}r.baseQueue=a=i,n.pending=null}if(null!==a){i=a.next,r=r.baseState;var s=l=null,u=null,c=i;do{var d=c.lane;if((mi&d)===d)null!==u&&(u=u.next={lane:0,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null}),r=c.hasEagerState?c.eagerState:e(r,c.action);else{var p={lane:d,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null};null===u?(s=u=p,l=r):u=u.next=p,hi.lanes|=d,Ms|=d}c=c.next}while(null!==c&&c!==i);null===u?l=r:u.next=s,lr(r,t.memoizedState)||(wl=!0),t.memoizedState=r,t.baseState=l,t.baseQueue=u,n.lastRenderedState=r}if(null!==(e=n.interleaved)){a=e;do{i=a.lane,hi.lanes|=i,Ms|=i,a=a.next}while(a!==e)}else null===a&&(n.lanes=0);return[t.memoizedState,n.dispatch]}function Ri(e){var t=ji(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,i=t.memoizedState;if(null!==a){n.pending=null;var l=a=a.next;do{i=e(i,l.action),l=l.next}while(l!==a);lr(i,t.memoizedState)||(wl=!0),t.memoizedState=i,null===t.baseQueue&&(t.baseState=i),n.lastRenderedState=i}return[i,r]}function Ai(){}function Li(e,t){var n=hi,r=ji(),a=t(),i=!lr(r.memoizedState,a);if(i&&(r.memoizedState=a,wl=!0),r=r.queue,Hi(Ii.bind(null,n,r,e),[e]),r.getSnapshot!==t||i||null!==yi&&1&yi.memoizedState.tag){if(n.flags|=2048,zi(9,Oi.bind(null,n,r,a,t),void 0,null),null===Rs)throw Error(o(349));0!=(30&mi)||Pi(n,t,a)}return a}function Pi(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},null===(t=hi.updateQueue)?(t={lastEffect:null,stores:null},hi.updateQueue=t,t.stores=[e]):null===(n=t.stores)?t.stores=[e]:n.push(e)}function Oi(e,t,n,r){t.value=n,t.getSnapshot=r,Di(t)&&Mi(e)}function Ii(e,t,n){return n((function(){Di(t)&&Mi(e)}))}function Di(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!lr(e,n)}catch(r){return!0}}function Mi(e){var t=Ro(e,1);null!==t&&ru(t,e,1,-1)}function Fi(e){var t=_i();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Ti,lastRenderedState:e},t.queue=e,e=e.dispatch=nl.bind(null,hi,e),[t.memoizedState,e]}function zi(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=hi.updateQueue)?(t={lastEffect:null,stores:null},hi.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function Bi(){return ji().memoizedState}function $i(e,t,n,r){var a=_i();hi.flags|=e,a.memoizedState=zi(1|t,n,void 0,void 0===r?null:r)}function Ui(e,t,n,r){var a=ji();r=void 0===r?null:r;var o=void 0;if(null!==gi){var i=gi.memoizedState;if(o=i.destroy,null!==r&&Si(r,i.deps))return void(a.memoizedState=zi(t,n,o,r))}hi.flags|=e,a.memoizedState=zi(1|t,n,o,r)}function qi(e,t){return $i(8390656,8,e,t)}function Hi(e,t){return Ui(2048,8,e,t)}function Zi(e,t){return Ui(4,2,e,t)}function Gi(e,t){return Ui(4,4,e,t)}function Wi(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Vi(e,t,n){return n=null!=n?n.concat([e]):null,Ui(4,4,Wi.bind(null,t,e),n)}function Qi(){}function Ki(e,t){var n=ji();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Si(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Yi(e,t){var n=ji();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Si(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Ji(e,t,n){return 0==(21&mi)?(e.baseState&&(e.baseState=!1,wl=!0),e.memoizedState=n):(lr(n,t)||(n=ht(),hi.lanes|=n,Ms|=n,e.baseState=!0),t)}function Xi(e,t){var n=vt;vt=0!==n&&4>n?n:4,e(!0);var r=fi.transition;fi.transition={};try{e(!1),t()}finally{vt=n,fi.transition=r}}function el(){return ji().memoizedState}function tl(e,t,n){var r=nu(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},rl(e))al(t,n);else if(null!==(n=No(e,t,n,r))){ru(n,e,r,tu()),ol(n,t,r)}}function nl(e,t,n){var r=nu(e),a={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(rl(e))al(t,a);else{var o=e.alternate;if(0===e.lanes&&(null===o||0===o.lanes)&&null!==(o=t.lastRenderedReducer))try{var i=t.lastRenderedState,l=o(i,n);if(a.hasEagerState=!0,a.eagerState=l,lr(l,i)){var s=t.interleaved;return null===s?(a.next=a,To(t)):(a.next=s.next,s.next=a),void(t.interleaved=a)}}catch(u){}null!==(n=No(e,t,a,r))&&(ru(n,e,r,a=tu()),ol(n,t,r))}}function rl(e){var t=e.alternate;return e===hi||null!==t&&t===hi}function al(e,t){vi=bi=!0;var n=e.pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function ol(e,t,n){if(0!=(4194240&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,bt(e,n)}}var il={readContext:_o,useCallback:xi,useContext:xi,useEffect:xi,useImperativeHandle:xi,useInsertionEffect:xi,useLayoutEffect:xi,useMemo:xi,useReducer:xi,useRef:xi,useState:xi,useDebugValue:xi,useDeferredValue:xi,useTransition:xi,useMutableSource:xi,useSyncExternalStore:xi,useId:xi,unstable_isNewReconciler:!1},ll={readContext:_o,useCallback:function(e,t){return _i().memoizedState=[e,void 0===t?null:t],e},useContext:_o,useEffect:qi,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,$i(4194308,4,Wi.bind(null,t,e),n)},useLayoutEffect:function(e,t){return $i(4194308,4,e,t)},useInsertionEffect:function(e,t){return $i(4,2,e,t)},useMemo:function(e,t){var n=_i();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=_i();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=tl.bind(null,hi,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},_i().memoizedState=e},useState:Fi,useDebugValue:Qi,useDeferredValue:function(e){return _i().memoizedState=e},useTransition:function(){var e=Fi(!1),t=e[0];return e=Xi.bind(null,e[1]),_i().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=hi,a=_i();if(ao){if(void 0===n)throw Error(o(407));n=n()}else{if(n=t(),null===Rs)throw Error(o(349));0!=(30&mi)||Pi(r,t,n)}a.memoizedState=n;var i={value:n,getSnapshot:t};return a.queue=i,qi(Ii.bind(null,r,i,e),[e]),r.flags|=2048,zi(9,Oi.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=_i(),t=Rs.identifierPrefix;if(ao){var n=Ya;t=":"+t+"R"+(n=(Ka&~(1<<32-it(Ka)-1)).toString(32)+n),0<(n=wi++)&&(t+="H"+n.toString(32)),t+=":"}else t=":"+t+"r"+(n=ki++).toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},sl={readContext:_o,useCallback:Ki,useContext:_o,useEffect:Hi,useImperativeHandle:Vi,useInsertionEffect:Zi,useLayoutEffect:Gi,useMemo:Yi,useReducer:Ni,useRef:Bi,useState:function(){return Ni(Ti)},useDebugValue:Qi,useDeferredValue:function(e){return Ji(ji(),gi.memoizedState,e)},useTransition:function(){return[Ni(Ti)[0],ji().memoizedState]},useMutableSource:Ai,useSyncExternalStore:Li,useId:el,unstable_isNewReconciler:!1},ul={readContext:_o,useCallback:Ki,useContext:_o,useEffect:Hi,useImperativeHandle:Vi,useInsertionEffect:Zi,useLayoutEffect:Gi,useMemo:Yi,useReducer:Ri,useRef:Bi,useState:function(){return Ri(Ti)},useDebugValue:Qi,useDeferredValue:function(e){var t=ji();return null===gi?t.memoizedState=e:Ji(t,gi.memoizedState,e)},useTransition:function(){return[Ri(Ti)[0],ji().memoizedState]},useMutableSource:Ai,useSyncExternalStore:Li,useId:el,unstable_isNewReconciler:!1};function cl(e,t){try{var n="",r=t;do{n+=$(r),r=r.return}while(r);var a=n}catch(o){a="\nError generating stack: "+o.message+"\n"+o.stack}return{value:e,source:t,stack:a,digest:null}}function dl(e,t,n){return{value:e,source:null,stack:null!=n?n:null,digest:null!=t?t:null}}function pl(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}var fl="function"==typeof WeakMap?WeakMap:Map;function ml(e,t,n){(n=Oo(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Zs||(Zs=!0,Gs=r),pl(0,t)},n}function hl(e,t,n){(n=Oo(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var a=t.value;n.payload=function(){return r(a)},n.callback=function(){pl(0,t)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){pl(0,t),"function"!=typeof r&&(null===Ws?Ws=new Set([this]):Ws.add(this));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}function gl(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new fl;var a=new Set;r.set(t,a)}else void 0===(a=r.get(t))&&(a=new Set,r.set(t,a));a.has(n)||(a.add(n),e=_u.bind(null,e,t,n),t.then(e,e))}function yl(e){do{var t;if((t=13===e.tag)&&(t=null===(t=e.memoizedState)||null!==t.dehydrated),t)return e;e=e.return}while(null!==e);return null}function bl(e,t,n,r,a){return 0==(1&e.mode)?(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,1===n.tag&&(null===n.alternate?n.tag=17:((t=Oo(-1,1)).tag=2,Io(n,t,1))),n.lanes|=1),e):(e.flags|=65536,e.lanes=a,e)}var vl=w.ReactCurrentOwner,wl=!1;function kl(e,t,n,r){t.child=null===e?Jo(t,null,n,r):Yo(t,e.child,n,r)}function xl(e,t,n,r,a){n=n.render;var o=t.ref;return Co(t,a),r=Ei(e,t,n,r,o,a),n=Ci(),null===e||wl?(ao&&n&&eo(t),t.flags|=1,kl(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~a,Zl(e,t,a))}function Sl(e,t,n,r,a){if(null===e){var o=n.type;return"function"!=typeof o||Pu(o)||void 0!==o.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Iu(n.type,null,r,t,t.mode,a)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=o,El(e,t,o,r,a))}if(o=e.child,0==(e.lanes&a)){var i=o.memoizedProps;if((n=null!==(n=n.compare)?n:sr)(i,r)&&e.ref===t.ref)return Zl(e,t,a)}return t.flags|=1,(e=Ou(o,r)).ref=t.ref,e.return=t,t.child=e}function El(e,t,n,r,a){if(null!==e){var o=e.memoizedProps;if(sr(o,r)&&e.ref===t.ref){if(wl=!1,t.pendingProps=r=o,0==(e.lanes&a))return t.lanes=e.lanes,Zl(e,t,a);0!=(131072&e.flags)&&(wl=!0)}}return jl(e,t,n,r,a)}function Cl(e,t,n){var r=t.pendingProps,a=r.children,o=null!==e?e.memoizedState:null;if("hidden"===r.mode)if(0==(1&t.mode))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},_a(Os,Ps),Ps|=n;else{if(0==(1073741824&n))return e=null!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,_a(Os,Ps),Ps|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=null!==o?o.baseLanes:n,_a(Os,Ps),Ps|=r}else null!==o?(r=o.baseLanes|n,t.memoizedState=null):r=n,_a(Os,Ps),Ps|=r;return kl(e,t,a,n),t.child}function _l(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function jl(e,t,n,r,a){var o=La(n)?Ra:Ta.current;return o=Aa(t,o),Co(t,a),n=Ei(e,t,n,r,o,a),r=Ci(),null===e||wl?(ao&&r&&eo(t),t.flags|=1,kl(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~a,Zl(e,t,a))}function Tl(e,t,n,r,a){if(La(n)){var o=!0;Da(t)}else o=!1;if(Co(t,a),null===t.stateNode)Hl(e,t),Ho(t,n,r),Go(t,n,r,a),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var s=i.context,u=n.contextType;"object"==typeof u&&null!==u?u=_o(u):u=Aa(t,u=La(n)?Ra:Ta.current);var c=n.getDerivedStateFromProps,d="function"==typeof c||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==r||s!==u)&&Zo(t,i,r,u),Ao=!1;var p=t.memoizedState;i.state=p,Fo(t,r,i,a),s=t.memoizedState,l!==r||p!==s||Na.current||Ao?("function"==typeof c&&($o(t,n,c,r),s=t.memoizedState),(l=Ao||qo(t,n,l,r,p,s,u))?(d||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.flags|=4194308)):("function"==typeof i.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=u,r=l):("function"==typeof i.componentDidMount&&(t.flags|=4194308),r=!1)}else{i=t.stateNode,Po(e,t),l=t.memoizedProps,u=t.type===t.elementType?l:yo(t.type,l),i.props=u,d=t.pendingProps,p=i.context,"object"==typeof(s=n.contextType)&&null!==s?s=_o(s):s=Aa(t,s=La(n)?Ra:Ta.current);var f=n.getDerivedStateFromProps;(c="function"==typeof f||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==d||p!==s)&&Zo(t,i,r,s),Ao=!1,p=t.memoizedState,i.state=p,Fo(t,r,i,a);var m=t.memoizedState;l!==d||p!==m||Na.current||Ao?("function"==typeof f&&($o(t,n,f,r),m=t.memoizedState),(u=Ao||qo(t,n,u,r,p,m,s)||!1)?(c||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,m,s),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,m,s)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=m),i.props=r,i.state=m,i.context=s,r=u):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),r=!1)}return Nl(e,t,n,r,o,a)}function Nl(e,t,n,r,a,o){_l(e,t);var i=0!=(128&t.flags);if(!r&&!i)return a&&Ma(t,n,!1),Zl(e,t,o);r=t.stateNode,vl.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=Yo(t,e.child,null,o),t.child=Yo(t,null,l,o)):kl(e,t,l,o),t.memoizedState=r.state,a&&Ma(t,n,!0),t.child}function Rl(e){var t=e.stateNode;t.pendingContext?Oa(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Oa(0,t.context,!1),ai(e,t.containerInfo)}function Al(e,t,n,r,a){return mo(),ho(a),t.flags|=256,kl(e,t,n,r),t.child}var Ll,Pl,Ol,Il,Dl={dehydrated:null,treeContext:null,retryLane:0};function Ml(e){return{baseLanes:e,cachePool:null,transitions:null}}function Fl(e,t,n){var r,a=t.pendingProps,i=si.current,l=!1,s=0!=(128&t.flags);if((r=s)||(r=(null===e||null!==e.memoizedState)&&0!=(2&i)),r?(l=!0,t.flags&=-129):null!==e&&null===e.memoizedState||(i|=1),_a(si,1&i),null===e)return uo(t),null!==(e=t.memoizedState)&&null!==(e=e.dehydrated)?(0==(1&t.mode)?t.lanes=1:"$!"===e.data?t.lanes=8:t.lanes=1073741824,null):(s=a.children,e=a.fallback,l?(a=t.mode,l=t.child,s={mode:"hidden",children:s},0==(1&a)&&null!==l?(l.childLanes=0,l.pendingProps=s):l=Mu(s,a,0,null),e=Du(e,a,n,null),l.return=t,e.return=t,l.sibling=e,t.child=l,t.child.memoizedState=Ml(n),t.memoizedState=Dl,e):zl(t,s));if(null!==(i=e.memoizedState)&&null!==(r=i.dehydrated))return function(e,t,n,r,a,i,l){if(n)return 256&t.flags?(t.flags&=-257,Bl(e,t,l,r=dl(Error(o(422))))):null!==t.memoizedState?(t.child=e.child,t.flags|=128,null):(i=r.fallback,a=t.mode,r=Mu({mode:"visible",children:r.children},a,0,null),(i=Du(i,a,l,null)).flags|=2,r.return=t,i.return=t,r.sibling=i,t.child=r,0!=(1&t.mode)&&Yo(t,e.child,null,l),t.child.memoizedState=Ml(l),t.memoizedState=Dl,i);if(0==(1&t.mode))return Bl(e,t,l,null);if("$!"===a.data){if(r=a.nextSibling&&a.nextSibling.dataset)var s=r.dgst;return r=s,Bl(e,t,l,r=dl(i=Error(o(419)),r,void 0))}if(s=0!=(l&e.childLanes),wl||s){if(null!==(r=Rs)){switch(l&-l){case 4:a=2;break;case 16:a=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:a=32;break;case 536870912:a=268435456;break;default:a=0}0!==(a=0!=(a&(r.suspendedLanes|l))?0:a)&&a!==i.retryLane&&(i.retryLane=a,Ro(e,a),ru(r,e,a,-1))}return gu(),Bl(e,t,l,r=dl(Error(o(421))))}return"$?"===a.data?(t.flags|=128,t.child=e.child,t=Tu.bind(null,e),a._reactRetry=t,null):(e=i.treeContext,ro=ua(a.nextSibling),no=t,ao=!0,oo=null,null!==e&&(Wa[Va++]=Ka,Wa[Va++]=Ya,Wa[Va++]=Qa,Ka=e.id,Ya=e.overflow,Qa=t),t=zl(t,r.children),t.flags|=4096,t)}(e,t,s,a,r,i,n);if(l){l=a.fallback,s=t.mode,r=(i=e.child).sibling;var u={mode:"hidden",children:a.children};return 0==(1&s)&&t.child!==i?((a=t.child).childLanes=0,a.pendingProps=u,t.deletions=null):(a=Ou(i,u)).subtreeFlags=14680064&i.subtreeFlags,null!==r?l=Ou(r,l):(l=Du(l,s,n,null)).flags|=2,l.return=t,a.return=t,a.sibling=l,t.child=a,a=l,l=t.child,s=null===(s=e.child.memoizedState)?Ml(n):{baseLanes:s.baseLanes|n,cachePool:null,transitions:s.transitions},l.memoizedState=s,l.childLanes=e.childLanes&~n,t.memoizedState=Dl,a}return e=(l=e.child).sibling,a=Ou(l,{mode:"visible",children:a.children}),0==(1&t.mode)&&(a.lanes=n),a.return=t,a.sibling=null,null!==e&&(null===(n=t.deletions)?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=a,t.memoizedState=null,a}function zl(e,t){return(t=Mu({mode:"visible",children:t},e.mode,0,null)).return=e,e.child=t}function Bl(e,t,n,r){return null!==r&&ho(r),Yo(t,e.child,null,n),(e=zl(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function $l(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),Eo(e.return,t,n)}function Ul(e,t,n,r,a){var o=e.memoizedState;null===o?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=n,o.tailMode=a)}function ql(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;if(kl(e,t,r.children,n),0!=(2&(r=si.current)))r=1&r|2,t.flags|=128;else{if(null!==e&&0!=(128&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&$l(e,n,t);else if(19===e.tag)$l(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(_a(si,r),0==(1&t.mode))t.memoizedState=null;else switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===ui(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),Ul(t,!1,a,n,o);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===ui(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}Ul(t,!0,n,null,o);break;case"together":Ul(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Hl(e,t){0==(1&t.mode)&&null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Zl(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Ms|=t.lanes,0==(n&t.childLanes))return null;if(null!==e&&t.child!==e.child)throw Error(o(153));if(null!==t.child){for(n=Ou(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Ou(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Gl(e,t){if(!ao)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Wl(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var a=e.child;null!==a;)n|=a.lanes|a.childLanes,r|=14680064&a.subtreeFlags,r|=14680064&a.flags,a.return=e,a=a.sibling;else for(a=e.child;null!==a;)n|=a.lanes|a.childLanes,r|=a.subtreeFlags,r|=a.flags,a.return=e,a=a.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Vl(e,t,n){var r=t.pendingProps;switch(to(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Wl(t),null;case 1:case 17:return La(t.type)&&Pa(),Wl(t),null;case 3:return r=t.stateNode,oi(),Ca(Na),Ca(Ta),di(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(po(t)?t.flags|=4:null===e||e.memoizedState.isDehydrated&&0==(256&t.flags)||(t.flags|=1024,null!==oo&&(lu(oo),oo=null))),Pl(e,t),Wl(t),null;case 5:li(t);var a=ri(ni.current);if(n=t.type,null!==e&&null!=t.stateNode)Ol(e,t,n,r,a),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(null===t.stateNode)throw Error(o(166));return Wl(t),null}if(e=ri(ei.current),po(t)){r=t.stateNode,n=t.type;var i=t.memoizedProps;switch(r[pa]=t,r[fa]=i,e=0!=(1&t.mode),n){case"dialog":zr("cancel",r),zr("close",r);break;case"iframe":case"object":case"embed":zr("load",r);break;case"video":case"audio":for(a=0;a<Ir.length;a++)zr(Ir[a],r);break;case"source":zr("error",r);break;case"img":case"image":case"link":zr("error",r),zr("load",r);break;case"details":zr("toggle",r);break;case"input":K(r,i),zr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!i.multiple},zr("invalid",r);break;case"textarea":ae(r,i),zr("invalid",r)}for(var s in be(n,i),a=null,i)if(i.hasOwnProperty(s)){var u=i[s];"children"===s?"string"==typeof u?r.textContent!==u&&(!0!==i.suppressHydrationWarning&&Jr(r.textContent,u,e),a=["children",u]):"number"==typeof u&&r.textContent!==""+u&&(!0!==i.suppressHydrationWarning&&Jr(r.textContent,u,e),a=["children",""+u]):l.hasOwnProperty(s)&&null!=u&&"onScroll"===s&&zr("scroll",r)}switch(n){case"input":G(r),X(r,i,!0);break;case"textarea":G(r),ie(r);break;case"select":case"option":break;default:"function"==typeof i.onClick&&(r.onclick=Xr)}r=a,t.updateQueue=r,null!==r&&(t.flags|=4)}else{s=9===a.nodeType?a:a.ownerDocument,"http://www.w3.org/1999/xhtml"===e&&(e=le(n)),"http://www.w3.org/1999/xhtml"===e?"script"===n?((e=s.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=s.createElement(n,{is:r.is}):(e=s.createElement(n),"select"===n&&(s=e,r.multiple?s.multiple=!0:r.size&&(s.size=r.size))):e=s.createElementNS(e,n),e[pa]=t,e[fa]=r,Ll(e,t,!1,!1),t.stateNode=e;e:{switch(s=ve(n,r),n){case"dialog":zr("cancel",e),zr("close",e),a=r;break;case"iframe":case"object":case"embed":zr("load",e),a=r;break;case"video":case"audio":for(a=0;a<Ir.length;a++)zr(Ir[a],e);a=r;break;case"source":zr("error",e),a=r;break;case"img":case"image":case"link":zr("error",e),zr("load",e),a=r;break;case"details":zr("toggle",e),a=r;break;case"input":K(e,r),a=Q(e,r),zr("invalid",e);break;case"option":default:a=r;break;case"select":e._wrapperState={wasMultiple:!!r.multiple},a=M({},r,{value:void 0}),zr("invalid",e);break;case"textarea":ae(e,r),a=re(e,r),zr("invalid",e)}for(i in be(n,a),u=a)if(u.hasOwnProperty(i)){var c=u[i];"style"===i?ge(e,c):"dangerouslySetInnerHTML"===i?null!=(c=c?c.__html:void 0)&&de(e,c):"children"===i?"string"==typeof c?("textarea"!==n||""!==c)&&pe(e,c):"number"==typeof c&&pe(e,""+c):"suppressContentEditableWarning"!==i&&"suppressHydrationWarning"!==i&&"autoFocus"!==i&&(l.hasOwnProperty(i)?null!=c&&"onScroll"===i&&zr("scroll",e):null!=c&&v(e,i,c,s))}switch(n){case"input":G(e),X(e,r,!1);break;case"textarea":G(e),ie(e);break;case"option":null!=r.value&&e.setAttribute("value",""+H(r.value));break;case"select":e.multiple=!!r.multiple,null!=(i=r.value)?ne(e,!!r.multiple,i,!1):null!=r.defaultValue&&ne(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof a.onClick&&(e.onclick=Xr)}switch(n){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}}r&&(t.flags|=4)}null!==t.ref&&(t.flags|=512,t.flags|=2097152)}return Wl(t),null;case 6:if(e&&null!=t.stateNode)Il(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(o(166));if(n=ri(ni.current),ri(ei.current),po(t)){if(r=t.stateNode,n=t.memoizedProps,r[pa]=t,(i=r.nodeValue!==n)&&null!==(e=no))switch(e.tag){case 3:Jr(r.nodeValue,n,0!=(1&e.mode));break;case 5:!0!==e.memoizedProps.suppressHydrationWarning&&Jr(r.nodeValue,n,0!=(1&e.mode))}i&&(t.flags|=4)}else(r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[pa]=t,t.stateNode=r}return Wl(t),null;case 13:if(Ca(si),r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(ao&&null!==ro&&0!=(1&t.mode)&&0==(128&t.flags))fo(),mo(),t.flags|=98560,i=!1;else if(i=po(t),null!==r&&null!==r.dehydrated){if(null===e){if(!i)throw Error(o(318));if(!(i=null!==(i=t.memoizedState)?i.dehydrated:null))throw Error(o(317));i[pa]=t}else mo(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;Wl(t),i=!1}else null!==oo&&(lu(oo),oo=null),i=!0;if(!i)return 65536&t.flags?t:null}return 0!=(128&t.flags)?(t.lanes=n,t):((r=null!==r)!==(null!==e&&null!==e.memoizedState)&&r&&(t.child.flags|=8192,0!=(1&t.mode)&&(null===e||0!=(1&si.current)?0===Is&&(Is=3):gu())),null!==t.updateQueue&&(t.flags|=4),Wl(t),null);case 4:return oi(),Pl(e,t),null===e&&Ur(t.stateNode.containerInfo),Wl(t),null;case 10:return So(t.type._context),Wl(t),null;case 19:if(Ca(si),null===(i=t.memoizedState))return Wl(t),null;if(r=0!=(128&t.flags),null===(s=i.rendering))if(r)Gl(i,!1);else{if(0!==Is||null!==e&&0!=(128&e.flags))for(e=t.child;null!==e;){if(null!==(s=ui(e))){for(t.flags|=128,Gl(i,!1),null!==(r=s.updateQueue)&&(t.updateQueue=r,t.flags|=4),t.subtreeFlags=0,r=n,n=t.child;null!==n;)e=r,(i=n).flags&=14680066,null===(s=i.alternate)?(i.childLanes=0,i.lanes=e,i.child=null,i.subtreeFlags=0,i.memoizedProps=null,i.memoizedState=null,i.updateQueue=null,i.dependencies=null,i.stateNode=null):(i.childLanes=s.childLanes,i.lanes=s.lanes,i.child=s.child,i.subtreeFlags=0,i.deletions=null,i.memoizedProps=s.memoizedProps,i.memoizedState=s.memoizedState,i.updateQueue=s.updateQueue,i.type=s.type,e=s.dependencies,i.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return _a(si,1&si.current|2),t.child}e=e.sibling}null!==i.tail&&Ye()>qs&&(t.flags|=128,r=!0,Gl(i,!1),t.lanes=4194304)}else{if(!r)if(null!==(e=ui(s))){if(t.flags|=128,r=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),Gl(i,!0),null===i.tail&&"hidden"===i.tailMode&&!s.alternate&&!ao)return Wl(t),null}else 2*Ye()-i.renderingStartTime>qs&&1073741824!==n&&(t.flags|=128,r=!0,Gl(i,!1),t.lanes=4194304);i.isBackwards?(s.sibling=t.child,t.child=s):(null!==(n=i.last)?n.sibling=s:t.child=s,i.last=s)}return null!==i.tail?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=Ye(),t.sibling=null,n=si.current,_a(si,r?1&n|2:1&n),t):(Wl(t),null);case 22:case 23:return pu(),r=null!==t.memoizedState,null!==e&&null!==e.memoizedState!==r&&(t.flags|=8192),r&&0!=(1&t.mode)?0!=(1073741824&Ps)&&(Wl(t),6&t.subtreeFlags&&(t.flags|=8192)):Wl(t),null;case 24:case 25:return null}throw Error(o(156,t.tag))}function Ql(e,t){switch(to(t),t.tag){case 1:return La(t.type)&&Pa(),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return oi(),Ca(Na),Ca(Ta),di(),0!=(65536&(e=t.flags))&&0==(128&e)?(t.flags=-65537&e|128,t):null;case 5:return li(t),null;case 13:if(Ca(si),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(o(340));mo()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return Ca(si),null;case 4:return oi(),null;case 10:return So(t.type._context),null;case 22:case 23:return pu(),null;default:return null}}Ll=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Pl=function(){},Ol=function(e,t,n,r){var a=e.memoizedProps;if(a!==r){e=t.stateNode,ri(ei.current);var o,i=null;switch(n){case"input":a=Q(e,a),r=Q(e,r),i=[];break;case"select":a=M({},a,{value:void 0}),r=M({},r,{value:void 0}),i=[];break;case"textarea":a=re(e,a),r=re(e,r),i=[];break;default:"function"!=typeof a.onClick&&"function"==typeof r.onClick&&(e.onclick=Xr)}for(c in be(n,r),n=null,a)if(!r.hasOwnProperty(c)&&a.hasOwnProperty(c)&&null!=a[c])if("style"===c){var s=a[c];for(o in s)s.hasOwnProperty(o)&&(n||(n={}),n[o]="")}else"dangerouslySetInnerHTML"!==c&&"children"!==c&&"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&"autoFocus"!==c&&(l.hasOwnProperty(c)?i||(i=[]):(i=i||[]).push(c,null));for(c in r){var u=r[c];if(s=null!=a?a[c]:void 0,r.hasOwnProperty(c)&&u!==s&&(null!=u||null!=s))if("style"===c)if(s){for(o in s)!s.hasOwnProperty(o)||u&&u.hasOwnProperty(o)||(n||(n={}),n[o]="");for(o in u)u.hasOwnProperty(o)&&s[o]!==u[o]&&(n||(n={}),n[o]=u[o])}else n||(i||(i=[]),i.push(c,n)),n=u;else"dangerouslySetInnerHTML"===c?(u=u?u.__html:void 0,s=s?s.__html:void 0,null!=u&&s!==u&&(i=i||[]).push(c,u)):"children"===c?"string"!=typeof u&&"number"!=typeof u||(i=i||[]).push(c,""+u):"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&(l.hasOwnProperty(c)?(null!=u&&"onScroll"===c&&zr("scroll",e),i||s===u||(i=[])):(i=i||[]).push(c,u))}n&&(i=i||[]).push("style",n);var c=i;(t.updateQueue=c)&&(t.flags|=4)}},Il=function(e,t,n,r){n!==r&&(t.flags|=4)};var Kl=!1,Yl=!1,Jl="function"==typeof WeakSet?WeakSet:Set,Xl=null;function es(e,t){var n=e.ref;if(null!==n)if("function"==typeof n)try{n(null)}catch(r){Cu(e,t,r)}else n.current=null}function ts(e,t,n){try{n()}catch(r){Cu(e,t,r)}}var ns=!1;function rs(e,t,n){var r=t.updateQueue;if(null!==(r=null!==r?r.lastEffect:null)){var a=r=r.next;do{if((a.tag&e)===e){var o=a.destroy;a.destroy=void 0,void 0!==o&&ts(t,n,o)}a=a.next}while(a!==r)}}function as(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function os(e){var t=e.ref;if(null!==t){var n=e.stateNode;e.tag,e=n,"function"==typeof t?t(e):t.current=e}}function is(e){var t=e.alternate;null!==t&&(e.alternate=null,is(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&(null!==(t=e.stateNode)&&(delete t[pa],delete t[fa],delete t[ha],delete t[ga],delete t[ya])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function ls(e){return 5===e.tag||3===e.tag||4===e.tag}function ss(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||ls(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function us(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Xr));else if(4!==r&&null!==(e=e.child))for(us(e,t,n),e=e.sibling;null!==e;)us(e,t,n),e=e.sibling}function cs(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(cs(e,t,n),e=e.sibling;null!==e;)cs(e,t,n),e=e.sibling}var ds=null,ps=!1;function fs(e,t,n){for(n=n.child;null!==n;)ms(e,t,n),n=n.sibling}function ms(e,t,n){if(ot&&"function"==typeof ot.onCommitFiberUnmount)try{ot.onCommitFiberUnmount(at,n)}catch(l){}switch(n.tag){case 5:Yl||es(n,t);case 6:var r=ds,a=ps;ds=null,fs(e,t,n),ps=a,null!==(ds=r)&&(ps?(e=ds,n=n.stateNode,8===e.nodeType?e.parentNode.removeChild(n):e.removeChild(n)):ds.removeChild(n.stateNode));break;case 18:null!==ds&&(ps?(e=ds,n=n.stateNode,8===e.nodeType?sa(e.parentNode,n):1===e.nodeType&&sa(e,n),Ut(e)):sa(ds,n.stateNode));break;case 4:r=ds,a=ps,ds=n.stateNode.containerInfo,ps=!0,fs(e,t,n),ds=r,ps=a;break;case 0:case 11:case 14:case 15:if(!Yl&&(null!==(r=n.updateQueue)&&null!==(r=r.lastEffect))){a=r=r.next;do{var o=a,i=o.destroy;o=o.tag,void 0!==i&&(0!=(2&o)||0!=(4&o))&&ts(n,t,i),a=a.next}while(a!==r)}fs(e,t,n);break;case 1:if(!Yl&&(es(n,t),"function"==typeof(r=n.stateNode).componentWillUnmount))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(l){Cu(n,t,l)}fs(e,t,n);break;case 21:fs(e,t,n);break;case 22:1&n.mode?(Yl=(r=Yl)||null!==n.memoizedState,fs(e,t,n),Yl=r):fs(e,t,n);break;default:fs(e,t,n)}}function hs(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new Jl),t.forEach((function(t){var r=Nu.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function gs(e,t){var n=t.deletions;if(null!==n)for(var r=0;r<n.length;r++){var a=n[r];try{var i=e,l=t,s=l;e:for(;null!==s;){switch(s.tag){case 5:ds=s.stateNode,ps=!1;break e;case 3:case 4:ds=s.stateNode.containerInfo,ps=!0;break e}s=s.return}if(null===ds)throw Error(o(160));ms(i,l,a),ds=null,ps=!1;var u=a.alternate;null!==u&&(u.return=null),a.return=null}catch(c){Cu(a,t,c)}}if(12854&t.subtreeFlags)for(t=t.child;null!==t;)ys(t,e),t=t.sibling}function ys(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(gs(t,e),bs(e),4&r){try{rs(3,e,e.return),as(3,e)}catch(g){Cu(e,e.return,g)}try{rs(5,e,e.return)}catch(g){Cu(e,e.return,g)}}break;case 1:gs(t,e),bs(e),512&r&&null!==n&&es(n,n.return);break;case 5:if(gs(t,e),bs(e),512&r&&null!==n&&es(n,n.return),32&e.flags){var a=e.stateNode;try{pe(a,"")}catch(g){Cu(e,e.return,g)}}if(4&r&&null!=(a=e.stateNode)){var i=e.memoizedProps,l=null!==n?n.memoizedProps:i,s=e.type,u=e.updateQueue;if(e.updateQueue=null,null!==u)try{"input"===s&&"radio"===i.type&&null!=i.name&&Y(a,i),ve(s,l);var c=ve(s,i);for(l=0;l<u.length;l+=2){var d=u[l],p=u[l+1];"style"===d?ge(a,p):"dangerouslySetInnerHTML"===d?de(a,p):"children"===d?pe(a,p):v(a,d,p,c)}switch(s){case"input":J(a,i);break;case"textarea":oe(a,i);break;case"select":var f=a._wrapperState.wasMultiple;a._wrapperState.wasMultiple=!!i.multiple;var m=i.value;null!=m?ne(a,!!i.multiple,m,!1):f!==!!i.multiple&&(null!=i.defaultValue?ne(a,!!i.multiple,i.defaultValue,!0):ne(a,!!i.multiple,i.multiple?[]:"",!1))}a[fa]=i}catch(g){Cu(e,e.return,g)}}break;case 6:if(gs(t,e),bs(e),4&r){if(null===e.stateNode)throw Error(o(162));a=e.stateNode,i=e.memoizedProps;try{a.nodeValue=i}catch(g){Cu(e,e.return,g)}}break;case 3:if(gs(t,e),bs(e),4&r&&null!==n&&n.memoizedState.isDehydrated)try{Ut(t.containerInfo)}catch(g){Cu(e,e.return,g)}break;case 4:default:gs(t,e),bs(e);break;case 13:gs(t,e),bs(e),8192&(a=e.child).flags&&(i=null!==a.memoizedState,a.stateNode.isHidden=i,!i||null!==a.alternate&&null!==a.alternate.memoizedState||(Us=Ye())),4&r&&hs(e);break;case 22:if(d=null!==n&&null!==n.memoizedState,1&e.mode?(Yl=(c=Yl)||d,gs(t,e),Yl=c):gs(t,e),bs(e),8192&r){if(c=null!==e.memoizedState,(e.stateNode.isHidden=c)&&!d&&0!=(1&e.mode))for(Xl=e,d=e.child;null!==d;){for(p=Xl=d;null!==Xl;){switch(m=(f=Xl).child,f.tag){case 0:case 11:case 14:case 15:rs(4,f,f.return);break;case 1:es(f,f.return);var h=f.stateNode;if("function"==typeof h.componentWillUnmount){r=f,n=f.return;try{t=r,h.props=t.memoizedProps,h.state=t.memoizedState,h.componentWillUnmount()}catch(g){Cu(r,n,g)}}break;case 5:es(f,f.return);break;case 22:if(null!==f.memoizedState){xs(p);continue}}null!==m?(m.return=f,Xl=m):xs(p)}d=d.sibling}e:for(d=null,p=e;;){if(5===p.tag){if(null===d){d=p;try{a=p.stateNode,c?"function"==typeof(i=a.style).setProperty?i.setProperty("display","none","important"):i.display="none":(s=p.stateNode,l=null!=(u=p.memoizedProps.style)&&u.hasOwnProperty("display")?u.display:null,s.style.display=he("display",l))}catch(g){Cu(e,e.return,g)}}}else if(6===p.tag){if(null===d)try{p.stateNode.nodeValue=c?"":p.memoizedProps}catch(g){Cu(e,e.return,g)}}else if((22!==p.tag&&23!==p.tag||null===p.memoizedState||p===e)&&null!==p.child){p.child.return=p,p=p.child;continue}if(p===e)break e;for(;null===p.sibling;){if(null===p.return||p.return===e)break e;d===p&&(d=null),p=p.return}d===p&&(d=null),p.sibling.return=p.return,p=p.sibling}}break;case 19:gs(t,e),bs(e),4&r&&hs(e);case 21:}}function bs(e){var t=e.flags;if(2&t){try{e:{for(var n=e.return;null!==n;){if(ls(n)){var r=n;break e}n=n.return}throw Error(o(160))}switch(r.tag){case 5:var a=r.stateNode;32&r.flags&&(pe(a,""),r.flags&=-33),cs(e,ss(e),a);break;case 3:case 4:var i=r.stateNode.containerInfo;us(e,ss(e),i);break;default:throw Error(o(161))}}catch(l){Cu(e,e.return,l)}e.flags&=-3}4096&t&&(e.flags&=-4097)}function vs(e,t,n){Xl=e,ws(e,t,n)}function ws(e,t,n){for(var r=0!=(1&e.mode);null!==Xl;){var a=Xl,o=a.child;if(22===a.tag&&r){var i=null!==a.memoizedState||Kl;if(!i){var l=a.alternate,s=null!==l&&null!==l.memoizedState||Yl;l=Kl;var u=Yl;if(Kl=i,(Yl=s)&&!u)for(Xl=a;null!==Xl;)s=(i=Xl).child,22===i.tag&&null!==i.memoizedState?Ss(a):null!==s?(s.return=i,Xl=s):Ss(a);for(;null!==o;)Xl=o,ws(o,t,n),o=o.sibling;Xl=a,Kl=l,Yl=u}ks(e)}else 0!=(8772&a.subtreeFlags)&&null!==o?(o.return=a,Xl=o):ks(e)}}function ks(e){for(;null!==Xl;){var t=Xl;if(0!=(8772&t.flags)){var n=t.alternate;try{if(0!=(8772&t.flags))switch(t.tag){case 0:case 11:case 15:Yl||as(5,t);break;case 1:var r=t.stateNode;if(4&t.flags&&!Yl)if(null===n)r.componentDidMount();else{var a=t.elementType===t.type?n.memoizedProps:yo(t.type,n.memoizedProps);r.componentDidUpdate(a,n.memoizedState,r.__reactInternalSnapshotBeforeUpdate)}var i=t.updateQueue;null!==i&&zo(t,i,r);break;case 3:var l=t.updateQueue;if(null!==l){if(n=null,null!==t.child)switch(t.child.tag){case 5:case 1:n=t.child.stateNode}zo(t,l,n)}break;case 5:var s=t.stateNode;if(null===n&&4&t.flags){n=s;var u=t.memoizedProps;switch(t.type){case"button":case"input":case"select":case"textarea":u.autoFocus&&n.focus();break;case"img":u.src&&(n.src=u.src)}}break;case 6:case 4:case 12:case 19:case 17:case 21:case 22:case 23:case 25:break;case 13:if(null===t.memoizedState){var c=t.alternate;if(null!==c){var d=c.memoizedState;if(null!==d){var p=d.dehydrated;null!==p&&Ut(p)}}}break;default:throw Error(o(163))}Yl||512&t.flags&&os(t)}catch(f){Cu(t,t.return,f)}}if(t===e){Xl=null;break}if(null!==(n=t.sibling)){n.return=t.return,Xl=n;break}Xl=t.return}}function xs(e){for(;null!==Xl;){var t=Xl;if(t===e){Xl=null;break}var n=t.sibling;if(null!==n){n.return=t.return,Xl=n;break}Xl=t.return}}function Ss(e){for(;null!==Xl;){var t=Xl;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{as(4,t)}catch(s){Cu(t,n,s)}break;case 1:var r=t.stateNode;if("function"==typeof r.componentDidMount){var a=t.return;try{r.componentDidMount()}catch(s){Cu(t,a,s)}}var o=t.return;try{os(t)}catch(s){Cu(t,o,s)}break;case 5:var i=t.return;try{os(t)}catch(s){Cu(t,i,s)}}}catch(s){Cu(t,t.return,s)}if(t===e){Xl=null;break}var l=t.sibling;if(null!==l){l.return=t.return,Xl=l;break}Xl=t.return}}var Es,Cs=Math.ceil,_s=w.ReactCurrentDispatcher,js=w.ReactCurrentOwner,Ts=w.ReactCurrentBatchConfig,Ns=0,Rs=null,As=null,Ls=0,Ps=0,Os=Ea(0),Is=0,Ds=null,Ms=0,Fs=0,zs=0,Bs=null,$s=null,Us=0,qs=1/0,Hs=null,Zs=!1,Gs=null,Ws=null,Vs=!1,Qs=null,Ks=0,Ys=0,Js=null,Xs=-1,eu=0;function tu(){return 0!=(6&Ns)?Ye():-1!==Xs?Xs:Xs=Ye()}function nu(e){return 0==(1&e.mode)?1:0!=(2&Ns)&&0!==Ls?Ls&-Ls:null!==go.transition?(0===eu&&(eu=ht()),eu):0!==(e=vt)?e:e=void 0===(e=window.event)?16:Kt(e.type)}function ru(e,t,n,r){if(50<Ys)throw Ys=0,Js=null,Error(o(185));yt(e,n,r),0!=(2&Ns)&&e===Rs||(e===Rs&&(0==(2&Ns)&&(Fs|=n),4===Is&&su(e,Ls)),au(e,r),1===n&&0===Ns&&0==(1&t.mode)&&(qs=Ye()+500,za&&Ua()))}function au(e,t){var n=e.callbackNode;!function(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,a=e.expirationTimes,o=e.pendingLanes;0<o;){var i=31-it(o),l=1<<i,s=a[i];-1===s?0!=(l&n)&&0==(l&r)||(a[i]=ft(l,t)):s<=t&&(e.expiredLanes|=l),o&=~l}}(e,t);var r=pt(e,e===Rs?Ls:0);if(0===r)null!==n&&Ve(n),e.callbackNode=null,e.callbackPriority=0;else if(t=r&-r,e.callbackPriority!==t){if(null!=n&&Ve(n),1===t)0===e.tag?function(e){za=!0,$a(e)}(uu.bind(null,e)):$a(uu.bind(null,e)),ia((function(){0==(6&Ns)&&Ua()})),n=null;else{switch(wt(r)){case 1:n=Xe;break;case 4:n=et;break;case 16:default:n=tt;break;case 536870912:n=rt}n=Ru(n,ou.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function ou(e,t){if(Xs=-1,eu=0,0!=(6&Ns))throw Error(o(327));var n=e.callbackNode;if(Su()&&e.callbackNode!==n)return null;var r=pt(e,e===Rs?Ls:0);if(0===r)return null;if(0!=(30&r)||0!=(r&e.expiredLanes)||t)t=yu(e,r);else{t=r;var a=Ns;Ns|=2;var i=hu();for(Rs===e&&Ls===t||(Hs=null,qs=Ye()+500,fu(e,t));;)try{vu();break}catch(s){mu(e,s)}xo(),_s.current=i,Ns=a,null!==As?t=0:(Rs=null,Ls=0,t=Is)}if(0!==t){if(2===t&&(0!==(a=mt(e))&&(r=a,t=iu(e,a))),1===t)throw n=Ds,fu(e,0),su(e,r),au(e,Ye()),n;if(6===t)su(e,r);else{if(a=e.current.alternate,0==(30&r)&&!function(e){for(var t=e;;){if(16384&t.flags){var n=t.updateQueue;if(null!==n&&null!==(n=n.stores))for(var r=0;r<n.length;r++){var a=n[r],o=a.getSnapshot;a=a.value;try{if(!lr(o(),a))return!1}catch(l){return!1}}}if(n=t.child,16384&t.subtreeFlags&&null!==n)n.return=t,t=n;else{if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}(a)&&(2===(t=yu(e,r))&&(0!==(i=mt(e))&&(r=i,t=iu(e,i))),1===t))throw n=Ds,fu(e,0),su(e,r),au(e,Ye()),n;switch(e.finishedWork=a,e.finishedLanes=r,t){case 0:case 1:throw Error(o(345));case 2:case 5:xu(e,$s,Hs);break;case 3:if(su(e,r),(130023424&r)===r&&10<(t=Us+500-Ye())){if(0!==pt(e,0))break;if(((a=e.suspendedLanes)&r)!==r){tu(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=ra(xu.bind(null,e,$s,Hs),t);break}xu(e,$s,Hs);break;case 4:if(su(e,r),(4194240&r)===r)break;for(t=e.eventTimes,a=-1;0<r;){var l=31-it(r);i=1<<l,(l=t[l])>a&&(a=l),r&=~i}if(r=a,10<(r=(120>(r=Ye()-r)?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Cs(r/1960))-r)){e.timeoutHandle=ra(xu.bind(null,e,$s,Hs),r);break}xu(e,$s,Hs);break;default:throw Error(o(329))}}}return au(e,Ye()),e.callbackNode===n?ou.bind(null,e):null}function iu(e,t){var n=Bs;return e.current.memoizedState.isDehydrated&&(fu(e,t).flags|=256),2!==(e=yu(e,t))&&(t=$s,$s=n,null!==t&&lu(t)),e}function lu(e){null===$s?$s=e:$s.push.apply($s,e)}function su(e,t){for(t&=~zs,t&=~Fs,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-it(t),r=1<<n;e[n]=-1,t&=~r}}function uu(e){if(0!=(6&Ns))throw Error(o(327));Su();var t=pt(e,0);if(0==(1&t))return au(e,Ye()),null;var n=yu(e,t);if(0!==e.tag&&2===n){var r=mt(e);0!==r&&(t=r,n=iu(e,r))}if(1===n)throw n=Ds,fu(e,0),su(e,t),au(e,Ye()),n;if(6===n)throw Error(o(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,xu(e,$s,Hs),au(e,Ye()),null}function cu(e,t){var n=Ns;Ns|=1;try{return e(t)}finally{0===(Ns=n)&&(qs=Ye()+500,za&&Ua())}}function du(e){null!==Qs&&0===Qs.tag&&0==(6&Ns)&&Su();var t=Ns;Ns|=1;var n=Ts.transition,r=vt;try{if(Ts.transition=null,vt=1,e)return e()}finally{vt=r,Ts.transition=n,0==(6&(Ns=t))&&Ua()}}function pu(){Ps=Os.current,Ca(Os)}function fu(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,aa(n)),null!==As)for(n=As.return;null!==n;){var r=n;switch(to(r),r.tag){case 1:null!=(r=r.type.childContextTypes)&&Pa();break;case 3:oi(),Ca(Na),Ca(Ta),di();break;case 5:li(r);break;case 4:oi();break;case 13:case 19:Ca(si);break;case 10:So(r.type._context);break;case 22:case 23:pu()}n=n.return}if(Rs=e,As=e=Ou(e.current,null),Ls=Ps=t,Is=0,Ds=null,zs=Fs=Ms=0,$s=Bs=null,null!==jo){for(t=0;t<jo.length;t++)if(null!==(r=(n=jo[t]).interleaved)){n.interleaved=null;var a=r.next,o=n.pending;if(null!==o){var i=o.next;o.next=a,r.next=i}n.pending=r}jo=null}return e}function mu(e,t){for(;;){var n=As;try{if(xo(),pi.current=il,bi){for(var r=hi.memoizedState;null!==r;){var a=r.queue;null!==a&&(a.pending=null),r=r.next}bi=!1}if(mi=0,yi=gi=hi=null,vi=!1,wi=0,js.current=null,null===n||null===n.return){Is=1,Ds=t,As=null;break}e:{var i=e,l=n.return,s=n,u=t;if(t=Ls,s.flags|=32768,null!==u&&"object"==typeof u&&"function"==typeof u.then){var c=u,d=s,p=d.tag;if(0==(1&d.mode)&&(0===p||11===p||15===p)){var f=d.alternate;f?(d.updateQueue=f.updateQueue,d.memoizedState=f.memoizedState,d.lanes=f.lanes):(d.updateQueue=null,d.memoizedState=null)}var m=yl(l);if(null!==m){m.flags&=-257,bl(m,l,s,0,t),1&m.mode&&gl(i,c,t),u=c;var h=(t=m).updateQueue;if(null===h){var g=new Set;g.add(u),t.updateQueue=g}else h.add(u);break e}if(0==(1&t)){gl(i,c,t),gu();break e}u=Error(o(426))}else if(ao&&1&s.mode){var y=yl(l);if(null!==y){0==(65536&y.flags)&&(y.flags|=256),bl(y,l,s,0,t),ho(cl(u,s));break e}}i=u=cl(u,s),4!==Is&&(Is=2),null===Bs?Bs=[i]:Bs.push(i),i=l;do{switch(i.tag){case 3:i.flags|=65536,t&=-t,i.lanes|=t,Mo(i,ml(0,u,t));break e;case 1:s=u;var b=i.type,v=i.stateNode;if(0==(128&i.flags)&&("function"==typeof b.getDerivedStateFromError||null!==v&&"function"==typeof v.componentDidCatch&&(null===Ws||!Ws.has(v)))){i.flags|=65536,t&=-t,i.lanes|=t,Mo(i,hl(i,s,t));break e}}i=i.return}while(null!==i)}ku(n)}catch(w){t=w,As===n&&null!==n&&(As=n=n.return);continue}break}}function hu(){var e=_s.current;return _s.current=il,null===e?il:e}function gu(){0!==Is&&3!==Is&&2!==Is||(Is=4),null===Rs||0==(268435455&Ms)&&0==(268435455&Fs)||su(Rs,Ls)}function yu(e,t){var n=Ns;Ns|=2;var r=hu();for(Rs===e&&Ls===t||(Hs=null,fu(e,t));;)try{bu();break}catch(a){mu(e,a)}if(xo(),Ns=n,_s.current=r,null!==As)throw Error(o(261));return Rs=null,Ls=0,Is}function bu(){for(;null!==As;)wu(As)}function vu(){for(;null!==As&&!Qe();)wu(As)}function wu(e){var t=Es(e.alternate,e,Ps);e.memoizedProps=e.pendingProps,null===t?ku(e):As=t,js.current=null}function ku(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(32768&t.flags)){if(null!==(n=Vl(n,t,Ps)))return void(As=n)}else{if(null!==(n=Ql(n,t)))return n.flags&=32767,void(As=n);if(null===e)return Is=6,void(As=null);e.flags|=32768,e.subtreeFlags=0,e.deletions=null}if(null!==(t=t.sibling))return void(As=t);As=t=e}while(null!==t);0===Is&&(Is=5)}function xu(e,t,n){var r=vt,a=Ts.transition;try{Ts.transition=null,vt=1,function(e,t,n,r){do{Su()}while(null!==Qs);if(0!=(6&Ns))throw Error(o(327));n=e.finishedWork;var a=e.finishedLanes;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(o(177));e.callbackNode=null,e.callbackPriority=0;var i=n.lanes|n.childLanes;if(function(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0<n;){var a=31-it(n),o=1<<a;t[a]=0,r[a]=-1,e[a]=-1,n&=~o}}(e,i),e===Rs&&(As=Rs=null,Ls=0),0==(2064&n.subtreeFlags)&&0==(2064&n.flags)||Vs||(Vs=!0,Ru(tt,(function(){return Su(),null}))),i=0!=(15990&n.flags),0!=(15990&n.subtreeFlags)||i){i=Ts.transition,Ts.transition=null;var l=vt;vt=1;var s=Ns;Ns|=4,js.current=null,function(e,t){if(ea=Ht,fr(e=pr())){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{var r=(n=(n=e.ownerDocument)&&n.defaultView||window).getSelection&&n.getSelection();if(r&&0!==r.rangeCount){n=r.anchorNode;var a=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch(k){n=null;break e}var l=0,s=-1,u=-1,c=0,d=0,p=e,f=null;t:for(;;){for(var m;p!==n||0!==a&&3!==p.nodeType||(s=l+a),p!==i||0!==r&&3!==p.nodeType||(u=l+r),3===p.nodeType&&(l+=p.nodeValue.length),null!==(m=p.firstChild);)f=p,p=m;for(;;){if(p===e)break t;if(f===n&&++c===a&&(s=l),f===i&&++d===r&&(u=l),null!==(m=p.nextSibling))break;f=(p=f).parentNode}p=m}n=-1===s||-1===u?null:{start:s,end:u}}else n=null}n=n||{start:0,end:0}}else n=null;for(ta={focusedElem:e,selectionRange:n},Ht=!1,Xl=t;null!==Xl;)if(e=(t=Xl).child,0!=(1028&t.subtreeFlags)&&null!==e)e.return=t,Xl=e;else for(;null!==Xl;){t=Xl;try{var h=t.alternate;if(0!=(1024&t.flags))switch(t.tag){case 0:case 11:case 15:case 5:case 6:case 4:case 17:break;case 1:if(null!==h){var g=h.memoizedProps,y=h.memoizedState,b=t.stateNode,v=b.getSnapshotBeforeUpdate(t.elementType===t.type?g:yo(t.type,g),y);b.__reactInternalSnapshotBeforeUpdate=v}break;case 3:var w=t.stateNode.containerInfo;1===w.nodeType?w.textContent="":9===w.nodeType&&w.documentElement&&w.removeChild(w.documentElement);break;default:throw Error(o(163))}}catch(k){Cu(t,t.return,k)}if(null!==(e=t.sibling)){e.return=t.return,Xl=e;break}Xl=t.return}h=ns,ns=!1}(e,n),ys(n,e),mr(ta),Ht=!!ea,ta=ea=null,e.current=n,vs(n,e,a),Ke(),Ns=s,vt=l,Ts.transition=i}else e.current=n;if(Vs&&(Vs=!1,Qs=e,Ks=a),i=e.pendingLanes,0===i&&(Ws=null),function(e){if(ot&&"function"==typeof ot.onCommitFiberRoot)try{ot.onCommitFiberRoot(at,e,void 0,128==(128&e.current.flags))}catch(t){}}(n.stateNode),au(e,Ye()),null!==t)for(r=e.onRecoverableError,n=0;n<t.length;n++)a=t[n],r(a.value,{componentStack:a.stack,digest:a.digest});if(Zs)throw Zs=!1,e=Gs,Gs=null,e;0!=(1&Ks)&&0!==e.tag&&Su(),i=e.pendingLanes,0!=(1&i)?e===Js?Ys++:(Ys=0,Js=e):Ys=0,Ua()}(e,t,n,r)}finally{Ts.transition=a,vt=r}return null}function Su(){if(null!==Qs){var e=wt(Ks),t=Ts.transition,n=vt;try{if(Ts.transition=null,vt=16>e?16:e,null===Qs)var r=!1;else{if(e=Qs,Qs=null,Ks=0,0!=(6&Ns))throw Error(o(331));var a=Ns;for(Ns|=4,Xl=e.current;null!==Xl;){var i=Xl,l=i.child;if(0!=(16&Xl.flags)){var s=i.deletions;if(null!==s){for(var u=0;u<s.length;u++){var c=s[u];for(Xl=c;null!==Xl;){var d=Xl;switch(d.tag){case 0:case 11:case 15:rs(8,d,i)}var p=d.child;if(null!==p)p.return=d,Xl=p;else for(;null!==Xl;){var f=(d=Xl).sibling,m=d.return;if(is(d),d===c){Xl=null;break}if(null!==f){f.return=m,Xl=f;break}Xl=m}}}var h=i.alternate;if(null!==h){var g=h.child;if(null!==g){h.child=null;do{var y=g.sibling;g.sibling=null,g=y}while(null!==g)}}Xl=i}}if(0!=(2064&i.subtreeFlags)&&null!==l)l.return=i,Xl=l;else e:for(;null!==Xl;){if(0!=(2048&(i=Xl).flags))switch(i.tag){case 0:case 11:case 15:rs(9,i,i.return)}var b=i.sibling;if(null!==b){b.return=i.return,Xl=b;break e}Xl=i.return}}var v=e.current;for(Xl=v;null!==Xl;){var w=(l=Xl).child;if(0!=(2064&l.subtreeFlags)&&null!==w)w.return=l,Xl=w;else e:for(l=v;null!==Xl;){if(0!=(2048&(s=Xl).flags))try{switch(s.tag){case 0:case 11:case 15:as(9,s)}}catch(x){Cu(s,s.return,x)}if(s===l){Xl=null;break e}var k=s.sibling;if(null!==k){k.return=s.return,Xl=k;break e}Xl=s.return}}if(Ns=a,Ua(),ot&&"function"==typeof ot.onPostCommitFiberRoot)try{ot.onPostCommitFiberRoot(at,e)}catch(x){}r=!0}return r}finally{vt=n,Ts.transition=t}}return!1}function Eu(e,t,n){e=Io(e,t=ml(0,t=cl(n,t),1),1),t=tu(),null!==e&&(yt(e,1,t),au(e,t))}function Cu(e,t,n){if(3===e.tag)Eu(e,e,n);else for(;null!==t;){if(3===t.tag){Eu(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Ws||!Ws.has(r))){t=Io(t,e=hl(t,e=cl(n,e),1),1),e=tu(),null!==t&&(yt(t,1,e),au(t,e));break}}t=t.return}}function _u(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=tu(),e.pingedLanes|=e.suspendedLanes&n,Rs===e&&(Ls&n)===n&&(4===Is||3===Is&&(130023424&Ls)===Ls&&500>Ye()-Us?fu(e,0):zs|=n),au(e,t)}function ju(e,t){0===t&&(0==(1&e.mode)?t=1:(t=ct,0==(130023424&(ct<<=1))&&(ct=4194304)));var n=tu();null!==(e=Ro(e,t))&&(yt(e,t,n),au(e,n))}function Tu(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),ju(e,n)}function Nu(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,a=e.memoizedState;null!==a&&(n=a.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(o(314))}null!==r&&r.delete(t),ju(e,n)}function Ru(e,t){return We(e,t)}function Au(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Lu(e,t,n,r){return new Au(e,t,n,r)}function Pu(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Ou(e,t){var n=e.alternate;return null===n?((n=Lu(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=14680064&e.flags,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Iu(e,t,n,r,a,i){var l=2;if(r=e,"function"==typeof e)Pu(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case S:return Du(n.children,a,i,t);case E:l=8,a|=8;break;case C:return(e=Lu(12,n,t,2|a)).elementType=C,e.lanes=i,e;case N:return(e=Lu(13,n,t,a)).elementType=N,e.lanes=i,e;case R:return(e=Lu(19,n,t,a)).elementType=R,e.lanes=i,e;case P:return Mu(n,a,i,t);default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case _:l=10;break e;case j:l=9;break e;case T:l=11;break e;case A:l=14;break e;case L:l=16,r=null;break e}throw Error(o(130,null==e?e:typeof e,""))}return(t=Lu(l,n,t,a)).elementType=e,t.type=r,t.lanes=i,t}function Du(e,t,n,r){return(e=Lu(7,e,r,t)).lanes=n,e}function Mu(e,t,n,r){return(e=Lu(22,e,r,t)).elementType=P,e.lanes=n,e.stateNode={isHidden:!1},e}function Fu(e,t,n){return(e=Lu(6,e,null,t)).lanes=n,e}function zu(e,t,n){return(t=Lu(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Bu(e,t,n,r,a){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=gt(0),this.expirationTimes=gt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=gt(0),this.identifierPrefix=r,this.onRecoverableError=a,this.mutableSourceEagerHydrationData=null}function $u(e,t,n,r,a,o,i,l,s){return e=new Bu(e,t,n,l,s),1===t?(t=1,!0===o&&(t|=8)):t=0,o=Lu(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Lo(o),e}function Uu(e){if(!e)return ja;e:{if(Ue(e=e._reactInternals)!==e||1!==e.tag)throw Error(o(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(La(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(null!==t);throw Error(o(171))}if(1===e.tag){var n=e.type;if(La(n))return Ia(e,n,t)}return t}function qu(e,t,n,r,a,o,i,l,s){return(e=$u(n,r,!0,e,0,o,0,l,s)).context=Uu(null),n=e.current,(o=Oo(r=tu(),a=nu(n))).callback=null!=t?t:null,Io(n,o,a),e.current.lanes=a,yt(e,a,r),au(e,r),e}function Hu(e,t,n,r){var a=t.current,o=tu(),i=nu(a);return n=Uu(n),null===t.context?t.context=n:t.pendingContext=n,(t=Oo(o,i)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),null!==(e=Io(a,t,i))&&(ru(e,a,i,o),Do(e,a,i)),i}function Zu(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function Gu(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function Wu(e,t){Gu(e,t),(e=e.alternate)&&Gu(e,t)}Es=function(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps||Na.current)wl=!0;else{if(0==(e.lanes&n)&&0==(128&t.flags))return wl=!1,function(e,t,n){switch(t.tag){case 3:Rl(t),mo();break;case 5:ii(t);break;case 1:La(t.type)&&Da(t);break;case 4:ai(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,a=t.memoizedProps.value;_a(bo,r._currentValue),r._currentValue=a;break;case 13:if(null!==(r=t.memoizedState))return null!==r.dehydrated?(_a(si,1&si.current),t.flags|=128,null):0!=(n&t.child.childLanes)?Fl(e,t,n):(_a(si,1&si.current),null!==(e=Zl(e,t,n))?e.sibling:null);_a(si,1&si.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(128&e.flags)){if(r)return ql(e,t,n);t.flags|=128}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),_a(si,si.current),r)break;return null;case 22:case 23:return t.lanes=0,Cl(e,t,n)}return Zl(e,t,n)}(e,t,n);wl=0!=(131072&e.flags)}else wl=!1,ao&&0!=(1048576&t.flags)&&Xa(t,Ga,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Hl(e,t),e=t.pendingProps;var a=Aa(t,Ta.current);Co(t,n),a=Ei(null,t,r,e,a,n);var i=Ci();return t.flags|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof?(t.tag=1,t.memoizedState=null,t.updateQueue=null,La(r)?(i=!0,Da(t)):i=!1,t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,Lo(t),a.updater=Uo,t.stateNode=a,a._reactInternals=t,Go(t,r,e,n),t=Nl(null,t,r,!0,i,n)):(t.tag=0,ao&&i&&eo(t),kl(null,t,a,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Hl(e,t),e=t.pendingProps,r=(a=r._init)(r._payload),t.type=r,a=t.tag=function(e){if("function"==typeof e)return Pu(e)?1:0;if(null!=e){if((e=e.$$typeof)===T)return 11;if(e===A)return 14}return 2}(r),e=yo(r,e),a){case 0:t=jl(null,t,r,e,n);break e;case 1:t=Tl(null,t,r,e,n);break e;case 11:t=xl(null,t,r,e,n);break e;case 14:t=Sl(null,t,r,yo(r.type,e),n);break e}throw Error(o(306,r,""))}return t;case 0:return r=t.type,a=t.pendingProps,jl(e,t,r,a=t.elementType===r?a:yo(r,a),n);case 1:return r=t.type,a=t.pendingProps,Tl(e,t,r,a=t.elementType===r?a:yo(r,a),n);case 3:e:{if(Rl(t),null===e)throw Error(o(387));r=t.pendingProps,a=(i=t.memoizedState).element,Po(e,t),Fo(t,r,null,n);var l=t.memoizedState;if(r=l.element,i.isDehydrated){if(i={element:r,isDehydrated:!1,cache:l.cache,pendingSuspenseBoundaries:l.pendingSuspenseBoundaries,transitions:l.transitions},t.updateQueue.baseState=i,t.memoizedState=i,256&t.flags){t=Al(e,t,r,n,a=cl(Error(o(423)),t));break e}if(r!==a){t=Al(e,t,r,n,a=cl(Error(o(424)),t));break e}for(ro=ua(t.stateNode.containerInfo.firstChild),no=t,ao=!0,oo=null,n=Jo(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|4096,n=n.sibling}else{if(mo(),r===a){t=Zl(e,t,n);break e}kl(e,t,r,n)}t=t.child}return t;case 5:return ii(t),null===e&&uo(t),r=t.type,a=t.pendingProps,i=null!==e?e.memoizedProps:null,l=a.children,na(r,a)?l=null:null!==i&&na(r,i)&&(t.flags|=32),_l(e,t),kl(e,t,l,n),t.child;case 6:return null===e&&uo(t),null;case 13:return Fl(e,t,n);case 4:return ai(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Yo(t,null,r,n):kl(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,xl(e,t,r,a=t.elementType===r?a:yo(r,a),n);case 7:return kl(e,t,t.pendingProps,n),t.child;case 8:case 12:return kl(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,a=t.pendingProps,i=t.memoizedProps,l=a.value,_a(bo,r._currentValue),r._currentValue=l,null!==i)if(lr(i.value,l)){if(i.children===a.children&&!Na.current){t=Zl(e,t,n);break e}}else for(null!==(i=t.child)&&(i.return=t);null!==i;){var s=i.dependencies;if(null!==s){l=i.child;for(var u=s.firstContext;null!==u;){if(u.context===r){if(1===i.tag){(u=Oo(-1,n&-n)).tag=2;var c=i.updateQueue;if(null!==c){var d=(c=c.shared).pending;null===d?u.next=u:(u.next=d.next,d.next=u),c.pending=u}}i.lanes|=n,null!==(u=i.alternate)&&(u.lanes|=n),Eo(i.return,n,t),s.lanes|=n;break}u=u.next}}else if(10===i.tag)l=i.type===t.type?null:i.child;else if(18===i.tag){if(null===(l=i.return))throw Error(o(341));l.lanes|=n,null!==(s=l.alternate)&&(s.lanes|=n),Eo(l,n,t),l=i.sibling}else l=i.child;if(null!==l)l.return=i;else for(l=i;null!==l;){if(l===t){l=null;break}if(null!==(i=l.sibling)){i.return=l.return,l=i;break}l=l.return}i=l}kl(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=t.pendingProps.children,Co(t,n),r=r(a=_o(a)),t.flags|=1,kl(e,t,r,n),t.child;case 14:return a=yo(r=t.type,t.pendingProps),Sl(e,t,r,a=yo(r.type,a),n);case 15:return El(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:yo(r,a),Hl(e,t),t.tag=1,La(r)?(e=!0,Da(t)):e=!1,Co(t,n),Ho(t,r,a),Go(t,r,a,n),Nl(null,t,r,!0,e,n);case 19:return ql(e,t,n);case 22:return Cl(e,t,n)}throw Error(o(156,t.tag))};var Vu="function"==typeof reportError?reportError:function(e){console.error(e)};function Qu(e){this._internalRoot=e}function Ku(e){this._internalRoot=e}function Yu(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType)}function Ju(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Xu(){}function ec(e,t,n,r,a){var o=n._reactRootContainer;if(o){var i=o;if("function"==typeof a){var l=a;a=function(){var e=Zu(i);l.call(e)}}Hu(t,i,e,a)}else i=function(e,t,n,r,a){if(a){if("function"==typeof r){var o=r;r=function(){var e=Zu(i);o.call(e)}}var i=qu(t,r,e,0,null,!1,0,"",Xu);return e._reactRootContainer=i,e[ma]=i.current,Ur(8===e.nodeType?e.parentNode:e),du(),i}for(;a=e.lastChild;)e.removeChild(a);if("function"==typeof r){var l=r;r=function(){var e=Zu(s);l.call(e)}}var s=$u(e,0,!1,null,0,!1,0,"",Xu);return e._reactRootContainer=s,e[ma]=s.current,Ur(8===e.nodeType?e.parentNode:e),du((function(){Hu(t,s,n,r)})),s}(n,t,e,a,r);return Zu(i)}Ku.prototype.render=Qu.prototype.render=function(e){var t=this._internalRoot;if(null===t)throw Error(o(409));Hu(e,t,null,null)},Ku.prototype.unmount=Qu.prototype.unmount=function(){var e=this._internalRoot;if(null!==e){this._internalRoot=null;var t=e.containerInfo;du((function(){Hu(null,e,null,null)})),t[ma]=null}},Ku.prototype.unstable_scheduleHydration=function(e){if(e){var t=Et();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Pt.length&&0!==t&&t<Pt[n].priority;n++);Pt.splice(n,0,e),0===n&&Mt(e)}},kt=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=dt(t.pendingLanes);0!==n&&(bt(t,1|n),au(t,Ye()),0==(6&Ns)&&(qs=Ye()+500,Ua()))}break;case 13:du((function(){var t=Ro(e,1);if(null!==t){var n=tu();ru(t,e,1,n)}})),Wu(e,1)}},xt=function(e){if(13===e.tag){var t=Ro(e,134217728);if(null!==t)ru(t,e,134217728,tu());Wu(e,134217728)}},St=function(e){if(13===e.tag){var t=nu(e),n=Ro(e,t);if(null!==n)ru(n,e,t,tu());Wu(e,t)}},Et=function(){return vt},Ct=function(e,t){var n=vt;try{return vt=e,t()}finally{vt=n}},xe=function(e,t,n){switch(t){case"input":if(J(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=ka(r);if(!a)throw Error(o(90));W(r),J(r,a)}}}break;case"textarea":oe(e,n);break;case"select":null!=(t=n.value)&&ne(e,!!n.multiple,t,!1)}},Te=cu,Ne=du;var tc={usingClientEntryPoint:!1,Events:[va,wa,ka,_e,je,cu]},nc={findFiberByHostInstance:ba,bundleType:0,version:"18.2.0",rendererPackageName:"react-dom"},rc={bundleType:nc.bundleType,version:nc.version,rendererPackageName:nc.rendererPackageName,rendererConfig:nc.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:w.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Ze(e))?null:e.stateNode},findFiberByHostInstance:nc.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.2.0-next-9e3b772b8-20220608"};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var ac=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!ac.isDisabled&&ac.supportsFiber)try{at=ac.inject(rc),ot=ac}catch(ce){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tc,t.createPortal=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Yu(t))throw Error(o(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:x,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)},t.createRoot=function(e,t){if(!Yu(e))throw Error(o(299));var n=!1,r="",a=Vu;return null!=t&&(!0===t.unstable_strictMode&&(n=!0),void 0!==t.identifierPrefix&&(r=t.identifierPrefix),void 0!==t.onRecoverableError&&(a=t.onRecoverableError)),t=$u(e,1,!1,null,0,n,0,r,a),e[ma]=t.current,Ur(8===e.nodeType?e.parentNode:e),new Qu(t)},t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if("function"==typeof e.render)throw Error(o(188));throw e=Object.keys(e).join(","),Error(o(268,e))}return e=null===(e=Ze(t))?null:e.stateNode},t.flushSync=function(e){return du(e)},t.hydrate=function(e,t,n){if(!Ju(t))throw Error(o(200));return ec(null,e,t,!0,n)},t.hydrateRoot=function(e,t,n){if(!Yu(e))throw Error(o(405));var r=null!=n&&n.hydratedSources||null,a=!1,i="",l=Vu;if(null!=n&&(!0===n.unstable_strictMode&&(a=!0),void 0!==n.identifierPrefix&&(i=n.identifierPrefix),void 0!==n.onRecoverableError&&(l=n.onRecoverableError)),t=qu(t,null,e,1,null!=n?n:null,a,0,i,l),e[ma]=t.current,Ur(e),r)for(e=0;e<r.length;e++)a=(a=(n=r[e])._getVersion)(n._source),null==t.mutableSourceEagerHydrationData?t.mutableSourceEagerHydrationData=[n,a]:t.mutableSourceEagerHydrationData.push(n,a);return new Ku(t)},t.render=function(e,t,n){if(!Ju(t))throw Error(o(200));return ec(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!Ju(e))throw Error(o(40));return!!e._reactRootContainer&&(du((function(){ec(null,null,e,!1,(function(){e._reactRootContainer=null,e[ma]=null}))})),!0)},t.unstable_batchedUpdates=cu,t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Ju(n))throw Error(o(200));if(null==e||void 0===e._reactInternals)throw Error(o(38));return ec(e,t,n,!1,r)},t.version="18.2.0-next-9e3b772b8-20220608"},7634:(e,t,n)=>{"use strict";var r=n(1542);t.createRoot=r.createRoot,t.hydrateRoot=r.hydrateRoot},1542:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(3577)},745:(e,t)=>{"use strict";function n(e,t){var n=e.length;e.push(t);e:for(;0<n;){var r=n-1>>>1,a=e[r];if(!(0<o(a,t)))break e;e[r]=t,e[n]=a,n=r}}function r(e){return 0===e.length?null:e[0]}function a(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length,i=a>>>1;r<i;){var l=2*(r+1)-1,s=e[l],u=l+1,c=e[u];if(0>o(s,n))u<a&&0>o(c,s)?(e[r]=c,e[u]=n,r=u):(e[r]=s,e[l]=n,r=l);else{if(!(u<a&&0>o(c,n)))break e;e[r]=c,e[u]=n,r=u}}}return t}function o(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}var u=[],c=[],d=1,p=null,f=3,m=!1,h=!1,g=!1,y="function"==typeof setTimeout?setTimeout:null,b="function"==typeof clearTimeout?clearTimeout:null,v="undefined"!=typeof setImmediate?setImmediate:null;function w(e){for(var t=r(c);null!==t;){if(null===t.callback)a(c);else{if(!(t.startTime<=e))break;a(c),t.sortIndex=t.expirationTime,n(u,t)}t=r(c)}}function k(e){if(g=!1,w(e),!h)if(null!==r(u))h=!0,P(x);else{var t=r(c);null!==t&&O(k,t.startTime-e)}}function x(e,n){h=!1,g&&(g=!1,b(_),_=-1),m=!0;var o=f;try{for(w(n),p=r(u);null!==p&&(!(p.expirationTime>n)||e&&!N());){var i=p.callback;if("function"==typeof i){p.callback=null,f=p.priorityLevel;var l=i(p.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?p.callback=l:p===r(u)&&a(u),w(n)}else a(u);p=r(u)}if(null!==p)var s=!0;else{var d=r(c);null!==d&&O(k,d.startTime-n),s=!1}return s}finally{p=null,f=o,m=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var S,E=!1,C=null,_=-1,j=5,T=-1;function N(){return!(t.unstable_now()-T<j)}function R(){if(null!==C){var e=t.unstable_now();T=e;var n=!0;try{n=C(!0,e)}finally{n?S():(E=!1,C=null)}}else E=!1}if("function"==typeof v)S=function(){v(R)};else if("undefined"!=typeof MessageChannel){var A=new MessageChannel,L=A.port2;A.port1.onmessage=R,S=function(){L.postMessage(null)}}else S=function(){y(R,0)};function P(e){C=e,E||(E=!0,S())}function O(e,n){_=y((function(){e(t.unstable_now())}),n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){h||m||(h=!0,P(x))},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):j=0<e?Math.floor(1e3/e):5},t.unstable_getCurrentPriorityLevel=function(){return f},t.unstable_getFirstCallbackNode=function(){return r(u)},t.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var n=f;f=t;try{return e()}finally{f=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=function(){},t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=f;f=e;try{return t()}finally{f=n}},t.unstable_scheduleCallback=function(e,a,o){var i=t.unstable_now();switch("object"==typeof o&&null!==o?o="number"==typeof(o=o.delay)&&0<o?i+o:i:o=i,e){case 1:var l=-1;break;case 2:l=250;break;case 5:l=1073741823;break;case 4:l=1e4;break;default:l=5e3}return e={id:d++,callback:a,priorityLevel:e,startTime:o,expirationTime:l=o+l,sortIndex:-1},o>i?(e.sortIndex=o,n(c,e),null===r(u)&&e===r(c)&&(g?(b(_),_=-1):g=!0,O(k,o-i))):(e.sortIndex=l,n(u,e),h||m||(h=!0,P(x))),e},t.unstable_shouldYield=N,t.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}},3637:(e,t,n)=>{"use strict";e.exports=n(745)},4335:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,a="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function o(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var l,s,u,c;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(!o(e[s],i[s]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;for(c=e.entries();!(s=c.next()).done;)if(!o(s.value[1],i.get(s.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;return!0}if(a&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(e[s]!==i[s])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof i.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof i.toString)return e.toString()===i.toString();if((l=(u=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!=s--;)if(!Object.prototype.hasOwnProperty.call(i,u[s]))return!1;if(t&&e instanceof Element)return!1;for(s=l;0!=s--;)if(("_owner"!==u[s]&&"__v"!==u[s]&&"__o"!==u[s]||!e.$$typeof)&&!o(e[u[s]],i[u[s]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return o(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},2883:(e,t,n)=>{"use strict";n.d(t,{B6:()=>Z,ql:()=>X});var r=n(7378),a=n(3615),o=n.n(a),i=n(4335),l=n.n(i),s=n(3996),u=n.n(s),c=n(4445),d=n.n(c);function p(){return p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p.apply(this,arguments)}function f(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,m(e,t)}function m(e,t){return m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},m(e,t)}function h(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(n=o[r])>=0||(a[n]=e[n]);return a}var g={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},y={rel:["amphtml","canonical","alternate"]},b={type:["application/ld+json"]},v={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(g).map((function(e){return g[e]})),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},x=Object.keys(k).reduce((function(e,t){return e[k[t]]=t,e}),{}),S=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},E=function(e){var t=S(e,g.TITLE),n=S(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=S(e,"defaultTitle");return t||r||void 0},C=function(e){return S(e,"onChangeClientState")||function(){}},_=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return p({},e,t)}),{})},j=function(e,t){return t.filter((function(e){return void 0!==e[g.BASE]})).map((function(e){return e[g.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),a=0;a<r.length;a+=1){var o=r[a].toLowerCase();if(-1!==e.indexOf(o)&&n[o])return t.concat(n)}return t}),[])},T=function(e,t,n){var r={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var a={};n.filter((function(e){for(var n,o=Object.keys(e),i=0;i<o.length;i+=1){var l=o[i],s=l.toLowerCase();-1===t.indexOf(s)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===s&&"stylesheet"===e[s].toLowerCase()||(n=s),-1===t.indexOf(l)||"innerHTML"!==l&&"cssText"!==l&&"itemprop"!==l||(n=l)}if(!n||!e[n])return!1;var u=e[n].toLowerCase();return r[n]||(r[n]={}),a[n]||(a[n]={}),!r[n][u]&&(a[n][u]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var o=Object.keys(a),i=0;i<o.length;i+=1){var l=o[i],s=p({},r[l],a[l]);r[l]=s}return e}),[]).reverse()},N=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},R=function(e){return Array.isArray(e)?e.join(""):e},A=function(e,t){return Array.isArray(e)?e.reduce((function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e}),{priority:[],default:[]}):{default:e}},L=function(e,t){var n;return p({},e,((n={})[t]=void 0,n))},P=[g.NOSCRIPT,g.SCRIPT,g.STYLE],O=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},I=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},D=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[k[n]||n]=e[n],t}),t)},M=function(e,t){return t.map((function(t,n){var a,o=((a={key:n})["data-rh"]=!0,a);return Object.keys(t).forEach((function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]})),r.createElement(e,o)}))},F=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=D(n,a),[r.createElement(g.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=I(n),o=R(t);return a?"<"+e+' data-rh="true" '+a+">"+O(o,r)+"</"+e+">":"<"+e+' data-rh="true">'+O(o,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return D(t)},toString:function(){return I(t)}};default:return{toComponent:function(){return M(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var a=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var a=void 0===r[t]?t:t+'="'+O(r[t],n)+'"';return e?e+" "+a:a}),""),o=r.innerHTML||r.cssText||"",i=-1===P.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+"</"+e+">")}),"")}(e,t,n)}}}},z=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.noscriptTags,i=e.styleTags,l=e.title,s=void 0===l?"":l,u=e.titleAttributes,c=e.linkTags,d=e.metaTags,p=e.scriptTags,f={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var m=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,a=A(e.metaTags,v),o=A(t,y),i=A(n,b);return{priorityMethods:{toComponent:function(){return[].concat(M(g.META,a.priority),M(g.LINK,o.priority),M(g.SCRIPT,i.priority))},toString:function(){return F(g.META,a.priority,r)+" "+F(g.LINK,o.priority,r)+" "+F(g.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);f=m.priorityMethods,c=m.linkTags,d=m.metaTags,p=m.scriptTags}return{priority:f,base:F(g.BASE,t,r),bodyAttributes:F("bodyAttributes",n,r),htmlAttributes:F("htmlAttributes",a,r),link:F(g.LINK,c,r),meta:F(g.META,d,r),noscript:F(g.NOSCRIPT,o,r),script:F(g.SCRIPT,p,r),style:F(g.STYLE,i,r),title:F(g.TITLE,{title:s,titleAttributes:u},r)}},B=[],$=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?B:n.instances},add:function(e){(n.canUseDOM?B:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?B:n.instances).indexOf(e);(n.canUseDOM?B:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=z({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},U=r.createContext({}),q=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),H="undefined"!=typeof document,Z=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new $(r.props.context,t.canUseDOM),r}return f(t,e),t.prototype.render=function(){return r.createElement(U.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);Z.canUseDOM=H,Z.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},Z.defaultProps={context:{}},Z.displayName="HelmetProvider";var G=function(e,t){var n,r=document.head||document.querySelector(g.HEAD),a=r.querySelectorAll(e+"[data-rh]"),o=[].slice.call(a),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&("innerHTML"===a?r.innerHTML=t.innerHTML:"cssText"===a?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(a,void 0===t[a]?"":t[a]));r.setAttribute("data-rh","true"),o.some((function(e,t){return n=t,r.isEqualNode(e)}))?o.splice(n,1):i.push(r)})),o.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:o,newTags:i}},W=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),l=0;l<i.length;l+=1){var s=i[l],u=t[s]||"";n.getAttribute(s)!==u&&n.setAttribute(s,u),-1===a.indexOf(s)&&a.push(s);var c=o.indexOf(s);-1!==c&&o.splice(c,1)}for(var d=o.length-1;d>=0;d-=1)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},V=function(e,t){var n=e.baseTag,r=e.htmlAttributes,a=e.linkTags,o=e.metaTags,i=e.noscriptTags,l=e.onChangeClientState,s=e.scriptTags,u=e.styleTags,c=e.title,d=e.titleAttributes;W(g.BODY,e.bodyAttributes),W(g.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=R(e)),W(g.TITLE,t)}(c,d);var p={baseTag:G(g.BASE,n),linkTags:G(g.LINK,a),metaTags:G(g.META,o),noscriptTags:G(g.NOSCRIPT,i),scriptTags:G(g.SCRIPT,s),styleTags:G(g.STYLE,u)},f={},m={};Object.keys(p).forEach((function(e){var t=p[e],n=t.newTags,r=t.oldTags;n.length&&(f[e]=n),r.length&&(m[e]=p[e].oldTags)})),t&&t(),l(e,f,m)},Q=null,K=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,a=null,o=(e=n.helmetInstances.get().map((function(e){var t=p({},e.props);return delete t.context,t})),{baseTag:j(["href"],e),bodyAttributes:_("bodyAttributes",e),defer:S(e,"defer"),encode:S(e,"encodeSpecialCharacters"),htmlAttributes:_("htmlAttributes",e),linkTags:T(g.LINK,["rel","href"],e),metaTags:T(g.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:T(g.NOSCRIPT,["innerHTML"],e),onChangeClientState:C(e),scriptTags:T(g.SCRIPT,["src","innerHTML"],e),styleTags:T(g.STYLE,["cssText"],e),title:E(e),titleAttributes:_("titleAttributes",e),prioritizeSeoTags:N(e,"prioritizeSeoTags")});Z.canUseDOM?(t=o,Q&&cancelAnimationFrame(Q),t.defer?Q=requestAnimationFrame((function(){V(t,(function(){Q=null}))})):(V(t),Q=null)):z&&(a=z(o)),r(a)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);K.propTypes={context:q.isRequired},K.displayName="HelmetDispatcher";var Y=["children"],J=["children"],X=function(e){function t(){return e.apply(this,arguments)||this}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!l()(L(this.props,"helmetData"),L(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case g.SCRIPT:case g.NOSCRIPT:return{innerHTML:t};case g.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return p({},r,((t={})[n.type]=[].concat(r[n.type]||[],[p({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case g.TITLE:return p({},a,((t={})[r.type]=i,t.titleAttributes=p({},o),t));case g.BODY:return p({},a,{bodyAttributes:p({},o)});case g.HTML:return p({},a,{htmlAttributes:p({},o)});default:return p({},a,((n={})[r.type]=p({},o),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=p({},t);return Object.keys(e).forEach((function(t){var r;n=p({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return u()(w.some((function(t){return e.type===t})),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),u()(!t||"string"==typeof t||Array.isArray(t)&&!t.some((function(e){return"string"!=typeof e})),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,a={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,o=r.children,i=h(r,Y),l=Object.keys(i).reduce((function(e,t){return e[x[t]||t]=i[t],e}),{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,o),s){case g.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:l,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:o})}}})),this.mapArrayTypeChildrenToProps(a,t)},n.render=function(){var e=this.props,t=e.children,n=h(e,J),a=p({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof $||(o=new $(o.context,o.instances)),o?r.createElement(K,p({},a,{context:o.value,helmetData:void 0})):r.createElement(U.Consumer,null,(function(e){return r.createElement(K,p({},a,{context:e}))}))},t}(r.Component);X.propTypes={base:o().object,bodyAttributes:o().object,children:o().oneOfType([o().arrayOf(o().node),o().node]),defaultTitle:o().string,defer:o().bool,encodeSpecialCharacters:o().bool,htmlAttributes:o().object,link:o().arrayOf(o().object),meta:o().arrayOf(o().object),noscript:o().arrayOf(o().object),onChangeClientState:o().func,script:o().arrayOf(o().object),style:o().arrayOf(o().object),title:o().string,titleAttributes:o().object,titleTemplate:o().string,prioritizeSeoTags:o().bool,helmetData:o().object},X.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},X.displayName="Helmet"},8702:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,a=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,p=n?Symbol.for("react.forward_ref"):60112,f=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,h=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,y=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,v=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case d:case o:case l:case i:case f:return e;default:switch(e=e&&e.$$typeof){case u:case p:case g:case h:case s:return e;default:return t}}case a:return t}}}function x(e){return k(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=u,t.ContextProvider=s,t.Element=r,t.ForwardRef=p,t.Fragment=o,t.Lazy=g,t.Memo=h,t.Portal=a,t.Profiler=l,t.StrictMode=i,t.Suspense=f,t.isAsyncMode=function(e){return x(e)||k(e)===c},t.isConcurrentMode=x,t.isContextConsumer=function(e){return k(e)===u},t.isContextProvider=function(e){return k(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===p},t.isFragment=function(e){return k(e)===o},t.isLazy=function(e){return k(e)===g},t.isMemo=function(e){return k(e)===h},t.isPortal=function(e){return k(e)===a},t.isProfiler=function(e){return k(e)===l},t.isStrictMode=function(e){return k(e)===i},t.isSuspense=function(e){return k(e)===f},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===l||e===i||e===f||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===h||e.$$typeof===s||e.$$typeof===u||e.$$typeof===p||e.$$typeof===b||e.$$typeof===v||e.$$typeof===w||e.$$typeof===y)},t.typeOf=k},9185:(e,t,n)=>{"use strict";e.exports=n(8702)},1237:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}var l=n(7378),s=n(3615),u=[],c=[];function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then((function(e){return n.loading=!1,n.loaded=e,e})).catch((function(e){throw n.loading=!1,n.error=e,e})),n}function p(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(r){var a=d(e[r]);a.loading?t.loading=!0:(t.loaded[r]=a.loaded,t.error=a.error),n.push(a.promise),a.promise.then((function(e){t.loaded[r]=e})).catch((function(e){t.error=e}))}))}catch(r){t.error=r}return t.promise=Promise.all(n).then((function(e){return t.loading=!1,e})).catch((function(e){throw t.loading=!1,e})),t}function f(e,t){return l.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function m(e,t){var d,p;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var m=i({loader:null,loading:null,delay:200,timeout:null,render:f,webpack:null,modules:null},t),h=null;function g(){return h||(h=e(m.loader)),h.promise}return u.push(g),"function"==typeof m.webpack&&c.push((function(){if((0,m.webpack)().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return g()})),p=d=function(t){function n(n){var r;return o(a(a(r=t.call(this,n)||this)),"retry",(function(){r.setState({error:null,loading:!0,timedOut:!1}),h=e(m.loader),r._loadModule()})),g(),r.state={error:h.error,pastDelay:!1,timedOut:!1,loading:h.loading,loaded:h.loaded},r}r(n,t),n.preload=function(){return g()};var i=n.prototype;return i.UNSAFE_componentWillMount=function(){this._loadModule()},i.componentDidMount=function(){this._mounted=!0},i._loadModule=function(){var e=this;if(this.context.loadable&&Array.isArray(m.modules)&&m.modules.forEach((function(t){e.context.loadable.report(t)})),h.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof m.delay&&(0===m.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),m.delay)),"number"==typeof m.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),m.timeout));var n=function(){t({error:h.error,loaded:h.loaded,loading:h.loading}),e._clearTimeouts()};h.promise.then((function(){return n(),null})).catch((function(e){return n(),null}))}},i.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},i._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},i.render=function(){return this.state.loading||this.state.error?l.createElement(m.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?m.render(this.state.loaded,this.props):null},n}(l.Component),o(d,"contextTypes",{loadable:s.shape({report:s.func.isRequired})}),p}function h(e){return m(d,e)}h.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return m(p,e)};var g=function(e){function t(){return e.apply(this,arguments)||this}r(t,e);var n=t.prototype;return n.getChildContext=function(){return{loadable:{report:this.props.report}}},n.render=function(){return l.Children.only(this.props.children)},t}(l.Component);function y(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return y(e)}))}o(g,"propTypes",{report:s.func.isRequired}),o(g,"childContextTypes",{loadable:s.shape({report:s.func.isRequired}).isRequired}),h.Capture=g,h.preloadAll=function(){return new Promise((function(e,t){y(u).then(e,t)}))},h.preloadReady=function(){return new Promise((function(e,t){y(c).then(e,e)}))},e.exports=h},5473:(e,t,n)=>{"use strict";n.d(t,{H:()=>l,f:()=>i});var r=n(3620),a=n(2685),o=n(7378);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var a=e.path?(0,r.LX)(t,e):n.length?n[n.length-1].match:r.F0.computeRootMatch(t);return a&&(n.push({route:e,match:a}),e.routes&&i(e.routes,t,n)),a})),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?o.createElement(r.rs,n,e.map((function(e,n){return o.createElement(r.AW,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,a.Z)({},n,{},t,{route:e})):o.createElement(e.component,(0,a.Z)({},n,t,{route:e}))}})}))):null}},4289:(e,t,n)=>{"use strict";n.d(t,{OL:()=>v,VK:()=>c,rU:()=>g});var r=n(3620),a=n(4401),o=n(7378),i=n(5036),l=n(2685),s=n(1244),u=n(2215),c=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.lX)(t.props),t}return(0,a.Z)(t,e),t.prototype.render=function(){return o.createElement(r.F0,{history:this.history,children:this.props.children})},t}(o.Component);o.Component;var d=function(e,t){return"function"==typeof e?e(t):e},p=function(e,t){return"string"==typeof e?(0,i.ob)(e,null,null,t):e},f=function(e){return e},m=o.forwardRef;void 0===m&&(m=f);var h=m((function(e,t){var n=e.innerRef,r=e.navigate,a=e.onClick,i=(0,s.Z)(e,["innerRef","navigate","onClick"]),u=i.target,c=(0,l.Z)({},i,{onClick:function(e){try{a&&a(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||u&&"_self"!==u||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return c.ref=f!==m&&t||n,o.createElement("a",c)}));var g=m((function(e,t){var n=e.component,a=void 0===n?h:n,c=e.replace,g=e.to,y=e.innerRef,b=(0,s.Z)(e,["component","replace","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=e.history,r=p(d(g,e.location),e.location),s=r?n.createHref(r):"",h=(0,l.Z)({},b,{href:s,navigate:function(){var t=d(g,e.location),r=(0,i.Ep)(e.location)===(0,i.Ep)(p(t));(c||r?n.replace:n.push)(t)}});return f!==m?h.ref=t||y:h.innerRef=y,o.createElement(a,h)}))})),y=function(e){return e},b=o.forwardRef;void 0===b&&(b=y);var v=b((function(e,t){var n=e["aria-current"],a=void 0===n?"page":n,i=e.activeClassName,c=void 0===i?"active":i,f=e.activeStyle,m=e.className,h=e.exact,v=e.isActive,w=e.location,k=e.sensitive,x=e.strict,S=e.style,E=e.to,C=e.innerRef,_=(0,s.Z)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=w||e.location,i=p(d(E,n),n),s=i.pathname,j=s&&s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),T=j?(0,r.LX)(n.pathname,{path:j,exact:h,sensitive:k,strict:x}):null,N=!!(v?v(T,n):T),R="function"==typeof m?m(N):m,A="function"==typeof S?S(N):S;N&&(R=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(R,c),A=(0,l.Z)({},A,f));var L=(0,l.Z)({"aria-current":N&&a||null,className:R,style:A,to:i},_);return y!==b?L.ref=t||C:L.innerRef=C,o.createElement(g,L)}))}))},3620:(e,t,n)=>{"use strict";n.d(t,{AW:()=>E,F0:()=>v,LX:()=>S,TH:()=>P,k6:()=>L,rs:()=>R,s6:()=>b});var r=n(4401),a=n(7378),o=n(3615),i=n.n(o),l=n(5036),s=n(2215),u=n(2685),c=n(4039),d=n.n(c),p=(n(9185),n(1244)),f=(n(5839),1073741823),m="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var h=a.createContext||function(e,t){var n,o,l="__create-react-context-"+function(){var e="__global_unique_id__";return m[e]=(m[e]||0)+1}()+"__",s=function(e){function n(){for(var t,n,r,a=arguments.length,o=new Array(a),i=0;i<a;i++)o[i]=arguments[i];return(t=e.call.apply(e,[this].concat(o))||this).emitter=(n=t.props.value,r=[],{on:function(e){r.push(e)},off:function(e){r=r.filter((function(t){return t!==e}))},get:function(){return n},set:function(e,t){n=e,r.forEach((function(e){return e(n,t)}))}}),t}(0,r.Z)(n,e);var a=n.prototype;return a.getChildContext=function(){var e;return(e={})[l]=this.emitter,e},a.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,a=e.value;((o=r)===(i=a)?0!==o||1/o==1/i:o!=o&&i!=i)?n=0:(n="function"==typeof t?t(r,a):f,0!==(n|=0)&&this.emitter.set(e.value,n))}var o,i},a.render=function(){return this.props.children},n}(a.Component);s.childContextTypes=((n={})[l]=i().object.isRequired,n);var u=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){0!=((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}(0,r.Z)(n,t);var a=n.prototype;return a.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?f:t},a.componentDidMount=function(){this.context[l]&&this.context[l].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?f:e},a.componentWillUnmount=function(){this.context[l]&&this.context[l].off(this.onUpdate)},a.getValue=function(){return this.context[l]?this.context[l].get():e},a.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(a.Component);return u.contextTypes=((o={})[l]=i().object,o),{Provider:s,Consumer:u}},g=function(e){var t=h();return t.displayName=e,t},y=g("Router-History"),b=g("Router"),v=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._pendingLocation=e}))),n}(0,r.Z)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen((function(t){e._isMounted&&e.setState({location:t})}))),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return a.createElement(b.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},a.createElement(y.Provider,{children:this.props.children||null,value:this.props.history}))},t}(a.Component);a.Component;a.Component;var w={},k=1e4,x=0;function S(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,a=n.exact,o=void 0!==a&&a,i=n.strict,l=void 0!==i&&i,s=n.sensitive,u=void 0!==s&&s;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=w[n]||(w[n]={});if(r[e])return r[e];var a=[],o={regexp:d()(e,a,t),keys:a};return x<k&&(r[e]=o,x++),o}(n,{end:o,strict:l,sensitive:u}),a=r.regexp,i=r.keys,s=a.exec(e);if(!s)return null;var c=s[0],p=s.slice(1),f=e===c;return o&&!f?null:{path:n,url:"/"===n&&""===c?"/":c,isExact:f,params:i.reduce((function(e,t,n){return e[t.name]=p[n],e}),{})}}),null)}var E=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,(function(t){t||(0,s.Z)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?S(n.pathname,e.props):t.match,o=(0,u.Z)({},t,{location:n,match:r}),i=e.props,l=i.children,c=i.component,d=i.render;return Array.isArray(l)&&function(e){return 0===a.Children.count(e)}(l)&&(l=null),a.createElement(b.Provider,{value:o},o.match?l?"function"==typeof l?l(o):l:c?a.createElement(c,o):d?d(o):null:"function"==typeof l?l(o):null)}))},t}(a.Component);function C(e){return"/"===e.charAt(0)?e:"/"+e}function _(e,t){if(!e)return t;var n=C(e);return 0!==t.pathname.indexOf(n)?t:(0,u.Z)({},t,{pathname:t.pathname.substr(n.length)})}function j(e){return"string"==typeof e?e:(0,l.Ep)(e)}function T(e){return function(){(0,s.Z)(!1)}}function N(){}a.Component;var R=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,(function(t){t||(0,s.Z)(!1);var n,r,o=e.props.location||t.location;return a.Children.forEach(e.props.children,(function(e){if(null==r&&a.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?S(o.pathname,(0,u.Z)({},e.props,{path:i})):t.match}})),r?a.cloneElement(n,{location:o,computedMatch:r}):null}))},t}(a.Component);var A=a.useContext;function L(){return A(y)}function P(){return A(b).location}},4039:(e,t,n)=>{var r=n(5182);e.exports=f,e.exports.parse=o,e.exports.compile=function(e,t){return l(o(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=p;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,l="",c=t&&t.delimiter||"/";null!=(n=a.exec(e));){var d=n[0],p=n[1],f=n.index;if(l+=e.slice(i,f),i=f+d.length,p)l+=p[1];else{var m=e[i],h=n[2],g=n[3],y=n[4],b=n[5],v=n[6],w=n[7];l&&(r.push(l),l="");var k=null!=h&&null!=m&&m!==h,x="+"===v||"*"===v,S="?"===v||"*"===v,E=n[2]||c,C=y||b;r.push({name:g||o++,prefix:h||"",delimiter:E,optional:S,repeat:x,partial:k,asterisk:!!w,pattern:C?u(C):w?".*":"[^"+s(E)+"]+?"})}}return i<e.length&&(l+=e.substr(i)),l&&r.push(l),r}function i(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function l(e,t){for(var n=new Array(e.length),a=0;a<e.length;a++)"object"==typeof e[a]&&(n[a]=new RegExp("^(?:"+e[a].pattern+")$",d(t)));return function(t,a){for(var o="",l=t||{},s=(a||{}).pretty?i:encodeURIComponent,u=0;u<e.length;u++){var c=e[u];if("string"!=typeof c){var d,p=l[c.name];if(null==p){if(c.optional){c.partial&&(o+=c.prefix);continue}throw new TypeError('Expected "'+c.name+'" to be defined')}if(r(p)){if(!c.repeat)throw new TypeError('Expected "'+c.name+'" to not repeat, but received `'+JSON.stringify(p)+"`");if(0===p.length){if(c.optional)continue;throw new TypeError('Expected "'+c.name+'" to not be empty')}for(var f=0;f<p.length;f++){if(d=s(p[f]),!n[u].test(d))throw new TypeError('Expected all "'+c.name+'" to match "'+c.pattern+'", but received `'+JSON.stringify(d)+"`");o+=(0===f?c.prefix:c.delimiter)+d}}else{if(d=c.asterisk?encodeURI(p).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):s(p),!n[u].test(d))throw new TypeError('Expected "'+c.name+'" to match "'+c.pattern+'", but received "'+d+'"');o+=c.prefix+d}}else o+=c}return o}}function s(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function u(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function c(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function p(e,t,n){r(t)||(n=t||n,t=[]);for(var a=(n=n||{}).strict,o=!1!==n.end,i="",l=0;l<e.length;l++){var u=e[l];if("string"==typeof u)i+=s(u);else{var p=s(u.prefix),f="(?:"+u.pattern+")";t.push(u),u.repeat&&(f+="(?:"+p+f+")*"),i+=f=u.optional?u.partial?p+"("+f+")?":"(?:"+p+"("+f+"))?":p+"("+f+")"}}var m=s(n.delimiter||"/"),h=i.slice(-m.length)===m;return a||(i=(h?i.slice(0,-m.length):i)+"(?:"+m+"(?=$))?"),i+=o?"$":a&&h?"":"(?="+m+"|$)",c(new RegExp("^"+i,d(n)),t)}function f(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return c(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],a=0;a<e.length;a++)r.push(f(e[a],t,n).source);return c(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return p(o(e,n),t,n)}(e,t,n)}},1426:(e,t,n)=>{"use strict";var r=n(7378),a=Symbol.for("react.element"),o=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,l=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function u(e,t,n){var r,o={},u=null,c=null;for(r in void 0!==n&&(u=""+n),void 0!==t.key&&(u=""+t.key),void 0!==t.ref&&(c=t.ref),t)i.call(t,r)&&!s.hasOwnProperty(r)&&(o[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===o[r]&&(o[r]=t[r]);return{$$typeof:a,type:e,key:u,ref:c,props:o,_owner:l.current}}t.Fragment=o,t.jsx=u,t.jsxs=u},1535:(e,t)=>{"use strict";var n=Symbol.for("react.element"),r=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),l=Symbol.for("react.provider"),s=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),f=Symbol.iterator;var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},h=Object.assign,g={};function y(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||m}function b(){}function v(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||m}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=y.prototype;var w=v.prototype=new b;w.constructor=v,h(w,y.prototype),w.isPureReactComponent=!0;var k=Array.isArray,x=Object.prototype.hasOwnProperty,S={current:null},E={key:!0,ref:!0,__self:!0,__source:!0};function C(e,t,r){var a,o={},i=null,l=null;if(null!=t)for(a in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(i=""+t.key),t)x.call(t,a)&&!E.hasOwnProperty(a)&&(o[a]=t[a]);var s=arguments.length-2;if(1===s)o.children=r;else if(1<s){for(var u=Array(s),c=0;c<s;c++)u[c]=arguments[c+2];o.children=u}if(e&&e.defaultProps)for(a in s=e.defaultProps)void 0===o[a]&&(o[a]=s[a]);return{$$typeof:n,type:e,key:i,ref:l,props:o,_owner:S.current}}function _(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}var j=/\/+/g;function T(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function N(e,t,a,o,i){var l=typeof e;"undefined"!==l&&"boolean"!==l||(e=null);var s=!1;if(null===e)s=!0;else switch(l){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case n:case r:s=!0}}if(s)return i=i(s=e),e=""===o?"."+T(s,0):o,k(i)?(a="",null!=e&&(a=e.replace(j,"$&/")+"/"),N(i,t,a,"",(function(e){return e}))):null!=i&&(_(i)&&(i=function(e,t){return{$$typeof:n,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,a+(!i.key||s&&s.key===i.key?"":(""+i.key).replace(j,"$&/")+"/")+e)),t.push(i)),1;if(s=0,o=""===o?".":o+":",k(e))for(var u=0;u<e.length;u++){var c=o+T(l=e[u],u);s+=N(l,t,a,c,i)}else if(c=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=f&&e[f]||e["@@iterator"])?e:null}(e),"function"==typeof c)for(e=c.call(e),u=0;!(l=e.next()).done;)s+=N(l=l.value,t,a,c=o+T(l,u++),i);else if("object"===l)throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return s}function R(e,t,n){if(null==e)return e;var r=[],a=0;return N(e,r,"","",(function(e){return t.call(n,e,a++)})),r}function A(e){if(-1===e._status){var t=e._result;(t=t()).then((function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)}),(function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)})),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var L={current:null},P={transition:null},O={ReactCurrentDispatcher:L,ReactCurrentBatchConfig:P,ReactCurrentOwner:S};t.Children={map:R,forEach:function(e,t,n){R(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return R(e,(function(){t++})),t},toArray:function(e){return R(e,(function(e){return e}))||[]},only:function(e){if(!_(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},t.Component=y,t.Fragment=a,t.Profiler=i,t.PureComponent=v,t.StrictMode=o,t.Suspense=c,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=O,t.cloneElement=function(e,t,r){if(null==e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var a=h({},e.props),o=e.key,i=e.ref,l=e._owner;if(null!=t){if(void 0!==t.ref&&(i=t.ref,l=S.current),void 0!==t.key&&(o=""+t.key),e.type&&e.type.defaultProps)var s=e.type.defaultProps;for(u in t)x.call(t,u)&&!E.hasOwnProperty(u)&&(a[u]=void 0===t[u]&&void 0!==s?s[u]:t[u])}var u=arguments.length-2;if(1===u)a.children=r;else if(1<u){s=Array(u);for(var c=0;c<u;c++)s[c]=arguments[c+2];a.children=s}return{$$typeof:n,type:e.type,key:o,ref:i,props:a,_owner:l}},t.createContext=function(e){return(e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:l,_context:e},e.Consumer=e},t.createElement=C,t.createFactory=function(e){var t=C.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:u,render:e}},t.isValidElement=_,t.lazy=function(e){return{$$typeof:p,_payload:{_status:-1,_result:e},_init:A}},t.memo=function(e,t){return{$$typeof:d,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=P.transition;P.transition={};try{e()}finally{P.transition=t}},t.unstable_act=function(){throw Error("act(...) is not supported in production builds of React.")},t.useCallback=function(e,t){return L.current.useCallback(e,t)},t.useContext=function(e){return L.current.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e){return L.current.useDeferredValue(e)},t.useEffect=function(e,t){return L.current.useEffect(e,t)},t.useId=function(){return L.current.useId()},t.useImperativeHandle=function(e,t,n){return L.current.useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return L.current.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return L.current.useLayoutEffect(e,t)},t.useMemo=function(e,t){return L.current.useMemo(e,t)},t.useReducer=function(e,t,n){return L.current.useReducer(e,t,n)},t.useRef=function(e){return L.current.useRef(e)},t.useState=function(e){return L.current.useState(e)},t.useSyncExternalStore=function(e,t,n){return L.current.useSyncExternalStore(e,t,n)},t.useTransition=function(){return L.current.useTransition()},t.version="18.2.0"},7378:(e,t,n)=>{"use strict";e.exports=n(1535)},4246:(e,t,n)=>{"use strict";e.exports=n(1426)},4445:e=>{e.exports=function(e,t,n,r){var a=n?n.call(r,e,t):void 0;if(void 0!==a)return!!a;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s<o.length;s++){var u=o[s];if(!l(u))return!1;var c=e[u],d=t[u];if(!1===(a=n?n.call(r,c,d,u):void 0)||void 0===a&&c!==d)return!1}return!0}},6809:(e,t,n)=>{"use strict";n.d(t,{default:()=>r});const r={title:"NestJS CLS",tagline:"A continuation-local storage (async context) module compatible with NestJS's dependency injection.",favicon:"img/favicon.ico",url:"https://papooch.github.io",baseUrl:"/nestjs-cls/",trailingSlash:!1,organizationName:"papooch",projectName:"nestjs-cls",deploymentBranch:"gh-pages",onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",i18n:{defaultLocale:"en",locales:["en"],path:"i18n",localeConfigs:{}},plugins:[["/home/ondrej/repos/nestjs-cls/node_modules/docusaurus-lunr-search/src/index.js",{indexBaseUrl:!0}]],presets:[["classic",{docs:{routeBasePath:"/",sidebarCollapsed:!0,sidebarPath:"/home/ondrej/repos/nestjs-cls/docs/sidebars.js",editUrl:"https://github.com/Papooch/nestjs-cls/tree/main/docs/"},theme:{customCss:"/home/ondrej/repos/nestjs-cls/docs/src/css/custom.css"}}]],themeConfig:{metadata:[{name:"keywords",content:"async, context, request, scope, cls, asynclocalstorage, nestjs, proxy"}],navbar:{title:"NestJS CLS",logo:{alt:"NestJS CLS Logo",src:"img/logo.png"},items:[{type:"docSidebar",sidebarId:"documentationSidebar",position:"left",label:"Documentation"},{href:"https://github.com/papooch/nestjs-cls",label:"GitHub",position:"right"},{href:"https://www.npmjs.com/package/nestjs-cls",label:"npm",position:"right"}],hideOnScroll:!1},footer:{style:"dark",links:[{title:"Community",items:[{label:"NestJS Discord",href:"https://discord.gg/nestjs"}]}],copyright:"Copyright \xa9 2024 Ond\u0159ej \u0160vanda (Papooch). Built with Docusaurus."},prism:{theme:{plain:{color:"#000000",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(0, 128, 0)"}},{types:["builtin"],style:{color:"rgb(0, 112, 193)"}},{types:["number","variable","inserted"],style:{color:"rgb(9, 134, 88)"}},{types:["operator"],style:{color:"rgb(0, 0, 0)"}},{types:["constant","char"],style:{color:"rgb(129, 31, 63)"}},{types:["tag"],style:{color:"rgb(128, 0, 0)"}},{types:["attr-name"],style:{color:"rgb(255, 0, 0)"}},{types:["deleted","string"],style:{color:"rgb(163, 21, 21)"}},{types:["changed","punctuation"],style:{color:"rgb(4, 81, 165)"}},{types:["function","keyword"],style:{color:"rgb(0, 0, 255)"}},{types:["class-name"],style:{color:"rgb(38, 127, 153)"}}]},darkTheme:{plain:{color:"#9CDCFE",backgroundColor:"#1E1E1E"},styles:[{types:["prolog"],style:{color:"rgb(0, 0, 128)"}},{types:["comment"],style:{color:"rgb(106, 153, 85)"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"rgb(86, 156, 214)"}},{types:["number","inserted"],style:{color:"rgb(181, 206, 168)"}},{types:["constant"],style:{color:"rgb(100, 102, 149)"}},{types:["attr-name","variable"],style:{color:"rgb(156, 220, 254)"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"rgb(206, 145, 120)"}},{types:["selector"],style:{color:"rgb(215, 186, 125)"}},{types:["tag"],style:{color:"rgb(78, 201, 176)"}},{types:["tag"],languages:["markup"],style:{color:"rgb(86, 156, 214)"}},{types:["punctuation","operator"],style:{color:"rgb(212, 212, 212)"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"rgb(220, 220, 170)"}},{types:["class-name"],style:{color:"rgb(78, 201, 176)"}},{types:["char"],style:{color:"rgb(209, 105, 105)"}}]},additionalLanguages:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},colorMode:{defaultMode:"dark",respectPrefersColorScheme:!0,disableSwitch:!1},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},baseUrlIssueBanner:!0,onBrokenAnchors:"warn",onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},themes:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1,markdown:{format:"mdx",mermaid:!1,mdx1Compat:{comments:!0,admonitions:!0,headingIds:!0}}}},2685:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(this,arguments)}n.d(t,{Z:()=>r})},4401:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function a(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{Z:()=>a})},1244:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}n.d(t,{Z:()=>r})},624:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n)}else for(n in e)e[n]&&(a&&(a+=" "),a+=n);return a}n.d(t,{Z:()=>a});const a=function(){for(var e,t,n=0,a="",o=arguments.length;n<o;n++)(e=arguments[n])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}},6101:(e,t,n)=>{"use strict";n.d(t,{p1:()=>j,y$:()=>ee});var r,a,o,i,l,s,u,c=n(7378),d=n(624),p=Object.create,f=Object.defineProperty,m=Object.defineProperties,h=Object.getOwnPropertyDescriptor,g=Object.getOwnPropertyDescriptors,y=Object.getOwnPropertyNames,b=Object.getOwnPropertySymbols,v=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty,k=Object.prototype.propertyIsEnumerable,x=(e,t,n)=>t in e?f(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,S=(e,t)=>{for(var n in t||(t={}))w.call(t,n)&&x(e,n,t[n]);if(b)for(var n of b(t))k.call(t,n)&&x(e,n,t[n]);return e},E=(e,t)=>m(e,g(t)),C=(e,t)=>{var n={};for(var r in e)w.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&b)for(var r of b(e))t.indexOf(r)<0&&k.call(e,r)&&(n[r]=e[r]);return n},_=(r={"../../node_modules/.pnpm/prismjs@1.29.0_patch_hash=vrxx3pzkik6jpmgpayxfjunetu/node_modules/prismjs/prism.js"(e,t){var n=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var a,o;switch(n=n||{},r.util.type(t)){case"Object":if(o=r.util.objId(t),n[o])return n[o];for(var i in a={},n[o]=a,t)t.hasOwnProperty(i)&&(a[i]=e(t[i],n));return a;case"Array":return o=r.util.objId(t),n[o]?n[o]:(a=[],n[o]=a,t.forEach((function(t,r){a[r]=e(t,n)})),a);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var a=e.classList;if(a.contains(t))return!0;if(a.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var a in t)n[a]=t[a];return n},insertBefore:function(e,t,n,a){var o=(a=a||r.languages)[e],i={};for(var l in o)if(o.hasOwnProperty(l)){if(l==t)for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);n.hasOwnProperty(l)||(i[l]=o[l])}var u=a[e];return a[e]=i,r.languages.DFS(r.languages,(function(t,n){n===u&&t!=e&&(this[t]=i)})),i},DFS:function e(t,n,a,o){o=o||{};var i=r.util.objId;for(var l in t)if(t.hasOwnProperty(l)){n.call(t,l,t[l],a||l);var s=t[l],u=r.util.type(s);"Object"!==u||o[i(s)]?"Array"!==u||o[i(s)]||(o[i(s)]=!0,e(s,n,l,o)):(o[i(s)]=!0,e(s,n,null,o))}}},plugins:{},highlight:function(e,t,n){var o={code:e,grammar:t,language:n};if(r.hooks.run("before-tokenize",o),!o.grammar)throw new Error('The language "'+o.language+'" has no grammar.');return o.tokens=r.tokenize(o.code,o.grammar),r.hooks.run("after-tokenize",o),a.stringify(r.util.encode(o.tokens),o.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var a=new l;return s(a,a.head,e),i(e,a,t,a.head,0),function(e){for(var t=[],n=e.head.next;n!==e.tail;)t.push(n.value),n=n.next;return t}(a)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var a,o=0;a=n[o++];)a(t)}},Token:a};function a(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function o(e,t,n,r){e.lastIndex=t;var a=e.exec(n);if(a&&r&&a[1]){var o=a[1].length;a.index+=o,a[0]=a[0].slice(o)}return a}function i(e,t,n,l,c,d){for(var p in n)if(n.hasOwnProperty(p)&&n[p]){var f=n[p];f=Array.isArray(f)?f:[f];for(var m=0;m<f.length;++m){if(d&&d.cause==p+","+m)return;var h=f[m],g=h.inside,y=!!h.lookbehind,b=!!h.greedy,v=h.alias;if(b&&!h.pattern.global){var w=h.pattern.toString().match(/[imsuy]*$/)[0];h.pattern=RegExp(h.pattern.source,w+"g")}for(var k=h.pattern||h,x=l.next,S=c;x!==t.tail&&!(d&&S>=d.reach);S+=x.value.length,x=x.next){var E=x.value;if(t.length>e.length)return;if(!(E instanceof a)){var C,_=1;if(b){if(!(C=o(k,S,e,y))||C.index>=e.length)break;var j=C.index,T=C.index+C[0].length,N=S;for(N+=x.value.length;j>=N;)N+=(x=x.next).value.length;if(S=N-=x.value.length,x.value instanceof a)continue;for(var R=x;R!==t.tail&&(N<T||"string"==typeof R.value);R=R.next)_++,N+=R.value.length;_--,E=e.slice(S,N),C.index-=S}else if(!(C=o(k,0,E,y)))continue;j=C.index;var A=C[0],L=E.slice(0,j),P=E.slice(j+A.length),O=S+E.length;d&&O>d.reach&&(d.reach=O);var I=x.prev;if(L&&(I=s(t,I,L),S+=L.length),u(t,I,_),x=s(t,I,new a(p,g?r.tokenize(A,g):A,v,A)),P&&s(t,x,P),_>1){var D={cause:p+","+m,reach:O};i(e,t,n,x.prev,S,D),d&&D.reach>d.reach&&(d.reach=D.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function u(e,t,n){for(var r=t.next,a=0;a<n&&r!==e.tail;a++)r=r.next;t.next=r,r.prev=t,e.length-=a}return a.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var a="";return t.forEach((function(t){a+=e(t,n)})),a}var o={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},i=t.alias;i&&(Array.isArray(i)?Array.prototype.push.apply(o.classes,i):o.classes.push(i)),r.hooks.run("wrap",o);var l="";for(var s in o.attributes)l+=" "+s+'="'+(o.attributes[s]||"").replace(/"/g,""")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+l+">"+o.content+"</"+o.tag+">"},r}();t.exports=n,n.default=n}},function(){return a||(0,r[y(r)[0]])((a={exports:{}}).exports,a),a.exports}),j=((e,t,n)=>(n=null!=e?p(v(e)):{},((e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of y(t))w.call(e,a)||a===n||f(e,a,{get:()=>t[a],enumerable:!(r=h(t,a))||r.enumerable});return e})(!t&&e&&e.__esModule?n:f(n,"default",{value:e,enumerable:!0}),e)))(_());j.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},j.languages.markup.tag.inside["attr-value"].inside.entity=j.languages.markup.entity,j.languages.markup.doctype.inside["internal-subset"].inside=j.languages.markup,j.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(j.languages.markup.tag,"addInlined",{value:function(e,t){var n;(t=((n=((n={})["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:j.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i,{"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}}))["language-"+t]={pattern:/[\s\S]+/,inside:j.languages[t]},{}))[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:n},j.languages.insertBefore("markup","cdata",t)}}),Object.defineProperty(j.languages.markup.tag,"addAttribute",{value:function(e,t){j.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:j.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),j.languages.html=j.languages.markup,j.languages.mathml=j.languages.markup,j.languages.svg=j.languages.markup,j.languages.xml=j.languages.extend("markup",{}),j.languages.ssml=j.languages.xml,j.languages.atom=j.languages.xml,j.languages.rss=j.languages.xml,o=j,i={pattern:/\\[\\(){}[\]^$+*?|.]/,alias:"escape"},s="(?:[^\\\\-]|"+(l=/\\(?:x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]+\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/).source+")",s=RegExp(s+"-"+s),u={pattern:/(<|')[^<>']+(?=[>']$)/,lookbehind:!0,alias:"variable"},o.languages.regex={"char-class":{pattern:/((?:^|[^\\])(?:\\\\)*)\[(?:[^\\\]]|\\[\s\S])*\]/,lookbehind:!0,inside:{"char-class-negation":{pattern:/(^\[)\^/,lookbehind:!0,alias:"operator"},"char-class-punctuation":{pattern:/^\[|\]$/,alias:"punctuation"},range:{pattern:s,inside:{escape:l,"range-punctuation":{pattern:/-/,alias:"operator"}}},"special-escape":i,"char-set":{pattern:/\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},escape:l}},"special-escape":i,"char-set":{pattern:/\.|\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},backreference:[{pattern:/\\(?![123][0-7]{2})[1-9]/,alias:"keyword"},{pattern:/\\k<[^<>']+>/,alias:"keyword",inside:{"group-name":u}}],anchor:{pattern:/[$^]|\\[ABbGZz]/,alias:"function"},escape:l,group:[{pattern:/\((?:\?(?:<[^<>']+>|'[^<>']+'|[>:]|<?[=!]|[idmnsuxU]+(?:-[idmnsuxU]+)?:?))?/,alias:"punctuation",inside:{"group-name":u}},{pattern:/\)/,alias:"punctuation"}],quantifier:{pattern:/(?:[+*?]|\{\d+(?:,\d*)?\})[?+]?/,alias:"number"},alternation:{pattern:/\|/,alias:"keyword"}},j.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},j.languages.javascript=j.languages.extend("clike",{"class-name":[j.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),j.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,j.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:j.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:j.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:j.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:j.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:j.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),j.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:j.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),j.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),j.languages.markup&&(j.languages.markup.tag.addInlined("script","javascript"),j.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),j.languages.js=j.languages.javascript,j.languages.actionscript=j.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/}),j.languages.actionscript["class-name"].alias="function",delete j.languages.actionscript.parameter,delete j.languages.actionscript["literal-property"],j.languages.markup&&j.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:j.languages.markup}}),function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(j),function(e){var t=e.languages.javadoclike={parameter:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*@(?:arg|arguments|param)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(t,"addSupport",{value:function(t,n){(t="string"==typeof t?[t]:t).forEach((function(t){var r=function(e){e.inside||(e.inside={}),e.inside.rest=n},a="doc-comment";if(o=e.languages[t]){var o,i=o[a];if((i=i||(o=e.languages.insertBefore(t,"comment",{"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,lookbehind:!0,alias:"comment"}}))[a])instanceof RegExp&&(i=o[a]={pattern:i}),Array.isArray(i))for(var l=0,s=i.length;l<s;l++)i[l]instanceof RegExp&&(i[l]={pattern:i[l]}),r(i[l]);else r(i)}}))}}),t.addSupport(["java","javascript","php"],t)}(j),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;(t=(e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css,e.languages.markup))&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(j),function(e){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,n=(t=(e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+t.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[t,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}}),{pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0}),{pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0});e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|RebeccaPurple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,number:n})}(j),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<value>>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<key>>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(j),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source,i=(e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var a,o=t[n];"code"!==o.type?e(o.content):(a=o.content[1],o=o.content[3],a&&o&&"code-language"===a.type&&"code-block"===o.type&&"string"==typeof a.content&&(a=a.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),a="language-"+(a=(/[a-z][\w-]*/i.exec(a)||[""])[0].toLowerCase()),o.alias?"string"==typeof o.alias?o.alias=[o.alias,a]:o.alias.push(a):o.alias=[a]))}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,a=t.classes.length;r<a;r++){var o=t.classes[r];if(o=/language-(.+)/.exec(o)){n=o[1];break}}var u,c=e.languages[n];c?t.content=e.highlight(t.content.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;return"#"===(t=t.toLowerCase())[0]?(n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),s(n)):l[t]||e})),c,n):n&&"none"!==n&&e.plugins.autoloader&&(u="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random()),t.attributes.id=u,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(u);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))})))}})),RegExp(e.languages.markup.tag.pattern.source,"gi")),l={amp:"&",lt:"<",gt:">",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(j),j.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:j.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},j.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var a=[];if(d(["definition-mutation","punctuation"])&&"("===c(1).content){n+=2;var o=p(/^\($/,/^\)$/);if(-1===o)continue;for(;n<o;n++){var i=c(0);"variable"===i.type&&(f(i,"variable-input"),a.push(i.content))}n=o+1}if(d(["punctuation","property-query"])&&"{"===c(0).content&&(n++,f(c(0),"property-mutation"),0<a.length)){var l=p(/^\{$/,/^\}$/);if(-1!==l)for(var s=n;s<l;s++){var u=t[s];"variable"===u.type&&0<=a.indexOf(u.content)&&f(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=c(n+t);if(!r||r.type!==e[n])return}return 1}function p(e,r){for(var a=1,o=n;o<t.length;o++){var i=t[o],l=i.content;if("punctuation"===i.type&&"string"==typeof l)if(e.test(l))a++;else if(r.test(l)&&0==--a)return o}return-1}function f(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),j.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(t,n,r){return t={code:t,grammar:n,language:r},e.hooks.run("before-tokenize",t),t.tokens=e.tokenize(t.code,t.grammar),e.hooks.run("after-tokenize",t),t.tokens}function s(t,n,i){var s=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),u=0,c={},d=(s=l(s.map((function(e){if("string"==typeof e)return e;var n,r;for(e=e.content;-1!==t.indexOf((r=u++,n="___"+i.toUpperCase()+"_"+r+"___")););return c[n]=e,n})).join(""),n,i),Object.keys(c));return u=0,function t(n){for(var o=0;o<n.length;o++){if(u>=d.length)return;var i,s,p,f,m,h,g,y=n[o];"string"==typeof y||"string"==typeof y.content?(i=d[u],-1!==(g=(h="string"==typeof y?y:y.content).indexOf(i))&&(++u,s=h.substring(0,g),m=c[i],p=void 0,(f={})["interpolation-punctuation"]=a,3===(f=e.tokenize(m,f)).length&&((p=[1,1]).push.apply(p,l(f[1],e.languages.javascript,"javascript")),f.splice.apply(f,p)),p=new e.Token("interpolation",f,r.alias,m),f=h.substring(g+i.length),m=[],s&&m.push(s),m.push(p),f&&(t(h=[f]),m.push.apply(m,h)),"string"==typeof y?(n.splice.apply(n,[o,1].concat(m)),o+=m.length-1):y.content=m)):(g=y.content,Array.isArray(g)?t(g):t([g]))}}(s),new e.Token(i,s,"language-"+i,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var u={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function c(e){return"string"==typeof e?e:Array.isArray(e)?e.map(c).join(""):c(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in u&&function t(n){for(var r=0,a=n.length;r<a;r++){var o,i,l,u=n[r];"string"!=typeof u&&(o=u.content,Array.isArray(o)?"template-string"===u.type?(u=o[1],3===o.length&&"string"!=typeof u&&"embedded-code"===u.type&&(i=c(u),u=u.alias,u=Array.isArray(u)?u[0]:u,l=e.languages[u])&&(o[1]=s(i,l,u))):t(o):"string"!=typeof o&&t([o]))}}(t.tokens)}))}(j),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(j),function(e){var t=e.languages.javascript,n=/\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source,r="(@(?:arg|argument|param|property)\\s+(?:"+n+"\\s+)?)";e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp(r+/(?:(?!\s)[$\w\xA0-\uFFFF.])+(?=\s|$)/.source),lookbehind:!0,inside:{punctuation:/\./}}}),e.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(r+/\[(?:(?!\s)[$\w\xA0-\uFFFF.])+(?:=[^[\]]+)?\](?=\s|$)/.source),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF\.]+/,lookbehind:!0,inside:{punctuation:/\./}},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:t,alias:"language-javascript"},punctuation:/[=[\]]/}},"class-name":[{pattern:RegExp(/(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\s+(?:<TYPE>\s+)?)[A-Z]\w*(?:\.[A-Z]\w*)*/.source.replace(/<TYPE>/g,(function(){return n}))),lookbehind:!0,inside:{punctuation:/\./}},{pattern:RegExp("(@[a-z]+\\s+)"+n),lookbehind:!0,inside:{string:t.string,number:t.number,boolean:t.boolean,keyword:e.languages.typescript.keyword,operator:/=>|\.\.\.|[&|?:*]/,punctuation:/[.,;=<>{}()[\]]/}}],example:{pattern:/(@example\s+(?!\s))(?:[^@\s]|\s+(?!\s))+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,lookbehind:!0,inside:{code:{pattern:/^([\t ]*(?:\*\s*)?)\S.*$/m,lookbehind:!0,inside:t,alias:"language-javascript"}}}}),e.languages.javadoclike.addSupport("javascript",e.languages.jsdoc)}(j),function(e){e.languages.flow=e.languages.extend("javascript",{}),e.languages.insertBefore("flow","keyword",{type:[{pattern:/\b(?:[Bb]oolean|Function|[Nn]umber|[Ss]tring|[Ss]ymbol|any|mixed|null|void)\b/,alias:"class-name"}]}),e.languages.flow["function-variable"].pattern=/(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/i,delete e.languages.flow.parameter,e.languages.insertBefore("flow","operator",{"flow-punctuation":{pattern:/\{\||\|\}/,alias:"punctuation"}}),Array.isArray(e.languages.flow.keyword)||(e.languages.flow.keyword=[e.languages.flow.keyword]),e.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:Class|declare|opaque|type)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:Diff|Enum|Exact|Keys|ObjMap|PropertyType|Record|Shape|Subtype|Supertype|await)\b(?!\$)/,lookbehind:!0})}(j),j.languages.n4js=j.languages.extend("javascript",{keyword:/\b(?:Array|any|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/}),j.languages.insertBefore("n4js","constant",{annotation:{pattern:/@+\w+/,alias:"operator"}}),j.languages.n4jsd=j.languages.n4js,function(e){function t(e,t){return RegExp(e.replace(/<ID>/g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?<ID>/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r<n.length;r++){var a=n[r],o=e.languages.javascript[a];a=(o="RegExp"===e.util.type(o)?e.languages.javascript[a]={pattern:o}:o).inside||{};(o.inside=a)["maybe-class-name"]=/^[A-Z][\s\S]*/}}(j),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,a=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function o(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return a})),RegExp(e,t)}function i(t){for(var n=[],r=0;r<t.length;r++){var a=t[r],o=!1;"string"!=typeof a&&("tag"===a.type&&a.content[0]&&"tag"===a.content[0].type?"</"===a.content[0].content[0].content?0<n.length&&n[n.length-1].tagName===l(a.content[0].content[1])&&n.pop():"/>"!==a.content[a.content.length-1].content&&n.push({tagName:l(a.content[0].content[1]),openedBraces:0}):0<n.length&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:0<n.length&&0<n[n.length-1].openedBraces&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&0<n.length&&0===n[n.length-1].openedBraces&&(o=l(a),r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(o+=l(t[r+1]),t.splice(r+1,1)),0<r&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(o=l(t[r-1])+o,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",o,null,o)),a.content&&"string"!=typeof a.content&&i(a.content)}}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var l=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(l).join(""):""};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||i(e.tokens)}))}(j),function(e){var t=e.util.clone(e.languages.typescript);(t=(e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"],e.languages.tsx.tag)).pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+t.pattern.source+")",t.pattern.flags),t.lookbehind=!0}(j),j.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp(/(^|[^"#])/.source+"(?:"+/"(?:\\(?:\((?:[^()]|\([^()]*\))*\)|\r\n|[^(])|[^\\\r\n"])*"/.source+"|"+/"""(?:\\(?:\((?:[^()]|\([^()]*\))*\)|[^(])|[^\\"]|"(?!""))*"""/.source+")"+/(?!["#])/.source),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp(/(^|[^"#])(#+)/.source+"(?:"+/"(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|\r\n|[^#])|[^\\\r\n])*?"/.source+"|"+/"""(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|[^#])|[^\\])*?"""/.source+")\\2"),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp(/#/.source+"(?:"+/(?:elseif|if)\b/.source+"(?:[ \t]*"+/(?:![ \t]*)?(?:\b\w+\b(?:[ \t]*\((?:[^()]|\([^()]*\))*\))?|\((?:[^()]|\([^()]*\))*\))(?:[ \t]*(?:&&|\|\|))?/.source+")+|"+/(?:else|endif)\b/.source+")"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},j.languages.swift["string-literal"].forEach((function(e){e.inside.interpolation.inside=j.languages.swift})),function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"];var t={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:e.languages.kotlin}};e.languages.insertBefore("kotlin","string",{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:"multiline",inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:t},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:"singleline",inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:t},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete e.languages.kotlin.string,e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}}),e.languages.kt=e.languages.kotlin,e.languages.kts=e.languages.kotlin}(j),j.languages.c=j.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),j.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),j.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},j.languages.c.string],char:j.languages.c.char,comment:j.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:j.languages.c}}}}),j.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete j.languages.c.boolean,j.languages.objectivec=j.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete j.languages.objectivec["class-name"],j.languages.objc=j.languages.objectivec,j.languages.reason=j.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),j.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete j.languages.reason.function,function(e){for(var t=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|<self>)*\*\//.source,n=0;n<2;n++)t=t.replace(/<self>/g,(function(){return t}));t=t.replace(/<self>/g,(function(){return/[^\s\S]/.source})),e.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<<?=?|>>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(j),j.languages.go=j.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),j.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete j.languages.go["class-name"],function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(j),j.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},j.languages.python["string-interpolation"].inside.interpolation.inside.rest=j.languages.python,j.languages.py=j.languages.python;((e,t)=>{for(var n in t)f(e,n,{get:t[n],enumerable:!0})})({},{dracula:()=>T,duotoneDark:()=>N,duotoneLight:()=>R,github:()=>A,jettwaveDark:()=>H,jettwaveLight:()=>Z,nightOwl:()=>L,nightOwlLight:()=>P,oceanicNext:()=>D,okaidia:()=>M,oneDark:()=>G,oneLight:()=>W,palenight:()=>F,shadesOfPurple:()=>z,synthwave84:()=>B,ultramin:()=>$,vsDark:()=>U,vsLight:()=>q});var T={plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},N={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]},R={plain:{backgroundColor:"#faf8f5",color:"#728fcb"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#b6ad9a"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#063289"}},{types:["property","function"],style:{color:"#b29762"}},{types:["tag-id","selector","atrule-id"],style:{color:"#2d2006"}},{types:["attr-name"],style:{color:"#896724"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule"],style:{color:"#728fcb"}},{types:["placeholder","variable"],style:{color:"#93abdc"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#896724"}}]},A={plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},L={plain:{color:"#d6deeb",backgroundColor:"#011627"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(99, 119, 119)",fontStyle:"italic"}},{types:["string","url"],style:{color:"rgb(173, 219, 103)"}},{types:["variable"],style:{color:"rgb(214, 222, 235)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation"],style:{color:"rgb(199, 146, 234)"}},{types:["selector","doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(255, 203, 139)"}},{types:["tag","operator","keyword"],style:{color:"rgb(127, 219, 202)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["property"],style:{color:"rgb(128, 203, 196)"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}}]},P={plain:{color:"#403f53",backgroundColor:"#FBFBFB"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(72, 118, 214)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(152, 159, 177)",fontStyle:"italic"}},{types:["string","builtin","char","constant","url"],style:{color:"rgb(72, 118, 214)"}},{types:["variable"],style:{color:"rgb(201, 103, 101)"}},{types:["number"],style:{color:"rgb(170, 9, 130)"}},{types:["punctuation"],style:{color:"rgb(153, 76, 195)"}},{types:["function","selector","doctype"],style:{color:"rgb(153, 76, 195)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(17, 17, 17)"}},{types:["tag"],style:{color:"rgb(153, 76, 195)"}},{types:["operator","property","keyword","namespace"],style:{color:"rgb(12, 150, 155)"}},{types:["boolean"],style:{color:"rgb(188, 84, 84)"}}]},O="#c5a5c5",I="#8dc891",D={plain:{backgroundColor:"#282c34",color:"#ffffff"},styles:[{types:["attr-name"],style:{color:O}},{types:["attr-value"],style:{color:I}},{types:["comment","block-comment","prolog","doctype","cdata","shebang"],style:{color:"#999999"}},{types:["property","number","function-name","constant","symbol","deleted"],style:{color:"#5a9bcf"}},{types:["boolean"],style:{color:"#ff8b50"}},{types:["tag"],style:{color:"#fc929e"}},{types:["string"],style:{color:I}},{types:["punctuation"],style:{color:I}},{types:["selector","char","builtin","inserted"],style:{color:"#D8DEE9"}},{types:["function"],style:{color:"#79b6f2"}},{types:["operator","entity","url","variable"],style:{color:"#d7deea"}},{types:["keyword"],style:{color:O}},{types:["atrule","class-name"],style:{color:"#FAC863"}},{types:["important"],style:{fontWeight:"400"}},{types:["bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}}]},M={plain:{color:"#f8f8f2",backgroundColor:"#272822"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"#f92672",fontStyle:"italic"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"#8292a2",fontStyle:"italic"}},{types:["string","url"],style:{color:"#a6e22e"}},{types:["variable"],style:{color:"#f8f8f2"}},{types:["number"],style:{color:"#ae81ff"}},{types:["builtin","char","constant","function","class-name"],style:{color:"#e6db74"}},{types:["punctuation"],style:{color:"#f8f8f2"}},{types:["selector","doctype"],style:{color:"#a6e22e",fontStyle:"italic"}},{types:["tag","operator","keyword"],style:{color:"#66d9ef"}},{types:["boolean"],style:{color:"#ae81ff"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)",opacity:.7}},{types:["tag","property"],style:{color:"#f92672"}},{types:["attr-name"],style:{color:"#a6e22e !important"}},{types:["doctype"],style:{color:"#8292a2"}},{types:["rule"],style:{color:"#e6db74"}}]},F={plain:{color:"#bfc7d5",backgroundColor:"#292d3e"},styles:[{types:["comment"],style:{color:"rgb(105, 112, 152)",fontStyle:"italic"}},{types:["string","inserted"],style:{color:"rgb(195, 232, 141)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation","selector"],style:{color:"rgb(199, 146, 234)"}},{types:["variable"],style:{color:"rgb(191, 199, 213)"}},{types:["class-name","attr-name"],style:{color:"rgb(255, 203, 107)"}},{types:["tag","deleted"],style:{color:"rgb(255, 85, 114)"}},{types:["operator"],style:{color:"rgb(137, 221, 255)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["keyword"],style:{fontStyle:"italic"}},{types:["doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}},{types:["url"],style:{color:"rgb(221, 221, 221)"}}]},z={plain:{color:"#9EFEFF",backgroundColor:"#2D2A55"},styles:[{types:["changed"],style:{color:"rgb(255, 238, 128)"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)"}},{types:["comment"],style:{color:"rgb(179, 98, 255)",fontStyle:"italic"}},{types:["punctuation"],style:{color:"rgb(255, 255, 255)"}},{types:["constant"],style:{color:"rgb(255, 98, 140)"}},{types:["string","url"],style:{color:"rgb(165, 255, 144)"}},{types:["variable"],style:{color:"rgb(255, 238, 128)"}},{types:["number","boolean"],style:{color:"rgb(255, 98, 140)"}},{types:["attr-name"],style:{color:"rgb(255, 180, 84)"}},{types:["keyword","operator","property","namespace","tag","selector","doctype"],style:{color:"rgb(255, 157, 0)"}},{types:["builtin","char","constant","function","class-name"],style:{color:"rgb(250, 208, 0)"}}]},B={plain:{backgroundColor:"linear-gradient(to bottom, #2a2139 75%, #34294f)",backgroundImage:"#34294f",color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"},styles:[{types:["comment","block-comment","prolog","doctype","cdata"],style:{color:"#495495",fontStyle:"italic"}},{types:["punctuation"],style:{color:"#ccc"}},{types:["tag","attr-name","namespace","number","unit","hexcode","deleted"],style:{color:"#e2777a"}},{types:["property","selector"],style:{color:"#72f1b8",textShadow:"0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475"}},{types:["function-name"],style:{color:"#6196cc"}},{types:["boolean","selector-id","function"],style:{color:"#fdfdfd",textShadow:"0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975"}},{types:["class-name","maybe-class-name","builtin"],style:{color:"#fff5f6",textShadow:"0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75"}},{types:["constant","symbol"],style:{color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"}},{types:["important","atrule","keyword","selector-class"],style:{color:"#f4eee4",textShadow:"0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575"}},{types:["string","char","attr-value","regex","variable"],style:{color:"#f87c32"}},{types:["parameter"],style:{fontStyle:"italic"}},{types:["entity","url"],style:{color:"#67cdcc"}},{types:["operator"],style:{color:"ffffffee"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["entity"],style:{cursor:"help"}},{types:["inserted"],style:{color:"green"}}]},$={plain:{color:"#282a2e",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(197, 200, 198)"}},{types:["string","number","builtin","variable"],style:{color:"rgb(150, 152, 150)"}},{types:["class-name","function","tag","attr-name"],style:{color:"rgb(40, 42, 46)"}}]},U={plain:{color:"#9CDCFE",backgroundColor:"#1E1E1E"},styles:[{types:["prolog"],style:{color:"rgb(0, 0, 128)"}},{types:["comment"],style:{color:"rgb(106, 153, 85)"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"rgb(86, 156, 214)"}},{types:["number","inserted"],style:{color:"rgb(181, 206, 168)"}},{types:["constant"],style:{color:"rgb(100, 102, 149)"}},{types:["attr-name","variable"],style:{color:"rgb(156, 220, 254)"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"rgb(206, 145, 120)"}},{types:["selector"],style:{color:"rgb(215, 186, 125)"}},{types:["tag"],style:{color:"rgb(78, 201, 176)"}},{types:["tag"],languages:["markup"],style:{color:"rgb(86, 156, 214)"}},{types:["punctuation","operator"],style:{color:"rgb(212, 212, 212)"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"rgb(220, 220, 170)"}},{types:["class-name"],style:{color:"rgb(78, 201, 176)"}},{types:["char"],style:{color:"rgb(209, 105, 105)"}}]},q={plain:{color:"#000000",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(0, 128, 0)"}},{types:["builtin"],style:{color:"rgb(0, 112, 193)"}},{types:["number","variable","inserted"],style:{color:"rgb(9, 134, 88)"}},{types:["operator"],style:{color:"rgb(0, 0, 0)"}},{types:["constant","char"],style:{color:"rgb(129, 31, 63)"}},{types:["tag"],style:{color:"rgb(128, 0, 0)"}},{types:["attr-name"],style:{color:"rgb(255, 0, 0)"}},{types:["deleted","string"],style:{color:"rgb(163, 21, 21)"}},{types:["changed","punctuation"],style:{color:"rgb(4, 81, 165)"}},{types:["function","keyword"],style:{color:"rgb(0, 0, 255)"}},{types:["class-name"],style:{color:"rgb(38, 127, 153)"}}]},H={plain:{color:"#f8fafc",backgroundColor:"#011627"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#569CD6"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#f8fafc"}},{types:["attr-name","variable"],style:{color:"#9CDCFE"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#cbd5e1"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#D4D4D4"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#7dd3fc"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},Z={plain:{color:"#0f172a",backgroundColor:"#f1f5f9"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#0c4a6e"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#0f172a"}},{types:["attr-name","variable"],style:{color:"#0c4a6e"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#64748b"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#475569"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#0e7490"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},G={plain:{backgroundColor:"hsl(220, 13%, 18%)",color:"hsl(220, 14%, 71%)",textShadow:"0 1px rgba(0, 0, 0, 0.3)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(220, 10%, 40%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(220, 14%, 71%)"}},{types:["attr-name","class-name","maybe-class-name","boolean","constant","number","atrule"],style:{color:"hsl(29, 54%, 61%)"}},{types:["keyword"],style:{color:"hsl(286, 60%, 67%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(355, 65%, 65%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value"],style:{color:"hsl(95, 38%, 62%)"}},{types:["variable","operator","function"],style:{color:"hsl(207, 82%, 66%)"}},{types:["url"],style:{color:"hsl(187, 47%, 55%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(220, 14%, 71%)"}}]},W={plain:{backgroundColor:"hsl(230, 1%, 98%)",color:"hsl(230, 8%, 24%)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(230, 4%, 64%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(230, 8%, 24%)"}},{types:["attr-name","class-name","boolean","constant","number","atrule"],style:{color:"hsl(35, 99%, 36%)"}},{types:["keyword"],style:{color:"hsl(301, 63%, 40%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(5, 74%, 59%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value","punctuation"],style:{color:"hsl(119, 34%, 47%)"}},{types:["variable","operator","function"],style:{color:"hsl(221, 87%, 60%)"}},{types:["url"],style:{color:"hsl(198, 99%, 37%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(230, 8%, 24%)"}}]},V=(e,t)=>{const{plain:n}=e,r=e.styles.reduce(((e,n)=>{const{languages:r,style:a}=n;return r&&!r.includes(t)||n.types.forEach((t=>{const n=S(S({},e[t]),a);e[t]=n})),e}),{});return r.root=n,r.plain=E(S({},n),{backgroundColor:void 0}),r},Q=/\r\n|\r|\n/,K=e=>{0===e.length?e.push({types:["plain"],content:"\n",empty:!0}):1===e.length&&""===e[0].content&&(e[0].content="\n",e[0].empty=!0)},Y=(e,t)=>{const n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},J=e=>{const t=[[]],n=[e],r=[0],a=[e.length];let o=0,i=0,l=[];const s=[l];for(;i>-1;){for(;(o=r[i]++)<a[i];){let e,u=t[i];const c=n[i][o];if("string"==typeof c?(u=i>0?u:["plain"],e=c):(u=Y(u,c.type),c.alias&&(u=Y(u,c.alias)),e=c.content),"string"!=typeof e){i++,t.push(u),n.push(e),r.push(0),a.push(e.length);continue}const d=e.split(Q),p=d.length;l.push({types:u,content:d[0]});for(let t=1;t<p;t++)K(l),s.push(l=[]),l.push({types:u,content:d[t]})}i--,t.pop(),n.pop(),r.pop(),a.pop()}return K(l),s},X=({children:e,language:t,code:n,theme:r,prism:a})=>{const o=t.toLowerCase(),i=((e,t)=>{const[n,r]=(0,c.useState)(V(t,e)),a=(0,c.useRef)(),o=(0,c.useRef)();return(0,c.useEffect)((()=>{t===a.current&&e===o.current||(a.current=t,o.current=e,r(V(t,e)))}),[e,t]),n})(o,r),l=(e=>(0,c.useCallback)((t=>{var n=t,{className:r,style:a,line:o}=n,i=C(n,["className","style","line"]);const l=E(S({},i),{className:(0,d.Z)("token-line",r)});return"object"==typeof e&&"plain"in e&&(l.style=e.plain),"object"==typeof a&&(l.style=S(S({},l.style||{}),a)),l}),[e]))(i),s=(e=>{const t=(0,c.useCallback)((({types:t,empty:n})=>{if(null!=e)return 1===t.length&&"plain"===t[0]?null!=n?{display:"inline-block"}:void 0:1===t.length&&null!=n?e[t[0]]:Object.assign(null!=n?{display:"inline-block"}:{},...t.map((t=>e[t])))}),[e]);return(0,c.useCallback)((e=>{var n=e,{token:r,className:a,style:o}=n,i=C(n,["token","className","style"]);const l=E(S({},i),{className:(0,d.Z)("token",...r.types,a),children:r.content,style:t(r)});return null!=o&&(l.style=S(S({},l.style||{}),o)),l}),[t])})(i),u=(({prism:e,code:t,grammar:n,language:r})=>{const a=(0,c.useRef)(e);return(0,c.useMemo)((()=>{if(null==n)return J([t]);const e={code:t,grammar:n,language:r,tokens:[]};return a.current.hooks.run("before-tokenize",e),e.tokens=a.current.tokenize(t,n),a.current.hooks.run("after-tokenize",e),J(e.tokens)}),[t,n,r])})({prism:a,language:o,code:n,grammar:a.languages[o]});return e({tokens:u,className:`prism-code language-${o}`,style:null!=i?i.root:{},getLineProps:l,getTokenProps:s})},ee=e=>(0,c.createElement)(X,E(S({},e),{prism:e.prism||j,theme:e.theme||U,code:e.code,language:e.language}))},2215:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=!0,a="Invariant failed";function o(e,t){if(!e){if(r)throw new Error(a);var n="function"==typeof t?t():t,o=n?"".concat(a,": ").concat(n):a;throw new Error(o)}}},7529:e=>{"use strict";e.exports={}},6887:e=>{"use strict";e.exports=JSON.parse('{"/nestjs-cls/-499":{"__comp":"5e95c892","__context":{"plugin":"effe0ec2"}},"/nestjs-cls/-c85":{"__comp":"a7bd4aaa","version":"935f2afb"},"/nestjs-cls/-2fa":{"__comp":"a94703ab"},"/nestjs-cls/api-212":{"__comp":"17896441","content":"4c9a797e"},"/nestjs-cls/api/module-options-77a":{"__comp":"17896441","content":"97d55a5e"},"/nestjs-cls/api/service-interface-0da":{"__comp":"17896441","content":"df604e10"},"/nestjs-cls/considerations-416":{"__comp":"17896441","content":"94e5e920"},"/nestjs-cls/considerations/compatibility-10c":{"__comp":"17896441","content":"b787da23"},"/nestjs-cls/considerations/security-54f":{"__comp":"17896441","content":"57c14adc"},"/nestjs-cls/features-and-use-cases-1da":{"__comp":"17896441","content":"ef9f7d37"},"/nestjs-cls/features-and-use-cases/additional-cls-setup-d4a":{"__comp":"17896441","content":"6212613f"},"/nestjs-cls/features-and-use-cases/breaking-out-of-di-38a":{"__comp":"17896441","content":"6bb5cc7f"},"/nestjs-cls/features-and-use-cases/proxy-providers-53b":{"__comp":"17896441","content":"592cbe55"},"/nestjs-cls/features-and-use-cases/request-id-b90":{"__comp":"17896441","content":"f83e606a"},"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference-88f":{"__comp":"17896441","content":"4998a0a4"},"/nestjs-cls/features-and-use-cases/usage-outside-of-web-request-9b7":{"__comp":"17896441","content":"a8d12efa"},"/nestjs-cls/introduction/how-it-works-a84":{"__comp":"17896441","content":"3ac8ff5d"},"/nestjs-cls/introduction/installation-885":{"__comp":"17896441","content":"3b39bba3"},"/nestjs-cls/introduction/quick-start-cf1":{"__comp":"17896441","content":"eca1a52a"},"/nestjs-cls/migration-guide-225":{"__comp":"17896441","content":"6fbaaecb"},"/nestjs-cls/migration-guide/v2x-v3x-553":{"__comp":"17896441","content":"baa2f4d8"},"/nestjs-cls/migration-guide/v3x-v4x-09e":{"__comp":"17896441","content":"075c86f0"},"/nestjs-cls/plugins-3b3":{"__comp":"17896441","content":"e83b8e0a"},"/nestjs-cls/plugins/available-plugins-3a5":{"__comp":"17896441","content":"e2112352"},"/nestjs-cls/plugins/available-plugins/transactional-927":{"__comp":"17896441","content":"739a1e5f"},"/nestjs-cls/plugins/available-plugins/transactional/creating-custom-adapter-09b":{"__comp":"17896441","content":"a886e75a"},"/nestjs-cls/plugins/available-plugins/transactional/prisma-adapter-b91":{"__comp":"17896441","content":"2d4cceda"},"/nestjs-cls/plugins/plugin-api-8c2":{"__comp":"17896441","content":"b67d68ed"},"/nestjs-cls/setting-up-cls-context-e63":{"__comp":"17896441","content":"a2c1fdb7"},"/nestjs-cls/setting-up-cls-context/using_cls_run-361":{"__comp":"17896441","content":"18c15bff"},"/nestjs-cls/setting-up-cls-context/using-a-decorator-cc5":{"__comp":"17896441","content":"eb9c95da"},"/nestjs-cls/setting-up-cls-context/using-a-guard-8c0":{"__comp":"17896441","content":"d459cca2"},"/nestjs-cls/setting-up-cls-context/using-a-middleware-ad9":{"__comp":"17896441","content":"ae4976f8"},"/nestjs-cls/setting-up-cls-context/using-an-interceptor-393":{"__comp":"17896441","content":"b09df872"},"/nestjs-cls/-c45":{"__comp":"17896441","content":"86ea57e0"}}')}},e=>{e.O(0,[532],(()=>{return t=9921,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/assets/js/main.4229acf3.js.LICENSE.txt b/assets/js/main.ca4c7257.js.LICENSE.txt old mode 100755 new mode 100644 similarity index 66% rename from assets/js/main.4229acf3.js.LICENSE.txt rename to assets/js/main.ca4c7257.js.LICENSE.txt index 428bf06..ae63de0 --- a/assets/js/main.4229acf3.js.LICENSE.txt +++ b/assets/js/main.ca4c7257.js.LICENSE.txt @@ -1,21 +1,29 @@ -/* -object-assign -(c) Sindre Sorhus -@license MIT -*/ - /* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress * @license MIT */ -/*! - Copyright (c) 2018 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames +/*! Bundled license information: + +prismjs/prism.js: + (** + * Prism: Lightweight, robust, elegant syntax highlighting + * + * @license MIT <https://opensource.org/licenses/MIT> + * @author Lea Verou <https://lea.verou.me> + * @namespace + * @public + *) */ +/*!*************************************************** +* mark.js v8.11.1 +* https://markjs.io/ +* Copyright (c) 2014–2018, Julian Kühnel +* Released under the MIT license https://git.io/vwTVl +*****************************************************/ + /** * @license React - * use-sync-external-store-shim.production.min.js + * react-dom.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * @@ -24,16 +32,8 @@ object-assign */ /** - * Prism: Lightweight, robust, elegant syntax highlighting - * - * @license MIT <https://opensource.org/licenses/MIT> - * @author Lea Verou <https://lea.verou.me> - * @namespace - * @public - */ - -/** @license React v0.20.2 - * scheduler.production.min.js + * @license React + * react-jsx-runtime.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * @@ -41,8 +41,9 @@ object-assign * LICENSE file in the root directory of this source tree. */ -/** @license React v16.13.1 - * react-is.production.min.js +/** + * @license React + * react.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * @@ -50,8 +51,9 @@ object-assign * LICENSE file in the root directory of this source tree. */ -/** @license React v17.0.2 - * react-dom.production.min.js +/** + * @license React + * scheduler.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * @@ -59,8 +61,8 @@ object-assign * LICENSE file in the root directory of this source tree. */ -/** @license React v17.0.2 - * react.production.min.js +/** @license React v16.13.1 + * react-is.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * diff --git a/assets/js/runtime~main.4f1a7fee.js b/assets/js/runtime~main.4f1a7fee.js new file mode 100644 index 0000000..7d2cfa2 --- /dev/null +++ b/assets/js/runtime~main.4f1a7fee.js @@ -0,0 +1 @@ +(()=>{"use strict";var e,a,t,r,f,c={},o={};function d(e){var a=o[e];if(void 0!==a)return a.exports;var t=o[e]={id:e,loaded:!1,exports:{}};return c[e].call(t.exports,t,t.exports,d),t.loaded=!0,t.exports}d.m=c,d.c=o,e=[],d.O=(a,t,r,f)=>{if(!t){var c=1/0;for(i=0;i<e.length;i++){t=e[i][0],r=e[i][1],f=e[i][2];for(var o=!0,b=0;b<t.length;b++)(!1&f||c>=f)&&Object.keys(d.O).every((e=>d.O[e](t[b])))?t.splice(b--,1):(o=!1,f<c&&(c=f));if(o){e.splice(i--,1);var n=r();void 0!==n&&(a=n)}}return a}f=f||0;for(var i=e.length;i>0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[t,r,f]},d.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return d.d(a,{a:a}),a},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,d.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var f=Object.create(null);d.r(f);var c={};a=a||[null,t({}),t([]),t(t)];for(var o=2&r&&e;"object"==typeof o&&!~a.indexOf(o);o=t(o))Object.getOwnPropertyNames(o).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,d.d(f,c),f},d.d=(e,a)=>{for(var t in a)d.o(a,t)&&!d.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},d.f={},d.e=e=>Promise.all(Object.keys(d.f).reduce(((a,t)=>(d.f[t](e,a),a)),[])),d.u=e=>"assets/js/"+({47:"d459cca2",53:"935f2afb",55:"a8d12efa",93:"ae4976f8",104:"f83e606a",126:"b787da23",180:"739a1e5f",202:"86ea57e0",241:"b67d68ed",246:"b09df872",285:"2d4cceda",332:"3ac8ff5d",368:"a94703ab",378:"effe0ec2",399:"18c15bff",423:"baa2f4d8",437:"592cbe55",446:"e83b8e0a",466:"a886e75a",499:"6bb5cc7f",506:"075c86f0",507:"57c14adc",518:"a7bd4aaa",546:"3b39bba3",575:"94e5e920",661:"5e95c892",715:"eb9c95da",720:"4c9a797e",775:"df604e10",776:"a2c1fdb7",823:"97d55a5e",826:"e2112352",849:"6212613f",872:"4998a0a4",873:"eca1a52a",918:"17896441",979:"6fbaaecb",990:"ef9f7d37"}[e]||e)+"."+{47:"51d3b722",49:"c17c1426",53:"ff295151",55:"0b5297db",93:"fa94a518",104:"14966a77",126:"6d6bf314",180:"97c3a5dc",202:"ff6330f0",241:"2e3abcf2",246:"558f0f47",285:"9ec420e4",332:"a4c650c8",368:"74e9a79f",378:"1d686911",399:"c5c7db9a",423:"57f99fd1",437:"9bb5699b",446:"c7551c54",466:"d95036fe",471:"006e7ee7",499:"b7a03c73",506:"0a105794",507:"8d411baa",518:"6b9c6fa4",546:"b1845d7a",575:"d469aee9",661:"eba74bf1",715:"97b9461c",720:"5a451edf",765:"099e041d",775:"c9ad986f",776:"6caaee3d",807:"e07e7e07",823:"5ff21a4a",826:"413a0485",849:"570af20d",872:"8311d530",873:"cbfb27da",918:"c5c50487",979:"c904afaa",990:"a21a56ab"}[e]+".js",d.miniCssF=e=>{},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),r={},f="nestjs-cls-docs:",d.l=(e,a,t,c)=>{if(r[e])r[e].push(a);else{var o,b;if(void 0!==t)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var s=n[i];if(s.getAttribute("src")==e||s.getAttribute("data-webpack")==f+t){o=s;break}}o||(b=!0,(o=document.createElement("script")).charset="utf-8",o.timeout=120,d.nc&&o.setAttribute("nonce",d.nc),o.setAttribute("data-webpack",f+t),o.src=e),r[e]=[a];var l=(a,t)=>{o.onerror=o.onload=null,clearTimeout(u);var f=r[e];if(delete r[e],o.parentNode&&o.parentNode.removeChild(o),f&&f.forEach((e=>e(t))),a)return a(t)},u=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),b&&document.head.appendChild(o)}},d.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.p="/nestjs-cls/",d.gca=function(e){return e={17896441:"918",d459cca2:"47","935f2afb":"53",a8d12efa:"55",ae4976f8:"93",f83e606a:"104",b787da23:"126","739a1e5f":"180","86ea57e0":"202",b67d68ed:"241",b09df872:"246","2d4cceda":"285","3ac8ff5d":"332",a94703ab:"368",effe0ec2:"378","18c15bff":"399",baa2f4d8:"423","592cbe55":"437",e83b8e0a:"446",a886e75a:"466","6bb5cc7f":"499","075c86f0":"506","57c14adc":"507",a7bd4aaa:"518","3b39bba3":"546","94e5e920":"575","5e95c892":"661",eb9c95da:"715","4c9a797e":"720",df604e10:"775",a2c1fdb7:"776","97d55a5e":"823",e2112352:"826","6212613f":"849","4998a0a4":"872",eca1a52a:"873","6fbaaecb":"979",ef9f7d37:"990"}[e]||e,d.p+d.u(e)},(()=>{var e={303:0,532:0};d.f.j=(a,t)=>{var r=d.o(e,a)?e[a]:void 0;if(0!==r)if(r)t.push(r[2]);else if(/^(303|532)$/.test(a))e[a]=0;else{var f=new Promise(((t,f)=>r=e[a]=[t,f]));t.push(r[2]=f);var c=d.p+d.u(a),o=new Error;d.l(c,(t=>{if(d.o(e,a)&&(0!==(r=e[a])&&(e[a]=void 0),r)){var f=t&&("load"===t.type?"missing":t.type),c=t&&t.target&&t.target.src;o.message="Loading chunk "+a+" failed.\n("+f+": "+c+")",o.name="ChunkLoadError",o.type=f,o.request=c,r[1](o)}}),"chunk-"+a,a)}},d.O.j=a=>0===e[a];var a=(a,t)=>{var r,f,c=t[0],o=t[1],b=t[2],n=0;if(c.some((a=>0!==e[a]))){for(r in o)d.o(o,r)&&(d.m[r]=o[r]);if(b)var i=b(d)}for(a&&a(t);n<c.length;n++)f=c[n],d.o(e,f)&&e[f]&&e[f][0](),e[f]=0;return d.O(i)},t=self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[];t.forEach(a.bind(null,0)),t.push=a.bind(null,t.push.bind(t))})()})(); \ No newline at end of file diff --git a/assets/js/runtime~main.8a2e657e.js b/assets/js/runtime~main.8a2e657e.js deleted file mode 100755 index da5733b..0000000 --- a/assets/js/runtime~main.8a2e657e.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var e,a,t,r,c,f={},o={};function n(e){var a=o[e];if(void 0!==a)return a.exports;var t=o[e]={id:e,loaded:!1,exports:{}};return f[e].call(t.exports,t,t.exports,n),t.loaded=!0,t.exports}n.m=f,n.c=o,e=[],n.O=(a,t,r,c)=>{if(!t){var f=1/0;for(b=0;b<e.length;b++){t=e[b][0],r=e[b][1],c=e[b][2];for(var o=!0,d=0;d<t.length;d++)(!1&c||f>=c)&&Object.keys(n.O).every((e=>n.O[e](t[d])))?t.splice(d--,1):(o=!1,c<f&&(f=c));if(o){e.splice(b--,1);var i=r();void 0!==i&&(a=i)}}return a}c=c||0;for(var b=e.length;b>0&&e[b-1][2]>c;b--)e[b]=e[b-1];e[b]=[t,r,c]},n.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return n.d(a,{a:a}),a},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var c=Object.create(null);n.r(c);var f={};a=a||[null,t({}),t([]),t(t)];for(var o=2&r&&e;"object"==typeof o&&!~a.indexOf(o);o=t(o))Object.getOwnPropertyNames(o).forEach((a=>f[a]=()=>e[a]));return f.default=()=>e,n.d(c,f),c},n.d=(e,a)=>{for(var t in a)n.o(a,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((a,t)=>(n.f[t](e,a),a)),[])),n.u=e=>"assets/js/"+({47:"d459cca2",53:"935f2afb",55:"a8d12efa",93:"ae4976f8",104:"f83e606a",126:"b787da23",164:"67fa07c1",202:"86ea57e0",246:"b09df872",332:"3ac8ff5d",437:"592cbe55",507:"57c14adc",513:"81cbaa95",514:"1be78505",546:"3b39bba3",575:"94e5e920",665:"1cd7469c",678:"75a2ce58",720:"4c9a797e",756:"849c94ea",775:"df604e10",776:"a2c1fdb7",823:"97d55a5e",849:"6212613f",872:"4998a0a4",873:"eca1a52a",918:"17896441",990:"ef9f7d37"}[e]||e)+"."+{47:"2e06c629",53:"da867498",55:"ae0cc29a",77:"6d8f1b9f",93:"5406cedc",104:"269bd854",126:"d6a197ad",164:"8b7b0bb2",202:"93a2d1c1",246:"6dc93e4a",332:"22ee9ecc",437:"e18bfa3e",507:"b808beff",513:"e887b585",514:"cee9dfcc",546:"4068951c",561:"5fe53f02",575:"1b12a2be",665:"a8f155a8",678:"288a270b",720:"ac0c8500",734:"9c54f551",756:"51e67d40",775:"30be9c5a",776:"de805607",823:"1919b209",849:"4cda7fb0",872:"487f790a",873:"c89c6ab1",893:"bb801cd0",918:"ea3c4b97",990:"246c8683"}[e]+".js",n.miniCssF=e=>{},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),r={},c="nestjs-cls-docs:",n.l=(e,a,t,f)=>{if(r[e])r[e].push(a);else{var o,d;if(void 0!==t)for(var i=document.getElementsByTagName("script"),b=0;b<i.length;b++){var s=i[b];if(s.getAttribute("src")==e||s.getAttribute("data-webpack")==c+t){o=s;break}}o||(d=!0,(o=document.createElement("script")).charset="utf-8",o.timeout=120,n.nc&&o.setAttribute("nonce",n.nc),o.setAttribute("data-webpack",c+t),o.src=e),r[e]=[a];var l=(a,t)=>{o.onerror=o.onload=null,clearTimeout(u);var c=r[e];if(delete r[e],o.parentNode&&o.parentNode.removeChild(o),c&&c.forEach((e=>e(t))),a)return a(t)},u=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),d&&document.head.appendChild(o)}},n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.p="/nestjs-cls/",n.gca=function(e){return e={17896441:"918",d459cca2:"47","935f2afb":"53",a8d12efa:"55",ae4976f8:"93",f83e606a:"104",b787da23:"126","67fa07c1":"164","86ea57e0":"202",b09df872:"246","3ac8ff5d":"332","592cbe55":"437","57c14adc":"507","81cbaa95":"513","1be78505":"514","3b39bba3":"546","94e5e920":"575","1cd7469c":"665","75a2ce58":"678","4c9a797e":"720","849c94ea":"756",df604e10:"775",a2c1fdb7:"776","97d55a5e":"823","6212613f":"849","4998a0a4":"872",eca1a52a:"873",ef9f7d37:"990"}[e]||e,n.p+n.u(e)},(()=>{var e={303:0,532:0};n.f.j=(a,t)=>{var r=n.o(e,a)?e[a]:void 0;if(0!==r)if(r)t.push(r[2]);else if(/^(303|532)$/.test(a))e[a]=0;else{var c=new Promise(((t,c)=>r=e[a]=[t,c]));t.push(r[2]=c);var f=n.p+n.u(a),o=new Error;n.l(f,(t=>{if(n.o(e,a)&&(0!==(r=e[a])&&(e[a]=void 0),r)){var c=t&&("load"===t.type?"missing":t.type),f=t&&t.target&&t.target.src;o.message="Loading chunk "+a+" failed.\n("+c+": "+f+")",o.name="ChunkLoadError",o.type=c,o.request=f,r[1](o)}}),"chunk-"+a,a)}},n.O.j=a=>0===e[a];var a=(a,t)=>{var r,c,f=t[0],o=t[1],d=t[2],i=0;if(f.some((a=>0!==e[a]))){for(r in o)n.o(o,r)&&(n.m[r]=o[r]);if(d)var b=d(n)}for(a&&a(t);i<f.length;i++)c=f[i],n.o(e,c)&&e[c]&&e[c][0](),e[c]=0;return n.O(b)},t=self.webpackChunknestjs_cls_docs=self.webpackChunknestjs_cls_docs||[];t.forEach(a.bind(null,0)),t.push=a.bind(null,t.push.bind(t))})()})(); \ No newline at end of file diff --git a/considerations.html b/considerations.html old mode 100755 new mode 100644 index df9dbc5..f09cabe --- a/considerations.html +++ b/considerations.html @@ -1,16 +1,15 @@ <!doctype html> -<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-considerations/index"> +<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-considerations/index" data-has-hydrated="false"> <head> <meta charset="UTF-8"> -<meta name="generator" content="Docusaurus v2.4.1"> -<title data-rh="true">Considerations | NestJS CLS - - + +Considerations | NestJS CLS + + -
-
Skip to main content

Considerations

This chapter exists to help you decide whether this library is compatible with your project and to address any concerns that you may have.

You might be also interested in the Author's take

- - +
Skip to main content

Considerations

+

This chapter exists to help you decide whether this library is compatible with your project and to address any concerns that you may have.

+

You might be also interested in the Author's take

\ No newline at end of file diff --git a/considerations/compatibility.html b/considerations/compatibility.html old mode 100755 new mode 100644 index 875f2d2..a08a3e0 --- a/considerations/compatibility.html +++ b/considerations/compatibility.html @@ -1,16 +1,49 @@ - + - -Compatibility | NestJS CLS - - + +Compatibility | NestJS CLS + + -
-
Skip to main content

Compatibility

The table below outlines the compatibility with some platforms:

RESTGQLWS*Microservices
ClsMiddleware
ClsGuard
(uses enterWith)
ClsInterceptor
(context inaccessible
in Guards and
in Exception Filters)

REST

This package is compatible with Nest-supported REST controllers and the preferred way is to use the ClsMiddleware with the mount option set to true.

Tested with:

  • ✔ Express
  • ✔ Fastify

Known issues:

  • In case API versioning is used, the automatic mounting of the ClsMiddleware does not work and it needs to be mounted manually. See issue #67 for details.
  • Some existing Express middlewares may cause context loss, if that happens, mount the ClsMiddleware manually after those offending ones (#50)

GraphQL

Using an interceptor or a guard may result in that enhancer triggering multiple times in case there are multiple queries in the GQL request.

Due to this, you should ensure that any operation on the CLS store within enhancers is idempotent. This includes the setup function. Therefore, it is advised to use the ClsService#setIfUndefined() method.

Tested with:

  • ✔ Apollo (Express)
  • ✔ Mercurius (Fastify)

@nestjs/graphql >= 10

Since v10, Nest's GraphQL resolvers are compatible with this package and the preferred way to initialize the CLS context is use the ClsMiddleware with the mount option.

@nestjs/graphql < 10

For older versions of graphql, the ClsMiddleware needs to be mounted manually with app.use(...) in order to correctly set up the context for resolvers. Additionally, you have to pass useEnterWith: true to the ClsMiddleware options, because the context gets lost otherwise due to an issue with CLS and Apollo (sadly, the same is true for Mercurius). This method is functionally identical to just using the ClsGuard.

Alternatively, you can use the ClsInterceptor, which uses the safer AsyncLocalStorage#run (thanks to andreialecu), but remember that using it makes CLS unavailable in Guards.

Others

Use the ClsGuard or ClsInterceptor to set up context with any other platform.

There are no explicit test for other transports, so I can't guarantee it will work with your platform of choice, but there's nothing that would indicate otherwise.

If you decide to try this package with a platform that is not listed here, please let me know so I can add the compatibility notice.

Below are listed transports with which it is confirmed to work:

Websockets

Websocket Gateways don't respect globally bound enhancers, therefore it is required to bind the ClsGuard or ClsInterceptor manually on the WebsocketGateway. Special care is also needed for the handleConnection method (See #8)

- - +
Skip to main content

Compatibility

+

The table below outlines the compatibility with some platforms:

+
RESTGQLWS*Microservices
ClsMiddleware
ClsGuard
(uses enterWith)
ClsInterceptor
(context inaccessible
in Guards and
in Exception Filters)
+

REST

+

This package is compatible with Nest-supported REST controllers and the preferred way is to use the ClsMiddleware with the mount option set to true.

+

Tested with:

+
    +
  • ✔ Express
  • +
  • ✔ Fastify
  • +
+

Known issues:

+
    +
  • In case API versioning is used, the automatic mounting of the ClsMiddleware does not work and it needs to be mounted manually. See issue #67 for details.
  • +
  • Some existing Express middlewares may cause context loss, if that happens, mount the ClsMiddleware manually after those offending ones (#50)
  • +
+

GraphQL

+

Using an interceptor or a guard may result in that enhancer triggering multiple times in case there are multiple queries in the GQL request.

+

Due to this, you should ensure that any operation on the CLS store within enhancers is idempotent. This includes the setup function. Therefore, it is advised to use the ClsService#setIfUndefined() method.

+

Tested with:

+
    +
  • ✔ Apollo (Express)
  • +
  • ✔ Mercurius (Fastify)
  • +
+

@nestjs/graphql >= 10

+

Since v10, Nest's GraphQL resolvers are compatible with this package and the preferred way to initialize the CLS context is use the ClsMiddleware with the mount option.

+

@nestjs/graphql < 10

+

For older versions of graphql, the ClsMiddleware needs to be mounted manually with app.use(...) in order to correctly set up the context for resolvers. Additionally, you have to pass useEnterWith: true to the ClsMiddleware options, because the context gets lost otherwise due to an issue with CLS and Apollo (sadly, the same is true for Mercurius). This method is functionally identical to just using the ClsGuard.

+

Alternatively, you can use the ClsInterceptor, which uses the safer AsyncLocalStorage#run (thanks to andreialecu), but remember that using it makes CLS unavailable in Guards.

+

Others

+

Use the ClsGuard or ClsInterceptor to set up context with any other platform.

+

There are no explicit test for other transports, so I can't guarantee it will work with your platform of choice, but there's nothing that would indicate otherwise.

+
+

If you decide to try this package with a platform that is not listed here, please let me know so I can add the compatibility notice.

+
+

Below are listed transports with which it is confirmed to work:

+

Websockets

+

Websocket Gateways don't respect globally bound enhancers, therefore it is required to bind the ClsGuard or ClsInterceptor manually on the WebsocketGateway. Special care is also needed for the handleConnection method (See #8)

\ No newline at end of file diff --git a/considerations/security.html b/considerations/security.html old mode 100755 new mode 100644 index 253c5e2..0d2a293 --- a/considerations/security.html +++ b/considerations/security.html @@ -1,16 +1,20 @@ - + - -Security | NestJS CLS - - + +Security | NestJS CLS + + -
-
Skip to main content

Security

It is often discussed whether AsyncLocalStorage is safe to use for concurrent requests (because of a possible context leak) and whether the context could be lost throughout the duration of a request.

The ClsMiddleware and ClsInterceptor by default uses the safe run() method, which it should not leak context, but in some rare cases, the context can be lost.

The ClsGuard (and ClsMiddleware, if configured so) uses the less safe enterWith() method, which might be needed in case the run() method causes context loss.

This has a consequence that should be taken into account:

caution

When the enterWith method is used, any consequent requests get access to the CLS context of the previous request until the request hits the enterWith call.

That means, when using ClsMiddleware with the useEnterWith option, or ClsGuard to set up context, be sure to mount them as early in the request lifetime as possible and do not use any other enhancers that rely on ClsService before them. For ClsGuard, that means you should probably manually mount it in AppModule if you require any other guard to run after it.

The next chapter addresses compatibility with various transport protocols.

- - +
Skip to main content

Security

+

It is often discussed whether AsyncLocalStorage is safe to use for concurrent requests (because of a possible context leak) and whether the context could be lost throughout the duration of a request.

+

The ClsMiddleware and ClsInterceptor by default uses the safe run() method, which it should not leak context, but in some rare cases, the context can be lost.

+

The ClsGuard (and ClsMiddleware, if configured so) uses the less safe enterWith() method, which might be needed in case the run() method causes context loss.

+

This has a consequence that should be taken into account:

+
caution

When the enterWith method is used, any consequent requests get access to the CLS context of the previous request until the request hits the enterWith call.

+

That means, when using ClsMiddleware with the useEnterWith option, or ClsGuard to set up context, be sure to mount them as early in the request lifetime as possible and do not use any other enhancers that rely on ClsService before them. For ClsGuard, that means you should probably manually mount it in AppModule if you require any other guard to run after it.

+

The next chapter addresses compatibility with various transport protocols.

\ No newline at end of file diff --git a/features-and-use-cases.html b/features-and-use-cases.html old mode 100755 new mode 100644 index c4d7e34..2b7006c --- a/features-and-use-cases.html +++ b/features-and-use-cases.html @@ -1,16 +1,14 @@ - + - -Features and use cases | NestJS CLS - - + +Features and use cases | NestJS CLS + + -
-
Skip to main content

Features and use cases

In addition to the basic functionality described in the Quick start chapter, this module provides several other features to make your life as a developer easier.

- - +
Skip to main content
\ No newline at end of file diff --git a/features-and-use-cases/additional-cls-setup.html b/features-and-use-cases/additional-cls-setup.html old mode 100755 new mode 100644 index 80f694c..970f4d5 --- a/features-and-use-cases/additional-cls-setup.html +++ b/features-and-use-cases/additional-cls-setup.html @@ -1,16 +1,22 @@ - + - -Additional CLS Setup | NestJS CLS - - + +Additional CLS Setup | NestJS CLS + + -
-
Skip to main content

Additional CLS Setup

The CLS middleware/guard/interceptor provide some default functionality, but sometimes you might want to store more contextual things in the CLS.

This can be of course done in a custom enhancer bound after, but for this scenario, the options expose a setup function, which will be executed in the enhancer right after the CLS context is set up.

The function receives the ClsService instance, and can be asynchronous.

Middleware

In case of middleware the Request and Response objects are passed as the second and third parameters.

ClsModule.forRoot({
middleware: {
mount: true,
setup: (cls, req: Request, res: Response) => {
cls.set('TENANT_ID', req.params('tenant_id'));
cls.set('AUTH', { authenticated: false });
},
},
});

Enhancers

In a guard or interceptor, the ExecutionContext object is passed as a second parameter.

ClsModule.forRoot({
interceptor: {
mount: true,
setup: (cls, context) => {
const req = context.switchToHttp().getRequest<Request>();
cls.set('TENANT_ID', req.params('tenant_id'));
cls.set('AUTH', { authenticated: false });
},
},
});
- - +
Skip to main content

Additional CLS Setup

+

The CLS middleware/guard/interceptor provide some default functionality, but sometimes you might want to store more contextual things in the CLS.

+

This can be of course done in a custom enhancer bound after, but for this scenario, the options expose a setup function, which will be executed in the enhancer right after the CLS context is set up.

+

The function receives the ClsService instance, and can be asynchronous.

+

Middleware

+

In case of middleware the Request and Response objects are passed as the second and third parameters.

+
ClsModule.forRoot({
middleware: {
mount: true,
setup: (cls, req: Request, res: Response) => {
cls.set('TENANT_ID', req.params('tenant_id'));
cls.set('AUTH', { authenticated: false });
},
},
});
+

Enhancers

+

In a guard or interceptor, the ExecutionContext object is passed as a second parameter.

+
ClsModule.forRoot({
interceptor: {
mount: true,
setup: (cls, context) => {
const req = context.switchToHttp().getRequest<Request>();
cls.set('TENANT_ID', req.params('tenant_id'));
cls.set('AUTH', { authenticated: false });
},
},
});
\ No newline at end of file diff --git a/features-and-use-cases/breakin-out-of-di.html b/features-and-use-cases/breakin-out-of-di.html deleted file mode 100755 index 3940685..0000000 --- a/features-and-use-cases/breakin-out-of-di.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - -Breaking out of DI | NestJS CLS - - - - -
-
Skip to main content

Breaking out of DI

While this package aims to be compatible with NestJS's Dependency Injection, it is also possible to access the CLS context outside of it.

For that, it provides the static ClsServiceManager class that exposes the getClsService() method which can be used to retrieve the context outside of Nest's injection context (e.g. in top-level functions)

function helper() {
const cls = ClsServiceManager.getClsService();
// you now have access to the shared storage
console.log(cls.getId());
}
caution

Please note: Only use this feature where absolutely necessary. Using this technique instead of dependency injection will make it difficult to mock the ClsService and your code will become harder to test.

- - - - \ No newline at end of file diff --git a/features-and-use-cases/breaking-out-of-di.html b/features-and-use-cases/breaking-out-of-di.html new file mode 100644 index 0000000..5f20978 --- /dev/null +++ b/features-and-use-cases/breaking-out-of-di.html @@ -0,0 +1,17 @@ + + + + + +Breaking out of DI | NestJS CLS + + + + +
Skip to main content

Breaking out of DI

+

While this package aims to be compatible with NestJS's Dependency Injection, it is also possible to access the CLS context outside of it.

+

For that, it provides the static ClsServiceManager class that exposes the getClsService() method which can be used to retrieve the context outside of Nest's injection context (e.g. in top-level functions)

+
function helper() {
const cls = ClsServiceManager.getClsService();
// you now have access to the shared storage
console.log(cls.getId());
}
+
caution

Please note: Only use this feature where absolutely necessary. Using this technique instead of dependency injection will make it difficult to mock the ClsService and your code will become harder to test.

+ + \ No newline at end of file diff --git a/features-and-use-cases/proxy-providers.html b/features-and-use-cases/proxy-providers.html old mode 100755 new mode 100644 index 16e5bf9..7ac0148 --- a/features-and-use-cases/proxy-providers.html +++ b/features-and-use-cases/proxy-providers.html @@ -1,17 +1,67 @@ - + - -Proxy Providers | NestJS CLS - - + +Proxy Providers | NestJS CLS + + -
-
Skip to main content

Proxy Providers

Since v3.0

This feature was inspired by how REQUEST-scoped providers ("beans") work in the Spring framework for Java/Kotlin.

Using this technique, NestJS does not need to re-create a whole DI-subtree on each request (which has certain implications which disallows the use of REQUEST-scoped providers in certain situations).

Rather, it injects a SINGLETON Proxy instance, which delegates access and calls to the actual instance, which is created for each request when the CLS context is set up.

There are two kinds of Proxy providers - Class and Factory.

note

Please note that there are some caveats to using this technique.

Class Proxy Providers

These providers look like your regular class providers, with the exception that is the @InjectableProxy() decorator to make them easily distinguishable.

user.proxy.ts
@InjectableProxy()
export class User {
id: number;
role: string;
}

To register the proxy provider, use the ClsModule.forFeature() registration, -which exposes it an injectable provider in the parent module.

ClsModule.forFeature(User);

It can be then injected using the class name.

However, what will be actually injected is not the instance of the class, but rather the Proxy which redirects all access to an unique instance stored in the CLS context.

Populate in an enhancer

A Class provider defined in this way will be empty upon creation, so we must assign context values to it somewhere. One place to do it is an interceptor

user.interceptor.ts
@Injectable()
export class UserInterceptor implements NestInterceptor {
// we can inject the proxy here
constructor(private readonly user: User) {}

intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
const request = context.switchToHttp().getRequest();

// and assign or change values as it was a normal object
this.user.id = request.user.id;
this.user.role = 'admin';

return next.handle();
}
}

Self-populating Proxy Provider

It is also possible to inject other providers into the Proxy Provider to avoid having to do this in a separate component.

For the convenience, the CLS_REQ and CLS_RES are also made into Proxy Providers and are exported from the ClsModule.

user-with-rile.proxy.ts
@InjectableProxy()
export class UserWithRole {
id: number;
role: string;

constructor(
@Inject(CLS_REQ) request: Request,
roleService: RoleService,
) {
this.id = request.user.id;
this.role = roleService.getForId(request.user.id);
}
}

If you need to inject a provider from an external module, use the ClsModule.forFeatureAsync() registration to import the containing module.

ClsModule.forFeatureAsync({
// make RoleService available to the Proxy provider
import: [RoleModule],
useClass: UserWithRole,
});
tip

Using @Inject(CLS_REQ), you can entirely replace @Inject(REQUEST) in REQUEST-SCOPED providers to turn them into CLS-enabled singletons without changing the implementation.

Factory Proxy Providers

Like your normal factory providers, Proxy factory providers look familiar.

They can be only registered using the ClsModule.forFeatureAsync() method.

Here's an example of a hypothetical factory provider that dynamically resolves to a specific tenant database connection:

ClsModule.forFeatureAsync({
provide: TENANT_CONNECTION,
import: [DatabaseConnectionModule],
inject: [CLS_REQ, DatabaseConnectionService],
useFactory: async (req: Request, dbService: DatabaseConnectionService) => {
const tenantId = req.params['tenantId'];
const connection = await dbService.getTenantConnection(tenantId);
return connection;
},
global: true, // make the TENANT_CONNECTION available for injection globally
});

Again, the factory will be called on each request and the result will be stored in the CLS context. The TENANT_CONNECTION provider, however, will still be a singleton and will not affect the scope of whatever it is injected into.

In the service, it can be injected using the provide token as usual:

dogs.service.ts
@Injectable()
class DogsService {
constructor(
@Inject(TENANT_CONNECTION)
private readonly connection: TenantConnection,
) {}

getAll() {
return this.connection.dogs.getAll();
}
}

Caveats

No primitive values

Proxy Factory providers cannot return a primitive value. This is because the provider itself is the Proxy and it only delegates access once a property or a method is called on it (or if it itself is called in case the factory returns a function).

typeof Proxies is always function

In order to support injecting proxies of functions, the underlying proxy target is an empty function, too. It must be this way in order to be able to implement the "apply" trap.

As a result of this, calling typeof on an instance of a Proxy will always return function, regardless of the value it holds. This is fine for most applications, but must be taken into consideration in some cases - please see Issue #82 for more info and possible workarounds.

Delayed resolution of Proxy Providers

By default, proxy providers are resolved as soon as the setup function in an enhancer (middleware/guard/interceptor) finishes. For some use cases, it might be required that the resolution is delayed until some later point in the request lifecycle once more information is present in the CLS .

To achieve that, set resolveProxyProviders to false in the enhancer options and call ClsService#resolveProxyProviders() manually at any time.

ClsModule.forRoot({
middleware: {
resolveProxyProviders: false,
},
});

Outside web request

This is also necessary outside the context of web request, otherwise all access to an injected Proxy Provider will return undefined.

With cls.run()

If you set up the context with cls.run() to wrap any subsequent code thar relies on Proxy Providers.

cron.controller.ts
@Injectable()
export class CronController {
constructor(
private readonly someService: SomeService,
private readonly cls: ClsService,
);

@Cron('45 * * * * *')
async handleCron() {
await this.cls.run(async () => {
// prepare the context
this.cls.set('some-key', 'some-value');
// trigger Proxy Provider resolution
await this.cls.resolveProxyProviders();
await this.someService.doTheThing();
});
}
}

With @UseCls()

The resolveProxyProviders is set to false by default on the @UseCls decorator. To achieve the same behavior using it, you must set it to true.

The Proxy Providers will be resolved after the setup phase.

cron.controller.ts
@Injectable()
export class CronController {
constructor(private readonly someService: SomeService);

@Cron('45 * * * * *')
@UseCls({
resolveProxyProviders: true,
setup: (cls) => {
this.cls.set('some-key', 'some-value');
},
})
async handleCron() {
await this.someService.doTheThing();
}
}
- - +
Skip to main content

Proxy Providers

+
+

Since v3.0

+
+

This feature was inspired by how REQUEST-scoped providers ("beans") work in the Spring framework for Java/Kotlin.

+

Using this technique, NestJS does not need to re-create a whole DI-subtree on each request (which has certain implications which disallows the use of REQUEST-scoped providers in certain situations).

+

Rather, it injects a SINGLETON Proxy instance, which delegates access and calls to the actual instance, which is created for each request when the CLS context is set up.

+

There are two kinds of Proxy providers - Class and Factory.

+
note

Please note that there are some caveats to using this technique.

+

Class Proxy Providers

+

These providers look like your regular class providers, with the exception that is the @InjectableProxy() decorator to make them easily distinguishable.

+
@InjectableProxy()
export class User {
id: number;
role: string;
}
+

To register the proxy provider, use the ClsModule.forFeature() registration, +which exposes it an injectable provider in the parent module.

+
ClsModule.forFeature(User);
+

It can be then injected using the class name.

+

However, what will be actually injected is not the instance of the class, but rather the Proxy which redirects all access to an unique instance stored in the CLS context.

+

Populate in an enhancer

+

A Class provider defined in this way will be empty upon creation, so we must assign context values to it somewhere. One place to do it is an interceptor

+
@Injectable()
export class UserInterceptor implements NestInterceptor {
// we can inject the proxy here
constructor(private readonly user: User) {}

intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
const request = context.switchToHttp().getRequest();

// and assign or change values as it was a normal object
this.user.id = request.user.id;
this.user.role = 'admin';

return next.handle();
}
}
+

Self-populating Proxy Provider

+

It is also possible to inject other providers into the Proxy Provider to avoid having to do this in a separate component.

+

For the convenience, the CLS_REQ and CLS_RES are also made into Proxy Providers and are exported from the ClsModule.

+
@InjectableProxy()
export class UserWithRole {
id: number;
role: string;

constructor(
@Inject(CLS_REQ) request: Request,
roleService: RoleService,
) {
this.id = request.user.id;
this.role = roleService.getForId(request.user.id);
}
}
+

If you need to inject a provider from an external module, use the ClsModule.forFeatureAsync() registration to import the containing module.

+
ClsModule.forFeatureAsync({
// make RoleService available to the Proxy provider
import: [RoleModule],
useClass: UserWithRole,
});
+
tip

Using @Inject(CLS_REQ), you can entirely replace @Inject(REQUEST) in REQUEST-SCOPED providers to turn them into CLS-enabled singletons without changing the implementation.

+

Factory Proxy Providers

+

Like your normal factory providers, Proxy factory providers look familiar.

+

They can be only registered using the ClsModule.forFeatureAsync() method.

+

Here's an example of a hypothetical factory provider that dynamically resolves to a specific tenant database connection:

+
ClsModule.forFeatureAsync({
provide: TENANT_CONNECTION,
import: [DatabaseConnectionModule],
inject: [CLS_REQ, DatabaseConnectionService],
useFactory: async (req: Request, dbService: DatabaseConnectionService) => {
const tenantId = req.params['tenantId'];
const connection = await dbService.getTenantConnection(tenantId);
return connection;
},
global: true, // make the TENANT_CONNECTION available for injection globally
});
+

Again, the factory will be called on each request and the result will be stored in the CLS context. The TENANT_CONNECTION provider, however, will still be a singleton and will not affect the scope of whatever it is injected into.

+

In the service, it can be injected using the provide token as usual:

+
@Injectable()
class DogsService {
constructor(
@Inject(TENANT_CONNECTION)
private readonly connection: TenantConnection,
) {}

getAll() {
return this.connection.dogs.getAll();
}
}
+

Caveats

+

No primitive values

+

Proxy Factory providers cannot return a primitive value. This is because the provider itself is the Proxy and it only delegates access once a property or a method is called on it (or if it itself is called in case the factory returns a function).

+

function Proxies must be explicitly enabled

+

In order to support injecting proxies of functions, the underlying proxy target must be a function, too, in order to be able to implement the "apply" trap. However, this information cannot be extracted from the factory function itself, so if your factory returns a function, you must explicitly set the type property to function in the provider definition.

+
{
provide: SOME_FUNCTION,
useFactory: () => {
return () => {
// do something
};
},
type: 'function',
}
+
note

In versions prior to v4.0, calling typeof on an instance of a Proxy provider always returned function, regardless of the value it holds. This is no longer the case. Please see Issue #82

+

Delayed resolution of Proxy Providers

+

By default, proxy providers are resolved as soon as the setup function in an enhancer (middleware/guard/interceptor) finishes. For some use cases, it might be required that the resolution is delayed until some later point in the request lifecycle once more information is present in the CLS .

+

To achieve that, set resolveProxyProviders to false in the enhancer options and call ClsService#resolveProxyProviders() manually at any time.

+
ClsModule.forRoot({
middleware: {
resolveProxyProviders: false,
},
});
+

Outside web request

+

This is also necessary outside the context of web request, otherwise all access to an injected Proxy Provider will return undefined.

+

With cls.run()

+

If you set up the context with cls.run() to wrap any subsequent code thar relies on Proxy Providers.

+
@Injectable()
export class CronController {
constructor(
private readonly someService: SomeService,
private readonly cls: ClsService,
);

@Cron('45 * * * * *')
async handleCron() {
await this.cls.run(async () => {
// prepare the context
this.cls.set('some-key', 'some-value');
// trigger Proxy Provider resolution
await this.cls.resolveProxyProviders();
await this.someService.doTheThing();
});
}
}
+

With @UseCls()

+

Since the @UseCls() decorator wraps the function body with cls.run() automatically, you can use the setup function to prepare the context.

+

The Proxy Providers will be resolved after the setup phase.

+
@Injectable()
export class CronController {
constructor(private readonly someService: SomeService);

@Cron('45 * * * * *')
@UseCls({
setup: (cls) => {
cls.set('some-key', 'some-value');
},
})
async handleCron() {
await this.someService.doTheThing();
}
}
\ No newline at end of file diff --git a/features-and-use-cases/request-id.html b/features-and-use-cases/request-id.html old mode 100755 new mode 100644 index dfd51c2..b86fe47 --- a/features-and-use-cases/request-id.html +++ b/features-and-use-cases/request-id.html @@ -1,16 +1,21 @@ - + - -Request ID | NestJS CLS - - + +Request ID | NestJS CLS + + -
-
Skip to main content

Request ID

Because of a shared storage, CLS is an ideal tool for tracking request (correlation) IDs for the purpose of logging. This package provides an option to automatically generate request IDs in the middleware/guard/interceptor, if you pass { generateId: true } to its options. By default, the generated ID is a string based on Math.random(), but you can provide a custom function in the idGenerator option.

This function receives the Request (or ExecutionContext in case a ClsGuard is used) as the first parameter, which can be used in the generation process and should return (or resolve with) a string ID that will be stored in the CLS for later use.

Below is an example of retrieving the request ID from the request header with a fallback to an autogenerated one.

ClsModule.forRoot({
middleware: {
mount: true,
generateId: true,
idGenerator: (req: Request) =>
req.headers['X-Request-Id'] ?? uuid();
}
})

The ID is stored under the CLS_ID constant in the context. The ClsService provides a shorthand method getId to quickly retrieve it anywhere. It can be for example used in a custom logger:

my.logger.ts
@Injectable()
class MyLogger {
constructor(private readonly cls: ClsService) {}

log(message: string) {
console.log(`<${this.cls.getId()}> ${message}`);
}
}

Calling this from anywhere within a CLS context results in retrieving the ID:

my.service.ts
@Injectable()
class MyService {
constructor(private readonly logger: MyLogger);

hello() {
this.logger.log('Hello');
// -> logs for ex.: "<44c2d8ff-49a6-4244-869f-75a2df11517a> Hello"
}
}
- - +
Skip to main content

Request ID

+

Because of a shared storage, CLS is an ideal tool for tracking request (correlation) IDs for the purpose of logging. This package provides an option to automatically generate request IDs in the middleware/guard/interceptor, if you pass { generateId: true } to its options. By default, the generated ID is a string based on Math.random(), but you can provide a custom function in the idGenerator option.

+

This function receives the Request (or ExecutionContext in case a ClsGuard is used) as the first parameter, which can be used in the generation process and should return (or resolve with) a string ID that will be stored in the CLS for later use.

+

Below is an example of retrieving the request ID from the request header with a fallback to an autogenerated one.

+
ClsModule.forRoot({
middleware: {
mount: true,
generateId: true,
idGenerator: (req: Request) =>
req.headers['X-Request-Id'] ?? uuid();
}
})
+

The ID is stored under the CLS_ID constant in the context. The ClsService provides a shorthand method getId to quickly retrieve it anywhere. It can be for example used in a custom logger:

+
my.logger.ts
@Injectable()
class MyLogger {
constructor(private readonly cls: ClsService) {}

log(message: string) {
console.log(`<${this.cls.getId()}> ${message}`);
}
}
+

Calling this from anywhere within a CLS context results in retrieving the ID:

+
my.service.ts
@Injectable()
class MyService {
constructor(private readonly logger: MyLogger);

hello() {
this.logger.log('Hello');
// -> logs for ex.: "<44c2d8ff-49a6-4244-869f-75a2df11517a> Hello"
}
}
\ No newline at end of file diff --git a/features-and-use-cases/type-safety-and-type-inference.html b/features-and-use-cases/type-safety-and-type-inference.html old mode 100755 new mode 100644 index c7a635c..5a60f51 --- a/features-and-use-cases/type-safety-and-type-inference.html +++ b/features-and-use-cases/type-safety-and-type-inference.html @@ -1,16 +1,37 @@ - + - -Type safety and type inference | NestJS CLS - - + +Type safety and type inference | NestJS CLS + + -
-
Skip to main content

Type safety and type inference

Since v2.0

By default the CLS context is untyped and allows setting and retrieving any string or symbol keys from the context. Some safety can be enforced by using CONSTANTS instead of magic strings, but that might not be enough.

Type-safe ClsService

It is possible to specify a custom interface for the ClsService and get proper typing and automatic type inference when retrieving or setting values. This works even for nested objects using a dot notation.

To create a typed CLS Store, start by creating an interface that extends ClsStore.

my-cls-service.interface.ts
export interface MyClsStore extends ClsStore {
tenantId: string;
user: {
id: number;
authorized: boolean;
};
}

Using a type parameter

Then you can inject the ClsService with a type parameter ClsService<MyClsStore> to make use of the safe typing.

export class MyService {
constructor(private readonly cls: ClsService<MyClsStore>) {}

doTheThing() {
// a boolean type will be enforced here
this.cls.set('user.authorized', true);

// tenantId will be inferred as a string
const tenantId = this.cls.get('tenantId');

// userId will be inferred as a number
const userId = this.cls.get('user.id');

// user will be inferred as { id: number, authorized: boolean }
const user = this.cls.get('user');

// you'll even get intellisense for the keys, because the type
// will be inferred as:
// symbol | 'tenantId˙ | 'user' | 'user.id' | 'user.authorized'

// alternatively, since the `get` method returns the whole store
// when called without arguments, you can use object destructuring
const { tenantId, user } = this.cls.get();

// accessing a nonexistent property will result in a type error
const notExist = this.cls.get('user.name');
}
}

Using Typescript module augmentation

Alternatively, if you feel like using ClsService<MyClsStore> everywhere is tedious, you can instead globally augment the ClsStore interface.

Now you don't need to specify the type parameter on ClsService to still get the string typing.

declare module 'nestjs-cls' {
interface ClsStore {
tenantId: string;
user: {
id: number;
authorized: boolean;
};
}
}

Using a custom provider

For even more transparent approach without augmenting the declaration, you can create a typed ClsService by extending it and creating a custom provider out of it:

export class MyClsService extends ClsService<MyClsStore> {}

@Module({
imports: [ClsModule.forFeature()],
providers: [
{
provide: MyClsService,
useExisting: ClsService,
},
],
exports: [MyClsService],
})
class MyClsModule {}

Now you can inject MyClsService as an alias for ClsService<MyClsStore> without "polluting" the global type space.

Terminal Type

It can happen, that the object you want to store in the context is too complex, or contains cyclic references.

In that case, typescript might complain that type instantiation is too deep, possibly infinite. That is due to the fact that it tries to generate all possible paths inside the ClsStore. If that's the case, you can use the Terminal type to stop generating the paths for a certain subtree:

interface ClsStore {
tenantId: string;
user: Terminal<{
id: number;
authorized: boolean;
}>;
}

This will only generate the paths tenantId | user and won't allow directly accessing nested keys (like cls.get('user.id'), but you'll still get fully typing for things like const { id } = cls.get('user')). See issue #22 for more details.

- - +
Skip to main content

Type safety and type inference

+
+

Since v2.0

+
+

By default the CLS context is untyped and allows setting and retrieving any string or symbol keys from the context. Some safety can be enforced by using CONSTANTS instead of magic strings, but that might not be enough.

+

Type-safe ClsService

+

It is possible to specify a custom interface for the ClsService and get proper typing and automatic type inference when retrieving or setting values. This works even for nested objects using a dot notation.

+

To create a typed CLS Store, start by creating an interface that extends ClsStore.

+
export interface MyClsStore extends ClsStore {
tenantId: string;
user: {
id: number;
authorized: boolean;
};
}
+

Using a type parameter

+

Then you can inject the ClsService with a type parameter ClsService<MyClsStore> to make use of the safe typing.

+
export class MyService {
constructor(private readonly cls: ClsService<MyClsStore>) {}

doTheThing() {
// a boolean type will be enforced here
this.cls.set('user.authorized', true);

// tenantId will be inferred as a string
const tenantId = this.cls.get('tenantId');

// userId will be inferred as a number
const userId = this.cls.get('user.id');

// user will be inferred as { id: number, authorized: boolean }
const user = this.cls.get('user');

// you'll even get intellisense for the keys, because the type
// will be inferred as:
// symbol | 'tenantId˙ | 'user' | 'user.id' | 'user.authorized'

// alternatively, since the `get` method returns the whole store
// when called without arguments, you can use object destructuring
const { tenantId, user } = this.cls.get();

// accessing a nonexistent property will result in a type error
const notExist = this.cls.get('user.name');
}
}
+

Using Typescript module augmentation

+

Alternatively, if you feel like using ClsService<MyClsStore> everywhere is tedious, you can instead globally augment the ClsStore interface.

+

Now you don't need to specify the type parameter on ClsService to still get the string typing.

+
declare module 'nestjs-cls' {
interface ClsStore {
tenantId: string;
user: {
id: number;
authorized: boolean;
};
}
}
+

Using a custom provider

+

For even more transparent approach without augmenting the declaration, you can create a typed ClsService by extending it and creating a custom provider out of it:

+
export class MyClsService extends ClsService<MyClsStore> {}

@Module({
imports: [ClsModule.forFeature()],
providers: [
{
provide: MyClsService,
useExisting: ClsService,
},
],
exports: [MyClsService],
})
class MyClsModule {}
+

Now you can inject MyClsService as an alias for ClsService<MyClsStore> without "polluting" the global type space.

+

Terminal Type

+

It can happen, that the object you want to store in the context is too complex, or contains cyclic references.

+

In that case, typescript might complain that type instantiation is too deep, possibly infinite. That is due to the fact that it tries to generate all possible paths inside the ClsStore. If that's the case, you can use the Terminal type to stop generating the paths for a certain subtree:

+
interface ClsStore {
tenantId: string;
user: Terminal<{
id: number;
authorized: boolean;
}>;
}
+

This will only generate the paths tenantId | user and won't allow directly accessing nested keys (like cls.get('user.id'), but you'll still get fully typing for things like const { id } = cls.get('user')). See issue #22 for more details.

\ No newline at end of file diff --git a/features-and-use-cases/usage-outside-of-web-request.html b/features-and-use-cases/usage-outside-of-web-request.html old mode 100755 new mode 100644 index d6237db..79cd66e --- a/features-and-use-cases/usage-outside-of-web-request.html +++ b/features-and-use-cases/usage-outside-of-web-request.html @@ -1,16 +1,18 @@ - + - -Usage outside of web request | NestJS CLS - - + +Usage outside of web request | NestJS CLS + + -
-
Skip to main content

Usage outside of web request

Sometimes, a part of the app that relies on the CLS storage might need to be called outside of the context of a web request - for example, in a Cron job, while consuming a Queue or during the application bootstrap. In such cases, there are no enhancers that can be bound to the handler to set up the context.

Therefore, you as the the developer are responsible for wrapping the execution with ClsService#run, or using the @UseCls decorator. In any case, if any following code depends on some context variables, these need to be set up manually.

@Injectable()
export class CronController {
constructor(
private readonly someService: SomeService,
private readonly cls: ClsService,
);

@Cron('45 * * * * *')
async handleCronExample1() {
// either explicitly wrap the function body with
// a call to `ClsService#run` ...
await this.cls.run(async () => {
this.cls.set('mode', 'cron');
await this.someService.doTheThing();
});
}

@Cron('90 * * * * *')
// ... or use the convenience decorator which
// does the wrapping for you seamlessly.
@UseCls({
setup: (cls) => {
cls.set('mode', 'cron');
},
})
async handleCronExample2() {
await this.someService.doTheThing();
}
}
caution

Special care must be taken in case you're using Proxy Providers.

- - +
Skip to main content

Usage outside of web request

+

Sometimes, a part of the app that relies on the CLS storage might need to be called outside of the context of a web request - for example, in a Cron job, while consuming a Queue, during the application bootstrap or in CLI apps.

+

In such cases, there are no enhancers that can be bound to the handler to set up the context.

+

Therefore, you as the the developer are responsible for wrapping the execution with ClsService#run, or using the @UseCls decorator. In any case, if any following code depends on some context variables, these need to be set up manually.

+
@Injectable()
export class CronController {
constructor(
private readonly someService: SomeService,
private readonly cls: ClsService,
);

@Cron('45 * * * * *')
async handleCronExample1() {
// either explicitly wrap the function body with
// a call to `ClsService#run` ...
await this.cls.run(async () => {
this.cls.set('mode', 'cron');
await this.someService.doTheThing();
});
}

@Cron('90 * * * * *')
// ... or use the convenience decorator which
// does the wrapping for you seamlessly.
@UseCls({
setup: (cls) => {
cls.set('mode', 'cron');
},
})
async handleCronExample2() {
await this.someService.doTheThing();
}
}
+
caution

Special care must be taken in case you're using Proxy Providers.

\ No newline at end of file diff --git a/img/favicon.ico b/img/favicon.ico old mode 100755 new mode 100644 diff --git a/img/logo.png b/img/logo.png old mode 100755 new mode 100644 diff --git a/index.html b/index.html old mode 100755 new mode 100644 index 4f6e4e0..2b44e9b --- a/index.html +++ b/index.html @@ -1,16 +1,45 @@ - + - -Introduction | NestJS CLS - - + +Introduction | NestJS CLS + + -
-
Skip to main content

NestJS CLS

A continuation-local* storage module compatible with NestJS' dependency injection based on Node's AsyncLocalStorage.

Continuation-local storage allows to store state and propagate it throughout callbacks and promise chains. It allows storing data throughout the lifetime of a web request or any other asynchronous duration. It is similar to thread-local storage in other languages.

Use cases

Some common use cases that this library enables include:

  • Tracking the Request ID and other metadata for logging purposes
  • Keeping track of the user throughout the whole request
  • Making the dynamic Tenant database connection available everywhere in multi-tenant apps
  • Propagating the authentication level or role to restrict access to resources
  • Seamlessly propagating the transaction object of your favourite ORM across services without breaking encapsulation and isolation by explicitly passing it around.
  • Using "request" context in cases where actual REQUEST-scoped providers are not supported (passport strategies, cron controllers, websocket gateways, ...)

Most of these are to some extent solvable using REQUEST-scoped providers or passing the context as a parameter, but these solutions are often clunky and come with a whole lot of other issues.

info

* The name comes from the original implementation based on cls-hooked, which was since replaced by the native AsyncLocalStorage.

Motivation

NestJS is an amazing framework, but in the plethora of awesome built-in features, I still missed one.

I created this library to solve a specific use case, which was limiting access to only those records which had the same TenantId as the request's user in a central manner. The repository code automatically added a WHERE clause to each query, which made sure that other developers couldn't accidentally mix tenant data (all tenants' data were held in the same database) without extra effort.

AsyncLocalStorage is still fairly new and not many people know of its existence and benefits. Here's a nice talk from NodeConf about the history. I've invested a great deal of my personal time in making the use of it as pleasant as possible.

While the use of async_hooks is sometimes criticized for making Node run slower, in my experience, the introduced overhead is negligible compared to any IO operation (like a DB or external API call). If you want fast, use a compiled language.

Also, if you use some tracing library (like otel), it most likely already uses async_hooks under the hood, so you might as well use it to your advantage.

Highlights

New: Version 3.0 introduces Proxy Providers as an alternative to the imperative API. (Minor breaking changes were introduced, see Migration guide).

Version 2.0 brings advanced type safety and type inference. However, it requires features from typescript >= 4.4 - Namely allowing symbol members in interfaces. If you can't upgrade but still want to use this library, install version 1.6.2, which lacks the typing features.

- - +
Skip to main content

NestJS CLS

+

A continuation-local* storage module compatible with NestJS' dependency injection based on Node's AsyncLocalStorage.

+
+

Continuation-local storage allows to store state and propagate it throughout callbacks and promise chains. It allows storing data throughout the lifetime of a web request or any other asynchronous duration. It is similar to thread-local storage in other languages.

+
+

Use cases

+

Some common use cases that this library enables include:

+
    +
  • Tracking the Request ID and other metadata for logging purposes
  • +
  • Keeping track of the user throughout the whole request
  • +
  • Making the dynamic Tenant database connection available everywhere in multi-tenant apps
  • +
  • Propagating the authentication level or role to restrict access to resources
  • +
  • Seamlessly propagating database transaction across services without breaking encapsulation and isolation by explicitly passing it around (Now available with the Transactional plugin)
  • +
  • Using "request" context in cases where actual REQUEST-scoped providers are not supported (passport strategies, cron controllers, websocket gateways, ...)
  • +
+

Most of these are to some extent solvable using REQUEST-scoped providers or passing the context as a parameter, but these solutions are often clunky and come with a whole lot of other issues.

+
info

* The name comes from the original implementation based on cls-hooked, which was since replaced by the native AsyncLocalStorage.

+

Motivation

+

NestJS is an amazing framework, but in the plethora of awesome built-in features, I still missed one.

+

I created this library to solve a specific use case, which was limiting access to only those records which had the same TenantId as the request's user in a central manner. The repository code automatically added a WHERE clause to each query, which made sure that other developers couldn't accidentally mix tenant data (all tenants' data were held in the same database) without extra effort.

+

AsyncLocalStorage is still fairly new and not many people know of its existence and benefits. Here's a nice talk from NodeConf about the history. I've invested a great deal of my personal time in making the use of it as pleasant as possible.

+

While the use of async_hooks is sometimes criticized for making Node run slower, in my experience, the introduced overhead is negligible compared to any IO operation (like a DB or external API call). If you want fast, use a compiled language.

+

Also, if you use some tracing library (like otel), it most likely already uses async_hooks under the hood, so you might as well use it to your advantage.

+

Highlights

+
+

New Version 4.0 brings support for Plugins which enable pre-built integrations with other libraries and frameworks. (See Migration guide for breaking changes).

+
+
+

Version 3.0 introduces Proxy Providers as an alternative to the imperative API. (Minor breaking changes were introduced, see Migration guide).

+
+
+

Version 2.0 brings advanced type safety and type inference. However, it requires features from typescript >= 4.4 - Namely allowing symbol members in interfaces. If you can't upgrade but still want to use this library, install version 1.6.2, which lacks the typing features.

+
\ No newline at end of file diff --git a/introduction/how-it-works.html b/introduction/how-it-works.html old mode 100755 new mode 100644 index dfc038f..86b496d --- a/introduction/how-it-works.html +++ b/introduction/how-it-works.html @@ -1,16 +1,15 @@ - + - -How it works | NestJS CLS - - + +How it works | NestJS CLS + + -
-
Skip to main content

How it works

Continuation-local storage provides a common space for storing and retrieving data throughout the life of a function/callback call chain. In NestJS, this allows for sharing request data across the lifetime of a single request - without the need for request-scoped providers. It also makes it easy to track and log request ids throughout the whole application.

To make CLS work, it is required to set up the CLS context first. This is done by calling cls.run() (or cls.enter(), see Security considerations for more info) somewhere in the app. Once that is set up, anything that is called within the same callback chain has access to the same storage with cls.set() and cls.get().

- - +
Skip to main content

How it works

+

Continuation-local storage provides a common space for storing and retrieving data throughout the life of a function/callback call chain. In NestJS, this allows for sharing request data across the lifetime of a single request - without the need for request-scoped providers. It also makes it easy to track and log request ids throughout the whole application.

+

To make CLS work, it is required to set up the CLS context first. This is done by calling cls.run() (or cls.enter(), see Security considerations for more info) somewhere in the app. Once that is set up, anything that is called within the same callback chain has access to the same storage with cls.set() and cls.get().

\ No newline at end of file diff --git a/introduction/installation.html b/introduction/installation.html old mode 100755 new mode 100644 index 1e64b2d..efe0074 --- a/introduction/installation.html +++ b/introduction/installation.html @@ -1,16 +1,16 @@ - + - -Installation | NestJS CLS - - + +Installation | NestJS CLS + + -
-
Skip to main content

Installation

Install as any other NPM package using your favorite package manager.

npm install nestjs-cls
info

This module requires additional peer deps, like the @nestjs/core and @nestjs/common libraries, but it is assumed those are already installed.

- - +
Skip to main content

Installation

+

Install as any other NPM package using your favorite package manager.

+
npm install nestjs-cls
+
info

This module requires additional peer deps, like the @nestjs/core and @nestjs/common libraries, but it is assumed those are already installed.

\ No newline at end of file diff --git a/introduction/quick-start.html b/introduction/quick-start.html old mode 100755 new mode 100644 index 9c6f64c..d0ebdcc --- a/introduction/quick-start.html +++ b/introduction/quick-start.html @@ -1,16 +1,39 @@ - + - -Quick Start | NestJS CLS - - + +Quick Start | NestJS CLS + + -
-
Skip to main content

Quick Start

Background

This library exposes a dynamic ClsModule which exposes the injectable ClsService and provides means to setting up and interacting with the CLS context.

The CLS context is a storage that wraps around a chain of function calls. It can be accessed anywhere during the lifecycle of such chain via the ClsService.

Example

Below is an example of using this library to store the client's IP address in an interceptor and retrieving it in a service without explicitly passing it along.

note

This example assumes you are using HTTP and therefore can use middleware. For usage with non-HTTP transports, see Setting up CLS context.

Register the ClsModule

Register the ClsModule and automatically mount the ClsMiddleware which wraps the entire request in a shared CLS context on all routes.

app.module.ts
@Module({
imports: [
ClsModule.forRoot({
global: true,
middleware: { mount: true },
}),
],
providers: [AppService],
controllers: [AppController],
})
export class AppModule {}

Create IP-address interceptor

Create an interceptor that

  • injects the ClsService to get access to the current shared CLS context,
  • extract the users's IP address from the request and stores it into the CLS context,
user-ip.interceptor.ts
@Injectable()
export class UserIpInterceptor implements NestInterceptor {
constructor(private readonly cls: ClsService) {}

intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
const request = context.switchToHttp().getRequest();
const userIp = request.connection.remoteAddress;
this.cls.set('ip', userIp);
return next.handle();
}
}

Mount interceptor to controller

By mounting the UserIpInterceptor on the controller, it gets access to the same shared CLS context that the ClsMiddleware set up.

Of course, we could also bind the interceptor globally with APP_INTERCEPTOR.

app.controller.ts
@UseInterceptors(UserIpInterceptor)
@Injectable()
export class AppController {
constructor(private readonly appService: AppService) {}

@Get('/hello')
hello() {
return this.appService.sayHello();
}
}

Access CLS context in service

In the AppService, we can retrieve the user's IP from the CLS context without explicitly passing in anything, and without making the AppService request-scoped!

app.service.ts
@Injectable()
export class AppService {
constructor(private readonly cls: ClsService) {}

sayHello() {
const userIp = this.cls.get('ip');
return 'Hello ' + userIp + '!';
}
}

That's it

This is pretty much all there is to it. This library further provides more quality-of-life features, so read on!

info

If your use-case is really simple, you can instead consider creating a custom implementation with AsyncLocalStorage. Limiting the number of dependencies in your application is always a good idea!

- - +
Skip to main content

Quick Start

+

Background

+

This library exposes a dynamic ClsModule which exposes the injectable ClsService and provides means to setting up and interacting with the CLS context.

+

The CLS context is a storage that wraps around a chain of function calls. It can be accessed anywhere during the lifecycle of such chain via the ClsService.

+

Example

+

Below is an example of using this library to store the client's IP address in an interceptor and retrieving it in a service without explicitly passing it along.

+
note

This example assumes you are using HTTP and therefore can use middleware. For usage with non-HTTP transports, see Setting up CLS context.

+

Register the ClsModule

+

Register the ClsModule and automatically mount the ClsMiddleware which wraps the entire request in a shared CLS context on all routes.

+
app.module.ts
@Module({
imports: [
ClsModule.forRoot({
global: true,
middleware: { mount: true },
}),
],
providers: [AppService],
controllers: [AppController],
})
export class AppModule {}
+

Create IP-address interceptor

+

Create an interceptor that

+
    +
  • injects the ClsService to get access to the current shared CLS context,
  • +
  • extract the users's IP address from the request and stores it into the CLS context,
  • +
+
user-ip.interceptor.ts
@Injectable()
export class UserIpInterceptor implements NestInterceptor {
constructor(private readonly cls: ClsService) {}

intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
const request = context.switchToHttp().getRequest();
const userIp = request.connection.remoteAddress;
this.cls.set('ip', userIp);
return next.handle();
}
}
+

Mount interceptor to controller

+

By mounting the UserIpInterceptor on the controller, it gets access to the same shared CLS context that the ClsMiddleware set up.

+

Of course, we could also bind the interceptor globally with APP_INTERCEPTOR.

+
app.controller.ts
@UseInterceptors(UserIpInterceptor)
@Injectable()
export class AppController {
constructor(private readonly appService: AppService) {}

@Get('/hello')
hello() {
return this.appService.sayHello();
}
}
+

Access CLS context in service

+

In the AppService, we can retrieve the user's IP from the CLS context without explicitly passing in anything, and without making the AppService request-scoped!

+
app.service.ts
@Injectable()
export class AppService {
constructor(private readonly cls: ClsService) {}

sayHello() {
const userIp = this.cls.get('ip');
return 'Hello ' + userIp + '!';
}
}
+

That's it

+

This is pretty much all there is to it. This library further provides more quality-of-life features, so read on!

+
info

If your use-case is really simple, you can instead consider creating a custom implementation with AsyncLocalStorage. Limiting the number of dependencies in your application is always a good idea!

\ No newline at end of file diff --git a/lunr-index-1697660838110.json b/lunr-index-1697660838110.json deleted file mode 100755 index 209a353..0000000 --- a/lunr-index-1697660838110.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,168.091,1,26.193]],["content/0",[]],["keywords/0",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/1",[8,82.762,9,204.318]],["content/1",[1,0.194,3,0.56,4,1.094,5,1.932,6,1.295,8,0.914,9,2.258,10,4.993,11,2.993,12,4.993,13,4.993,14,6.697,15,2.466,16,5.759,17,4.489,18,5.759,19,2.843,20,4.489,21,6.697,22,5.759,23,4.113,24,6.697,25,4.489,26,4.993,27,3.562,28,4.993,29,5.759,30,5.759,31,4.489,32,4.113,33,4.489,34,5.759,35,2.166,36,5.759,37,5.759,38,5.759,39,2.582,40,5.759,41,5.759,42,3.812,43,2.843,44,4.113,45,5.759,46,5.759,47,4.113,48,4.241,49,5.759,50,5.759,51,4.993,52,1.715,53,4.113,54,5.759,55,5.759,56,4.993,57,3.347,58,4.489,59,4.993,60,1.279,61,5.759,62,5.759,63,2.707,64,5.759,65,5.759,66,7.45,67,5.759,68,3.562,69,3.347,70,4.489,71,5.759,72,3.16,73,4.993,74,5.759,75,4.993,76,5.759]],["keywords/1",[]],["title/2",[77,973.298]],["content/2",[0,1.091,6,1.135,8,1.347,9,1.326,11,4.04,19,2.492,24,6.06,25,3.935,35,1.898,43,2.492,78,5.048,79,4.377,80,5.048,81,5.048,82,5.048,83,2.934,84,4.808,85,5.048,86,3.122,87,2.623,88,5.048,89,4.377,90,4.377,91,3.605,92,5.048,93,4.808,94,3.122,95,5.048,96,5.048,97,5.048,98,5.048,99,3.122,100,2.623,101,5.048,102,5.048,103,4.377,104,4.377,105,4.377,106,3.935,107,3.935,108,5.048,109,5.048,110,5.048,111,6.741,112,5.048,113,5.048,114,5.048,115,5.048,116,2.934,117,5.048,118,5.048,119,4.377,120,3.605,121,5.048,122,4.377,123,5.048,124,5.048,125,5.048,126,5.048,127,5.048,128,5.048,129,5.048,130,5.048,131,5.048,132,3.341,133,3.329,134,5.048,135,2.934,136,7.775,137,3.605,138,5.048,139,5.048,140,2.934,141,5.048,142,5.048,143,4.377,144,5.048,145,5.048,146,5.048,147,5.048,148,4.377,149,5.048,150,4.377,151,2.934,152,2.162,153,3.605,154,5.048,155,5.048,156,5.048,157,5.048,158,5.048,159,3.935,160,3.935,161,5.048,162,5.048,163,5.048]],["keywords/2",[]],["title/3",[164,973.298]],["content/3",[7,0.875,8,0.831,11,4.059,44,5.577,52,1.559,70,6.088,83,6.21,84,4.83,116,4.539,143,9.265,151,4.539,153,5.577,165,8.062,166,7.81,167,5.577,168,7.81,169,7.81,170,6.088,171,4.059,172,6.088,173,6.088,174,7.81,175,7.81,176,7.81,177,5.216,178,6.772,179,5.577,180,4.539,181,6.088,182,3.501,183,7.81,184,6.088,185,6.772,186,7.81,187,4.83,188,6.772,189,6.772,190,6.088,191,7.81,192,7.81]],["keywords/3",[]],["title/4",[193,258.596,194,292.396]],["content/4",[]],["keywords/4",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/5",[195,973.298]],["content/5",[1,0.333,3,0.352,4,0.576,7,0.919,8,1.054,9,1.422,15,2.318,27,3.347,39,4.438,52,1.637,63,2.544,69,3.146,86,3.347,93,3.347,132,3.582,133,2.318,171,5.145,177,2.318,193,3.292,194,3.723,196,2.217,197,1.952,198,3.582,199,3.146,200,4.693,201,2.958,202,4.693,203,6.419,204,2.813,205,7.07,206,2.672,207,5.412,208,2.969,209,3.676,210,5.412,211,3.347,212,3.854,213,3.146,214,2.813,215,2.813,216,3.582,217,3.512,218,3.865,219,5.412,220,4.693,221,2.969,222,4.219,223,4.219,224,4.693,225,4.219,226,1.422,227,3.865,228,2.969,229,4.693,230,4.693,231,4.693,232,7.11,233,1.73,234,3.865,235,2.969,236,3.347,237,5.412,238,4.219,239,2.672,240,4.693,241,3.865,242,2.727,243,6.392,244,5.412,245,3.582,246,4.219]],["keywords/5",[]],["title/6",[247,973.298]],["content/6",[7,1.303,8,1.358,9,1.357,23,3.687,27,3.193,39,2.315,48,3.905,52,2.838,63,2.427,106,4.025,133,2.211,177,2.211,180,3.001,182,2.315,187,4.893,193,2.631,194,3.616,197,3.469,203,3.001,214,2.684,217,3.388,218,3.687,220,8.339,221,2.833,224,10.631,225,4.025,226,2.832,227,3.687,233,3.445,234,5.65,248,7.911,249,7.911,250,5.164,251,2.833,252,8.339,253,4.477,254,5.65,255,6.86,256,1.65,257,5.164,258,5.164,259,4.025,260,4.025,261,6.86,262,4.477,263,3.193,264,4.025,265,5.164,266,3.687,267,3.104,268,3.418,269,4.477,270,2.211,271,2.833]],["keywords/6",[]],["title/7",[60,82.565,194,208.527,201,200.036,239,273.746]],["content/7",[1,0.305,3,0.699,4,1.142,7,0.425,8,0.836,9,0.996,15,2.653,27,4.857,39,3.52,52,0.757,60,1.35,63,2.911,72,2.08,79,3.288,100,4.081,132,2.51,140,2.204,152,2.653,160,6.122,182,4.065,194,1.426,198,5.198,199,3.6,200,3.288,202,3.288,203,2.204,206,1.872,209,1.7,213,6.234,214,5.881,215,4.712,216,6.615,221,2.08,239,1.872,242,2.06,243,2.956,267,2.43,270,1.624,271,2.08,272,3.792,273,2.51,274,5.371,275,2.538,276,1.979,277,2.956,278,2.956,279,2.51,280,2.708,281,6.122,282,3.288,283,5.198,284,4.829,285,3.831,286,4.712,287,6.194,288,6.194,289,5.198,290,3.288,291,3.792,292,3.792,293,3.288,294,3.288,295,3.792,296,3.398,297,2.06,298,5.371,299,5.371,300,3.288,301,3.792,302,3.792,303,2.708,304,2.833,305,3.288,306,3.792,307,2.777,308,2.956,309,3.792,310,2.956,311,3.288,312,2.956,313,1.782,314,3.288,315,2.708,316,2.08,317,2.708,318,2.956,319,2.956,320,2.956,321,3.288,322,3.792]],["keywords/7",[]],["title/8",[151,565.686]],["content/8",[151,8.021,194,4.384,297,3.877,323,8.325,324,10.108,325,11.658,326,7.717]],["keywords/8",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/9",[44,462.311,327,504.646,328,561.327]],["content/9",[1,0.322,3,0.728,8,1.189,32,4.752,35,3.591,44,4.752,52,1.328,60,1.817,83,3.867,99,4.115,133,2.85,135,3.867,197,2.4,226,1.748,233,3.57,235,3.651,236,4.115,240,5.769,267,3.747,297,2.213,315,4.752,320,5.187,327,5.187,328,5.769,329,4.115,330,6.654,331,3.867,332,6.654,333,7.444,334,5.906,335,6.654,336,6.654,337,5.187,338,6.654,339,3.867,340,5.187,341,5.769,342,6.654,343,3.285,344,6.654,345,4.752,346,3.867,347,4.404,348,6.654,349,4.404,350,6.654,351,6.654,352,6.654,353,6.654,354,6.654,355,6.654,356,4.752]],["keywords/9",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/10",[1,21.808,203,376.26,296,355.176]],["content/10",[]],["keywords/10",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/11",[201,351.097]],["content/11",[1,0.3,4,1.24,9,2.336,31,6.931,39,3.986,48,4.389,60,2.23,63,4.179,182,3.986,196,3.642,201,4.204,215,4.621,276,2.841,285,5.499,296,4.878,304,3.207,310,9.085,357,7.709,358,8.891,359,7.709,360,7.709,361,7.709,362,7.709]],["keywords/11",[]],["title/12",[239,480.47]],["content/12",[1,0.303,3,0.585,31,7,39,4.026,48,4.433,60,2.267,63,4.22,182,4.026,196,3.679,206,4.433,209,5.259,215,4.667,276,2.87,285,5.554,289,5.944,296,4.927,304,3.239,343,4.433,357,7.786,360,7.786,361,7.786,362,7.786,363,8.98]],["keywords/12",[]],["title/13",[364,644.237]],["content/13",[11,5.621,120,7.724,198,7.16,216,7.16,323,7.724,331,6.287,364,7.16,365,10.816,366,9.379,367,10.816,368,7.16,369,10.816,370,10.816,371,10.816]],["keywords/13",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/14",[4,82.762,15,332.998]],["content/14",[1,0.317,3,0.425,4,1.288,8,1.003,9,1.064,14,3.155,15,5.352,17,5.092,48,1.998,52,1.639,60,2.101,63,1.902,73,3.51,86,2.503,100,2.104,152,1.733,160,3.155,182,2.928,194,3.088,196,1.658,197,1.46,201,1.46,205,2.891,208,2.221,214,2.104,226,1.716,233,2.087,245,2.679,251,3.584,267,2.563,270,1.733,271,2.221,276,1.293,277,3.155,280,4.665,281,6.401,282,3.51,284,5.092,285,2.503,286,4.268,289,2.679,293,3.51,297,2.172,304,2.962,307,2.928,329,2.503,339,4.773,346,2.353,347,2.679,372,4.048,373,4.048,374,4.048,375,4.048,376,4.048,377,4.048,378,3.51,379,3.796,380,4.048,381,4.048,382,4.048,383,4.048,384,4.048,385,4.048,386,3.51,387,3.51,388,4.048,389,5.664,390,6.532,391,4.048,392,6.532,393,3.796,394,3.395,395,4.048,396,4.048,397,4.048,398,2.679,399,2.679,400,4.048,401,3.51,402,3.155,403,4.048,404,4.048,405,4.048,406,4.048,407,4.048,408,4.048,409,4.048,410,4.048]],["keywords/14",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/15",[411,644.237]],["content/15",[0,1.387,1,0.313,3,0.418,4,1.278,5,1.443,10,5.564,14,5.002,15,2.748,17,5.002,20,7.252,21,5.002,35,2.413,43,3.168,52,1.857,69,3.729,93,5.753,111,8.066,133,3.984,152,4.687,171,3.335,180,3.729,184,5.002,228,3.52,242,3.094,245,4.247,246,7.252,279,4.247,307,2.876,313,4.372,339,3.729,346,3.729,347,6.158,364,4.247,398,4.247,411,6.158,412,6.417,413,6.417,414,5.564,415,5.002,416,6.417,417,5.564,418,6.417,419,3.016,420,6.417,421,6.417,422,5.002,423,6.417,424,4.582,425,5.564,426,5.002,427,5.002,428,5.564,429,5.002,430,6.417,431,6.417]],["keywords/15",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/16",[190,758.708]],["content/16",[0,2.043,1,0.318,8,1.006,11,4.912,69,5.494,91,6.75,159,7.368,180,5.494,190,11.01,193,3.143,203,5.494,329,7.499,432,12.126,433,9.452,434,9.452,435,9.452,436,9.452,437,9.452,438,9.452,439,9.452,440,8.196]],["keywords/16",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/17",[424,695.06]],["content/17",[1,0.179,3,0.84,4,1.32,6,1.195,8,1.32,9,2.126,20,4.144,35,1.999,106,4.144,135,4.702,140,5.691,152,2.277,180,3.09,194,1.999,197,3.948,204,5.089,206,2.624,208,5.372,211,3.288,214,2.763,216,5.354,239,2.624,242,1.768,259,4.144,275,2.178,276,2.585,297,1.768,312,4.144,313,2.499,317,3.796,323,3.796,331,3.09,349,3.519,368,3.519,417,4.61,419,2.499,424,3.796,441,5.316,442,7.633,443,5.316,444,8.089,445,7.014,446,5.316,447,5.316,448,5.316,449,8.49,450,4.61,451,4.61,452,8.089,453,4.144,454,5.316,455,4.61,456,4.61,457,5.316,458,6.306,459,5.316,460,4.144,461,5.316,462,5.316,463,2.763,464,5.316,465,4.144,466,5.316]],["keywords/17",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/18",[42,514.68,187,480.88]],["content/18",[]],["keywords/18",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/19",[297,323.691]],["content/19",[1,0.442,3,0.855,4,0.404,7,0.425,8,0.659,15,1.624,35,1.426,39,2.777,43,1.872,52,1.237,60,1.35,63,3.691,99,4.857,116,3.6,140,6.234,151,2.204,159,2.956,177,2.653,182,4.065,194,3.41,198,4.1,199,4.564,213,3.6,214,3.219,216,2.51,223,2.956,231,5.371,233,1.212,238,2.956,242,2.612,245,4.1,251,2.08,275,1.553,283,4.1,286,1.971,297,1.261,298,8.666,299,3.288,303,2.708,307,2.777,339,3.6,346,4.564,386,3.288,387,3.288,398,2.51,429,7.791,467,3.792,468,11.805,469,2.708,470,2.708,471,3.792,472,9.067,473,7.853,474,5.483,475,3.792,476,3.792,477,3.792,478,3.792,479,3.792,480,3.792,481,3.288,482,3.288,483,3.792,484,3.288,485,3.792,486,11.805,487,3.792,488,5.371,489,3.792,490,3.288,491,3.792,492,3.792,493,3.792,494,3.792,495,3.792,496,2.956,497,2.708]],["keywords/19",[]],["title/20",[488,843.924]],["content/20",[1,0.213,3,0.929,9,1.662,32,4.518,35,2.379,39,2.836,43,3.123,60,1.371,86,3.912,87,3.288,116,5.352,120,9.048,140,6.309,194,2.379,197,3.321,198,4.187,199,3.677,203,3.677,214,3.288,242,3.062,260,9.294,316,3.471,341,5.485,359,5.485,398,4.187,429,7.178,474,3.471,490,5.485,498,6.326,499,9.208,500,6.326,501,9.208,502,5.485,503,4.518,504,5.485,505,6.326,506,6.326,507,4.931,508,6.326,509,6.326,510,6.326,511,5.485,512,6.575,513,9.208,514,9.208,515,6.326]],["keywords/20",[]],["title/21",[8,68.905,9,170.109,83,376.26]],["content/21",[8,1.098,9,2.712,52,2.06,83,7.449,107,8.045,133,4.42,193,3.432,203,5.998,267,4.049,323,7.37,324,8.948,415,8.045,516,10.32,517,8.948,518,8.045,519,10.32,520,10.32]],["keywords/21",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/22",[177,357.669,178,480.822,179,396.007]],["content/22",[]],["keywords/22",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/23",[177,277.244,297,215.299,442,504.646]],["content/23",[1,0.358,8,0.824,15,3.316,19,3.822,39,3.471,60,1.943,87,5.52,94,4.788,100,4.024,135,4.5,177,5.192,179,5.529,187,7.498,213,4.5,242,2.575,251,4.248,256,2.474,286,4.024,297,2.575,307,3.471,339,4.5,411,5.125,469,7.585,474,4.248,503,5.529,518,6.036,521,6.713,522,7.743,523,6.036,524,7.743,525,7.743,526,8.28,527,7.743,528,7.743,529,4.5,530,5.529]],["keywords/23",[]],["title/24",[8,68.905,63,304.255,177,277.244]],["content/24",[1,0.172,8,0.835,15,2.186,19,5.29,21,3.979,35,1.92,39,2.288,43,2.52,60,2.326,63,2.399,94,6.627,133,2.186,152,2.186,167,3.646,177,4.952,179,7.652,185,4.426,197,1.842,213,4.558,226,1.341,233,1.631,256,1.631,270,2.186,283,3.379,286,2.653,290,4.426,297,1.698,304,1.842,307,2.288,343,5.708,393,2.967,394,2.653,399,3.379,401,4.426,442,3.979,512,3.646,523,3.979,529,4.558,530,3.646,531,6.113,532,5.105,533,5.105,534,3.646,535,5.105,536,5.105,537,7.842,538,5.105,539,5.105,540,4.426,541,5.105,542,5.105,543,5.105,544,5.105,545,5.105,546,5.105,547,5.105,548,5.105,549,5.105]],["keywords/24",[]],["title/25",[8,59.023,181,432.271,193,184.421,550,432.271]],["content/25",[0,1.781,1,0.278,8,0.877,15,3.529,19,4.067,28,7.144,60,2.142,63,3.872,84,5.096,94,5.096,167,5.884,177,4.745,187,6.852,193,2.74,212,3.872,213,4.789,286,5.758,297,2.74,315,5.884,345,5.884,419,3.872,469,7.912,521,7.144,529,4.789,530,5.884,531,6.423,550,6.423,551,8.239,552,8.239,553,7.144,554,6.423]],["keywords/25",[]],["title/26",[8,68.905,52,129.248,251,355.176]],["content/26",[43,5.182,52,2.399,60,2.144,87,5.456,177,4.496,193,2.531,212,3.577,217,3.26,218,5.436,226,2.758,228,4.176,233,2.432,251,4.176,256,3.355,297,3.491,327,5.933,345,5.436,414,6.6,523,5.933,526,8.183,531,8.183,550,5.933,554,5.933,555,7.612,556,7.612,557,12.954,558,7.612,559,7.612,560,7.612,561,7.612]],["keywords/26",[]],["title/27",[177,332.998,562,674.21]],["content/27",[3,0.404,8,0.659,9,2.383,15,3.884,19,4.477,35,2.33,39,2.777,60,1.954,68,3.832,84,3.832,94,5.608,135,5.271,153,4.424,171,3.22,177,4.594,181,4.829,182,2.777,184,4.829,187,3.832,213,3.601,228,3.399,229,5.372,253,5.372,273,4.101,274,5.372,281,8.361,283,4.101,286,3.22,307,2.777,343,3.058,469,6.476,503,4.424,529,3.601,530,4.424,540,5.372,562,5.372,563,5.372,564,5.372,565,6.195,566,6.195,567,6.195,568,6.195,569,4.829,570,6.195,571,5.372,572,10.726,573,6.195,574,5.372,575,6.195,576,5.372,577,6.195,578,6.195,579,5.372,580,6.195,581,6.195,582,6.195,583,6.195,584,6.195,585,6.195]],["keywords/27",[]],["title/28",[331,565.686]],["content/28",[]],["keywords/28",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/29",[586,758.708]],["content/29",[3,0.496,8,1.117,9,2,53,5.436,57,4.424,60,1.133,68,6.492,86,4.707,91,5.436,100,3.956,120,5.436,151,4.424,165,5.038,171,3.956,194,2.862,201,2.746,204,6.245,242,2.531,275,4.301,276,4.139,304,2.746,321,6.6,329,4.707,331,4.424,356,5.436,411,5.038,419,3.577,450,6.6,451,6.6,503,5.436,563,6.6,586,5.933,587,5.933,588,5.436,589,9.102,590,6.6,591,6.6,592,7.612,593,7.612,594,7.612]],["keywords/29",[]],["title/30",[595,758.708]],["content/30",[1,0.291,4,0.919,8,1.217,9,2.269,13,7.487,60,1.286,104,7.487,132,5.716,148,7.487,197,3.115,206,4.263,209,3.871,238,8.912,239,5.643,267,3.388,296,4.737,307,3.871,356,6.166,398,5.716,399,5.716,481,7.487,482,7.487,496,6.731,569,6.731,589,7.487,590,7.487,596,8.635,597,6.166,598,8.635,599,8.635,600,7.487,601,7.487]],["keywords/30",[]],["title/31",[60,96.389,602,561.327,603,561.327]],["content/31",[1,0.36,3,0.696,8,1.138,194,4.019,204,5.554,241,7.633,271,5.864,276,3.415,329,6.61,331,6.212,340,8.331,587,8.331,588,7.633,595,8.331,604,10.688]],["keywords/31",[]],["title/32",[60,96.389,602,561.327,603,561.327]],["content/32",[1,0.35,3,0.676,8,1.369,48,3.695,68,4.629,93,4.629,133,3.205,165,4.954,167,5.345,194,2.815,197,2.7,204,5.393,206,3.695,208,4.106,211,4.629,242,2.489,267,2.936,268,4.954,271,4.106,275,3.066,276,2.392,304,3.743,305,6.49,312,5.835,313,3.518,318,5.835,319,5.835,419,3.518,445,6.49,569,5.835,595,5.835,600,6.49,601,6.49,605,7.485,606,5.835,607,7.485,608,6.49,609,5.835,610,7.485,611,7.485,612,7.485,613,7.485,614,7.485,615,6.49]],["keywords/32",[]],["title/33",[616,973.298]],["content/33",[3,0.562,8,0.919,119,7.487,188,7.487,205,6.166,208,4.737,211,5.34,235,4.737,242,2.872,255,9.912,313,4.058,329,5.34,331,5.019,356,6.166,366,7.487,411,7.567,465,8.912,534,6.166,571,7.487,609,6.731,617,12.816,618,8.635,619,8.635,620,8.635,621,8.635,622,8.635,623,8.635,624,8.635,625,8.635,626,8.635]],["keywords/33",[]],["title/34",[58,758.708]],["content/34",[58,7.777,59,8.65,171,5.185,180,5.798,197,3.599,208,5.473,211,6.17,212,4.689,239,4.925,275,4.087,294,8.65,419,4.689,553,8.65,597,7.124,627,8.65,628,8.65,629,7.124,630,9.976,631,8.65,632,8.65,633,9.976]],["keywords/34",[]],["title/35",[517,674.21,518,606.131]],["content/35",[]],["keywords/35",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/36",[634,973.298]],["content/36",[1,0.398,3,0.769,11,4.714,23,6.478,35,3.411,52,1.811,152,3.885,233,2.899,242,3.017,246,9.204,267,3.558,297,3.927,313,4.263,316,4.976,326,6.004,337,9.204,347,6.004,389,7.865,458,7.071,635,9.071,636,9.071,637,7.865,638,7.865,639,7.865,640,9.071]],["keywords/36",[]],["title/37",[379,565.686]],["content/37",[1,0.3,3,0.579,8,1.384,11,4.621,42,5.885,43,4.389,47,6.349,48,4.389,171,4.621,201,3.207,205,6.349,209,3.986,236,5.499,242,2.957,307,3.986,313,4.179,339,5.168,368,5.885,379,6.774,440,7.709,465,6.931,597,6.349,641,8.891,642,6.349,643,8.891,644,11.654,645,6.931,646,8.891]],["keywords/37",[]],["title/38",[221,426.602,326,514.68]],["content/38",[1,0.291,3,0.562,4,0.919,52,1.724,57,5.019,60,2.215,100,4.488,193,2.872,196,3.537,201,3.115,204,4.488,212,4.058,217,3.698,221,4.737,226,2.269,256,2.759,276,3.653,278,6.731,304,4.124,316,4.737,326,5.716,346,5.019,463,4.488,470,6.166,647,4.737,648,6.731,649,7.487]],["keywords/38",[]],["title/39",[87,288.188,209,248.588,368,367.052,642,396.007]],["content/39",[1,0.403,3,0.492,4,1.111,19,3.726,35,2.838,60,2.139,72,4.141,87,3.922,209,3.383,223,5.884,226,1.983,233,3.335,256,2.412,270,3.232,289,4.996,297,3.471,307,3.383,317,5.39,343,5.152,346,4.387,368,4.996,393,4.387,394,3.922,642,5.39,650,7.548,651,7.548,652,7.548,653,6.544,654,6.544,655,6.544,656,6.544,657,6.544,658,6.544,659,9.049,660,7.548,661,7.548,662,6.544]],["keywords/39",[]],["title/40",[57,376.26,209,290.209,276,206.875]],["content/40",[1,0.288,3,0.557,35,3.216,57,4.971,60,2.106,93,5.289,204,4.445,209,3.834,212,4.02,226,2.247,233,2.733,242,2.844,256,2.733,270,3.663,276,2.733,313,4.02,346,4.971,393,4.971,394,4.445,402,6.667,608,7.416,629,6.108,648,8.855,649,7.416,653,7.416,663,8.553,664,7.416,665,8.553,666,8.553,667,8.553,668,8.553]],["keywords/40",[]],["title/41",[1,18.68,3,36.116,35,208.527,42,367.052]],["content/41",[1,0.371,3,0.532,4,0.869,5,1.836,43,5.436,47,5.831,48,4.03,60,2.274,133,3.497,226,2.145,233,2.609,256,2.609,270,3.497,297,2.715,339,4.745,343,4.03,393,4.745,394,4.243,402,6.364,428,7.079,642,5.831,648,9.713,659,9.548,669,8.165,670,8.165,671,8.165,672,8.165]],["keywords/41",[]],["title/42",[574,843.924]],["content/42",[6,2.082,8,0.985,9,2.433,11,4.811,52,1.848,69,5.38,72,5.079,83,5.38,87,4.811,90,8.027,228,5.079,251,5.079,261,8.027,279,6.128,315,6.611,333,7.216,415,7.216,529,5.38,673,9.257,674,9.257,675,9.257,676,9.257,677,9.257,678,9.257,679,8.027,680,7.216,681,9.257,682,9.257]],["keywords/42",[]],["title/43",[172,606.131,173,606.131]],["content/43",[9,2.877,11,5.69,116,6.363,165,7.247,172,10.361,173,10.361,189,9.493,199,6.363,269,9.493,683,9.493,684,10.948]],["keywords/43",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/44",[4,59.023,334,342.946,645,432.271,685,367.052]],["content/44",[1,0.294,2,1.578,3,0.568,4,0.747,7,0.496,8,0.928,9,2.29,47,3.161,52,0.884,56,7.557,60,2.295,99,2.737,107,3.45,137,3.161,152,3.005,182,3.145,199,2.573,226,1.163,233,1.414,239,2.185,242,2.333,243,3.45,256,1.414,263,4.339,267,1.737,275,1.813,279,2.93,296,2.428,297,1.472,300,3.838,310,3.45,313,3.297,316,4.782,333,3.45,334,4.339,347,2.93,349,2.93,379,2.573,394,3.646,419,3.297,426,3.45,453,3.45,460,3.45,597,3.161,628,3.838,631,3.838,632,3.838,637,3.838,639,3.838,645,3.45,683,3.838,685,4.644,686,4.426,687,4.426,688,4.426,689,4.426,690,3.838,691,4.426,692,7.016,693,5.469,694,3.838,695,2.93,696,5.469,697,6.084,698,3.838,699,4.426,700,4.426,701,6.224,702,3.838,703,4.426,704,6.084,705,4.426,706,3.838,707,4.426,708,4.426,709,4.426]],["keywords/44",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/45",[8,82.762,263,480.88]],["content/45",[1,0.294,2,2.587,3,0.749,4,0.928,8,1.457,32,6.226,69,5.067,91,6.226,152,3.734,197,4.645,235,4.783,241,6.226,263,7.964,267,3.42,270,3.734,316,4.783,334,5.392,422,6.796,554,6.796,685,5.771,693,8.969,710,8.719,711,8.719,712,8.719]],["keywords/45",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/46",[8,82.762,201,280.491]],["content/46",[]],["keywords/46",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/47",[100,505.818]],["content/47",[60,2.337,193,3.318,196,4.087,201,3.599,212,4.689,217,4.272,226,2.621,256,3.188,276,3.188,304,4.527,463,5.185,647,5.473]],["keywords/47",[]],["title/48",[275,398.724]],["content/48",[1,0.36,8,1.138,57,6.212,137,7.633,153,7.633,201,4.725,228,5.864,268,7.074,278,8.331,419,5.023,576,9.267,713,10.688,714,7.633,715,10.688]],["keywords/48",[]],["title/49",[193,323.691]],["content/49",[9,2.185,60,2.318,72,4.562,193,3.708,194,3.127,196,3.407,201,3,204,4.322,212,3.908,215,5.794,217,3.561,226,2.185,242,2.766,256,2.657,275,3.407,276,3.563,304,3,463,4.322,629,5.938,647,4.562,716,8.316,717,8.316,718,8.316,719,8.316,720,8.316]],["keywords/49",[]],["title/50",[8,82.762,606,606.131]],["content/50",[0,1.387,8,1.165,9,1.686,48,3.168,52,1.281,60,2.041,68,3.968,83,3.729,87,3.335,116,3.729,137,4.582,140,3.729,151,3.729,165,4.247,171,3.335,196,2.629,197,3.356,201,4.596,204,3.335,235,3.52,236,3.968,242,3.094,267,2.517,268,4.247,273,4.247,275,2.629,276,3.497,343,3.168,349,4.247,379,3.729,419,3.016,426,5.002,455,5.564,534,4.582,579,8.066,591,5.564,606,7.252,627,5.564,629,4.582,690,8.066,695,4.247,701,6.643,721,6.417,722,6.417,723,6.417,724,6.417,725,6.417,726,6.417,727,6.417,728,6.417,729,6.417]],["keywords/50",[]],["title/51",[1,18.68,3,36.116,242,184.421,313,260.619]],["content/51",[]],["keywords/51",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/52",[225,758.708]],["content/52",[60,2.328,193,3.246,196,3.998,201,3.521,212,4.587,217,4.18,226,2.565,256,3.119,276,3.119,280,6.97,304,4.903,463,5.072,647,5.355]],["keywords/52",[]],["title/53",[2,218.846]],["content/53",[60,2.32,182,5.158,193,2.9,201,3.145,212,4.098,217,3.734,226,2.291,230,7.56,233,2.786,234,6.226,256,2.786,276,2.786,280,6.226,284,6.796,285,5.392,304,4.645,463,4.531,647,4.783,730,11.505,731,8.719]],["keywords/53",[]],["title/54",[60,96.389,732,561.327,733,561.327]],["content/54",[6,1.453,7,0.724,8,1.17,9,1.698,52,2.404,53,4.615,60,2.239,84,3.997,87,3.359,116,3.756,196,2.648,197,3.373,201,2.331,221,5.13,222,5.038,226,1.698,233,2.988,251,3.546,276,2.065,297,2.149,304,2.331,343,3.19,345,4.615,379,3.756,470,4.615,526,5.038,714,4.615,732,5.604,733,5.604,734,6.463,735,9.351,736,6.463,737,6.463,738,6.463,739,6.463,740,6.463,741,6.463,742,10.988,743,6.463,744,6.463,745,12.043,746,6.463,747,6.463,748,6.463]],["keywords/54",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/55",[8,82.762,209,348.57]],["content/55",[1,0.272,3,0.346,8,1.165,9,1.397,48,2.624,52,1.615,57,3.09,60,2.291,99,3.288,100,2.763,133,2.277,140,3.09,193,2.69,194,1.999,196,4.011,197,2.918,199,3.09,206,3.993,208,4.438,209,5.278,211,3.288,215,2.763,217,3.464,226,2.126,235,2.917,236,5.003,241,3.796,254,3.796,256,2.585,259,4.144,273,3.519,275,3.314,276,3.129,304,1.918,316,2.917,318,4.144,319,4.144,340,4.144,449,4.61,458,4.144,463,4.204,512,3.796,586,4.144,615,4.61,647,4.438,664,7.014,679,4.61,749,5.316,750,4.61,751,5.316,752,4.61,753,5.316,754,4.61,755,5.316]],["keywords/55",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/56",[7,87.161,52,155.24]],["content/56",[]],["keywords/56",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/57",[7,72.568,52,129.248,226,170.109]],["content/57",[1,0.254,3,0.492,7,1.17,8,1.111,15,3.232,19,3.726,33,5.884,35,2.838,51,6.544,52,2.577,60,1.554,70,5.884,133,3.232,193,2.51,218,5.39,221,4.141,226,3.392,233,3.823,256,2.412,260,5.884,263,4.668,264,8.136,286,3.922,307,3.383,337,5.884,529,4.387,714,5.39,754,6.544,756,6.544,757,7.548,758,7.548,759,7.548,760,7.548,761,7.548,762,9.049,763,7.548,764,7.548]],["keywords/57",[]],["title/58",[239,383.847,765,674.21]],["content/58",[3,0.464,4,0.759,7,0.799,19,4.951,39,3.196,52,1.423,60,2.214,72,3.911,86,4.409,170,5.557,209,3.196,226,2.635,233,3.205,256,2.278,270,3.053,289,4.719,317,5.091,343,3.519,393,4.143,394,3.705,425,6.181,474,5.502,504,6.181,507,5.557,511,8.696,534,5.091,588,5.091,654,6.181,655,6.181,656,6.181,657,6.181,658,6.181,662,6.181,750,6.181,766,7.129,767,7.129,768,7.129,769,7.129,770,6.181,771,7.129,772,6.181,773,7.129,774,7.129]],["keywords/58",[]],["title/59",[7,62.16,52,110.712,765,480.822,775,554.532]],["content/59",[1,0.199,4,1.111,5,1.329,7,1.17,8,0.932,12,5.125,15,2.531,19,2.918,27,3.655,33,4.607,43,2.918,52,2.577,60,2.086,72,3.243,75,5.125,105,5.125,133,2.531,135,3.435,150,5.125,170,4.607,193,2.913,217,3.751,226,1.553,227,6.255,233,2.799,254,4.221,256,2.799,264,4.607,286,3.072,308,4.607,311,5.125,326,3.912,419,2.778,470,4.221,529,3.435,564,5.125,695,3.912,706,5.125,714,4.221,772,5.125,776,5.91,777,5.91,778,5.91,779,5.91,780,5.91,781,8.759,782,8.759,783,10.436,784,5.91,785,5.91,786,5.91,787,5.91,788,5.91,789,5.91,790,5.91,791,5.125]],["keywords/59",[]],["title/60",[7,72.568,52,129.248,266,462.311]],["content/60",[1,0.177,2,1.181,3,0.342,4,0.853,5,1.181,7,0.589,8,0.853,23,3.752,24,4.096,25,4.096,26,9.431,27,3.249,42,3.478,52,2.465,60,2.125,84,3.249,89,4.556,94,3.249,103,4.556,122,4.556,133,2.25,152,2.25,182,2.355,197,1.895,212,3.768,217,2.25,221,2.883,226,1.381,227,5.725,232,4.556,233,3.743,234,3.752,252,4.556,266,7.768,270,3.433,271,2.883,285,3.249,304,1.895,307,2.355,308,4.096,343,3.958,379,3.054,394,2.731,399,3.478,695,3.478,696,4.096,701,3.752,756,4.556,770,4.556,791,4.556,792,5.254,793,5.254,794,9.721,795,5.254,796,8.017,797,5.254,798,5.254,799,5.254,800,5.254,801,5.254,802,5.254,803,5.254,804,5.254,805,5.254,806,5.254,807,5.254,808,5.254]],["keywords/60",[]],["title/61",[809,973.298]],["content/61",[]],["keywords/61",[]],["title/62",[474,426.602,810,674.21]],["content/62",[7,1.407,9,2.621,35,3.752,52,2.505,152,5.374,197,3.599,266,8.962,267,3.914,270,5.374,427,7.777,474,5.473,512,7.124,810,8.65,811,12.549,812,9.976]],["keywords/62",[]],["title/63",[7,62.16,267,217.548,680,432.271,813,480.822]],["content/63",[7,1.41,9,2.185,53,5.938,68,5.143,69,4.833,72,4.562,135,4.833,152,3.561,171,4.322,228,4.562,233,2.657,235,4.562,262,7.21,267,4.934,268,7.379,270,3.561,279,5.504,364,5.504,399,5.504,453,6.482,474,4.562,507,6.482,588,5.938,680,6.482,762,7.21,813,7.21,814,8.316,815,8.316,816,8.316,817,8.316,818,8.316,819,8.316,820,8.316,821,8.316]],["keywords/63",[]],["title/64",[7,62.16,52,110.712,497,396.007,822,480.822]],["content/64",[1,0.27,4,0.854,7,0.899,8,0.854,9,2.107,52,1.601,60,1.971,132,5.308,152,3.434,180,4.661,194,3.015,196,3.285,201,2.893,214,4.167,215,5.654,228,4.399,239,5.37,242,2.667,267,3.146,271,4.399,275,3.285,277,6.251,296,4.399,303,7.769,378,6.953,427,6.251,456,6.953,484,6.953,497,5.727,638,6.953,822,6.953,823,8.019,824,8.019,825,8.019,826,8.019,827,6.953,828,8.019]],["keywords/64",[]],["title/65",[4,68.905,334,400.366,685,428.507]],["content/65",[1,0.245,2,1.635,3,0.585,4,0.493,7,1.14,8,0.493,35,1.742,52,2.03,60,2.293,93,2.864,99,2.864,182,3.26,214,2.407,215,2.407,226,1.911,233,2.869,242,2.986,256,2.324,263,2.864,270,1.984,271,2.541,283,4.813,296,3.989,297,1.54,303,5.193,304,2.623,313,2.177,316,2.541,320,3.61,334,2.864,393,2.692,394,4.665,422,5.668,460,3.61,474,3.989,496,3.61,497,3.308,502,4.016,609,3.61,685,3.066,693,6.998,694,6.305,695,3.066,696,5.668,697,8.818,698,6.305,701,7.262,702,4.016,704,6.305,827,4.016,829,4.632,830,4.632,831,4.632,832,7.272,833,7.272,834,4.632,835,7.272,836,4.632,837,4.632]],["keywords/65",[]],["title/66",[8,82.762,206,383.847]],["content/66",[]],["keywords/66",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/67",[100,505.818]],["content/67",[8,1.05,60,2.333,193,3.281,196,4.042,206,4.871,217,4.226,226,2.593,256,3.153,276,3.982,304,4.495,463,5.128,647,5.413]],["keywords/67",[]],["title/68",[275,398.724]],["content/68",[8,1.235,52,2.002,60,2.277,66,6.181,193,3.335,196,2.92,197,2.572,206,5.728,208,6.908,215,3.705,217,3.053,222,5.557,226,1.873,235,3.911,236,4.409,245,4.719,254,5.091,256,2.278,273,4.719,275,2.92,276,3.708,297,2.371,314,6.181,349,4.719,364,4.719,419,3.35,424,5.091,463,3.705,587,5.557,647,3.911,752,6.181,838,7.129,839,7.129,840,7.129]],["keywords/68",[]]],"invertedIndex":[["",{"_index":60,"title":{"7":{"position":[[11,1]]},"31":{"position":[[16,2]]},"32":{"position":[[16,1]]},"54":{"position":[[5,1]]}},"content":{"1":{"position":[[657,4],[859,1]]},"7":{"position":[[488,1],[563,1],[933,1],[1016,1]]},"9":{"position":[[380,1],[392,1],[429,2],[500,1]]},"11":{"position":[[134,1],[197,1],[262,1],[285,3],[289,2],[292,2],[295,3]]},"12":{"position":[[121,1],[164,1],[176,1],[293,1],[316,3],[320,2],[323,2],[326,3]]},"14":{"position":[[247,1],[266,1],[806,1],[901,2],[912,1],[914,2],[1147,1],[1195,2],[1219,1],[1276,1],[1278,1],[1402,1],[1460,1],[1488,2],[1574,1],[1576,1]]},"19":{"position":[[664,2],[721,2],[866,2],[1240,2]]},"20":{"position":[[115,1],[127,1]]},"23":{"position":[[363,1],[389,1],[424,2],[427,1]]},"24":{"position":[[141,1],[207,2],[223,1],[225,2],[304,2],[360,1],[388,2],[440,1],[467,2],[495,1],[529,1],[542,1],[566,2],[629,2],[653,2],[663,1],[676,1],[685,1],[697,1],[717,2],[782,2],[855,1],[872,1],[874,1],[892,2],[971,1],[1000,1],[1002,1]]},"25":{"position":[[270,1],[291,1],[317,1],[352,2],[355,1],[357,1]]},"26":{"position":[[226,2],[285,1],[287,1],[337,2],[340,2],[368,2],[389,2]]},"27":{"position":[[418,1],[498,1],[544,1],[680,1],[685,1],[687,1]]},"29":{"position":[[162,1]]},"30":{"position":[[359,1]]},"38":{"position":[[168,1],[216,1],[230,2],[233,3],[237,2],[295,2],[321,2]]},"39":{"position":[[277,1],[325,2],[407,1],[423,1],[475,1],[561,1],[563,1]]},"40":{"position":[[302,1],[357,2],[383,1],[420,1],[422,1]]},"41":{"position":[[213,1],[261,2],[275,1],[290,1],[326,1],[328,1],[337,1],[339,4],[344,1],[346,1]]},"44":{"position":[[616,1],[708,2],[721,1],[723,1],[725,1],[727,1],[729,3],[760,1],[762,2],[811,2],[841,3],[870,2],[879,1],[948,3],[952,1],[964,1],[966,1],[968,1],[970,1],[972,3],[976,2],[979,3],[1022,2],[1092,1],[1119,2],[1122,2],[1152,1],[1191,1],[1193,1]]},"47":{"position":[[33,1],[81,1],[95,2],[98,3],[102,2],[105,2],[108,3],[112,2],[138,2]]},"49":{"position":[[139,1],[187,1],[202,2],[205,3],[209,2],[212,2],[215,3],[219,2],[267,1],[309,1],[368,1],[370,1]]},"50":{"position":[[389,1],[401,1],[440,2],[518,2],[533,2],[544,2],[571,1]]},"52":{"position":[[33,1],[81,1],[114,2],[117,3],[121,2],[124,2],[127,3],[131,2],[157,2]]},"53":{"position":[[33,1],[142,2],[157,1],[248,2],[251,2],[254,3],[258,2],[261,2],[264,3],[268,2],[294,2]]},"54":{"position":[[5,1],[174,1],[208,1],[222,2],[225,3],[542,2],[568,1],[617,2],[620,5],[637,1],[639,1],[696,2],[699,2]]},"55":{"position":[[361,1],[396,1],[410,2],[413,3],[417,2],[420,2],[423,3],[427,2],[453,2],[538,1],[573,1],[588,1],[590,3],[594,1],[607,1],[609,1],[657,2],[660,2],[663,2],[666,3],[670,2],[696,2]]},"57":{"position":[[204,1],[232,1]]},"58":{"position":[[243,1],[245,2],[318,2],[400,1],[416,1],[455,2],[525,1],[559,1],[592,1],[594,1]]},"59":{"position":[[308,1],[410,1],[412,1],[422,1],[451,1],[492,1],[494,1],[665,2],[763,3]]},"60":{"position":[[485,1],[502,1],[545,1],[613,2],[630,2],[693,3],[1045,1],[1134,1],[1136,2],[1148,1],[1188,1],[1190,1]]},"64":{"position":[[291,1],[467,1],[499,2],[502,3]]},"65":{"position":[[311,1],[403,2],[416,1],[418,1],[420,1],[422,1],[424,3],[447,1],[474,2],[483,1],[485,2],[548,2],[662,3],[666,1],[668,1],[951,1],[1019,1],[1021,1],[1023,1],[1025,1],[1027,3],[1089,1],[1131,2],[1134,2],[1156,1],[1195,1],[1197,1]]},"67":{"position":[[49,1],[78,1],[92,2],[95,3],[99,2],[102,2],[105,3],[109,2],[135,2]]},"68":{"position":[[167,1],[196,1],[211,1],[213,3],[217,1],[230,1],[232,1],[274,2],[277,2],[280,2],[283,3],[287,2],[313,2]]}},"keywords":{}}],["1.6.2",{"_index":191,"title":{},"content":{"3":{"position":[[385,6]]}},"keywords":{}}],["10",{"_index":603,"title":{"31":{"position":[[19,3]]},"32":{"position":[[18,3]]}},"content":{},"keywords":{}}],["2.0",{"_index":174,"title":{},"content":{"3":{"position":[[156,3]]}},"keywords":{}}],["22",{"_index":584,"title":{},"content":{"27":{"position":[[717,3]]}},"keywords":{}}],["3.0",{"_index":166,"title":{},"content":{"3":{"position":[[13,3]]}},"keywords":{}}],["4.4",{"_index":183,"title":{},"content":{"3":{"position":[[260,3]]}},"keywords":{}}],["4244",{"_index":407,"title":{},"content":{"14":{"position":[[1535,4]]}},"keywords":{}}],["49a6",{"_index":406,"title":{},"content":{"14":{"position":[[1530,4]]}},"keywords":{}}],["50",{"_index":594,"title":{},"content":{"29":{"position":[[483,5]]}},"keywords":{}}],["67",{"_index":591,"title":{},"content":{"29":{"position":[[332,3]]},"50":{"position":[[290,4]]}},"keywords":{}}],["75a2df11517a>",{"_index":409,"title":{},"content":{"14":{"position":[[1545,16]]}},"keywords":{}}],["8",{"_index":294,"title":{},"content":{"7":{"position":[[868,1]]},"34":{"position":[[222,3]]}},"keywords":{}}],["82",{"_index":820,"title":{},"content":{"63":{"position":[[419,3]]}},"keywords":{}}],["869f",{"_index":408,"title":{},"content":{"14":{"position":[[1540,4]]}},"keywords":{}}],["absolut",{"_index":350,"title":{},"content":{"9":{"position":[[551,10]]}},"keywords":{}}],["accept",{"_index":224,"title":{},"content":{"5":{"position":[[611,7]]},"6":{"position":[[98,7],[168,7],[268,6],[812,8],[1003,8],[1154,7]]}},"keywords":{}}],["access",{"_index":35,"title":{"41":{"position":[[0,6]]}},"content":{"1":{"position":[[318,6]]},"2":{"position":[[174,6]]},"9":{"position":[[119,6],[445,6]]},"15":{"position":[[635,6]]},"17":{"position":[[655,6]]},"19":{"position":[[1280,6]]},"20":{"position":[[392,10]]},"24":{"position":[[895,9]]},"27":{"position":[[576,9]]},"36":{"position":[[236,8]]},"39":{"position":[[57,6]]},"40":{"position":[[61,6]]},"57":{"position":[[564,6]]},"62":{"position":[[128,6]]},"65":{"position":[[73,6]]}},"keywords":{}}],["accident",{"_index":109,"title":{},"content":{"2":{"position":[[391,12]]}},"keywords":{}}],["accord",{"_index":269,"title":{},"content":{"6":{"position":[[1204,9]]},"43":{"position":[[92,9]]}},"keywords":{}}],["account",{"_index":454,"title":{},"content":{"17":{"position":[[575,8]]}},"keywords":{}}],["achiev",{"_index":827,"title":{},"content":{"64":{"position":[[296,7]]},"65":{"position":[[769,7]]}},"keywords":{}}],["activ",{"_index":495,"title":{},"content":{"19":{"position":[[1372,6]]}},"keywords":{}}],["actual",{"_index":51,"title":{},"content":{"1":{"position":[[547,6]]},"57":{"position":[[471,8]]}},"keywords":{}}],["ad",{"_index":101,"title":{},"content":{"2":{"position":[[308,5]]}},"keywords":{}}],["add",{"_index":624,"title":{},"content":{"33":{"position":[[345,3]]}},"keywords":{}}],["addit",{"_index":203,"title":{"10":{"position":[[0,10]]}},"content":{"5":{"position":[[118,10],[210,10],[309,10],[984,10]]},"6":{"position":[[632,10]]},"7":{"position":[[1128,10]]},"16":{"position":[[144,10]]},"20":{"position":[[38,10]]},"21":{"position":[[26,8]]}},"keywords":{}}],["addition",{"_index":305,"title":{},"content":{"7":{"position":[[1331,12]]},"32":{"position":[[152,13]]}},"keywords":{}}],["address",{"_index":368,"title":{"39":{"position":[[10,7]]}},"content":{"13":{"position":[[114,7]]},"17":{"position":[[1126,9]]},"37":{"position":[[67,7]]},"39":{"position":[[121,7]]}},"keywords":{}}],["admin",{"_index":774,"title":{},"content":{"58":{"position":[[561,8]]}},"keywords":{}}],["advanc",{"_index":176,"title":{},"content":{"3":{"position":[[167,8]]}},"keywords":{}}],["advantag",{"_index":163,"title":{},"content":{"2":{"position":[[1121,10]]}},"keywords":{}}],["advis",{"_index":598,"title":{},"content":{"30":{"position":[[291,7]]}},"keywords":{}}],["affect",{"_index":801,"title":{},"content":{"60":{"position":[[878,6]]}},"keywords":{}}],["again",{"_index":800,"title":{},"content":{"60":{"position":[[698,6]]}},"keywords":{}}],["aim",{"_index":330,"title":{},"content":{"9":{"position":[[38,4]]}},"keywords":{}}],["alia",{"_index":560,"title":{},"content":{"26":{"position":[[431,5]]}},"keywords":{}}],["align",{"_index":739,"title":{},"content":{"54":{"position":[[124,5]]}},"keywords":{}}],["allow",{"_index":184,"title":{},"content":{"3":{"position":[[273,8]]},"15":{"position":[[167,6]]},"27":{"position":[[561,5]]}},"keywords":{}}],["along",{"_index":643,"title":{},"content":{"37":{"position":[[154,6]]}},"keywords":{}}],["alreadi",{"_index":159,"title":{},"content":{"2":{"position":[[1044,7]]},"16":{"position":[[246,7]]},"19":{"position":[[570,7]]}},"keywords":{}}],["altern",{"_index":167,"title":{},"content":{"3":{"position":[[50,11]]},"24":{"position":[[720,14]]},"25":{"position":[[0,14]]},"32":{"position":[[415,14]]}},"keywords":{}}],["alway",{"_index":680,"title":{"63":{"position":[[18,6]]}},"content":{"42":{"position":[[294,6]]},"63":{"position":[[255,6]]}},"keywords":{}}],["amaz",{"_index":78,"title":{},"content":{"2":{"position":[[13,7]]}},"keywords":{}}],["andreialecu",{"_index":613,"title":{},"content":{"32":{"position":[[516,13]]}},"keywords":{}}],["anoth",{"_index":749,"title":{},"content":{"55":{"position":[[21,7]]}},"keywords":{}}],["anyth",{"_index":428,"title":{},"content":{"15":{"position":[[576,8]]},"41":{"position":[[100,9]]}},"keywords":{}}],["anywher",{"_index":389,"title":{},"content":{"14":{"position":[[1048,9],[1298,8]]},"36":{"position":[[245,8]]}},"keywords":{}}],["api",{"_index":151,"title":{"8":{"position":[[0,3]]}},"content":{"2":{"position":[[924,3]]},"3":{"position":[[80,4]]},"8":{"position":[[0,3],[44,3]]},"19":{"position":[[49,3]]},"29":{"position":[[203,3]]},"50":{"position":[[209,3]]}},"keywords":{}}],["apollo",{"_index":600,"title":{},"content":{"30":{"position":[[361,6]]},"32":{"position":[[301,6]]}},"keywords":{}}],["app",{"_index":426,"title":{},"content":{"15":{"position":[[550,4]]},"44":{"position":[[54,3]]},"50":{"position":[[397,3]]}},"keywords":{}}],["app.controller.t",{"_index":665,"title":{},"content":{"40":{"position":[[207,17]]}},"keywords":{}}],["app.listen(3000",{"_index":728,"title":{},"content":{"50":{"position":[[553,17]]}},"keywords":{}}],["app.module.t",{"_index":647,"title":{},"content":{"38":{"position":[[135,13]]},"47":{"position":[[0,13]]},"49":{"position":[[106,13]]},"52":{"position":[[0,13]]},"53":{"position":[[0,13]]},"55":{"position":[[328,13],[505,13]]},"67":{"position":[[16,13]]},"68":{"position":[[134,13]]}},"keywords":{}}],["app.service.t",{"_index":670,"title":{},"content":{"41":{"position":[[160,14]]}},"keywords":{}}],["app.us",{"_index":606,"title":{"50":{"position":[[6,8]]}},"content":{"32":{"position":[[83,12]]},"50":{"position":[[489,8],[628,10]]}},"keywords":{}}],["app_guard",{"_index":839,"title":{},"content":{"68":{"position":[[243,10]]}},"keywords":{}}],["app_interceptor",{"_index":664,"title":{},"content":{"40":{"position":[[190,16]]},"55":{"position":[[489,15],[620,16]]}},"keywords":{}}],["appar",{"_index":724,"title":{},"content":{"50":{"position":[[242,10]]}},"keywords":{}}],["appcontrol",{"_index":649,"title":{},"content":{"38":{"position":[[278,16]]},"40":{"position":[[288,13]]}},"keywords":{}}],["applic",{"_index":279,"title":{},"content":{"7":{"position":[[273,10]]},"15":{"position":[[360,12]]},"42":{"position":[[279,11]]},"44":{"position":[[221,11]]},"63":{"position":[[335,13]]}},"keywords":{}}],["appmodul",{"_index":463,"title":{},"content":{"17":{"position":[[1051,9]]},"38":{"position":[[311,9]]},"47":{"position":[[128,9]]},"49":{"position":[[235,9]]},"52":{"position":[[147,9]]},"53":{"position":[[284,9]]},"55":{"position":[[443,9],[686,9]]},"67":{"position":[[125,9]]},"68":{"position":[[303,9]]}},"keywords":{}}],["approach",{"_index":556,"title":{},"content":{"26":{"position":[[26,8]]}},"keywords":{}}],["appservic",{"_index":648,"title":{},"content":{"38":{"position":[[251,13]]},"40":{"position":[[333,11],[345,11]]},"41":{"position":[[7,11],[133,10],[202,10]]}},"keywords":{}}],["appspropag",{"_index":30,"title":{},"content":{"1":{"position":[[257,15]]}},"keywords":{}}],["arg",{"_index":265,"title":{},"content":{"6":{"position":[[1105,9]]}},"keywords":{}}],["argument",{"_index":290,"title":{},"content":{"7":{"position":[[733,8]]},"24":{"position":[[805,10]]}},"keywords":{}}],["around",{"_index":636,"title":{},"content":{"36":{"position":[[192,6]]}},"keywords":{}}],["around.us",{"_index":49,"title":{},"content":{"1":{"position":[[491,12]]}},"keywords":{}}],["array",{"_index":220,"title":{},"content":{"5":{"position":[[525,5]]},"6":{"position":[[1029,5],[1165,5],[1235,6]]}},"keywords":{}}],["assign",{"_index":511,"title":{},"content":{"20":{"position":[[500,11]]},"58":{"position":[[77,6],[462,6]]}},"keywords":{}}],["assum",{"_index":440,"title":{},"content":{"16":{"position":[[228,7]]},"37":{"position":[[179,7]]}},"keywords":{}}],["async",{"_index":2,"title":{"53":{"position":[[0,6]]}},"content":{"44":{"position":[[733,5],[1125,5]]},"45":{"position":[[276,6],[327,5]]},"60":{"position":[[420,5]]},"65":{"position":[[428,5],[1137,5]]}},"keywords":{"0":{"position":[[0,5]]},"4":{"position":[[0,5]]},"8":{"position":[[0,5]]},"9":{"position":[[0,5]]},"10":{"position":[[0,5]]},"13":{"position":[[0,5]]},"14":{"position":[[0,5]]},"15":{"position":[[0,5]]},"16":{"position":[[0,5]]},"17":{"position":[[0,5]]},"18":{"position":[[0,5]]},"21":{"position":[[0,5]]},"22":{"position":[[0,5]]},"28":{"position":[[0,5]]},"35":{"position":[[0,5]]},"43":{"position":[[0,5]]},"44":{"position":[[0,5]]},"45":{"position":[[0,5]]},"46":{"position":[[0,5]]},"51":{"position":[[0,5]]},"54":{"position":[[0,5]]},"55":{"position":[[0,5]]},"56":{"position":[[0,5]]},"66":{"position":[[0,5]]}}}],["async_hook",{"_index":136,"title":{},"content":{"2":{"position":[[752,11],[1057,11]]}},"keywords":{}}],["asynchron",{"_index":292,"title":{},"content":{"7":{"position":[[764,15]]}},"keywords":{}}],["asynclocalstorag",{"_index":6,"title":{},"content":{"1":{"position":[[969,18]]},"2":{"position":[[493,17]]},"17":{"position":[[39,17]]},"42":{"position":[[216,18]]},"54":{"position":[[595,21]]}},"keywords":{"0":{"position":[[37,17]]},"4":{"position":[[37,17]]},"8":{"position":[[37,17]]},"9":{"position":[[37,17]]},"10":{"position":[[37,17]]},"13":{"position":[[37,17]]},"14":{"position":[[37,17]]},"15":{"position":[[37,17]]},"16":{"position":[[37,17]]},"17":{"position":[[37,17]]},"18":{"position":[[37,17]]},"21":{"position":[[37,17]]},"22":{"position":[[37,17]]},"28":{"position":[[37,17]]},"35":{"position":[[37,17]]},"43":{"position":[[37,17]]},"44":{"position":[[37,17]]},"45":{"position":[[37,17]]},"46":{"position":[[37,17]]},"51":{"position":[[37,17]]},"54":{"position":[[37,17]]},"55":{"position":[[37,17]]},"56":{"position":[[37,17]]},"66":{"position":[[37,17]]}}}],["asynclocalstorage#enterwith",{"_index":314,"title":{},"content":{"7":{"position":[[1724,27]]},"68":{"position":[[442,27]]}},"keywords":{}}],["asynclocalstorage#run",{"_index":319,"title":{},"content":{"7":{"position":[[1803,22]]},"32":{"position":[[483,21]]},"55":{"position":[[117,21]]}},"keywords":{}}],["augment",{"_index":550,"title":{"25":{"position":[[24,13]]}},"content":{"25":{"position":[[115,7]]},"26":{"position":[[43,10]]}},"keywords":{}}],["authent",{"_index":31,"title":{},"content":{"1":{"position":[[277,14]]},"11":{"position":[[264,14]]},"12":{"position":[[295,14]]}},"keywords":{}}],["author",{"_index":530,"title":{},"content":{"23":{"position":[[403,11]]},"24":{"position":[[509,11]]},"25":{"position":[[331,11]]},"27":{"position":[[470,11]]}},"keywords":{}}],["author'",{"_index":371,"title":{},"content":{"13":{"position":[[190,8]]}},"keywords":{}}],["autogener",{"_index":382,"title":{},"content":{"14":{"position":[[755,13]]}},"keywords":{}}],["automat",{"_index":100,"title":{"47":{"position":[[0,14]]},"67":{"position":[[0,14]]}},"content":{"2":{"position":[[294,13]]},"7":{"position":[[200,13],[366,13],[1227,13]]},"14":{"position":[[163,13]]},"23":{"position":[[90,9]]},"29":{"position":[[231,9]]},"38":{"position":[[27,13]]},"55":{"position":[[314,13]]}},"keywords":{}}],["avail",{"_index":27,"title":{},"content":{"1":{"position":[[220,9]]},"5":{"position":[[740,10]]},"6":{"position":[[668,9]]},"7":{"position":[[414,9],[1472,9],[1603,9]]},"59":{"position":[[685,9]]},"60":{"position":[[660,9]]}},"keywords":{}}],["avoid",{"_index":776,"title":{},"content":{"59":{"position":[[73,5]]}},"keywords":{}}],["await",{"_index":701,"title":{},"content":{"44":{"position":[[845,5],[911,5],[1154,5]]},"50":{"position":[[403,5],[547,5]]},"60":{"position":[[547,5]]},"65":{"position":[[449,5],[585,5],[625,5],[1158,5]]}},"keywords":{}}],["awar",{"_index":244,"title":{},"content":{"5":{"position":[[1032,5]]}},"keywords":{}}],["awesom",{"_index":81,"title":{},"content":{"2":{"position":[[55,7]]}},"keywords":{}}],["background",{"_index":634,"title":{"36":{"position":[[0,11]]}},"content":{},"keywords":{}}],["base",{"_index":73,"title":{},"content":{"1":{"position":[[909,5]]},"14":{"position":[[325,5]]}},"keywords":{}}],["basic",{"_index":516,"title":{},"content":{"21":{"position":[[42,5]]}},"keywords":{}}],["becom",{"_index":354,"title":{},"content":{"9":{"position":[[691,6]]}},"keywords":{}}],["befor",{"_index":461,"title":{},"content":{"17":{"position":[[972,6]]}},"keywords":{}}],["behavior",{"_index":502,"title":{},"content":{"20":{"position":[[146,8]]},"65":{"position":[[786,8]]}},"keywords":{}}],["below",{"_index":205,"title":{},"content":{"5":{"position":[[164,6],[251,6],[356,6]]},"14":{"position":[[660,5]]},"33":{"position":[[375,5]]},"37":{"position":[[0,5]]}},"keywords":{}}],["benefit",{"_index":121,"title":{},"content":{"2":{"position":[[577,9]]}},"keywords":{}}],["bind",{"_index":629,"title":{},"content":{"34":{"position":[[87,4]]},"40":{"position":[[155,4]]},"49":{"position":[[59,4]]},"50":{"position":[[602,4]]}},"keywords":{}}],["bodi",{"_index":700,"title":{},"content":{"44":{"position":[[801,4]]}},"keywords":{}}],["boolean",{"_index":213,"title":{},"content":{"5":{"position":[[372,7]]},"7":{"position":[[165,7],[331,7],[1193,7],[1386,7],[1515,7],[1650,7]]},"19":{"position":[[349,7],[1324,7]]},"23":{"position":[[415,8]]},"24":{"position":[[230,7],[521,7]]},"25":{"position":[[343,8]]},"27":{"position":[[482,8]]}},"keywords":{}}],["bootstrap",{"_index":690,"title":{},"content":{"44":{"position":[[233,10]]},"50":{"position":[[342,9],[377,11]]}},"keywords":{}}],["both",{"_index":250,"title":{},"content":{"6":{"position":[[263,4]]}},"keywords":{}}],["bound",{"_index":628,"title":{},"content":{"34":{"position":[[42,5]]},"44":{"position":[[294,5]]}},"keywords":{}}],["break",{"_index":44,"title":{"9":{"position":[[0,8]]}},"content":{"1":{"position":[[429,8]]},"3":{"position":[[92,8]]},"9":{"position":[[0,8]]}},"keywords":{}}],["bring",{"_index":175,"title":{},"content":{"3":{"position":[[160,6]]}},"keywords":{}}],["built",{"_index":82,"title":{},"content":{"2":{"position":[[63,5]]}},"keywords":{}}],["call",{"_index":152,"title":{},"content":{"2":{"position":[[928,6]]},"7":{"position":[[1716,4],[1783,4]]},"14":{"position":[[1280,7]]},"15":{"position":[[139,4],[455,7],[593,6]]},"17":{"position":[[742,5]]},"24":{"position":[[790,6]]},"36":{"position":[[219,6]]},"44":{"position":[[106,6],[816,4]]},"45":{"position":[[122,5]]},"60":{"position":[[725,6]]},"62":{"position":[[166,6],[199,6]]},"63":{"position":[[209,7]]},"64":{"position":[[373,4]]}},"keywords":{}}],["callback",{"_index":429,"title":{},"content":{"15":{"position":[[616,8]]},"19":{"position":[[711,9],[745,8],[856,9],[889,8],[1263,8]]},"20":{"position":[[314,8],[445,8]]}},"keywords":{}}],["callhandl",{"_index":656,"title":{},"content":{"39":{"position":[[371,13]]},"58":{"position":[[364,13]]}},"keywords":{}}],["can't",{"_index":188,"title":{},"content":{"3":{"position":[[319,5]]},"33":{"position":[[132,5]]}},"keywords":{}}],["care",{"_index":632,"title":{},"content":{"34":{"position":[[165,4]]},"44":{"position":[[1211,4]]}},"keywords":{}}],["case",{"_index":9,"title":{"1":{"position":[[4,6]]},"21":{"position":[[17,5]]}},"content":{"1":{"position":[[16,5],[535,5]]},"2":{"position":[[149,5]]},"5":{"position":[[700,6]]},"6":{"position":[[355,4]]},"7":{"position":[[695,4]]},"11":{"position":[[3,4]]},"14":{"position":[[473,4]]},"17":{"position":[[336,6],[483,4]]},"20":{"position":[[189,4]]},"21":{"position":[[17,5]]},"27":{"position":[[119,5],[311,5]]},"29":{"position":[[198,4]]},"30":{"position":[[89,4]]},"42":{"position":[[130,4]]},"43":{"position":[[19,4]]},"44":{"position":[[252,6],[477,5],[1233,4]]},"49":{"position":[[8,5]]},"50":{"position":[[303,5]]},"54":{"position":[[376,4]]},"55":{"position":[[909,4]]},"62":{"position":[[209,4]]},"63":{"position":[[394,5]]},"64":{"position":[[140,6]]}},"keywords":{}}],["caus",{"_index":450,"title":{},"content":{"17":{"position":[[505,6]]},"29":{"position":[[386,5]]}},"keywords":{}}],["caution",{"_index":349,"title":{},"content":{"9":{"position":[[502,7]]},"17":{"position":[[584,7]]},"44":{"position":[[1195,7]]},"50":{"position":[[574,7]]},"68":{"position":[[393,7]]}},"keywords":{}}],["caveat",{"_index":809,"title":{"61":{"position":[[0,8]]}},"content":{},"keywords":{}}],["central",{"_index":96,"title":{},"content":{"2":{"position":[[258,7]]}},"keywords":{}}],["certain",{"_index":576,"title":{},"content":{"27":{"position":[[382,7]]},"48":{"position":[[45,7]]}},"keywords":{}}],["chain",{"_index":246,"title":{},"content":{"5":{"position":[[1073,5]]},"15":{"position":[[144,6],[625,5]]},"36":{"position":[[201,5],[283,5]]}},"keywords":{}}],["chang",{"_index":170,"title":{},"content":{"3":{"position":[[101,7]]},"58":{"position":[[472,6]]},"59":{"position":[[915,8]]}},"keywords":{}}],["chapter",{"_index":323,"title":{},"content":{"8":{"position":[[9,7]]},"13":{"position":[[20,7]]},"17":{"position":[[1118,7]]},"21":{"position":[[91,8]]}},"keywords":{}}],["charact",{"_index":295,"title":{},"content":{"7":{"position":[[870,11]]}},"keywords":{}}],["check",{"_index":477,"title":{},"content":{"19":{"position":[[357,5]]}},"keywords":{}}],["choic",{"_index":620,"title":{},"content":{"33":{"position":[[183,7]]}},"keywords":{}}],["cl",{"_index":1,"title":{"0":{"position":[[7,3]]},"10":{"position":[[11,3]]},"41":{"position":[[7,3]]},"51":{"position":[[15,3]]}},"content":{"1":{"position":[[918,3]]},"5":{"position":[[924,3],[970,3],[995,3]]},"7":{"position":[[890,5],[964,5],[1072,3],[1156,3]]},"9":{"position":[[130,3],[388,3]]},"11":{"position":[[156,5]]},"12":{"position":[[143,5]]},"14":{"position":[[40,3],[641,3],[1178,4],[1316,3]]},"15":{"position":[[381,3],[420,3]]},"16":{"position":[[114,3]]},"17":{"position":[[669,3]]},"19":{"position":[[71,3],[169,3],[235,3],[382,3],[453,3],[535,3],[766,3],[907,3],[1046,3],[1176,3],[1299,3],[1379,3]]},"20":{"position":[[165,3]]},"23":{"position":[[225,3],[293,3]]},"24":{"position":[[172,4]]},"25":{"position":[[265,4]]},"30":{"position":[[198,3]]},"31":{"position":[[109,3]]},"32":{"position":[[293,3],[563,3]]},"36":{"position":[[139,3],[156,3]]},"37":{"position":[[291,3]]},"38":{"position":[[108,3]]},"39":{"position":[[86,3],[169,3],[308,4]]},"40":{"position":[[87,3]]},"41":{"position":[[58,3],[244,4]]},"44":{"position":[[77,3],[691,4],[1080,5]]},"45":{"position":[[242,3]]},"48":{"position":[[38,3]]},"55":{"position":[[51,3],[875,3]]},"57":{"position":[[607,3]]},"59":{"position":[[884,3]]},"60":{"position":[[785,3]]},"64":{"position":[[287,3]]},"65":{"position":[[386,4],[1077,5]]}},"keywords":{"0":{"position":[[32,3]]},"4":{"position":[[32,3]]},"8":{"position":[[32,3]]},"9":{"position":[[32,3]]},"10":{"position":[[32,3]]},"13":{"position":[[32,3]]},"14":{"position":[[32,3]]},"15":{"position":[[32,3]]},"16":{"position":[[32,3]]},"17":{"position":[[32,3]]},"18":{"position":[[32,3]]},"21":{"position":[[32,3]]},"22":{"position":[[32,3]]},"28":{"position":[[32,3]]},"35":{"position":[[32,3]]},"43":{"position":[[32,3]]},"44":{"position":[[32,3]]},"45":{"position":[[32,3]]},"46":{"position":[[32,3]]},"51":{"position":[[32,3]]},"54":{"position":[[32,3]]},"55":{"position":[[32,3]]},"56":{"position":[[32,3]]},"66":{"position":[[32,3]]}}}],["class",{"_index":226,"title":{"57":{"position":[[0,5]]}},"content":{"5":{"position":[[624,5]]},"6":{"position":[[106,5],[365,5],[416,5],[847,5]]},"9":{"position":[[208,5]]},"14":{"position":[[1132,5],[1386,5]]},"24":{"position":[[125,5]]},"26":{"position":[[170,5],[371,5]]},"38":{"position":[[305,5]]},"39":{"position":[[226,5]]},"40":{"position":[[282,5]]},"41":{"position":[[196,5]]},"44":{"position":[[595,5]]},"47":{"position":[[122,5]]},"49":{"position":[[229,5]]},"52":{"position":[[141,5]]},"53":{"position":[[278,5]]},"54":{"position":[[485,5]]},"55":{"position":[[437,5],[680,5]]},"57":{"position":[[39,5],[193,5],[437,5],[516,6]]},"58":{"position":[[2,5],[194,5]]},"59":{"position":[[289,5]]},"60":{"position":[[1027,5]]},"65":{"position":[[290,5],[930,5]]},"67":{"position":[[119,5]]},"68":{"position":[[297,5]]}},"keywords":{}}],["claus",{"_index":102,"title":{},"content":{"2":{"position":[[322,6]]}},"keywords":{}}],["client'",{"_index":641,"title":{},"content":{"37":{"position":[[55,8]]}},"keywords":{}}],["cls.enter",{"_index":423,"title":{},"content":{"15":{"position":[[477,12]]}},"keywords":{}}],["cls.get",{"_index":431,"title":{},"content":{"15":{"position":[[681,10]]}},"keywords":{}}],["cls.get('us",{"_index":583,"title":{},"content":{"27":{"position":[[689,17]]}},"keywords":{}}],["cls.get('user.id",{"_index":580,"title":{},"content":{"27":{"position":[[604,19]]}},"keywords":{}}],["cls.get(cls_id",{"_index":475,"title":{},"content":{"19":{"position":[[313,16]]}},"keywords":{}}],["cls.run",{"_index":422,"title":{},"content":{"15":{"position":[[463,9]]},"45":{"position":[[112,9]]},"65":{"position":[[138,10],[180,9]]}},"keywords":{}}],["cls.set",{"_index":430,"title":{},"content":{"15":{"position":[[667,9]]}},"keywords":{}}],["cls.set('auth",{"_index":362,"title":{},"content":{"11":{"position":[[246,15]]},"12":{"position":[[277,15]]}},"keywords":{}}],["cls.set('mod",{"_index":708,"title":{},"content":{"44":{"position":[[1094,15]]}},"keywords":{}}],["cls.set('tenant_id",{"_index":360,"title":{},"content":{"11":{"position":[[199,20]]},"12":{"position":[[230,20]]}},"keywords":{}}],["cls_id",{"_index":282,"title":{},"content":{"7":{"position":[[434,6]]},"14":{"position":[[944,6]]}},"keywords":{}}],["cls_re",{"_index":311,"title":{},"content":{"7":{"position":[[1623,7]]},"59":{"position":[[159,7]]}},"keywords":{}}],["cls_req",{"_index":308,"title":{},"content":{"7":{"position":[[1492,7]]},"59":{"position":[[147,7]]},"60":{"position":[[370,9]]}},"keywords":{}}],["clscontextopt",{"_index":488,"title":{"20":{"position":[[0,18]]}},"content":{"19":{"position":[[692,18],[986,19]]}},"keywords":{}}],["clsguard",{"_index":208,"title":{},"content":{"5":{"position":[[237,9]]},"14":{"position":[[480,8]]},"17":{"position":[[372,8],[818,8],[989,9]]},"32":{"position":[[405,9]]},"33":{"position":[[8,8]]},"34":{"position":[[96,8]]},"55":{"position":[[103,8],[647,9]]},"68":{"position":[[77,8],[264,9],[424,8],[488,8]]}},"keywords":{}}],["clsguardopt",{"_index":207,"title":{},"content":{"5":{"position":[[179,15]]}},"keywords":{}}],["clsinterceptor",{"_index":211,"title":{},"content":{"5":{"position":[[336,15]]},"17":{"position":[[231,14]]},"32":{"position":[[446,15]]},"33":{"position":[[20,14]]},"34":{"position":[[108,14]]},"55":{"position":[[69,15]]}},"keywords":{}}],["clsinterceptoropt",{"_index":210,"title":{},"content":{"5":{"position":[[272,21]]}},"keywords":{}}],["clsmiddlewar",{"_index":204,"title":{},"content":{"5":{"position":[[145,14]]},"17":{"position":[[213,13],[386,14],[771,13]]},"29":{"position":[[100,13],[257,13],[433,13]]},"31":{"position":[[132,13]]},"32":{"position":[[35,13],[209,13]]},"38":{"position":[[51,13]]},"40":{"position":[[108,13]]},"49":{"position":[[68,13]]},"50":{"position":[[502,15]]}},"keywords":{}}],["clsmiddlewareopt",{"_index":202,"title":{},"content":{"5":{"position":[[82,20]]},"7":{"position":[[1310,20]]}},"keywords":{}}],["clsmodul",{"_index":326,"title":{"38":{"position":[[13,10]]}},"content":{"8":{"position":[[74,9]]},"36":{"position":[[31,9]]},"38":{"position":[[13,9]]},"59":{"position":[[228,10]]}},"keywords":{}}],["clsmodule.forfeatur",{"_index":218,"title":{},"content":{"5":{"position":[[460,22]]},"6":{"position":[[4,22]]},"26":{"position":[[248,25]]},"57":{"position":[[275,22]]}},"keywords":{}}],["clsmodule.forfeature(us",{"_index":761,"title":{},"content":{"57":{"position":[[374,27]]}},"keywords":{}}],["clsmodule.forfeatureasync",{"_index":227,"title":{},"content":{"5":{"position":[[651,27]]},"6":{"position":[[133,27]]},"59":{"position":[[563,27],[637,27]]},"60":{"position":[[113,27],[270,27]]}},"keywords":{}}],["clsmodule.forroot",{"_index":196,"title":{},"content":{"5":{"position":[[4,19]]},"11":{"position":[[102,19]]},"12":{"position":[[88,19]]},"14":{"position":[[774,19]]},"38":{"position":[[170,19]]},"47":{"position":[[35,19]]},"49":{"position":[[141,19]]},"50":{"position":[[689,20]]},"52":{"position":[[35,19]]},"54":{"position":[[176,19]]},"55":{"position":[[285,19],[363,19],[540,19]]},"64":{"position":[[435,19]]},"67":{"position":[[51,19]]},"68":{"position":[[169,19]]}},"keywords":{}}],["clsmodule.forrootasync",{"_index":230,"title":{},"content":{"5":{"position":[[707,24]]},"53":{"position":[[35,24]]}},"keywords":{}}],["clsmodule.regist",{"_index":741,"title":{},"content":{"54":{"position":[[153,20]]}},"keywords":{}}],["clsmoduleopt",{"_index":200,"title":{},"content":{"5":{"position":[[51,17]]},"7":{"position":[[93,16]]}},"keywords":{}}],["clsmoduleproxyclassprovideropt",{"_index":248,"title":{},"content":{"6":{"position":[[183,34],[759,34]]}},"keywords":{}}],["clsmoduleproxyfactoryprovideropt",{"_index":249,"title":{},"content":{"6":{"position":[[221,36],[948,36]]}},"keywords":{}}],["clsservic",{"_index":297,"title":{"19":{"position":[[0,11]]},"23":{"position":[[10,11]]}},"content":{"7":{"position":[[896,11],[970,11]]},"8":{"position":[[55,10]]},"9":{"position":[[661,10]]},"14":{"position":[[980,10],[1183,11]]},"17":{"position":[[961,10]]},"19":{"position":[[15,10]]},"23":{"position":[[53,10]]},"24":{"position":[[24,10]]},"25":{"position":[[199,10]]},"26":{"position":[[94,10],[325,11]]},"36":{"position":[[70,10],[297,11]]},"39":{"position":[[39,10],[313,11]]},"41":{"position":[[249,11]]},"44":{"position":[[696,11]]},"54":{"position":[[425,10]]},"65":{"position":[[391,11]]},"68":{"position":[[40,11]]}},"keywords":{}}],["clsservice#resolveproxyprovid",{"_index":828,"title":{},"content":{"64":{"position":[[378,34]]}},"keywords":{}}],["clsservice#run",{"_index":692,"title":{},"content":{"44":{"position":[[422,15],[824,16]]}},"keywords":{}}],["clsservice#setifundefin",{"_index":599,"title":{},"content":{"30":{"position":[[310,27]]}},"keywords":{}}],["clsservice<myclsstore>",{"_index":531,"title":{},"content":{"24":{"position":[[57,28],[177,29]]},"25":{"position":[[38,28]]},"26":{"position":[[197,28],[441,28]]}},"keywords":{}}],["clsservice<mystore>",{"_index":746,"title":{},"content":{"54":{"position":[[516,25]]}},"keywords":{}}],["clsservicemanag",{"_index":336,"title":{},"content":{"9":{"position":[[190,17]]}},"keywords":{}}],["clsservicemanager.getclsservic",{"_index":344,"title":{},"content":{"9":{"position":[[394,34]]}},"keywords":{}}],["clsstore",{"_index":469,"title":{},"content":{"19":{"position":[[135,9]]},"23":{"position":[[280,9],[354,8]]},"25":{"position":[[127,8],[282,8]]},"27":{"position":[[287,9],[409,8]]}},"keywords":{}}],["cls{middleware,guard,interceptor}opt",{"_index":272,"title":{},"content":{"7":{"position":[[11,40]]}},"keywords":{}}],["clunki",{"_index":65,"title":{},"content":{"1":{"position":[[804,6]]}},"keywords":{}}],["code",{"_index":99,"title":{},"content":{"2":{"position":[[289,4]]},"9":{"position":[[681,4]]},"19":{"position":[[1029,4],[1162,4],[1352,4]]},"44":{"position":[[500,4]]},"55":{"position":[[168,5]]},"65":{"position":[[213,4]]}},"keywords":{}}],["code.inherit",{"_index":508,"title":{},"content":{"20":{"position":[[422,12]]}},"keywords":{}}],["combin",{"_index":715,"title":{},"content":{"48":{"position":[[139,11]]}},"keywords":{}}],["come",{"_index":66,"title":{},"content":{"1":{"position":[[815,4],[870,5]]},"68":{"position":[[497,5]]}},"keywords":{}}],["common",{"_index":10,"title":{},"content":{"1":{"position":[[5,6]]},"15":{"position":[[51,6]]}},"keywords":{}}],["compar",{"_index":146,"title":{},"content":{"2":{"position":[[872,8]]}},"keywords":{}}],["compat",{"_index":331,"title":{"28":{"position":[[0,13]]}},"content":{"9":{"position":[[49,10]]},"13":{"position":[[78,10]]},"17":{"position":[[1136,13]]},"29":{"position":[[16,10]]},"31":{"position":[[40,10]]},"33":{"position":[[353,13]]}},"keywords":{}}],["compil",{"_index":155,"title":{},"content":{"2":{"position":[[959,8]]}},"keywords":{}}],["complain",{"_index":566,"title":{},"content":{"27":{"position":[[142,8]]}},"keywords":{}}],["complex",{"_index":229,"title":{},"content":{"5":{"position":[[688,7]]},"27":{"position":[[71,8]]}},"keywords":{}}],["compon",{"_index":779,"title":{},"content":{"59":{"position":[[111,10]]}},"keywords":{}}],["concern",{"_index":369,"title":{},"content":{"13":{"position":[[126,8]]}},"keywords":{}}],["concurr",{"_index":443,"title":{},"content":{"17":{"position":[[76,10]]}},"keywords":{}}],["configur",{"_index":259,"title":{},"content":{"6":{"position":[[711,13]]},"17":{"position":[[404,10]]},"55":{"position":[[236,13]]}},"keywords":{}}],["configure(consum",{"_index":718,"title":{},"content":{"49":{"position":[[269,19]]}},"keywords":{}}],["confirm",{"_index":626,"title":{},"content":{"33":{"position":[[420,9]]}},"keywords":{}}],["connect",{"_index":26,"title":{},"content":{"1":{"position":[[209,10]]},"60":{"position":[[258,11],[534,10],[601,11],[1104,11]]}},"keywords":{}}],["consequ",{"_index":452,"title":{},"content":{"17":{"position":[[537,11],[631,10]]}},"keywords":{}}],["consid",{"_index":679,"title":{},"content":{"42":{"position":[[169,8]]},"55":{"position":[[183,10]]}},"keywords":{}}],["consider",{"_index":364,"title":{"13":{"position":[[0,14]]}},"content":{"13":{"position":[[0,14]]},"15":{"position":[[503,14]]},"63":{"position":[[372,13]]},"68":{"position":[[522,15]]}},"keywords":{}}],["console.log(`<${this.cls.getid()}>",{"_index":396,"title":{},"content":{"14":{"position":[[1221,40]]}},"keywords":{}}],["console.log(cls.getid",{"_index":348,"title":{},"content":{"9":{"position":[[474,25]]}},"keywords":{}}],["const",{"_index":343,"title":{},"content":{"9":{"position":[[382,5]]},"12":{"position":[[166,5]]},"24":{"position":[[345,5],[427,5],[531,5],[849,5],[956,5]]},"27":{"position":[[674,5]]},"39":{"position":[[409,5],[462,5]]},"41":{"position":[[277,5]]},"50":{"position":[[391,5]]},"54":{"position":[[545,5]]},"58":{"position":[[402,5]]},"60":{"position":[[487,5],[528,5]]}},"keywords":{}}],["constant",{"_index":385,"title":{},"content":{"14":{"position":[[951,8]]}},"keywords":{}}],["constructor",{"_index":695,"title":{},"content":{"44":{"position":[[618,12]]},"50":{"position":[[759,12]]},"59":{"position":[[336,12]]},"60":{"position":[[1047,12]]},"65":{"position":[[313,12]]}},"keywords":{}}],["constructor(priv",{"_index":393,"title":{},"content":{"14":{"position":[[1149,19],[1404,19]]},"24":{"position":[[143,19]]},"39":{"position":[[279,19]]},"40":{"position":[[304,19]]},"41":{"position":[[215,19]]},"58":{"position":[[277,19]]},"65":{"position":[[953,19]]}},"keywords":{}}],["consum",{"_index":688,"title":{},"content":{"44":{"position":[[189,9]]}},"keywords":{}}],["consumer.apply(clsmiddleware).forroutes('custom/rout",{"_index":720,"title":{},"content":{"49":{"position":[[311,56]]}},"keywords":{}}],["contain",{"_index":564,"title":{},"content":{"27":{"position":[[83,8]]},"59":{"position":[[618,10]]}},"keywords":{}}],["context",{"_index":3,"title":{"41":{"position":[[11,7]]},"51":{"position":[[19,7]]}},"content":{"1":{"position":[[524,7],[750,7]]},"5":{"position":[[928,7]]},"7":{"position":[[1076,7],[1160,8],[1452,8],[1583,8],[1700,7],[1915,7]]},"9":{"position":[[134,7],[288,7],[324,7]]},"12":{"position":[[149,8]]},"14":{"position":[[967,8],[1320,7]]},"15":{"position":[[424,7]]},"17":{"position":[[119,7],[149,7],[310,8],[347,7],[512,7],[673,7],[837,8]]},"19":{"position":[[75,8],[173,8],[239,7],[386,8],[457,8],[539,7],[770,8],[911,7],[1050,8],[1180,7],[1303,8],[1383,8]]},"20":{"position":[[169,7],[231,8],[270,7],[341,8],[376,7],[488,8],[572,8],[668,7],[738,7]]},"27":{"position":[[56,7]]},"29":{"position":[[392,7]]},"31":{"position":[[113,7]]},"32":{"position":[[129,7],[244,7]]},"33":{"position":[[45,7]]},"36":{"position":[[143,8],[160,7]]},"37":{"position":[[295,8]]},"38":{"position":[[112,7]]},"39":{"position":[[173,8]]},"40":{"position":[[91,7]]},"41":{"position":[[62,7]]},"44":{"position":[[128,7],[329,8],[521,7]]},"45":{"position":[[175,7],[246,7]]},"55":{"position":[[55,7]]},"57":{"position":[[611,8]]},"58":{"position":[[84,7]]},"60":{"position":[[789,8]]},"65":{"position":[[35,7],[167,7],[500,7]]}},"keywords":{"0":{"position":[[7,7]]},"4":{"position":[[7,7]]},"8":{"position":[[7,7]]},"9":{"position":[[7,7]]},"10":{"position":[[7,7]]},"13":{"position":[[7,7]]},"14":{"position":[[7,7]]},"15":{"position":[[7,7]]},"16":{"position":[[7,7]]},"17":{"position":[[7,7]]},"18":{"position":[[7,7]]},"21":{"position":[[7,7]]},"22":{"position":[[7,7]]},"28":{"position":[[7,7]]},"35":{"position":[[7,7]]},"43":{"position":[[7,7]]},"44":{"position":[[7,7]]},"45":{"position":[[7,7]]},"46":{"position":[[7,7]]},"51":{"position":[[7,7]]},"54":{"position":[[7,7]]},"55":{"position":[[7,7]]},"56":{"position":[[7,7]]},"66":{"position":[[7,7]]}}}],["context,extract",{"_index":650,"title":{},"content":{"39":{"position":[[90,15]]}},"keywords":{}}],["context.switchtohttp().getrequest",{"_index":658,"title":{},"content":{"39":{"position":[[425,36]]},"58":{"position":[[418,36]]}},"keywords":{}}],["context.switchtohttp().getrequest<request>",{"_index":363,"title":{},"content":{"12":{"position":[[178,51]]}},"keywords":{}}],["continu",{"_index":412,"title":{},"content":{"15":{"position":[[13,12]]}},"keywords":{}}],["control",{"_index":57,"title":{"40":{"position":[[21,11]]}},"content":{"1":{"position":[[624,12]]},"29":{"position":[[52,11]]},"38":{"position":[[265,12]]},"40":{"position":[[41,11]]},"48":{"position":[[86,7]]},"55":{"position":[[922,12]]}},"keywords":{}}],["controller/resolv",{"_index":752,"title":{},"content":{"55":{"position":[[718,19]]},"68":{"position":[[345,19]]}},"keywords":{}}],["conveni",{"_index":706,"title":{},"content":{"44":{"position":[[994,11]]},"59":{"position":[[130,12]]}},"keywords":{}}],["convent",{"_index":740,"title":{},"content":{"54":{"position":[[139,11]]}},"keywords":{}}],["copi",{"_index":510,"title":{},"content":{"20":{"position":[[469,4]]}},"keywords":{}}],["correctli",{"_index":607,"title":{},"content":{"32":{"position":[[108,9]]}},"keywords":{}}],["correl",{"_index":374,"title":{},"content":{"14":{"position":[[82,13]]}},"keywords":{}}],["couldn't",{"_index":108,"title":{},"content":{"2":{"position":[[382,8]]}},"keywords":{}}],["cours",{"_index":663,"title":{},"content":{"40":{"position":[[133,7]]}},"keywords":{}}],["creat",{"_index":87,"title":{"39":{"position":[[0,6]]}},"content":{"2":{"position":[[104,7]]},"20":{"position":[[684,8]]},"23":{"position":[[210,6],[245,8]]},"26":{"position":[[79,6],[125,8]]},"39":{"position":[[0,6]]},"42":{"position":[[178,8]]},"50":{"position":[[443,6]]},"54":{"position":[[405,6]]}},"keywords":{}}],["creation",{"_index":504,"title":{},"content":{"20":{"position":[[177,8]]},"58":{"position":[[56,9]]}},"keywords":{}}],["critic",{"_index":138,"title":{},"content":{"2":{"position":[[777,10]]}},"keywords":{}}],["cron",{"_index":56,"title":{},"content":{"1":{"position":[[619,4]]},"44":{"position":[[173,4],[902,8],[1110,8]]}},"keywords":{}}],["cron('45",{"_index":698,"title":{},"content":{"44":{"position":[[711,9]]},"65":{"position":[[406,9],[1009,9]]}},"keywords":{}}],["cron('90",{"_index":705,"title":{},"content":{"44":{"position":[[954,9]]}},"keywords":{}}],["cron.controller.t",{"_index":832,"title":{},"content":{"65":{"position":[[250,18],[890,18]]}},"keywords":{}}],["croncontrol",{"_index":694,"title":{},"content":{"44":{"position":[[601,14]]},"65":{"position":[[296,14],[936,14]]}},"keywords":{}}],["ctx",{"_index":288,"title":{},"content":{"7":{"position":[[526,5],[982,4]]}},"keywords":{}}],["current",{"_index":223,"title":{},"content":{"5":{"position":[[596,9]]},"19":{"position":[[1344,7]]},"39":{"position":[[71,7]]}},"keywords":{}}],["custom",{"_index":251,"title":{"26":{"position":[[8,6]]}},"content":{"6":{"position":[[304,6]]},"14":{"position":[[371,6],[1090,6]]},"19":{"position":[[128,6]]},"23":{"position":[[28,6]]},"26":{"position":[[136,6]]},"42":{"position":[[189,6]]},"54":{"position":[[446,6]]}},"keywords":{}}],["cyclic",{"_index":565,"title":{},"content":{"27":{"position":[[92,6]]}},"keywords":{}}],["data",{"_index":111,"title":{},"content":{"2":{"position":[[415,4],[434,4]]},"15":{"position":[[91,4],[194,4]]}},"keywords":{}}],["databas",{"_index":25,"title":{},"content":{"1":{"position":[[200,8]]},"2":{"position":[[461,9]]},"60":{"position":[[249,8]]}},"keywords":{}}],["databaseconnectionmodul",{"_index":795,"title":{},"content":{"60":{"position":[[334,27]]}},"keywords":{}}],["databaseconnectionservic",{"_index":796,"title":{},"content":{"60":{"position":[[380,27],[452,26]]}},"keywords":{}}],["db",{"_index":149,"title":{},"content":{"2":{"position":[[909,2]]}},"keywords":{}}],["dbservic",{"_index":797,"title":{},"content":{"60":{"position":[[441,10]]}},"keywords":{}}],["dbservice.gettenantconnection(tenantid",{"_index":799,"title":{},"content":{"60":{"position":[[553,40]]}},"keywords":{}}],["deal",{"_index":130,"title":{},"content":{"2":{"position":[[661,4]]}},"keywords":{}}],["decid",{"_index":366,"title":{},"content":{"13":{"position":[[47,6]]},"33":{"position":[[249,6]]}},"keywords":{}}],["declar",{"_index":554,"title":{},"content":{"25":{"position":[[242,7]]},"26":{"position":[[58,12]]},"45":{"position":[[75,13]]}},"keywords":{}}],["decor",{"_index":263,"title":{"45":{"position":[[8,9]]}},"content":{"6":{"position":[[911,9]]},"44":{"position":[[459,10],[1006,9]]},"45":{"position":[[8,9],[32,9],[297,9]]},"57":{"position":[[106,9]]},"65":{"position":[[755,10]]}},"keywords":{}}],["deep",{"_index":567,"title":{},"content":{"27":{"position":[[182,5]]}},"keywords":{}}],["default",{"_index":214,"title":{},"content":{"5":{"position":[[380,8]]},"6":{"position":[[467,8]]},"7":{"position":[[173,8],[339,8],[802,7],[1201,8],[1394,8],[1523,8],[1658,8]]},"14":{"position":[[287,8]]},"17":{"position":[[249,7]]},"19":{"position":[[940,7],[1209,7]]},"20":{"position":[[294,9]]},"64":{"position":[[3,8]]},"65":{"position":[[732,7]]}},"keywords":{}}],["defin",{"_index":766,"title":{},"content":{"58":{"position":[[17,7]]}},"keywords":{}}],["delay",{"_index":822,"title":{"64":{"position":[[0,7]]}},"content":{"64":{"position":[[191,7]]}},"keywords":{}}],["deleg",{"_index":812,"title":{},"content":{"62":{"position":[[118,9]]}},"keywords":{}}],["dep",{"_index":437,"title":{},"content":{"16":{"position":[[160,5]]}},"keywords":{}}],["depend",{"_index":333,"title":{},"content":{"9":{"position":[[74,10],[605,10]]},"42":{"position":[[258,12]]},"44":{"position":[[505,7]]}},"keywords":{}}],["describ",{"_index":324,"title":{},"content":{"8":{"position":[[17,9]]},"21":{"position":[[62,9]]}},"keywords":{}}],["destructur",{"_index":544,"title":{},"content":{"24":{"position":[[835,13]]}},"keywords":{}}],["detail",{"_index":585,"title":{},"content":{"27":{"position":[[730,8]]}},"keywords":{}}],["details.som",{"_index":592,"title":{},"content":{"29":{"position":[[340,12]]}},"keywords":{}}],["develop",{"_index":107,"title":{},"content":{"2":{"position":[[371,10]]},"21":{"position":[[167,9]]},"44":{"position":[[364,9]]}},"keywords":{}}],["di",{"_index":328,"title":{"9":{"position":[[16,2]]}},"content":{"9":{"position":[[16,2]]}},"keywords":{}}],["difficult",{"_index":352,"title":{},"content":{"9":{"position":[[639,9]]}},"keywords":{}}],["directli",{"_index":273,"title":{},"content":{"7":{"position":[[113,8]]},"27":{"position":[[567,8]]},"50":{"position":[[326,8]]},"55":{"position":[[702,8]]},"68":{"position":[[329,8]]}},"keywords":{}}],["discuss",{"_index":441,"title":{},"content":{"17":{"position":[[21,9]]}},"keywords":{}}],["distinguish",{"_index":759,"title":{},"content":{"57":{"position":[[136,16]]}},"keywords":{}}],["dogs.service.t",{"_index":803,"title":{},"content":{"60":{"position":[[997,15]]}},"keywords":{}}],["dogsservic",{"_index":804,"title":{},"content":{"60":{"position":[[1033,11]]}},"keywords":{}}],["don't",{"_index":553,"title":{},"content":{"25":{"position":[[155,5]]},"34":{"position":[[19,5]]}},"keywords":{}}],["done",{"_index":421,"title":{},"content":{"15":{"position":[[447,4]]}},"keywords":{}}],["dot",{"_index":524,"title":{},"content":{"23":{"position":[[193,3]]}},"keywords":{}}],["dotheth",{"_index":532,"title":{},"content":{"24":{"position":[[210,12]]}},"keywords":{}}],["drop",{"_index":744,"title":{},"content":{"54":{"position":[[277,7]]}},"keywords":{}}],["due",{"_index":569,"title":{},"content":{"27":{"position":[[215,3]]},"30":{"position":[[141,3]]},"32":{"position":[[272,3]]}},"keywords":{}}],["durat",{"_index":446,"title":{},"content":{"17":{"position":[[186,8]]}},"keywords":{}}],["dure",{"_index":637,"title":{},"content":{"36":{"position":[[254,6]]},"44":{"position":[[210,6]]}},"keywords":{}}],["dynam",{"_index":23,"title":{},"content":{"1":{"position":[[185,7]]},"6":{"position":[[739,7]]},"36":{"position":[[23,7]]},"60":{"position":[[207,11]]}},"keywords":{}}],["e.g",{"_index":240,"title":{},"content":{"5":{"position":[[903,5]]},"9":{"position":[[332,5]]}},"keywords":{}}],["each",{"_index":103,"title":{},"content":{"2":{"position":[[332,4]]},"60":{"position":[[735,4]]}},"keywords":{}}],["earli",{"_index":459,"title":{},"content":{"17":{"position":[[871,5]]}},"keywords":{}}],["easi",{"_index":420,"title":{},"content":{"15":{"position":[[305,4]]}},"keywords":{}}],["easier",{"_index":520,"title":{},"content":{"21":{"position":[[177,7]]}},"keywords":{}}],["easili",{"_index":758,"title":{},"content":{"57":{"position":[[129,6]]}},"keywords":{}}],["effect",{"_index":506,"title":{},"content":{"20":{"position":[[250,6]]}},"keywords":{}}],["effort",{"_index":114,"title":{},"content":{"2":{"position":[[485,7]]}},"keywords":{}}],["empti",{"_index":507,"title":{},"content":{"20":{"position":[[335,5]]},"58":{"position":[[45,5]]},"63":{"position":[[86,5]]}},"keywords":{}}],["enabl",{"_index":12,"title":{},"content":{"1":{"position":[[40,7]]},"59":{"position":[[888,7]]}},"keywords":{}}],["encapsul",{"_index":45,"title":{},"content":{"1":{"position":[[438,13]]}},"keywords":{}}],["enforc",{"_index":533,"title":{},"content":{"24":{"position":[[251,8]]}},"keywords":{}}],["enhanc",{"_index":239,"title":{"7":{"position":[[13,8]]},"12":{"position":[[0,10]]},"58":{"position":[[15,9]]}},"content":{"5":{"position":[[876,9]]},"7":{"position":[[1272,8]]},"17":{"position":[[938,9]]},"30":{"position":[[51,8],[215,9]]},"34":{"position":[[48,10]]},"44":{"position":[[272,9]]},"64":{"position":[[77,8],[352,8]]}},"keywords":{}}],["enough",{"_index":721,"title":{},"content":{"50":{"position":[[49,7]]}},"keywords":{}}],["ensur",{"_index":481,"title":{},"content":{"19":{"position":[[594,8]]},"30":{"position":[[165,6]]}},"keywords":{}}],["enter",{"_index":490,"title":{},"content":{"19":{"position":[[956,8]]},"20":{"position":[[12,5]]}},"keywords":{}}],["enter(opt",{"_index":491,"title":{},"content":{"19":{"position":[[971,14]]}},"keywords":{}}],["enterwith",{"_index":449,"title":{},"content":{"17":{"position":[[438,11],[601,9],[732,9]]},"55":{"position":[[205,10]]}},"keywords":{}}],["enterwith(stor",{"_index":492,"title":{},"content":{"19":{"position":[[1118,16]]}},"keywords":{}}],["entir",{"_index":470,"title":{},"content":{"19":{"position":[[162,6]]},"38":{"position":[[81,6]]},"54":{"position":[[285,9]]},"59":{"position":[[804,8]]}},"keywords":{}}],["entri",{"_index":483,"title":{},"content":{"19":{"position":[[636,5]]}},"keywords":{}}],["error",{"_index":547,"title":{},"content":{"24":{"position":[[950,5]]}},"keywords":{}}],["even",{"_index":523,"title":{},"content":{"23":{"position":[[161,4]]},"24":{"position":[[576,4]]},"26":{"position":[[4,4]]}},"keywords":{}}],["everywher",{"_index":28,"title":{},"content":{"1":{"position":[[230,10]]},"25":{"position":[[67,10]]}},"keywords":{}}],["ex",{"_index":404,"title":{},"content":{"14":{"position":[[1506,4]]}},"keywords":{}}],["exampl",{"_index":379,"title":{"37":{"position":[[0,8]]}},"content":{"14":{"position":[[672,7],[1072,7]]},"37":{"position":[[12,7],[171,7]]},"44":{"position":[[159,8]]},"50":{"position":[[196,8]]},"54":{"position":[[476,8]]},"60":{"position":[[159,7]]}},"keywords":{}}],["except",{"_index":754,"title":{},"content":{"55":{"position":[[943,9]]},"57":{"position":[[65,9]]}},"keywords":{}}],["execut",{"_index":300,"title":{},"content":{"7":{"position":[[1053,8]]},"44":{"position":[[407,9]]}},"keywords":{}}],["executioncontext",{"_index":289,"title":{},"content":{"7":{"position":[[532,17],[675,16],[987,17]]},"12":{"position":[[31,16]]},"14":{"position":[[453,16]]},"39":{"position":[[347,17]]},"58":{"position":[[340,17]]}},"keywords":{}}],["exist",{"_index":120,"title":{},"content":{"2":{"position":[[563,9]]},"13":{"position":[[28,6]]},"20":{"position":[[222,8],[278,6],[607,8],[659,8],[729,8]]},"29":{"position":[[353,8]]}},"keywords":{}}],["exit(callback",{"_index":493,"title":{},"content":{"19":{"position":[[1225,14]]}},"keywords":{}}],["experi",{"_index":142,"title":{},"content":{"2":{"position":[[822,11]]}},"keywords":{}}],["explicit",{"_index":618,"title":{},"content":{"33":{"position":[[91,8]]}},"keywords":{}}],["explicitli",{"_index":47,"title":{},"content":{"1":{"position":[[469,10]]},"37":{"position":[[132,10]]},"41":{"position":[[78,10]]},"44":{"position":[[772,10]]}},"keywords":{}}],["export",{"_index":256,"title":{},"content":{"6":{"position":[[530,6]]},"23":{"position":[[318,6]]},"24":{"position":[[118,6]]},"26":{"position":[[163,6],[343,8]]},"38":{"position":[[298,6]]},"39":{"position":[[219,6]]},"40":{"position":[[275,6]]},"41":{"position":[[189,6]]},"44":{"position":[[588,6]]},"47":{"position":[[115,6]]},"49":{"position":[[222,6]]},"52":{"position":[[134,6]]},"53":{"position":[[271,6]]},"55":{"position":[[430,6],[673,6]]},"57":{"position":[[186,6]]},"58":{"position":[[187,6]]},"59":{"position":[[210,8],[282,6]]},"65":{"position":[[283,6],[923,6]]},"67":{"position":[[112,6]]},"68":{"position":[[290,6]]}},"keywords":{}}],["expos",{"_index":337,"title":{},"content":{"9":{"position":[[219,7]]},"36":{"position":[[13,7],[47,7]]},"57":{"position":[[318,7]]}},"keywords":{}}],["express",{"_index":589,"title":{},"content":{"29":{"position":[[164,8],[362,7]]},"30":{"position":[[368,10]]}},"keywords":{}}],["extend",{"_index":526,"title":{},"content":{"23":{"position":[[272,7],[346,7]]},"26":{"position":[[108,9],[189,7]]},"54":{"position":[[508,7]]}},"keywords":{}}],["extent",{"_index":61,"title":{},"content":{"1":{"position":[[688,6]]}},"keywords":{}}],["extern",{"_index":150,"title":{},"content":{"2":{"position":[[915,8]]},"59":{"position":[[538,8]]}},"keywords":{}}],["extra",{"_index":113,"title":{},"content":{"2":{"position":[[479,5]]}},"keywords":{}}],["extraprovid",{"_index":257,"title":{},"content":{"6":{"position":[[588,16]]}},"keywords":{}}],["fact",{"_index":570,"title":{},"content":{"27":{"position":[[226,4]]}},"keywords":{}}],["factori",{"_index":266,"title":{"60":{"position":[[0,7]]}},"content":{"6":{"position":[[1132,7]]},"60":{"position":[[17,7],[42,7],[185,7],[709,7]]},"62":{"position":[[6,7],[218,7]]}},"keywords":{}}],["fairli",{"_index":115,"title":{},"content":{"2":{"position":[[520,6]]}},"keywords":{}}],["fallback",{"_index":381,"title":{},"content":{"14":{"position":[[740,8]]}},"keywords":{}}],["fals",{"_index":215,"title":{},"content":{"5":{"position":[[389,6]]},"7":{"position":[[182,6],[348,6],[1532,6],[1667,6]]},"11":{"position":[[279,5]]},"12":{"position":[[310,5]]},"49":{"position":[[49,5],[196,5]]},"55":{"position":[[582,5]]},"64":{"position":[[339,5],[492,6]]},"65":{"position":[[723,5]]},"68":{"position":[[205,5]]}},"keywords":{}}],["familiar",{"_index":792,"title":{},"content":{"60":{"position":[[65,9]]}},"keywords":{}}],["fast",{"_index":154,"title":{},"content":{"2":{"position":[[947,5]]}},"keywords":{}}],["fastifi",{"_index":590,"title":{},"content":{"29":{"position":[[173,7]]},"30":{"position":[[389,9]]}},"keywords":{}}],["favorit",{"_index":433,"title":{},"content":{"16":{"position":[[57,8]]}},"keywords":{}}],["favourit",{"_index":40,"title":{},"content":{"1":{"position":[[391,9]]}},"keywords":{}}],["featur",{"_index":83,"title":{"21":{"position":[[0,8]]}},"content":{"2":{"position":[[72,9]]},"3":{"position":[[229,8],[415,9]]},"9":{"position":[[537,7]]},"21":{"position":[[0,8],[135,8]]},"42":{"position":[[91,9]]},"50":{"position":[[224,7]]}},"keywords":{}}],["feel",{"_index":551,"title":{},"content":{"25":{"position":[[22,4]]}},"keywords":{}}],["filter",{"_index":755,"title":{},"content":{"55":{"position":[[953,9]]}},"keywords":{}}],["fine",{"_index":819,"title":{},"content":{"63":{"position":[[321,4]]}},"keywords":{}}],["finish",{"_index":824,"title":{},"content":{"64":{"position":[[117,9]]}},"keywords":{}}],["first",{"_index":245,"title":{},"content":{"5":{"position":[[1056,5]]},"14":{"position":[[505,5]]},"15":{"position":[[432,6]]},"19":{"position":[[821,5],[1101,5]]},"68":{"position":[[102,5]]}},"keywords":{}}],["follow",{"_index":199,"title":{},"content":{"5":{"position":[[41,9]]},"7":{"position":[[61,9],[1354,9]]},"19":{"position":[[39,9],[1019,9],[1152,9]]},"20":{"position":[[73,9]]},"43":{"position":[[81,6]]},"44":{"position":[[490,9]]},"55":{"position":[[158,9]]}},"keywords":{}}],["forfeatur",{"_index":743,"title":{},"content":{"54":{"position":[[262,10]]}},"keywords":{}}],["forfeature(async",{"_index":247,"title":{"6":{"position":[[0,18]]}},"content":{},"keywords":{}}],["forroot",{"_index":737,"title":{},"content":{"54":{"position":[[92,7]]}},"keywords":{}}],["forroot(async",{"_index":195,"title":{"5":{"position":[[0,15]]}},"content":{},"keywords":{}}],["forrootasync",{"_index":738,"title":{},"content":{"54":{"position":[[107,13]]}},"keywords":{}}],["framework",{"_index":79,"title":{},"content":{"2":{"position":[[21,10]]},"7":{"position":[[1882,10]]}},"keywords":{}}],["fulli",{"_index":581,"title":{},"content":{"27":{"position":[[645,5]]}},"keywords":{}}],["function",{"_index":267,"title":{"63":{"position":[[25,9]]}},"content":{"6":{"position":[[1140,8],[1285,9]]},"7":{"position":[[599,8],[1039,8]]},"9":{"position":[[351,10],[362,8]]},"14":{"position":[[378,8],[419,8]]},"21":{"position":[[48,13]]},"30":{"position":[[264,9]]},"32":{"position":[[364,12]]},"36":{"position":[[210,8]]},"44":{"position":[[792,8]]},"45":{"position":[[333,8]]},"50":{"position":[[368,8]]},"62":{"position":[[236,10]]},"63":{"position":[[41,10],[92,9],[269,9]]},"64":{"position":[[62,8]]}},"keywords":{}}],["function/callback",{"_index":416,"title":{},"content":{"15":{"position":[[121,17]]}},"keywords":{}}],["further",{"_index":261,"title":{},"content":{"6":{"position":[[804,7],[995,7]]},"42":{"position":[[53,7]]}},"keywords":{}}],["gateway",{"_index":59,"title":{},"content":{"1":{"position":[[647,9]]},"34":{"position":[[10,8]]}},"keywords":{}}],["gener",{"_index":281,"title":{},"content":{"7":{"position":[[380,8],[612,10],[847,8]]},"14":{"position":[[177,8],[300,9],[547,10]]},"27":{"position":[[248,8],[355,10],[516,8]]}},"keywords":{}}],["generateid",{"_index":280,"title":{},"content":{"7":{"position":[[318,12]]},"14":{"position":[[249,11],[821,11]]},"52":{"position":[[96,11]]},"53":{"position":[[172,11]]}},"keywords":{}}],["get",{"_index":608,"title":{},"content":{"32":{"position":[[252,4]]},"40":{"position":[[56,4]]}},"keywords":{}}],["get('/hello",{"_index":667,"title":{},"content":{"40":{"position":[[360,14]]}},"keywords":{}}],["get(key",{"_index":471,"title":{},"content":{"19":{"position":[[182,9]]}},"keywords":{}}],["getal",{"_index":807,"title":{},"content":{"60":{"position":[[1139,8]]}},"keywords":{}}],["getclsservic",{"_index":338,"title":{},"content":{"9":{"position":[[231,15]]}},"keywords":{}}],["getid",{"_index":387,"title":{},"content":{"14":{"position":[[1019,5]]},"19":{"position":[[255,8]]}},"keywords":{}}],["global",{"_index":212,"title":{},"content":{"5":{"position":[[363,8],[423,7]]},"25":{"position":[[106,8]]},"26":{"position":[[504,6]]},"34":{"position":[[33,8]]},"38":{"position":[[190,7]]},"40":{"position":[[176,8]]},"47":{"position":[[55,7]]},"49":{"position":[[161,7]]},"52":{"position":[[55,7]]},"53":{"position":[[60,7]]},"60":{"position":[[616,7],[684,8]]}},"keywords":{}}],["good",{"_index":681,"title":{},"content":{"42":{"position":[[303,4]]}},"keywords":{}}],["gql",{"_index":596,"title":{},"content":{"30":{"position":[[128,3]]}},"keywords":{}}],["graphql",{"_index":595,"title":{"30":{"position":[[0,8]]}},"content":{"31":{"position":[[18,7]]},"32":{"position":[[22,8]]}},"keywords":{}}],["great",{"_index":129,"title":{},"content":{"2":{"position":[[655,5]]}},"keywords":{}}],["gt",{"_index":182,"title":{},"content":{"3":{"position":[[254,5]]},"6":{"position":[[1122,5]]},"7":{"position":[[475,5],[550,5],[922,5],[1005,5]]},"11":{"position":[[191,5]]},"12":{"position":[[158,5]]},"14":{"position":[[867,5],[1492,4]]},"19":{"position":[[667,5],[724,5],[869,5],[1243,5]]},"27":{"position":[[491,6]]},"44":{"position":[[873,5],[1086,5]]},"53":{"position":[[136,5],[209,5]]},"60":{"position":[[479,5]]},"65":{"position":[[477,5],[1083,5]]}},"keywords":{}}],["guarante",{"_index":619,"title":{},"content":{"33":{"position":[[138,9]]}},"keywords":{}}],["guard",{"_index":206,"title":{"66":{"position":[[8,5]]}},"content":{"5":{"position":[[171,7]]},"7":{"position":[[705,5]]},"12":{"position":[[5,5]]},"17":{"position":[[1086,5]]},"30":{"position":[[26,5]]},"32":{"position":[[582,7]]},"55":{"position":[[832,7],[894,6]]},"67":{"position":[[71,6]]},"68":{"position":[[22,6],[108,5],[189,6]]}},"keywords":{}}],["guid",{"_index":173,"title":{"43":{"position":[[10,5]]}},"content":{"3":{"position":[[140,7]]},"43":{"position":[[10,5],[112,6]]}},"keywords":{}}],["handleconnect",{"_index":633,"title":{},"content":{"34":{"position":[[193,16]]}},"keywords":{}}],["handlecron",{"_index":833,"title":{},"content":{"65":{"position":[[434,12],[1143,12]]}},"keywords":{}}],["handlecronexample1",{"_index":699,"title":{},"content":{"44":{"position":[[739,20]]}},"keywords":{}}],["handlecronexample2",{"_index":709,"title":{},"content":{"44":{"position":[[1131,20]]}},"keywords":{}}],["handler",{"_index":691,"title":{},"content":{"44":{"position":[[307,7]]}},"keywords":{}}],["happen",{"_index":563,"title":{},"content":{"27":{"position":[[7,7]]},"29":{"position":[[414,8]]}},"keywords":{}}],["harder",{"_index":355,"title":{},"content":{"9":{"position":[[698,6]]}},"keywords":{}}],["has(key",{"_index":476,"title":{},"content":{"19":{"position":[[330,8]]}},"keywords":{}}],["hasn't",{"_index":480,"title":{},"content":{"19":{"position":[[558,6]]}},"keywords":{}}],["have",{"_index":777,"title":{},"content":{"59":{"position":[[79,6]]}},"keywords":{}}],["header",{"_index":380,"title":{},"content":{"14":{"position":[[726,6]]}},"keywords":{}}],["held",{"_index":112,"title":{},"content":{"2":{"position":[[444,4]]}},"keywords":{}}],["hello",{"_index":402,"title":{},"content":{"14":{"position":[[1452,7]]},"40":{"position":[[375,7]]},"41":{"position":[[319,6]]}},"keywords":{}}],["hello"",{"_index":410,"title":{},"content":{"14":{"position":[[1562,11]]}},"keywords":{}}],["help",{"_index":365,"title":{},"content":{"13":{"position":[[38,4]]}},"keywords":{}}],["helper",{"_index":342,"title":{},"content":{"9":{"position":[[371,8]]}},"keywords":{}}],["here",{"_index":534,"title":{},"content":{"24":{"position":[[260,4]]},"33":{"position":[[311,5]]},"50":{"position":[[484,4]]},"58":{"position":[[272,4]]}},"keywords":{}}],["here'",{"_index":122,"title":{},"content":{"2":{"position":[[587,6]]},"60":{"position":[[149,6]]}},"keywords":{}}],["highlight",{"_index":164,"title":{"3":{"position":[[0,11]]}},"content":{},"keywords":{}}],["histori",{"_index":126,"title":{},"content":{"2":{"position":[[630,8]]}},"keywords":{}}],["hit",{"_index":457,"title":{},"content":{"17":{"position":[[723,4]]}},"keywords":{}}],["hold",{"_index":818,"title":{},"content":{"63":{"position":[[306,6]]}},"keywords":{}}],["hood",{"_index":161,"title":{},"content":{"2":{"position":[[1079,5]]}},"keywords":{}}],["hook",{"_index":74,"title":{},"content":{"1":{"position":[[922,7]]}},"keywords":{}}],["http",{"_index":644,"title":{},"content":{"37":{"position":[[201,4],[259,4]]}},"keywords":{}}],["hypothet",{"_index":793,"title":{},"content":{"60":{"position":[[172,12]]}},"keywords":{}}],["i'v",{"_index":127,"title":{},"content":{"2":{"position":[[639,4]]}},"keywords":{}}],["id",{"_index":15,"title":{"14":{"position":[[8,2]]}},"content":{"1":{"position":[[78,2]]},"5":{"position":[[1100,3]]},"7":{"position":[[399,3],[635,3]]},"14":{"position":[[8,2],[96,3],[194,3],[310,2],[611,2],[706,2],[896,4],[921,2],[1354,3]]},"15":{"position":[[335,3]]},"19":{"position":[[293,2]]},"23":{"position":[[391,3]]},"24":{"position":[[497,3]]},"25":{"position":[[319,3]]},"27":{"position":[[458,3],[682,2]]},"57":{"position":[[206,3]]},"59":{"position":[[310,3]]}},"keywords":{}}],["idea",{"_index":682,"title":{},"content":{"42":{"position":[[308,5]]}},"keywords":{}}],["ideal",{"_index":372,"title":{},"content":{"14":{"position":[[50,5]]}},"keywords":{}}],["idempot",{"_index":482,"title":{},"content":{"19":{"position":[[603,11]]},"30":{"position":[[228,11]]}},"keywords":{}}],["ident",{"_index":611,"title":{},"content":{"32":{"position":[[377,9]]}},"keywords":{}}],["idgener",{"_index":284,"title":{},"content":{"7":{"position":[[446,13],[512,13]]},"14":{"position":[[394,11],[839,12]]},"53":{"position":[[190,12]]}},"keywords":{}}],["idgeneratorservic",{"_index":730,"title":{},"content":{"53":{"position":[[82,20],[115,20]]}},"keywords":{}}],["idgeneratorservice.generate(req",{"_index":731,"title":{},"content":{"53":{"position":[[215,32]]}},"keywords":{}}],["ifnest",{"_index":498,"title":{},"content":{"20":{"position":[[93,10]]}},"keywords":{}}],["imper",{"_index":168,"title":{},"content":{"3":{"position":[[69,10]]}},"keywords":{}}],["implement",{"_index":72,"title":{},"content":{"1":{"position":[[894,14]]},"7":{"position":[[810,14]]},"39":{"position":[[250,10]]},"42":{"position":[[196,14]]},"49":{"position":[[245,10]]},"58":{"position":[[216,10]]},"59":{"position":[[928,15]]},"63":{"position":[[150,9]]}},"keywords":{}}],["import",{"_index":217,"title":{},"content":{"5":{"position":[[453,6],[776,8]]},"6":{"position":[[476,8],[508,8]]},"26":{"position":[[239,8]]},"38":{"position":[[159,8]]},"47":{"position":[[24,8]]},"49":{"position":[[130,8]]},"52":{"position":[[24,8]]},"53":{"position":[[24,8]]},"55":{"position":[[352,8],[529,8]]},"59":{"position":[[607,6],[717,7]]},"60":{"position":[[326,7]]},"67":{"position":[[40,8]]},"68":{"position":[[158,8]]}},"keywords":{}}],["includ",{"_index":13,"title":{},"content":{"1":{"position":[[48,8]]},"30":{"position":[[245,8]]}},"keywords":{}}],["indic",{"_index":623,"title":{},"content":{"33":{"position":[[222,8]]}},"keywords":{}}],["infer",{"_index":179,"title":{"22":{"position":[[21,9]]}},"content":{"3":{"position":[[197,10]]},"23":{"position":[[105,9]]},"24":{"position":[[324,8],[406,8],[483,8],[640,8]]}},"keywords":{}}],["infinit",{"_index":568,"title":{},"content":{"27":{"position":[[197,9]]}},"keywords":{}}],["info",{"_index":69,"title":{},"content":{"1":{"position":[[854,4]]},"5":{"position":[[828,4]]},"15":{"position":[[527,5]]},"16":{"position":[[118,4]]},"42":{"position":[[113,4]]},"45":{"position":[[201,4]]},"63":{"position":[[432,4]]}},"keywords":{}}],["inform",{"_index":825,"title":{},"content":{"64":{"position":[[257,11]]}},"keywords":{}}],["inherit",{"_index":500,"title":{},"content":{"20":{"position":[[117,9]]}},"keywords":{}}],["initi",{"_index":241,"title":{},"content":{"5":{"position":[[909,10]]},"31":{"position":[[94,10]]},"45":{"position":[[254,14]]},"55":{"position":[[38,8]]}},"keywords":{}}],["initialis",{"_index":301,"title":{},"content":{"7":{"position":[[1093,12]]}},"keywords":{}}],["inject",{"_index":233,"title":{},"content":{"5":{"position":[[785,6]]},"6":{"position":[[311,9],[1012,7],[1038,9],[1228,6]]},"9":{"position":[[85,10],[314,9],[616,9]]},"14":{"position":[[1118,13],[1372,13]]},"19":{"position":[[4,10]]},"24":{"position":[[13,6]]},"26":{"position":[[405,6]]},"36":{"position":[[59,10]]},"39":{"position":[[27,7],[205,13]]},"40":{"position":[[261,13]]},"41":{"position":[[175,13]]},"44":{"position":[[574,13]]},"53":{"position":[[74,7]]},"54":{"position":[[239,9],[465,6]]},"57":{"position":[[332,10],[418,8],[480,8]]},"58":{"position":[[173,13],[255,6]]},"59":{"position":[[23,6],[512,6]]},"60":{"position":[[362,7],[674,9],[913,8],[954,8],[1013,13]]},"63":{"position":[[20,9]]},"65":{"position":[[86,8],[269,13],[909,13]]}},"keywords":{}}],["inject(cls_req",{"_index":782,"title":{},"content":{"59":{"position":[[349,16],[778,17]]}},"keywords":{}}],["inject(request",{"_index":789,"title":{},"content":{"59":{"position":[[821,16]]}},"keywords":{}}],["inject(tenant_connect",{"_index":805,"title":{},"content":{"60":{"position":[[1060,26]]}},"keywords":{}}],["injectableproxi",{"_index":264,"title":{},"content":{"6":{"position":[[926,17]]},"57":{"position":[[87,18],[167,18]]},"59":{"position":[[263,18]]}},"keywords":{}}],["insid",{"_index":573,"title":{},"content":{"27":{"position":[[276,6]]}},"keywords":{}}],["instal",{"_index":190,"title":{"16":{"position":[[0,12]]}},"content":{"3":{"position":[[369,7]]},"16":{"position":[[0,12],[13,7],[99,7],[254,10]]}},"keywords":{}}],["instanc",{"_index":762,"title":{},"content":{"57":{"position":[[500,8],[584,8]]},"63":{"position":[[230,8]]}},"keywords":{}}],["instanti",{"_index":274,"title":{},"content":{"7":{"position":[[127,13],[289,13]]},"27":{"position":[[161,13]]}},"keywords":{}}],["instead",{"_index":315,"title":{},"content":{"7":{"position":[[1752,7]]},"9":{"position":[[594,7]]},"25":{"position":[[98,7]]},"42":{"position":[[161,7]]}},"keywords":{}}],["intellisens",{"_index":541,"title":{},"content":{"24":{"position":[[585,12]]}},"keywords":{}}],["intend",{"_index":237,"title":{},"content":{"5":{"position":[[853,6]]}},"keywords":{}}],["interact",{"_index":635,"title":{},"content":{"36":{"position":[[118,11]]}},"keywords":{}}],["intercept(context",{"_index":655,"title":{},"content":{"39":{"position":[[328,18]]},"58":{"position":[[321,18]]}},"keywords":{}}],["interceptor",{"_index":209,"title":{"39":{"position":[[18,12]]},"40":{"position":[[6,11]]},"55":{"position":[[9,11]]}},"content":{"5":{"position":[[258,13],[1015,13]]},"7":{"position":[[714,12]]},"12":{"position":[[14,12],[108,12]]},"30":{"position":[[9,11]]},"37":{"position":[[81,11]]},"39":{"position":[[10,11]]},"40":{"position":[[164,11]]},"55":{"position":[[9,11],[257,11],[383,12],[560,12],[809,12]]},"58":{"position":[[141,11]]}},"keywords":{}}],["interest",{"_index":370,"title":{},"content":{"13":{"position":[[172,10]]}},"keywords":{}}],["interfac",{"_index":187,"title":{"18":{"position":[[8,9]]}},"content":{"3":{"position":[[300,11]]},"6":{"position":[[794,9],[985,9]]},"23":{"position":[[35,9],[257,9],[325,9]]},"25":{"position":[[136,10],[272,9]]},"27":{"position":[[399,9]]}},"keywords":{}}],["interfer",{"_index":725,"title":{},"content":{"50":{"position":[[253,10]]}},"keywords":{}}],["introduc",{"_index":143,"title":{},"content":{"2":{"position":[[838,10]]},"3":{"position":[[17,10],[114,11]]}},"keywords":{}}],["invest",{"_index":128,"title":{},"content":{"2":{"position":[[644,8]]}},"keywords":{}}],["invok",{"_index":505,"title":{},"content":{"20":{"position":[[208,7]]}},"keywords":{}}],["io",{"_index":147,"title":{},"content":{"2":{"position":[[888,2]]}},"keywords":{}}],["ip",{"_index":642,"title":{"39":{"position":[[7,2]]}},"content":{"37":{"position":[[64,2]]},"39":{"position":[[118,2]]},"41":{"position":[[46,2]]}},"keywords":{}}],["ip.interceptor.t",{"_index":652,"title":{},"content":{"39":{"position":[[187,17]]}},"keywords":{}}],["isact",{"_index":494,"title":{},"content":{"19":{"position":[[1312,11]]}},"keywords":{}}],["isol",{"_index":46,"title":{},"content":{"1":{"position":[[456,9]]}},"keywords":{}}],["issu",{"_index":68,"title":{},"content":{"1":{"position":[[846,7]]},"27":{"position":[[711,5]]},"29":{"position":[[187,7],[326,5]]},"32":{"position":[[282,5]]},"50":{"position":[[284,5]]},"63":{"position":[[413,5]]}},"keywords":{}}],["it'",{"_index":838,"title":{},"content":{"68":{"position":[[52,4]]}},"keywords":{}}],["itself",{"_index":811,"title":{},"content":{"62":{"position":[[86,6],[189,6]]}},"keywords":{}}],["job",{"_index":687,"title":{},"content":{"44":{"position":[[178,4]]}},"keywords":{}}],["keep",{"_index":710,"title":{},"content":{"45":{"position":[[213,4]]}},"keywords":{}}],["key",{"_index":283,"title":{},"content":{"7":{"position":[[441,4],[1500,4],[1631,3]]},"19":{"position":[[250,4],[368,3]]},"24":{"position":[[606,5]]},"27":{"position":[[593,4]]},"65":{"position":[[527,5],[1110,5]]}},"keywords":{}}],["keyof",{"_index":472,"title":{},"content":{"19":{"position":[[192,5],[339,5],[404,5],[486,5]]}},"keywords":{}}],["know",{"_index":119,"title":{},"content":{"2":{"position":[[551,4]]},"33":{"position":[[331,4]]}},"keywords":{}}],["known",{"_index":321,"title":{},"content":{"7":{"position":[[1897,5]]},"29":{"position":[[181,5]]}},"keywords":{}}],["lack",{"_index":192,"title":{},"content":{"3":{"position":[[398,5]]}},"keywords":{}}],["languag",{"_index":156,"title":{},"content":{"2":{"position":[[968,9]]}},"keywords":{}}],["late",{"_index":722,"title":{},"content":{"50":{"position":[[101,4]]}},"keywords":{}}],["later",{"_index":378,"title":{},"content":{"14":{"position":[[649,5]]},"64":{"position":[[210,5]]}},"keywords":{}}],["leak",{"_index":444,"title":{},"content":{"17":{"position":[[127,5],[305,4]]}},"keywords":{}}],["less",{"_index":448,"title":{},"content":{"17":{"position":[[428,4]]}},"keywords":{}}],["level",{"_index":32,"title":{},"content":{"1":{"position":[[292,5]]},"9":{"position":[[345,5]]},"20":{"position":[[519,5]]},"45":{"position":[[66,5]]}},"keywords":{}}],["librari",{"_index":11,"title":{},"content":{"1":{"position":[[32,7]]},"2":{"position":[[117,7],[1008,7]]},"3":{"position":[[360,8]]},"13":{"position":[[67,7]]},"16":{"position":[[207,10]]},"36":{"position":[[5,7]]},"37":{"position":[[34,7]]},"42":{"position":[[45,7]]},"43":{"position":[[72,8]]}},"keywords":{}}],["life",{"_index":415,"title":{},"content":{"15":{"position":[[111,4]]},"21":{"position":[[157,4]]},"42":{"position":[[86,4]]}},"keywords":{}}],["lifecycl",{"_index":638,"title":{},"content":{"36":{"position":[[265,9]]},"64":{"position":[[237,9]]}},"keywords":{}}],["lifetim",{"_index":417,"title":{},"content":{"15":{"position":[[210,8]]},"17":{"position":[[892,8]]}},"keywords":{}}],["limit",{"_index":90,"title":{},"content":{"2":{"position":[[165,8]]},"42":{"position":[[235,8]]}},"keywords":{}}],["list",{"_index":255,"title":{},"content":{"6":{"position":[[500,4],[624,4]]},"33":{"position":[[304,6],[385,6]]}},"keywords":{}}],["local",{"_index":413,"title":{},"content":{"15":{"position":[[26,5]]}},"keywords":{}}],["log",{"_index":17,"title":{},"content":{"1":{"position":[[104,7]]},"14":{"position":[[119,8],[1497,4]]},"15":{"position":[[323,3]]}},"keywords":{}}],["log(messag",{"_index":395,"title":{},"content":{"14":{"position":[[1198,12]]}},"keywords":{}}],["logger",{"_index":390,"title":{},"content":{"14":{"position":[[1097,7],[1433,7]]}},"keywords":{}}],["look",{"_index":756,"title":{},"content":{"57":{"position":[[16,4]]},"60":{"position":[[60,4]]}},"keywords":{}}],["lose",{"_index":322,"title":{},"content":{"7":{"position":[[1906,4]]}},"keywords":{}}],["loss",{"_index":451,"title":{},"content":{"17":{"position":[[520,5]]},"29":{"position":[[400,5]]}},"keywords":{}}],["lost",{"_index":445,"title":{},"content":{"17":{"position":[[166,4],[362,5]]},"32":{"position":[[257,4]]}},"keywords":{}}],["lot",{"_index":67,"title":{},"content":{"1":{"position":[[833,3]]}},"keywords":{}}],["made",{"_index":105,"title":{},"content":{"2":{"position":[[350,4]]},"59":{"position":[[176,4]]}},"keywords":{}}],["main.t",{"_index":726,"title":{},"content":{"50":{"position":[[360,7]]}},"keywords":{}}],["major",{"_index":684,"title":{},"content":{"43":{"position":[[50,5]]}},"keywords":{}}],["make",{"_index":133,"title":{},"content":{"2":{"position":[[689,6],[792,6]]},"5":{"position":[[407,4]]},"6":{"position":[[895,4]]},"9":{"position":[[631,4]]},"15":{"position":[[296,5],[376,4]]},"21":{"position":[[147,4]]},"24":{"position":[[89,4]]},"32":{"position":[[557,5]]},"41":{"position":[[122,6]]},"55":{"position":[[869,5]]},"57":{"position":[[119,4]]},"59":{"position":[[668,4]]},"60":{"position":[[633,4]]}},"keywords":{}}],["manag",{"_index":434,"title":{},"content":{"16":{"position":[[74,8]]}},"keywords":{}}],["mani",{"_index":117,"title":{},"content":{"2":{"position":[[539,4]]}},"keywords":{}}],["manipul",{"_index":467,"title":{},"content":{"19":{"position":[[56,10]]}},"keywords":{}}],["manner",{"_index":97,"title":{},"content":{"2":{"position":[[266,7]]}},"keywords":{}}],["manual",{"_index":275,"title":{"48":{"position":[[0,9]]},"68":{"position":[[0,9]]}},"content":{"7":{"position":[[146,10],[308,9]]},"17":{"position":[[1030,8]]},"19":{"position":[[1437,8]]},"29":{"position":[[312,9],[447,8]]},"32":{"position":[[69,8]]},"34":{"position":[[123,8]]},"44":{"position":[[564,9]]},"49":{"position":[[82,8]]},"50":{"position":[[475,8]]},"55":{"position":[[456,8],[477,8]]},"64":{"position":[[413,8]]},"68":{"position":[[86,8]]}},"keywords":{}}],["math.random",{"_index":293,"title":{},"content":{"7":{"position":[[830,13]]},"14":{"position":[[334,14]]}},"keywords":{}}],["mean",{"_index":458,"title":{},"content":{"17":{"position":[[753,6],[1004,5]]},"36":{"position":[[94,5]]},"55":{"position":[[845,5]]}},"keywords":{}}],["member",{"_index":186,"title":{},"content":{"3":{"position":[[289,7]]}},"keywords":{}}],["mercuriu",{"_index":601,"title":{},"content":{"30":{"position":[[379,9]]},"32":{"position":[[337,11]]}},"keywords":{}}],["messag",{"_index":397,"title":{},"content":{"14":{"position":[[1262,13]]}},"keywords":{}}],["metadata",{"_index":16,"title":{},"content":{"1":{"position":[[91,8]]}},"keywords":{}}],["method",{"_index":197,"title":{},"content":{"5":{"position":[[24,6]]},"6":{"position":[[27,6],[86,6],[161,6]]},"9":{"position":[[247,6]]},"14":{"position":[[1012,6]]},"17":{"position":[[277,7],[450,7],[498,6],[611,6]]},"20":{"position":[[18,7],[198,6]]},"24":{"position":[[751,6]]},"30":{"position":[[338,7]]},"32":{"position":[[354,6]]},"34":{"position":[[210,6]]},"45":{"position":[[59,6],[98,6],[133,6]]},"50":{"position":[[33,6],[352,7]]},"54":{"position":[[34,6],[308,6]]},"55":{"position":[[139,6],[862,6]]},"60":{"position":[[141,7]]},"62":{"position":[[156,6]]},"68":{"position":[[470,7]]}},"keywords":{}}],["middlewar",{"_index":201,"title":{"7":{"position":[[0,10]]},"11":{"position":[[0,11]]},"46":{"position":[[8,10]]}},"content":{"5":{"position":[[69,12],[941,10]]},"11":{"position":[[11,10],[122,11]]},"14":{"position":[[794,11]]},"29":{"position":[[370,11]]},"37":{"position":[[228,11]]},"38":{"position":[[204,11]]},"47":{"position":[[69,11]]},"48":{"position":[[112,10],[162,12]]},"49":{"position":[[175,11]]},"50":{"position":[[69,10],[147,11],[464,10],[611,10],[659,10]]},"52":{"position":[[69,11]]},"53":{"position":[[145,11]]},"54":{"position":[[196,11]]},"64":{"position":[[455,11]]}},"keywords":{}}],["middleware/guard/interceptor",{"_index":277,"title":{},"content":{"7":{"position":[[224,28]]},"14":{"position":[[205,29]]},"64":{"position":[[86,30]]}},"keywords":{}}],["middlewareconsum",{"_index":719,"title":{},"content":{"49":{"position":[[289,19]]}},"keywords":{}}],["migrat",{"_index":172,"title":{"43":{"position":[[0,9]]}},"content":{"3":{"position":[[130,9]]},"43":{"position":[[0,9],[102,9]]}},"keywords":{}}],["mind",{"_index":711,"title":{},"content":{"45":{"position":[[221,5]]}},"keywords":{}}],["minor",{"_index":169,"title":{},"content":{"3":{"position":[[85,6]]}},"keywords":{}}],["miss",{"_index":85,"title":{},"content":{"2":{"position":[[90,6]]}},"keywords":{}}],["mix",{"_index":110,"title":{},"content":{"2":{"position":[[404,3]]}},"keywords":{}}],["mock",{"_index":353,"title":{},"content":{"9":{"position":[[652,4]]}},"keywords":{}}],["modif",{"_index":514,"title":{},"content":{"20":{"position":[[590,13],[708,13]]}},"keywords":{}}],["modul",{"_index":193,"title":{"4":{"position":[[0,6]]},"25":{"position":[[17,6]]},"49":{"position":[[7,7]]}},"content":{"5":{"position":[[416,6],[492,8],[588,7]]},"6":{"position":[[517,7],[747,7]]},"16":{"position":[[128,6]]},"21":{"position":[[105,6]]},"25":{"position":[[250,6]]},"26":{"position":[[229,9]]},"38":{"position":[[149,9]]},"47":{"position":[[14,9]]},"49":{"position":[[98,7],[120,9]]},"52":{"position":[[14,9]]},"53":{"position":[[14,9]]},"55":{"position":[[342,9],[519,9]]},"57":{"position":[[366,7]]},"59":{"position":[[547,7],[629,7]]},"67":{"position":[[30,9]]},"68":{"position":[[126,7],[148,9]]}},"keywords":{}}],["more",{"_index":228,"title":{},"content":{"5":{"position":[[683,4]]},"15":{"position":[[522,4]]},"26":{"position":[[9,4]]},"27":{"position":[[725,4]]},"42":{"position":[[70,4]]},"48":{"position":[[81,4]]},"63":{"position":[[427,4]]},"64":{"position":[[252,4]]}},"keywords":{}}],["motiv",{"_index":77,"title":{"2":{"position":[[0,11]]}},"content":{},"keywords":{}}],["mount",{"_index":276,"title":{"40":{"position":[[0,5]]}},"content":{"7":{"position":[[157,7],[214,5]]},"11":{"position":[[136,6]]},"12":{"position":[[123,6]]},"14":{"position":[[808,6]]},"17":{"position":[[857,5],[1039,5]]},"29":{"position":[[123,5],[241,8],[304,7],[423,5]]},"31":{"position":[[155,5]]},"32":{"position":[[61,7]]},"38":{"position":[[41,5],[218,6]]},"40":{"position":[[3,8]]},"47":{"position":[[83,6]]},"49":{"position":[[23,5],[189,6]]},"50":{"position":[[89,7],[317,5],[454,5]]},"52":{"position":[[83,6]]},"53":{"position":[[159,6]]},"54":{"position":[[210,6]]},"55":{"position":[[398,6],[468,5],[575,6]]},"67":{"position":[[4,6],[80,6]]},"68":{"position":[[71,5],[198,6],[320,5]]}},"keywords":{}}],["much",{"_index":674,"title":{},"content":{"42":{"position":[[15,4]]}},"keywords":{}}],["multi",{"_index":29,"title":{},"content":{"1":{"position":[[244,5]]}},"keywords":{}}],["multipl",{"_index":238,"title":{},"content":{"5":{"position":[[867,8]]},"19":{"position":[[627,8]]},"30":{"position":[[71,8],[104,8]]}},"keywords":{}}],["my.logger.t",{"_index":391,"title":{},"content":{"14":{"position":[[1105,12]]}},"keywords":{}}],["my.service.t",{"_index":400,"title":{},"content":{"14":{"position":[[1358,13]]}},"keywords":{}}],["myclsmodul",{"_index":559,"title":{},"content":{"26":{"position":[[377,11]]}},"keywords":{}}],["myclsservic",{"_index":557,"title":{},"content":{"26":{"position":[[176,12],[298,13],[352,15],[412,12]]}},"keywords":{}}],["myclsstor",{"_index":528,"title":{},"content":{"23":{"position":[[335,10]]}},"keywords":{}}],["mycontextservic",{"_index":745,"title":{},"content":{"54":{"position":[[491,16],[551,16],[650,17],[678,17]]}},"keywords":{}}],["mycontextservice(new",{"_index":747,"title":{},"content":{"54":{"position":[[574,20]]}},"keywords":{}}],["mylogg",{"_index":392,"title":{},"content":{"14":{"position":[[1138,8],[1441,10]]}},"keywords":{}}],["myservic",{"_index":401,"title":{},"content":{"14":{"position":[[1392,9]]},"24":{"position":[[131,9]]}},"keywords":{}}],["name",{"_index":70,"title":{},"content":{"1":{"position":[[865,4]]},"3":{"position":[[266,6]]},"57":{"position":[[443,5]]}},"keywords":{}}],["namespac",{"_index":742,"title":{},"content":{"54":{"position":[[229,9],[385,11],[414,10]]}},"keywords":{}}],["nativ",{"_index":76,"title":{},"content":{"1":{"position":[[962,6]]}},"keywords":{}}],["necessari",{"_index":320,"title":{},"content":{"7":{"position":[[1862,10]]},"9":{"position":[[562,10]]},"65":{"position":[[13,9]]}},"keywords":{}}],["need",{"_index":419,"title":{},"content":{"15":{"position":[[253,4]]},"17":{"position":[[473,6]]},"25":{"position":[[161,4]]},"29":{"position":[[292,5]]},"32":{"position":[[49,5]]},"34":{"position":[[178,6]]},"44":{"position":[[95,4],[546,4]]},"48":{"position":[[68,4]]},"50":{"position":[[164,4]]},"59":{"position":[[504,4]]},"68":{"position":[[7,4]]}},"keywords":{}}],["neglig",{"_index":145,"title":{},"content":{"2":{"position":[[861,10]]}},"keywords":{}}],["nest",{"_index":503,"title":{},"content":{"20":{"position":[[158,6]]},"23":{"position":[[170,6]]},"27":{"position":[[586,6]]},"29":{"position":[[32,4]]}},"keywords":{}}],["nest'",{"_index":340,"title":{},"content":{"9":{"position":[[307,6]]},"31":{"position":[[11,6]]},"55":{"position":[[802,6]]}},"keywords":{}}],["nestfactory.create(appmodul",{"_index":727,"title":{},"content":{"50":{"position":[[409,30]]}},"keywords":{}}],["nestinterceptor",{"_index":654,"title":{},"content":{"39":{"position":[[261,15]]},"58":{"position":[[227,15]]}},"keywords":{}}],["nestj",{"_index":0,"title":{"0":{"position":[[0,6]]}},"content":{"2":{"position":[[0,6]]},"15":{"position":[[154,7]]},"16":{"position":[[107,6]]},"25":{"position":[[257,7]]},"50":{"position":[[235,6]]}},"keywords":{"0":{"position":[[56,6]]},"4":{"position":[[56,6]]},"8":{"position":[[56,6]]},"9":{"position":[[56,6]]},"10":{"position":[[56,6]]},"13":{"position":[[56,6]]},"14":{"position":[[56,6]]},"15":{"position":[[56,6]]},"16":{"position":[[56,6]]},"17":{"position":[[56,6]]},"18":{"position":[[56,6]]},"21":{"position":[[56,6]]},"22":{"position":[[56,6]]},"28":{"position":[[56,6]]},"35":{"position":[[56,6]]},"43":{"position":[[56,6]]},"44":{"position":[[56,6]]},"45":{"position":[[56,6]]},"46":{"position":[[56,6]]},"51":{"position":[[56,6]]},"54":{"position":[[56,6]]},"55":{"position":[[56,6]]},"56":{"position":[[56,6]]},"66":{"position":[[56,6]]}}}],["nestjs'",{"_index":332,"title":{},"content":{"9":{"position":[[65,8]]}},"keywords":{}}],["nestjs/common",{"_index":439,"title":{},"content":{"16":{"position":[[192,14]]}},"keywords":{}}],["nestjs/cor",{"_index":438,"title":{},"content":{"16":{"position":[[175,12]]}},"keywords":{}}],["nestjs/graphql",{"_index":602,"title":{"31":{"position":[[0,15]]},"32":{"position":[[0,15]]}},"content":{},"keywords":{}}],["nestmodul",{"_index":717,"title":{},"content":{"49":{"position":[[256,10]]}},"keywords":{}}],["new",{"_index":116,"title":{},"content":{"2":{"position":[[527,3]]},"3":{"position":[[0,4]]},"19":{"position":[[903,3],[1172,3]]},"20":{"position":[[331,3],[695,3]]},"43":{"position":[[46,3]]},"50":{"position":[[498,3]]},"54":{"position":[[570,3]]}},"keywords":{}}],["next",{"_index":317,"title":{},"content":{"7":{"position":[[1776,6]]},"17":{"position":[[1113,4]]},"39":{"position":[[365,5]]},"58":{"position":[[358,5]]}},"keywords":{}}],["next.handl",{"_index":662,"title":{},"content":{"39":{"position":[[546,14]]},"58":{"position":[[577,14]]}},"keywords":{}}],["nice",{"_index":123,"title":{},"content":{"2":{"position":[[596,4]]}},"keywords":{}}],["node",{"_index":139,"title":{},"content":{"2":{"position":[[799,4]]}},"keywords":{}}],["nodeconf",{"_index":125,"title":{},"content":{"2":{"position":[[611,8]]}},"keywords":{}}],["non",{"_index":646,"title":{},"content":{"37":{"position":[[255,3]]}},"keywords":{}}],["nonexist",{"_index":546,"title":{},"content":{"24":{"position":[[907,11]]}},"keywords":{}}],["normal",{"_index":770,"title":{},"content":{"58":{"position":[[498,6]]},"60":{"position":[[10,6]]}},"keywords":{}}],["notat",{"_index":525,"title":{},"content":{"23":{"position":[[197,9]]}},"keywords":{}}],["note",{"_index":236,"title":{},"content":{"5":{"position":[[840,5]]},"9":{"position":[[517,5]]},"37":{"position":[[161,4]]},"50":{"position":[[589,5]]},"55":{"position":[[778,4],[790,5]]},"68":{"position":[[408,5]]}},"keywords":{}}],["notexist",{"_index":548,"title":{},"content":{"24":{"position":[[962,8]]}},"keywords":{}}],["noth",{"_index":622,"title":{},"content":{"33":{"position":[[203,7]]}},"keywords":{}}],["notic",{"_index":625,"title":{},"content":{"33":{"position":[[367,7]]}},"keywords":{}}],["now",{"_index":345,"title":{},"content":{"9":{"position":[[436,3]]},"25":{"position":[[147,3]]},"26":{"position":[[393,3]]},"54":{"position":[[299,3]]}},"keywords":{}}],["npm",{"_index":432,"title":{},"content":{"16":{"position":[[34,3],[95,3]]}},"keywords":{}}],["npmyarnpnpm",{"_index":435,"title":{},"content":{"16":{"position":[[83,11]]}},"keywords":{}}],["number",{"_index":529,"title":{},"content":{"23":{"position":[[395,7]]},"24":{"position":[[420,6],[501,7]]},"25":{"position":[[323,7]]},"27":{"position":[[462,7]]},"42":{"position":[[248,6]]},"57":{"position":[[210,7]]},"59":{"position":[[314,7]]}},"keywords":{}}],["object",{"_index":39,"title":{},"content":{"1":{"position":[[376,6]]},"5":{"position":[[106,6],[198,6],[297,6]]},"6":{"position":[[1272,6]]},"7":{"position":[[660,6],[1438,6],[1569,6]]},"11":{"position":[[47,7]]},"12":{"position":[[48,6]]},"19":{"position":[[807,6],[1087,6]]},"20":{"position":[[57,6]]},"23":{"position":[[177,7]]},"24":{"position":[[828,6]]},"27":{"position":[[24,6]]},"58":{"position":[[505,6]]}},"keywords":{}}],["observable<any>",{"_index":657,"title":{},"content":{"39":{"position":[[385,21]]},"58":{"position":[[378,21]]}},"keywords":{}}],["offend",{"_index":593,"title":{},"content":{"29":{"position":[[468,9]]}},"keywords":{}}],["older",{"_index":605,"title":{},"content":{"32":{"position":[[4,5]]}},"keywords":{}}],["omit",{"_index":716,"title":{},"content":{"49":{"position":[[14,4]]}},"keywords":{}}],["on",{"_index":86,"title":{},"content":{"2":{"position":[[97,4]]},"5":{"position":[[1062,3]]},"14":{"position":[[769,4]]},"20":{"position":[[699,4]]},"29":{"position":[[478,4]]},"58":{"position":[[116,3]]}},"keywords":{}}],["onc",{"_index":427,"title":{},"content":{"15":{"position":[[555,4]]},"62":{"position":[[135,4]]},"64":{"position":[[247,4]]}},"keywords":{}}],["oper",{"_index":148,"title":{},"content":{"2":{"position":[[891,9]]},"30":{"position":[[181,9]]}},"keywords":{}}],["option",{"_index":194,"title":{"4":{"position":[[7,7]]},"7":{"position":[[22,8]]}},"content":{"5":{"position":[[129,7],[221,7],[320,7]]},"6":{"position":[[281,8],[399,9],[491,8]]},"7":{"position":[[590,8]]},"8":{"position":[[84,8]]},"14":{"position":[[153,6],[275,8],[406,7]]},"17":{"position":[[807,7]]},"19":{"position":[[779,10],[799,7],[1059,10],[1079,7]]},"20":{"position":[[49,7]]},"29":{"position":[[129,6]]},"31":{"position":[[161,7]]},"32":{"position":[[223,8]]},"49":{"position":[[29,6]]},"55":{"position":[[305,8]]},"64":{"position":[[361,7]]}},"keywords":{}}],["order",{"_index":268,"title":{},"content":{"6":{"position":[[1191,5]]},"32":{"position":[[99,5]]},"48":{"position":[[103,5]]},"50":{"position":[[273,6]]},"63":{"position":[[3,5],[130,5]]}},"keywords":{}}],["origin",{"_index":71,"title":{},"content":{"1":{"position":[[885,8]]}},"keywords":{}}],["orm",{"_index":41,"title":{},"content":{"1":{"position":[[401,3]]}},"keywords":{}}],["otel",{"_index":158,"title":{},"content":{"2":{"position":[[1022,6]]}},"keywords":{}}],["other",{"_index":616,"title":{"33":{"position":[[0,7]]}},"content":{},"keywords":{}}],["otherwis",{"_index":609,"title":{},"content":{"32":{"position":[[262,9]]},"33":{"position":[[231,10]]},"65":{"position":[[59,9]]}},"keywords":{}}],["out",{"_index":327,"title":{"9":{"position":[[9,3]]}},"content":{"9":{"position":[[9,3]]},"26":{"position":[[152,3]]}},"keywords":{}}],["outsid",{"_index":334,"title":{"44":{"position":[[6,7]]},"65":{"position":[[0,7]]}},"content":{"9":{"position":[[142,7],[296,7]]},"44":{"position":[[6,7],[113,7]]},"45":{"position":[[160,7]]},"65":{"position":[[23,7]]}},"keywords":{}}],["over",{"_index":713,"title":{},"content":{"48":{"position":[[94,4]]}},"keywords":{}}],["overhead",{"_index":144,"title":{},"content":{"2":{"position":[[849,8]]}},"keywords":{}}],["overrid",{"_index":499,"title":{},"content":{"20":{"position":[[104,10],[285,8]]}},"keywords":{}}],["packag",{"_index":329,"title":{},"content":{"9":{"position":[[30,7]]},"14":{"position":[[133,7]]},"16":{"position":[[38,7],[66,7]]},"29":{"position":[[5,7]]},"31":{"position":[[61,7]]},"33":{"position":[[268,7]]}},"keywords":{}}],["paramet",{"_index":63,"title":{"24":{"position":[[13,10]]}},"content":{"1":{"position":[[763,10]]},"5":{"position":[[807,10]]},"6":{"position":[[386,9]]},"7":{"position":[[71,10],[1364,11]]},"11":{"position":[[90,11]]},"12":{"position":[[77,10]]},"14":{"position":[[511,10]]},"19":{"position":[[95,9],[827,10],[1107,10]]},"24":{"position":[[47,9]]},"25":{"position":[[186,9]]}},"keywords":{}}],["parent",{"_index":260,"title":{},"content":{"6":{"position":[[732,6]]},"20":{"position":[[263,6],[369,6],[481,6],[565,6]]},"57":{"position":[[359,6]]}},"keywords":{}}],["part",{"_index":686,"title":{},"content":{"44":{"position":[[42,4]]}},"keywords":{}}],["pass",{"_index":48,"title":{},"content":{"1":{"position":[[480,7],[738,7]]},"6":{"position":[[432,6],[703,7]]},"11":{"position":[[59,6]]},"12":{"position":[[58,6]]},"14":{"position":[[242,4]]},"32":{"position":[[178,4]]},"37":{"position":[[143,7]]},"41":{"position":[[89,7]]},"50":{"position":[[679,6]]},"55":{"position":[[227,4]]}},"keywords":{}}],["passport",{"_index":54,"title":{},"content":{"1":{"position":[[597,9]]}},"keywords":{}}],["path",{"_index":572,"title":{},"content":{"27":{"position":[[270,5],[370,5],[529,5]]}},"keywords":{}}],["peer",{"_index":436,"title":{},"content":{"16":{"position":[[155,4]]}},"keywords":{}}],["peopl",{"_index":118,"title":{},"content":{"2":{"position":[[544,6]]}},"keywords":{}}],["person",{"_index":131,"title":{},"content":{"2":{"position":[[672,8]]}},"keywords":{}}],["phase",{"_index":837,"title":{},"content":{"65":{"position":[[883,6]]}},"keywords":{}}],["place",{"_index":750,"title":{},"content":{"55":{"position":[[29,5]]},"58":{"position":[[120,5]]}},"keywords":{}}],["platform",{"_index":617,"title":{},"content":{"33":{"position":[[68,9],[171,8],[283,8]]}},"keywords":{}}],["pleas",{"_index":235,"title":{},"content":{"5":{"position":[[833,6]]},"9":{"position":[[510,6]]},"33":{"position":[[317,6]]},"45":{"position":[[206,6]]},"50":{"position":[[582,6]]},"55":{"position":[[783,6]]},"63":{"position":[[402,6]]},"68":{"position":[[401,6]]}},"keywords":{}}],["pleasant",{"_index":134,"title":{},"content":{"2":{"position":[[713,8]]}},"keywords":{}}],["plethora",{"_index":80,"title":{},"content":{"2":{"position":[[43,8]]}},"keywords":{}}],["point",{"_index":484,"title":{},"content":{"19":{"position":[[642,7]]},"64":{"position":[[216,5]]}},"keywords":{}}],["popul",{"_index":765,"title":{"58":{"position":[[0,8]]},"59":{"position":[[5,10]]}},"content":{},"keywords":{}}],["possibl",{"_index":135,"title":{},"content":{"2":{"position":[[725,9]]},"9":{"position":[[107,8]]},"17":{"position":[[110,8],[904,8]]},"23":{"position":[[6,8]]},"27":{"position":[[188,8],[261,8]]},"59":{"position":[[11,8]]},"63":{"position":[[441,8]]}},"keywords":{}}],["prefer",{"_index":587,"title":{},"content":{"29":{"position":[[72,9]]},"31":{"position":[[77,9]]},"68":{"position":[[57,10]]}},"keywords":{}}],["prepar",{"_index":834,"title":{},"content":{"65":{"position":[[488,7]]}},"keywords":{}}],["present",{"_index":826,"title":{},"content":{"64":{"position":[[272,7]]}},"keywords":{}}],["pretti",{"_index":673,"title":{},"content":{"42":{"position":[[8,6]]}},"keywords":{}}],["previou",{"_index":455,"title":{},"content":{"17":{"position":[[688,8]]},"50":{"position":[[24,8]]}},"keywords":{}}],["primit",{"_index":810,"title":{"62":{"position":[[3,9]]}},"content":{"62":{"position":[[40,9]]}},"keywords":{}}],["prior",{"_index":723,"title":{},"content":{"50":{"position":[[176,5]]}},"keywords":{}}],["privat",{"_index":696,"title":{},"content":{"44":{"position":[[631,7],[674,7]]},"60":{"position":[[1087,7]]},"65":{"position":[[326,7],[369,7]]}},"keywords":{}}],["probabl",{"_index":462,"title":{},"content":{"17":{"position":[[1021,8]]}},"keywords":{}}],["process",{"_index":377,"title":{},"content":{"14":{"position":[[558,7]]}},"keywords":{}}],["programmat",{"_index":325,"title":{},"content":{"8":{"position":[[31,12]]}},"keywords":{}}],["project",{"_index":367,"title":{},"content":{"13":{"position":[[99,7]]}},"keywords":{}}],["promis",{"_index":712,"title":{},"content":{"45":{"position":[[363,9]]}},"keywords":{}}],["promise<string>",{"_index":287,"title":{},"content":{"7":{"position":[[490,21],[565,21]]}},"keywords":{}}],["promise<void>",{"_index":299,"title":{},"content":{"7":{"position":[[935,20],[1018,20]]},"19":{"position":[[1417,19]]}},"keywords":{}}],["propag",{"_index":37,"title":{},"content":{"1":{"position":[[348,11]]}},"keywords":{}}],["proper",{"_index":522,"title":{},"content":{"23":{"position":[[72,6]]}},"keywords":{}}],["properti",{"_index":512,"title":{},"content":{"20":{"position":[[525,10],[616,10]]},"24":{"position":[[919,8]]},"55":{"position":[[269,8]]},"62":{"position":[[142,8]]}},"keywords":{}}],["protocol",{"_index":466,"title":{},"content":{"17":{"position":[[1173,10]]}},"keywords":{}}],["provid",{"_index":52,"title":{"26":{"position":[[15,9]]},"56":{"position":[[6,9]]},"57":{"position":[[12,10]]},"59":{"position":[[22,9]]},"60":{"position":[[14,10]]},"64":{"position":[[28,10]]}},"content":{"1":{"position":[[569,9],[725,9]]},"3":{"position":[[34,9]]},"5":{"position":[[540,9],[636,10]]},"6":{"position":[[66,10],[118,10],[290,9],[342,9],[371,9],[541,9],[578,9],[643,9],[885,9],[1059,9],[1174,9],[1327,9]]},"7":{"position":[[1255,9]]},"9":{"position":[[170,8]]},"14":{"position":[[141,8],[361,7],[991,8]]},"15":{"position":[[40,8],[277,10]]},"19":{"position":[[26,8],[1474,10]]},"21":{"position":[[112,8]]},"26":{"position":[[143,8],[274,10],[289,8]]},"36":{"position":[[85,8]]},"38":{"position":[[240,10]]},"42":{"position":[[61,8]]},"44":{"position":[[1257,10]]},"50":{"position":[[730,7]]},"54":{"position":[[341,10],[453,8],[626,10],[641,8]]},"55":{"position":[[596,10],[611,8]]},"57":{"position":[[6,9],[45,10],[257,9],[343,8]]},"58":{"position":[[8,8]]},"59":{"position":[[36,9],[61,8],[192,9],[521,8],[708,8],[856,9]]},"60":{"position":[[25,10],[50,9],[193,8],[298,8],[820,9],[973,7]]},"62":{"position":[[14,9],[77,8]]},"64":{"position":[[18,9]]},"65":{"position":[[101,8],[239,10],[565,8],[840,9]]},"68":{"position":[[219,10],[234,8]]}},"keywords":{}}],["provider[]opt",{"_index":258,"title":{},"content":{"6":{"position":[[605,18]]}},"keywords":{}}],["proxi",{"_index":7,"title":{"56":{"position":[[0,5]]},"57":{"position":[[6,5]]},"59":{"position":[[16,5]]},"60":{"position":[[8,5]]},"63":{"position":[[7,7]]},"64":{"position":[[22,5]]}},"content":{"3":{"position":[[28,5]]},"5":{"position":[[534,5],[630,5]]},"6":{"position":[[60,5],[112,5],[685,6],[879,5],[1321,5]]},"7":{"position":[[1249,5]]},"19":{"position":[[1468,5]]},"44":{"position":[[1251,5]]},"54":{"position":[[335,5]]},"57":{"position":[[251,5],[538,5]]},"58":{"position":[[266,5]]},"59":{"position":[[55,5],[186,5],[702,5]]},"60":{"position":[[36,5]]},"62":{"position":[[0,5],[100,5]]},"63":{"position":[[30,7],[67,5],[244,5]]},"64":{"position":[[12,5]]},"65":{"position":[[95,5],[233,5],[559,5],[834,5]]}},"keywords":{"0":{"position":[[64,5]]},"4":{"position":[[64,5]]},"8":{"position":[[64,5]]},"9":{"position":[[64,5]]},"10":{"position":[[64,5]]},"13":{"position":[[64,5]]},"14":{"position":[[64,5]]},"15":{"position":[[64,5]]},"16":{"position":[[64,5]]},"17":{"position":[[64,5]]},"18":{"position":[[64,5]]},"21":{"position":[[64,5]]},"22":{"position":[[64,5]]},"28":{"position":[[64,5]]},"35":{"position":[[64,5]]},"43":{"position":[[64,5]]},"44":{"position":[[64,5]]},"45":{"position":[[64,5]]},"46":{"position":[[64,5]]},"51":{"position":[[64,5]]},"54":{"position":[[64,5]]},"55":{"position":[[64,5]]},"56":{"position":[[64,5]]},"66":{"position":[[64,5]]}}}],["proxyprovid",{"_index":219,"title":{},"content":{"5":{"position":[[501,16]]}},"keywords":{}}],["purpos",{"_index":375,"title":{},"content":{"14":{"position":[[108,7]]}},"keywords":{}}],["purposeskeep",{"_index":18,"title":{},"content":{"1":{"position":[[112,15]]}},"keywords":{}}],["put",{"_index":302,"title":{},"content":{"7":{"position":[[1124,3]]}},"keywords":{}}],["qualiti",{"_index":675,"title":{},"content":{"42":{"position":[[75,7]]}},"keywords":{}}],["queri",{"_index":104,"title":{},"content":{"2":{"position":[[337,6]]},"30":{"position":[[113,7]]}},"keywords":{}}],["queue",{"_index":689,"title":{},"content":{"44":{"position":[[201,5]]}},"keywords":{}}],["quick",{"_index":517,"title":{"35":{"position":[[0,5]]}},"content":{"21":{"position":[[79,5]]}},"keywords":{}}],["quickli",{"_index":388,"title":{},"content":{"14":{"position":[[1028,7]]}},"keywords":{}}],["quot;<44c2d8ff",{"_index":405,"title":{},"content":{"14":{"position":[[1511,18]]}},"keywords":{}}],["quot;apply"",{"_index":815,"title":{},"content":{"63":{"position":[[164,17]]}},"keywords":{}}],["quot;polluting"",{"_index":561,"title":{},"content":{"26":{"position":[[478,21]]}},"keywords":{}}],["quot;request"",{"_index":50,"title":{},"content":{"1":{"position":[[504,19]]}},"keywords":{}}],["rare",{"_index":447,"title":{},"content":{"17":{"position":[[331,4]]}},"keywords":{}}],["re",{"_index":359,"title":{},"content":{"11":{"position":[[176,4]]},"20":{"position":[[497,2]]}},"keywords":{}}],["read",{"_index":676,"title":{},"content":{"42":{"position":[[104,4]]}},"keywords":{}}],["readonli",{"_index":394,"title":{},"content":{"14":{"position":[[1169,8],[1424,8]]},"24":{"position":[[163,8]]},"39":{"position":[[299,8]]},"40":{"position":[[324,8]]},"41":{"position":[[235,8]]},"44":{"position":[[639,8],[682,8]]},"58":{"position":[[297,8]]},"60":{"position":[[1095,8]]},"65":{"position":[[334,8],[377,8],[973,8]]}},"keywords":{}}],["realli",{"_index":677,"title":{},"content":{"42":{"position":[[138,6]]}},"keywords":{}}],["receiv",{"_index":376,"title":{},"content":{"14":{"position":[[428,8]]}},"keywords":{}}],["record",{"_index":92,"title":{},"content":{"2":{"position":[[195,7]]}},"keywords":{}}],["redirect",{"_index":763,"title":{},"content":{"57":{"position":[[550,9]]}},"keywords":{}}],["refer",{"_index":253,"title":{},"content":{"6":{"position":[[422,9]]},"27":{"position":[[99,11]]}},"keywords":{}}],["reflect",{"_index":513,"title":{},"content":{"20":{"position":[[548,9],[754,10]]}},"keywords":{}}],["reflected.reus",{"_index":515,"title":{},"content":{"20":{"position":[[635,15]]}},"keywords":{}}],["regardless",{"_index":817,"title":{},"content":{"63":{"position":[[279,10]]}},"keywords":{}}],["regist",{"_index":221,"title":{"38":{"position":[[0,8]]}},"content":{"5":{"position":[[565,10]]},"6":{"position":[[49,8]]},"7":{"position":[[1293,12]]},"38":{"position":[[0,8]]},"54":{"position":[[58,8],[326,8]]},"57":{"position":[[238,8]]},"60":{"position":[[92,10]]}},"keywords":{}}],["registerasync",{"_index":736,"title":{},"content":{"54":{"position":[[74,14]]}},"keywords":{}}],["registr",{"_index":714,"title":{},"content":{"48":{"position":[[123,12]]},"54":{"position":[[21,12]]},"57":{"position":[[298,13]]},"59":{"position":[[591,12]]}},"keywords":{}}],["regular",{"_index":757,"title":{},"content":{"57":{"position":[[31,7]]}},"keywords":{}}],["reli",{"_index":460,"title":{},"content":{"17":{"position":[[953,4]]},"44":{"position":[[63,6]]},"65":{"position":[[223,6]]}},"keywords":{}}],["rememb",{"_index":614,"title":{},"content":{"32":{"position":[[534,8]]}},"keywords":{}}],["renam",{"_index":734,"title":{},"content":{"54":{"position":[[45,7]]}},"keywords":{}}],["replac",{"_index":75,"title":{},"content":{"1":{"position":[[946,8]]},"59":{"position":[[813,7]]}},"keywords":{}}],["repositori",{"_index":98,"title":{},"content":{"2":{"position":[[278,10]]}},"keywords":{}}],["req",{"_index":285,"title":{},"content":{"7":{"position":[[460,5],[908,4]]},"11":{"position":[[162,4]]},"12":{"position":[[172,3]]},"14":{"position":[[852,5]]},"53":{"position":[[203,5]]},"60":{"position":[[426,5]]}},"keywords":{}}],["req.headers['x",{"_index":383,"title":{},"content":{"14":{"position":[[873,14]]}},"keywords":{}}],["req.params('tenant_id",{"_index":361,"title":{},"content":{"11":{"position":[[220,25]]},"12":{"position":[[251,25]]}},"keywords":{}}],["req.params['tenantid",{"_index":798,"title":{},"content":{"60":{"position":[[504,23]]}},"keywords":{}}],["request",{"_index":4,"title":{"14":{"position":[[0,7]]},"44":{"position":[[21,7]]},"65":{"position":[[12,8]]}},"content":{"1":{"position":[[70,7],[554,7],[710,7]]},"5":{"position":[[1092,7]]},"7":{"position":[[391,7],[466,8],[627,7],[652,7],[913,8],[1430,7]]},"11":{"position":[[26,7],[167,8]]},"14":{"position":[[0,7],[74,7],[186,7],[441,7],[698,7],[718,7],[858,8],[888,7]]},"15":{"position":[[186,7],[231,7],[262,7],[327,7]]},"17":{"position":[[87,8],[200,8],[642,8],[697,7],[715,7],[884,7]]},"19":{"position":[[285,7]]},"30":{"position":[[132,8]]},"38":{"position":[[88,7]]},"39":{"position":[[138,7],[415,7]]},"41":{"position":[[144,7]]},"44":{"position":[[21,7],[145,7]]},"45":{"position":[[192,8]]},"58":{"position":[[408,7]]},"59":{"position":[[366,8],[375,8],[841,7]]},"60":{"position":[[432,8],[740,7]]},"64":{"position":[[229,7]]},"65":{"position":[[50,8]]}},"keywords":{"0":{"position":[[16,7]]},"4":{"position":[[16,7]]},"8":{"position":[[16,7]]},"9":{"position":[[16,7]]},"10":{"position":[[16,7]]},"13":{"position":[[16,7]]},"14":{"position":[[16,7]]},"15":{"position":[[16,7]]},"16":{"position":[[16,7]]},"17":{"position":[[16,7]]},"18":{"position":[[16,7]]},"21":{"position":[[16,7]]},"22":{"position":[[16,7]]},"28":{"position":[[16,7]]},"35":{"position":[[16,7]]},"43":{"position":[[16,7]]},"44":{"position":[[16,7]]},"45":{"position":[[16,7]]},"46":{"position":[[16,7]]},"51":{"position":[[16,7]]},"54":{"position":[[16,7]]},"55":{"position":[[16,7]]},"56":{"position":[[16,7]]},"66":{"position":[[16,7]]}}}],["request'",{"_index":95,"title":{},"content":{"2":{"position":[[238,9]]}},"keywords":{}}],["request.connection.remoteaddress",{"_index":660,"title":{},"content":{"39":{"position":[[477,33]]}},"keywords":{}}],["request.user.id",{"_index":772,"title":{},"content":{"58":{"position":[[527,16]]},"59":{"position":[[424,16]]}},"keywords":{}}],["requestmak",{"_index":22,"title":{},"content":{"1":{"position":[[167,13]]}},"keywords":{}}],["requir",{"_index":180,"title":{},"content":{"3":{"position":[[220,8]]},"6":{"position":[[561,8]]},"15":{"position":[[397,8]]},"16":{"position":[[135,8]]},"17":{"position":[[1068,7]]},"34":{"position":[[75,8]]},"64":{"position":[[159,8]]}},"keywords":{}}],["resolut",{"_index":497,"title":{"64":{"position":[[8,10]]}},"content":{"19":{"position":[[1454,10]]},"64":{"position":[[177,10]]},"65":{"position":[[574,10]]}},"keywords":{}}],["resolv",{"_index":271,"title":{},"content":{"6":{"position":[[1254,8]]},"7":{"position":[[1241,7]]},"14":{"position":[[588,7]]},"31":{"position":[[26,9]]},"32":{"position":[[141,10]]},"60":{"position":[[219,8]]},"64":{"position":[[32,8]]},"65":{"position":[[858,8]]}},"keywords":{}}],["resolveproxyprovid",{"_index":303,"title":{},"content":{"7":{"position":[[1169,23]]},"19":{"position":[[1392,24]]},"64":{"position":[[314,21],[469,22]]},"65":{"position":[[691,21],[1041,22]]}},"keywords":{}}],["resourcesseamlessli",{"_index":36,"title":{},"content":{"1":{"position":[[328,19]]}},"keywords":{}}],["resp",{"_index":735,"title":{},"content":{"54":{"position":[[67,6],[100,6]]}},"keywords":{}}],["respect",{"_index":627,"title":{},"content":{"34":{"position":[[25,7]]},"50":{"position":[[651,7]]}},"keywords":{}}],["respons",{"_index":310,"title":{},"content":{"7":{"position":[[1560,8]]},"11":{"position":[[38,8],[181,9]]},"44":{"position":[[378,11]]}},"keywords":{}}],["rest",{"_index":586,"title":{"29":{"position":[[0,5]]}},"content":{"29":{"position":[[47,4]]},"55":{"position":[[917,4]]}},"keywords":{}}],["restrict",{"_index":34,"title":{},"content":{"1":{"position":[[309,8]]}},"keywords":{}}],["result",{"_index":399,"title":{},"content":{"14":{"position":[[1328,7]]},"24":{"position":[[933,6]]},"30":{"position":[[36,6]]},"60":{"position":[[756,6]]},"63":{"position":[[193,6]]}},"keywords":{}}],["retriev",{"_index":339,"title":{},"content":{"9":{"position":[[275,8]]},"14":{"position":[[683,10],[1036,8],[1339,10]]},"15":{"position":[[80,10]]},"19":{"position":[[209,8],[272,8]]},"23":{"position":[[120,10]]},"37":{"position":[[97,10]]},"41":{"position":[[26,8]]}},"keywords":{}}],["return",{"_index":270,"title":{},"content":{"6":{"position":[[1242,7]]},"7":{"position":[[780,7]]},"14":{"position":[[577,6]]},"24":{"position":[[758,7]]},"39":{"position":[[539,6]]},"40":{"position":[[385,6]]},"41":{"position":[[312,6]]},"45":{"position":[[354,6]]},"58":{"position":[[570,6]]},"60":{"position":[[594,6],[1150,6]]},"62":{"position":[[31,6],[226,7]]},"63":{"position":[[262,6]]},"65":{"position":[[115,6]]}},"keywords":{}}],["reus",{"_index":501,"title":{},"content":{"20":{"position":[[129,7],[653,5]]}},"keywords":{}}],["rile.proxy.t",{"_index":780,"title":{},"content":{"59":{"position":[[249,13]]}},"keywords":{}}],["role",{"_index":33,"title":{},"content":{"1":{"position":[[301,4]]},"57":{"position":[[218,5]]},"59":{"position":[[322,5]]}},"keywords":{}}],["rolemodul",{"_index":787,"title":{},"content":{"59":{"position":[[725,13]]}},"keywords":{}}],["roleservic",{"_index":783,"title":{},"content":{"59":{"position":[[384,12],[397,12],[673,11]]}},"keywords":{}}],["roleservice.getforid(request.user.id",{"_index":786,"title":{},"content":{"59":{"position":[[453,38]]}},"keywords":{}}],["root",{"_index":222,"title":{},"content":{"5":{"position":[[583,4]]},"54":{"position":[[16,4]]},"68":{"position":[[121,4]]}},"keywords":{}}],["rout",{"_index":278,"title":{},"content":{"7":{"position":[[262,5]]},"38":{"position":[[127,7]]},"48":{"position":[[53,7]]}},"keywords":{}}],["run",{"_index":140,"title":{},"content":{"2":{"position":[[804,3]]},"7":{"position":[[1928,4]]},"17":{"position":[[271,5],[492,5],[1095,3]]},"19":{"position":[[737,3],[881,3],[1011,3],[1144,3],[1255,3],[1357,4]]},"20":{"position":[[4,3],[306,3],[437,3]]},"50":{"position":[[172,3]]},"55":{"position":[[822,3]]}},"keywords":{}}],["run(callback",{"_index":485,"title":{},"content":{"19":{"position":[[650,13]]}},"keywords":{}}],["run(opt",{"_index":487,"title":{},"content":{"19":{"position":[[679,12]]}},"keywords":{}}],["runwith(stor",{"_index":489,"title":{},"content":{"19":{"position":[[838,14]]}},"keywords":{}}],["s",{"_index":468,"title":{},"content":{"19":{"position":[[88,1],[152,1],[198,3],[345,3],[410,2],[492,2],[853,2],[1135,3]]}},"keywords":{}}],["s[key",{"_index":473,"title":{},"content":{"19":{"position":[[202,6],[420,8],[502,8]]}},"keywords":{}}],["sadli",{"_index":610,"title":{},"content":{"32":{"position":[[308,7]]}},"keywords":{}}],["safe",{"_index":442,"title":{"23":{"position":[[5,4]]}},"content":{"17":{"position":[[60,4],[266,4],[433,4]]},"24":{"position":[[105,4]]}},"keywords":{}}],["safer",{"_index":318,"title":{},"content":{"7":{"position":[[1797,5]]},"32":{"position":[[477,5]]},"55":{"position":[[194,5]]}},"keywords":{}}],["safeti",{"_index":178,"title":{"22":{"position":[[5,6]]}},"content":{"3":{"position":[[181,6]]}},"keywords":{}}],["same",{"_index":93,"title":{},"content":{"2":{"position":[[217,4],[456,4]]},"5":{"position":[[893,4]]},"15":{"position":[[611,4],[649,4]]},"32":{"position":[[320,4]]},"40":{"position":[[75,4]]},"65":{"position":[[781,4]]}},"keywords":{}}],["saver",{"_index":309,"title":{},"content":{"7":{"position":[[1505,9]]}},"keywords":{}}],["savereq",{"_index":306,"title":{},"content":{"7":{"position":[[1376,9]]}},"keywords":{}}],["sayhello",{"_index":671,"title":{},"content":{"41":{"position":[[264,10]]}},"keywords":{}}],["scope",{"_index":5,"title":{},"content":{"1":{"position":[[562,6],[718,6]]},"15":{"position":[[270,6]]},"41":{"position":[[152,7]]},"59":{"position":[[849,6]]},"60":{"position":[[889,5]]}},"keywords":{"0":{"position":[[25,5]]},"4":{"position":[[25,5]]},"8":{"position":[[25,5]]},"9":{"position":[[25,5]]},"10":{"position":[[25,5]]},"13":{"position":[[25,5]]},"14":{"position":[[25,5]]},"15":{"position":[[25,5]]},"16":{"position":[[25,5]]},"17":{"position":[[25,5]]},"18":{"position":[[25,5]]},"21":{"position":[[25,5]]},"22":{"position":[[25,5]]},"28":{"position":[[25,5]]},"35":{"position":[[25,5]]},"43":{"position":[[25,5]]},"44":{"position":[[25,5]]},"45":{"position":[[25,5]]},"46":{"position":[[25,5]]},"51":{"position":[[25,5]]},"54":{"position":[[25,5]]},"55":{"position":[[25,5]]},"56":{"position":[[25,5]]},"66":{"position":[[25,5]]}}}],["seamlessli",{"_index":707,"title":{},"content":{"44":{"position":[[1051,11]]}},"keywords":{}}],["second",{"_index":357,"title":{},"content":{"11":{"position":[[73,6]]},"12":{"position":[[70,6]]}},"keywords":{}}],["secur",{"_index":424,"title":{"17":{"position":[[0,8]]}},"content":{"15":{"position":[[494,8]]},"17":{"position":[[0,8]]},"68":{"position":[[513,8]]}},"keywords":{}}],["see",{"_index":171,"title":{},"content":{"3":{"position":[[126,3]]},"5":{"position":[[160,3],[247,3],[352,3]]},"15":{"position":[[490,3]]},"27":{"position":[[707,3]]},"29":{"position":[[322,3]]},"34":{"position":[[217,4]]},"37":{"position":[[276,3]]},"50":{"position":[[280,3]]},"63":{"position":[[409,3]]}},"keywords":{}}],["self",{"_index":775,"title":{"59":{"position":[[0,4]]}},"content":{},"keywords":{}}],["separ",{"_index":778,"title":{},"content":{"59":{"position":[[102,8]]}},"keywords":{}}],["servic",{"_index":42,"title":{"18":{"position":[[0,7]]},"41":{"position":[[22,8]]}},"content":{"1":{"position":[[412,8]]},"37":{"position":[[116,7]]},"60":{"position":[[935,8]]}},"keywords":{}}],["service.interface.t",{"_index":527,"title":{},"content":{"23":{"position":[[297,20]]}},"keywords":{}}],["set",{"_index":242,"title":{"51":{"position":[[0,7]]}},"content":{"5":{"position":[[961,3],[1084,3]]},"7":{"position":[[1674,3],[1689,3]]},"15":{"position":[[409,3],[568,3]]},"17":{"position":[[830,3]]},"19":{"position":[[434,3],[516,3],[578,4]]},"20":{"position":[[83,9],[137,4]]},"23":{"position":[[134,7]]},"29":{"position":[[136,3]]},"32":{"position":[[118,3]]},"33":{"position":[[38,3]]},"36":{"position":[[103,7]]},"37":{"position":[[280,7]]},"40":{"position":[[122,3]]},"44":{"position":[[318,3],[557,3]]},"49":{"position":[[39,3]]},"50":{"position":[[521,11],[670,8]]},"64":{"position":[[310,3]]},"65":{"position":[[156,3],[716,3],[814,3]]}},"keywords":{}}],["set(key",{"_index":478,"title":{},"content":{"19":{"position":[[395,8]]}},"keywords":{}}],["setifundefined(key",{"_index":479,"title":{},"content":{"19":{"position":[[466,19]]}},"keywords":{}}],["setup",{"_index":296,"title":{"10":{"position":[[15,5]]}},"content":{"7":{"position":[[882,7],[956,7]]},"11":{"position":[[149,6]]},"12":{"position":[[136,6]]},"30":{"position":[[258,5]]},"44":{"position":[[1073,6]]},"64":{"position":[[56,5]]},"65":{"position":[[877,5],[1070,6]]}},"keywords":{}}],["sever",{"_index":519,"title":{},"content":{"21":{"position":[[121,7]]}},"keywords":{}}],["shallow",{"_index":509,"title":{},"content":{"20":{"position":[[461,7]]}},"keywords":{}}],["share",{"_index":346,"title":{},"content":{"9":{"position":[[459,6]]},"14":{"position":[[24,6]]},"15":{"position":[[178,7]]},"19":{"position":[[759,6],[1039,6],[1292,6]]},"38":{"position":[[101,6]]},"39":{"position":[[79,6]]},"40":{"position":[[80,6]]}},"keywords":{}}],["shorthand",{"_index":386,"title":{},"content":{"14":{"position":[[1002,9]]},"19":{"position":[[299,9]]}},"keywords":{}}],["simpl",{"_index":678,"title":{},"content":{"42":{"position":[[145,7]]}},"keywords":{}}],["singl",{"_index":418,"title":{},"content":{"15":{"position":[[224,6]]}},"keywords":{}}],["singleton",{"_index":791,"title":{},"content":{"59":{"position":[[896,10]]},"60":{"position":[[855,9]]}},"keywords":{}}],["slower",{"_index":141,"title":{},"content":{"2":{"position":[[808,7]]}},"keywords":{}}],["solut",{"_index":64,"title":{},"content":{"1":{"position":[[784,9]]}},"keywords":{}}],["solv",{"_index":88,"title":{},"content":{"2":{"position":[[128,5]]}},"keywords":{}}],["solvabl",{"_index":62,"title":{},"content":{"1":{"position":[[695,8]]}},"keywords":{}}],["someservic",{"_index":697,"title":{},"content":{"44":{"position":[[648,12],[661,12]]},"65":{"position":[[343,12],[356,12],[982,12],[995,13]]}},"keywords":{}}],["sometim",{"_index":137,"title":{},"content":{"2":{"position":[[767,9]]},"44":{"position":[[29,10]]},"48":{"position":[[0,10]]},"50":{"position":[[0,10]]}},"keywords":{}}],["somewher",{"_index":425,"title":{},"content":{"15":{"position":[[533,9]]},"58":{"position":[[105,10]]}},"keywords":{}}],["soon",{"_index":823,"title":{},"content":{"64":{"position":[[44,4]]}},"keywords":{}}],["space",{"_index":414,"title":{},"content":{"15":{"position":[[58,5]]},"26":{"position":[[516,6]]}},"keywords":{}}],["special",{"_index":631,"title":{},"content":{"34":{"position":[[157,7]]},"44":{"position":[[1203,7]]}},"keywords":{}}],["specif",{"_index":89,"title":{},"content":{"2":{"position":[[136,8]]},"60":{"position":[[233,8]]}},"keywords":{}}],["specifi",{"_index":521,"title":{},"content":{"23":{"position":[[18,7]]},"25":{"position":[[169,7]]}},"keywords":{}}],["start",{"_index":518,"title":{"35":{"position":[[6,5]]}},"content":{"21":{"position":[[85,5]]},"23":{"position":[[236,5]]}},"keywords":{}}],["static",{"_index":335,"title":{},"content":{"9":{"position":[[183,6]]}},"keywords":{}}],["still",{"_index":84,"title":{},"content":{"2":{"position":[[84,5],[514,5]]},"3":{"position":[[337,5]]},"25":{"position":[[213,5]]},"27":{"position":[[635,5]]},"54":{"position":[[359,5]]},"60":{"position":[[844,5]]}},"keywords":{}}],["stop",{"_index":575,"title":{},"content":{"27":{"position":[[350,4]]}},"keywords":{}}],["storag",{"_index":347,"title":{},"content":{"9":{"position":[[466,7]]},"14":{"position":[[31,8]]},"15":{"position":[[32,7],[654,7]]},"36":{"position":[[173,7]]},"44":{"position":[[81,7]]}},"keywords":{}}],["store",{"_index":307,"title":{},"content":{"7":{"position":[[1420,5],[1550,5]]},"14":{"position":[[627,6],[927,6]]},"15":{"position":[[68,7]]},"19":{"position":[[948,7],[1217,7]]},"23":{"position":[[229,6]]},"24":{"position":[[776,5]]},"27":{"position":[[43,5]]},"30":{"position":[[202,5]]},"37":{"position":[[45,5]]},"39":{"position":[[150,6]]},"57":{"position":[[593,6]]},"60":{"position":[[771,6]]}},"keywords":{}}],["strategi",{"_index":55,"title":{},"content":{"1":{"position":[[607,11]]}},"keywords":{}}],["string",{"_index":286,"title":{},"content":{"7":{"position":[[481,6],[556,6],[790,7],[858,6]]},"14":{"position":[[318,6],[604,6],[1211,7]]},"19":{"position":[[264,7]]},"23":{"position":[[375,7]]},"24":{"position":[[338,6]]},"25":{"position":[[227,6],[303,7]]},"27":{"position":[[430,7]]},"57":{"position":[[224,7]]},"59":{"position":[[328,7]]}},"keywords":{}}],["subsequ",{"_index":830,"title":{},"content":{"65":{"position":[[202,10]]}},"keywords":{}}],["subtre",{"_index":577,"title":{},"content":{"27":{"position":[[390,8]]}},"keywords":{}}],["such",{"_index":639,"title":{},"content":{"36":{"position":[[278,4]]},"44":{"position":[[247,4]]}},"keywords":{}}],["suppli",{"_index":231,"title":{},"content":{"5":{"position":[[759,6]]},"19":{"position":[[926,9],[1195,9]]}},"keywords":{}}],["support",{"_index":53,"title":{},"content":{"1":{"position":[[587,9]]},"29":{"position":[[37,9]]},"54":{"position":[[249,7]]},"63":{"position":[[12,7]]}},"keywords":{}}],["sure",{"_index":106,"title":{},"content":{"2":{"position":[[355,4]]},"6":{"position":[[900,4]]},"17":{"position":[[849,4]]}},"keywords":{}}],["symbol",{"_index":185,"title":{},"content":{"3":{"position":[[282,6]]},"24":{"position":[[656,6]]}},"keywords":{}}],["sync",{"_index":225,"title":{"52":{"position":[[0,5]]}},"content":{"5":{"position":[[619,4]]},"6":{"position":[[81,4]]}},"keywords":{}}],["synchron",{"_index":291,"title":{},"content":{"7":{"position":[[746,14]]}},"keywords":{}}],["t",{"_index":486,"title":{},"content":{"19":{"position":[[673,3],[677,1],[730,3],[734,2],[875,3],[879,1],[1249,3],[1253,1]]}},"keywords":{}}],["take",{"_index":198,"title":{},"content":{"5":{"position":[[31,5]]},"7":{"position":[[52,4],[642,5],[1344,5]]},"13":{"position":[[199,4]]},"19":{"position":[[790,5],[1070,5]]},"20":{"position":[[30,4]]}},"keywords":{}}],["taken",{"_index":453,"title":{},"content":{"17":{"position":[[564,5]]},"44":{"position":[[1224,5]]},"63":{"position":[[361,5]]}},"keywords":{}}],["talk",{"_index":124,"title":{},"content":{"2":{"position":[[601,4]]}},"keywords":{}}],["target",{"_index":262,"title":{},"content":{"6":{"position":[[840,6]]},"63":{"position":[[73,6]]}},"keywords":{}}],["techniqu",{"_index":351,"title":{},"content":{"9":{"position":[[584,9]]}},"keywords":{}}],["tediou",{"_index":552,"title":{},"content":{"25":{"position":[[81,8]]}},"keywords":{}}],["tenant",{"_index":24,"title":{},"content":{"1":{"position":[[193,6],[250,6]]},"2":{"position":[[408,6],[425,8]]},"60":{"position":[[242,6]]}},"keywords":{}}],["tenant_connect",{"_index":794,"title":{},"content":{"60":{"position":[[307,18],[642,17],[802,17]]}},"keywords":{}}],["tenantconnect",{"_index":806,"title":{},"content":{"60":{"position":[[1116,17]]}},"keywords":{}}],["tenantid",{"_index":94,"title":{},"content":{"2":{"position":[[222,8]]},"23":{"position":[[365,9]]},"24":{"position":[[307,8],[351,8],[665,10],[857,9]]},"25":{"position":[[293,9]]},"27":{"position":[[420,9],[535,8]]},"60":{"position":[[493,8]]}},"keywords":{}}],["termin",{"_index":562,"title":{"27":{"position":[[0,8]]}},"content":{"27":{"position":[[333,8]]}},"keywords":{}}],["terminal<",{"_index":578,"title":{},"content":{"27":{"position":[[444,13]]}},"keywords":{}}],["test",{"_index":356,"title":{},"content":{"9":{"position":[[708,5]]},"29":{"position":[[149,6]]},"30":{"position":[[346,6]]},"33":{"position":[[100,4]]}},"keywords":{}}],["thank",{"_index":612,"title":{},"content":{"32":{"position":[[505,7]]}},"keywords":{}}],["thar",{"_index":831,"title":{},"content":{"65":{"position":[[218,4]]}},"keywords":{}}],["that'",{"_index":574,"title":{"42":{"position":[[0,6]]}},"content":{"27":{"position":[[300,6]]}},"keywords":{}}],["there'",{"_index":621,"title":{},"content":{"33":{"position":[[195,7]]}},"keywords":{}}],["therefor",{"_index":597,"title":{},"content":{"30":{"position":[[274,10]]},"34":{"position":[[59,9]]},"37":{"position":[[210,9]]},"44":{"position":[[338,10]]}},"keywords":{}}],["thing",{"_index":582,"title":{},"content":{"27":{"position":[[662,6]]}},"keywords":{}}],["third",{"_index":358,"title":{},"content":{"11":{"position":[[84,5]]}},"keywords":{}}],["this.appservice.sayhello",{"_index":668,"title":{},"content":{"40":{"position":[[392,27]]}},"keywords":{}}],["this.cls.get",{"_index":545,"title":{},"content":{"24":{"position":[[876,15]]}},"keywords":{}}],["this.cls.get('ip",{"_index":672,"title":{},"content":{"41":{"position":[[292,19]]}},"keywords":{}}],["this.cls.get('tenantid",{"_index":536,"title":{},"content":{"24":{"position":[[362,25]]}},"keywords":{}}],["this.cls.get('us",{"_index":539,"title":{},"content":{"24":{"position":[[544,21]]}},"keywords":{}}],["this.cls.get('user.id",{"_index":538,"title":{},"content":{"24":{"position":[[442,24]]}},"keywords":{}}],["this.cls.get('user.nam",{"_index":549,"title":{},"content":{"24":{"position":[[973,26]]}},"keywords":{}}],["this.cls.resolveproxyprovid",{"_index":836,"title":{},"content":{"65":{"position":[[591,33]]}},"keywords":{}}],["this.cls.run(async",{"_index":702,"title":{},"content":{"44":{"position":[[851,18]]},"65":{"position":[[455,18]]}},"keywords":{}}],["this.cls.set('ip",{"_index":661,"title":{},"content":{"39":{"position":[[511,18]]}},"keywords":{}}],["this.cls.set('mod",{"_index":703,"title":{},"content":{"44":{"position":[[881,20]]}},"keywords":{}}],["this.cls.set('som",{"_index":835,"title":{},"content":{"65":{"position":[[508,18],[1091,18]]}},"keywords":{}}],["this.cls.set('user.author",{"_index":535,"title":{},"content":{"24":{"position":[[265,31]]}},"keywords":{}}],["this.connection.dogs.getal",{"_index":808,"title":{},"content":{"60":{"position":[[1157,30]]}},"keywords":{}}],["this.id",{"_index":784,"title":{},"content":{"59":{"position":[[414,7]]}},"keywords":{}}],["this.logger.log('hello",{"_index":403,"title":{},"content":{"14":{"position":[[1462,25]]}},"keywords":{}}],["this.rol",{"_index":785,"title":{},"content":{"59":{"position":[[441,9]]}},"keywords":{}}],["this.someservice.dotheth",{"_index":704,"title":{},"content":{"44":{"position":[[917,30],[1160,30]]},"65":{"position":[[631,30],[1164,30]]}},"keywords":{}}],["this.user.id",{"_index":771,"title":{},"content":{"58":{"position":[[512,12]]}},"keywords":{}}],["this.user.rol",{"_index":773,"title":{},"content":{"58":{"position":[[544,14]]}},"keywords":{}}],["those",{"_index":91,"title":{},"content":{"2":{"position":[[189,5]]},"16":{"position":[[236,5]]},"29":{"position":[[462,5]]},"45":{"position":[[342,6]]}},"keywords":{}}],["throughout",{"_index":20,"title":{},"content":{"1":{"position":[[146,10]]},"15":{"position":[[96,10],[339,10]]},"17":{"position":[[171,10]]}},"keywords":{}}],["time",{"_index":132,"title":{},"content":{"2":{"position":[[681,4]]},"5":{"position":[[898,4]]},"7":{"position":[[1838,4]]},"30":{"position":[[80,5]]},"64":{"position":[[429,5]]}},"keywords":{}}],["tip",{"_index":788,"title":{},"content":{"59":{"position":[[768,3]]}},"keywords":{}}],["token",{"_index":252,"title":{},"content":{"6":{"position":[[321,5],[1048,6],[1214,6]]},"60":{"position":[[981,5]]}},"keywords":{}}],["tool",{"_index":373,"title":{},"content":{"14":{"position":[[56,4]]}},"keywords":{}}],["top",{"_index":341,"title":{},"content":{"9":{"position":[[341,3]]},"20":{"position":[[515,3]]}},"keywords":{}}],["trace",{"_index":157,"title":{},"content":{"2":{"position":[[1000,7]]}},"keywords":{}}],["track",{"_index":14,"title":{},"content":{"1":{"position":[[57,8],[128,5]]},"14":{"position":[[65,8]]},"15":{"position":[[313,5]]}},"keywords":{}}],["transact",{"_index":38,"title":{},"content":{"1":{"position":[[364,11]]}},"keywords":{}}],["transpar",{"_index":555,"title":{},"content":{"26":{"position":[[14,11]]}},"keywords":{}}],["transport",{"_index":465,"title":{},"content":{"17":{"position":[[1163,9]]},"33":{"position":[[115,11],[392,10]]},"37":{"position":[[264,11]]}},"keywords":{}}],["trap",{"_index":816,"title":{},"content":{"63":{"position":[[182,5]]}},"keywords":{}}],["tri",{"_index":571,"title":{},"content":{"27":{"position":[[239,5]]},"33":{"position":[[259,3]]}},"keywords":{}}],["trigger",{"_index":496,"title":{},"content":{"19":{"position":[[1446,7]]},"30":{"position":[[60,10]]},"65":{"position":[[551,7]]}},"keywords":{}}],["true",{"_index":304,"title":{},"content":{"7":{"position":[[1210,5],[1403,5],[1681,4]]},"11":{"position":[[143,5]]},"12":{"position":[[130,5]]},"14":{"position":[[261,4],[815,5],[833,5]]},"24":{"position":[[297,6]]},"29":{"position":[[143,5]]},"32":{"position":[[197,4],[328,4]]},"38":{"position":[[198,5],[225,4]]},"47":{"position":[[63,5],[90,4]]},"49":{"position":[[169,5]]},"52":{"position":[[63,5],[90,5],[108,5]]},"53":{"position":[[68,5],[166,5],[184,5]]},"54":{"position":[[217,4]]},"55":{"position":[[405,4]]},"60":{"position":[[624,5]]},"65":{"position":[[824,5],[1064,5]]},"67":{"position":[[11,4],[87,4]]}},"keywords":{}}],["turn",{"_index":790,"title":{},"content":{"59":{"position":[[869,4]]}},"keywords":{}}],["type",{"_index":177,"title":{"22":{"position":[[0,4],[16,4]]},"23":{"position":[[0,4]]},"24":{"position":[[8,4]]},"27":{"position":[[9,5]]}},"content":{"3":{"position":[[176,4],[192,4],[408,6]]},"5":{"position":[[518,6]]},"6":{"position":[[831,4]]},"19":{"position":[[90,4],[120,4]]},"23":{"position":[[79,6],[100,4],[219,5]]},"24":{"position":[[42,4],[110,7],[238,4],[624,4],[945,4]]},"25":{"position":[[181,4],[234,7]]},"26":{"position":[[88,5],[511,4]]},"27":{"position":[[156,4],[342,4],[651,6]]}},"keywords":{}}],["typeof",{"_index":813,"title":{"63":{"position":[[0,6]]}},"content":{"63":{"position":[[217,6]]}},"keywords":{}}],["typescript",{"_index":181,"title":{"25":{"position":[[6,10]]}},"content":{"3":{"position":[[243,10]]},"27":{"position":[[125,10]]}},"keywords":{}}],["unavail",{"_index":615,"title":{},"content":{"32":{"position":[[567,11]]},"55":{"position":[[879,11]]}},"keywords":{}}],["undefin",{"_index":829,"title":{},"content":{"65":{"position":[[122,10]]}},"keywords":{}}],["under",{"_index":160,"title":{},"content":{"2":{"position":[[1069,5]]},"7":{"position":[[424,5],[1482,5],[1613,5]]},"14":{"position":[[934,5]]}},"keywords":{}}],["underli",{"_index":814,"title":{},"content":{"63":{"position":[[56,10]]}},"keywords":{}}],["uniqu",{"_index":764,"title":{},"content":{"57":{"position":[[577,6]]}},"keywords":{}}],["unlik",{"_index":751,"title":{},"content":{"55":{"position":[[92,6]]}},"keywords":{}}],["until",{"_index":456,"title":{},"content":{"17":{"position":[[705,5]]},"64":{"position":[[199,5]]}},"keywords":{}}],["up",{"_index":313,"title":{"51":{"position":[[8,2]]}},"content":{"7":{"position":[[1693,2]]},"15":{"position":[[413,2],[572,3]]},"17":{"position":[[834,2]]},"32":{"position":[[122,2]]},"33":{"position":[[42,2]]},"36":{"position":[[111,2]]},"37":{"position":[[288,2]]},"40":{"position":[[126,3]]},"44":{"position":[[322,2],[561,2]]},"65":{"position":[[160,2]]}},"keywords":{}}],["upgrad",{"_index":189,"title":{},"content":{"3":{"position":[[325,7]]},"43":{"position":[[31,9]]}},"keywords":{}}],["upon",{"_index":767,"title":{},"content":{"58":{"position":[[51,4]]}},"keywords":{}}],["us",{"_index":8,"title":{"1":{"position":[[0,3]]},"21":{"position":[[13,3]]},"24":{"position":[[0,5]]},"25":{"position":[[0,5]]},"26":{"position":[[0,5]]},"45":{"position":[[0,5]]},"46":{"position":[[0,5]]},"50":{"position":[[0,5]]},"55":{"position":[[0,5]]},"66":{"position":[[0,5]]}},"content":{"1":{"position":[[12,3],[704,5]]},"2":{"position":[[145,3],[700,3],[745,3],[953,3],[991,3],[1052,4],[1106,3]]},"3":{"position":[[351,3]]},"5":{"position":[[647,3],[696,3],[863,3]]},"6":{"position":[[41,4],[330,3],[459,4],[692,6],[866,4],[1069,4],[1308,4]]},"7":{"position":[[825,4],[1116,4],[1708,5]]},"9":{"position":[[267,4],[528,3],[573,5]]},"14":{"position":[[492,5],[535,4],[655,4],[1080,4]]},"16":{"position":[[46,5]]},"17":{"position":[[68,3],[257,4],[419,4],[621,5],[765,5],[924,3]]},"19":{"position":[[108,4],[583,6]]},"21":{"position":[[13,3]]},"23":{"position":[[185,5]]},"24":{"position":[[94,3],[824,3]]},"25":{"position":[[32,5]]},"27":{"position":[[325,3]]},"29":{"position":[[92,3],[221,5]]},"30":{"position":[[0,5],[302,3]]},"31":{"position":[[124,3]]},"32":{"position":[[395,5],[438,3],[468,4],[548,5]]},"33":{"position":[[0,3]]},"37":{"position":[[23,5],[195,5],[224,3]]},"42":{"position":[[126,3]]},"44":{"position":[[441,5],[986,3],[1245,5]]},"45":{"position":[[0,5],[49,4],[155,4],[319,4]]},"48":{"position":[[34,3]]},"50":{"position":[[131,3],[536,7],[622,5]]},"54":{"position":[[318,4],[372,3],[440,3]]},"55":{"position":[[0,5],[112,4],[219,3],[851,5]]},"57":{"position":[[267,3],[427,5]]},"59":{"position":[[555,3],[772,5]]},"60":{"position":[[103,5],[963,5]]},"64":{"position":[[136,3]]},"65":{"position":[[795,5]]},"67":{"position":[[0,3]]},"68":{"position":[[32,3],[433,4],[478,5]]}},"keywords":{}}],["usag",{"_index":645,"title":{"44":{"position":[[0,5]]}},"content":{"37":{"position":[[244,5]]},"44":{"position":[[0,5]]}},"keywords":{}}],["usecl",{"_index":693,"title":{},"content":{"44":{"position":[[451,7],[1063,9]]},"45":{"position":[[22,9],[287,9]]},"65":{"position":[[676,10],[747,7],[1031,9]]}},"keywords":{}}],["useclass",{"_index":254,"title":{},"content":{"6":{"position":[[442,8],[821,9]]},"55":{"position":[[637,9]]},"59":{"position":[[739,9]]},"68":{"position":[[254,9]]}},"keywords":{}}],["useenterwith",{"_index":312,"title":{},"content":{"7":{"position":[[1635,14]]},"17":{"position":[[794,12]]},"32":{"position":[[183,13]]}},"keywords":{}}],["useexist",{"_index":558,"title":{},"content":{"26":{"position":[[312,12]]}},"keywords":{}}],["usefactori",{"_index":234,"title":{},"content":{"5":{"position":[[796,10]]},"6":{"position":[[1081,11],[1093,11]]},"53":{"position":[[103,11]]},"60":{"position":[[408,11]]}},"keywords":{}}],["useguards(clsguard",{"_index":840,"title":{},"content":{"68":{"position":[[370,21]]}},"keywords":{}}],["useinterceptors(clsinterceptor",{"_index":753,"title":{},"content":{"55":{"position":[[744,33]]}},"keywords":{}}],["useinterceptors(useripinterceptor",{"_index":666,"title":{},"content":{"40":{"position":[[225,35]]}},"keywords":{}}],["user",{"_index":19,"title":{},"content":{"1":{"position":[[141,4]]},"2":{"position":[[248,4]]},"23":{"position":[[383,5]]},"24":{"position":[[470,4],[537,4],[678,6],[867,4]]},"25":{"position":[[311,5]]},"27":{"position":[[438,5],[546,4]]},"39":{"position":[[182,4]]},"57":{"position":[[199,4]]},"58":{"position":[[306,5],[312,5]]},"59":{"position":[[239,4]]}},"keywords":{}}],["user'",{"_index":669,"title":{},"content":{"41":{"position":[[39,6]]}},"keywords":{}}],["user.author",{"_index":543,"title":{},"content":{"24":{"position":[[699,17]]}},"keywords":{}}],["user.id",{"_index":542,"title":{},"content":{"24":{"position":[[687,9]]}},"keywords":{}}],["user.interceptor.t",{"_index":768,"title":{},"content":{"58":{"position":[[153,19]]}},"keywords":{}}],["user.proxy.t",{"_index":760,"title":{},"content":{"57":{"position":[[153,13]]}},"keywords":{}}],["userid",{"_index":537,"title":{},"content":{"24":{"position":[[391,6],[433,6]]}},"keywords":{}}],["userinterceptor",{"_index":769,"title":{},"content":{"58":{"position":[[200,15]]}},"keywords":{}}],["userip",{"_index":659,"title":{},"content":{"39":{"position":[[468,6],[530,8]]},"41":{"position":[[283,6],[330,6]]}},"keywords":{}}],["useripinterceptor",{"_index":653,"title":{},"content":{"39":{"position":[[232,17]]},"40":{"position":[[16,17]]}},"keywords":{}}],["users'",{"_index":651,"title":{},"content":{"39":{"position":[[110,7]]}},"keywords":{}}],["userwithrol",{"_index":781,"title":{},"content":{"59":{"position":[[295,12],[749,13]]}},"keywords":{}}],["usevalu",{"_index":748,"title":{},"content":{"54":{"position":[[668,9]]}},"keywords":{}}],["usual",{"_index":232,"title":{},"content":{"5":{"position":[[770,5],[821,6]]},"60":{"position":[[990,6]]}},"keywords":{}}],["uuid",{"_index":384,"title":{},"content":{"14":{"position":[[904,7]]}},"keywords":{}}],["v10",{"_index":604,"title":{},"content":{"31":{"position":[[6,4]]}},"keywords":{}}],["v2.x",{"_index":732,"title":{"54":{"position":[[0,4]]}},"content":{"54":{"position":[[0,4]]}},"keywords":{}}],["v3.x",{"_index":733,"title":{"54":{"position":[[7,4]]}},"content":{"54":{"position":[[7,4]]}},"keywords":{}}],["valu",{"_index":474,"title":{"62":{"position":[[13,7]]}},"content":{"19":{"position":[[220,5],[413,6],[440,5],[495,6],[522,5]]},"20":{"position":[[353,6]]},"23":{"position":[[142,7]]},"58":{"position":[[92,6],[479,6]]},"62":{"position":[[50,6]]},"63":{"position":[[297,5]]},"65":{"position":[[539,8],[1122,8]]}},"keywords":{}}],["variabl",{"_index":243,"title":{},"content":{"5":{"position":[[974,9],[999,9]]},"7":{"position":[[1139,9]]},"44":{"position":[[529,10]]}},"keywords":{}}],["variou",{"_index":464,"title":{},"content":{"17":{"position":[[1155,7]]}},"keywords":{}}],["version",{"_index":165,"title":{},"content":{"3":{"position":[[5,7],[148,7],[377,7]]},"29":{"position":[[207,10]]},"32":{"position":[[10,8]]},"43":{"position":[[56,7]]},"50":{"position":[[213,10]]}},"keywords":{}}],["via",{"_index":640,"title":{},"content":{"36":{"position":[[289,3]]}},"keywords":{}}],["void",{"_index":298,"title":{},"content":{"7":{"position":[[928,4],[1011,4]]},"19":{"position":[[429,4],[511,4],[965,5],[1006,4],[1139,4]]}},"keywords":{}}],["want",{"_index":153,"title":{},"content":{"2":{"position":[[942,4]]},"3":{"position":[[343,4]]},"27":{"position":[[35,4]]},"48":{"position":[[21,4]]}},"keywords":{}}],["way",{"_index":588,"title":{},"content":{"29":{"position":[[82,3]]},"31":{"position":[[87,3]]},"58":{"position":[[33,3]]},"63":{"position":[[123,3]]}},"keywords":{}}],["web",{"_index":685,"title":{"44":{"position":[[17,3]]},"65":{"position":[[8,3]]}},"content":{"44":{"position":[[17,3],[141,3]]},"45":{"position":[[188,3]]},"65":{"position":[[46,3]]}},"keywords":{}}],["websocket",{"_index":58,"title":{"34":{"position":[[0,11]]}},"content":{"1":{"position":[[637,9]]},"34":{"position":[[0,9]]}},"keywords":{}}],["websocketgateway",{"_index":630,"title":{},"content":{"34":{"position":[[139,17]]}},"keywords":{}}],["well",{"_index":162,"title":{},"content":{"2":{"position":[[1101,4]]}},"keywords":{}}],["whatev",{"_index":802,"title":{},"content":{"60":{"position":[[898,8]]}},"keywords":{}}],["whether",{"_index":216,"title":{},"content":{"5":{"position":[[396,7]]},"7":{"position":[[189,7],[355,7],[1216,7],[1409,7],[1539,7]]},"13":{"position":[[54,7]]},"17":{"position":[[31,7],[137,7]]},"19":{"position":[[1332,7]]}},"keywords":{}}],["whole",{"_index":21,"title":{},"content":{"1":{"position":[[161,5],[827,5]]},"15":{"position":[[354,5]]},"24":{"position":[[770,5]]}},"keywords":{}}],["within",{"_index":398,"title":{},"content":{"14":{"position":[[1307,6]]},"15":{"position":[[600,6]]},"19":{"position":[[1362,6]]},"20":{"position":[[403,6]]},"30":{"position":[[208,6]]}},"keywords":{}}],["without",{"_index":43,"title":{},"content":{"1":{"position":[[421,7]]},"2":{"position":[[471,7]]},"15":{"position":[[241,7]]},"19":{"position":[[1272,7]]},"20":{"position":[[676,7]]},"24":{"position":[[797,7]]},"26":{"position":[[35,7],[470,7]]},"37":{"position":[[124,7]]},"41":{"position":[[70,7],[114,7]]},"59":{"position":[[907,7]]}},"keywords":{}}],["won't",{"_index":579,"title":{},"content":{"27":{"position":[[555,5]]},"50":{"position":[[40,5],[114,5]]}},"keywords":{}}],["work",{"_index":411,"title":{"15":{"position":[[7,5]]}},"content":{"15":{"position":[[7,5],[385,5]]},"23":{"position":[[155,5]]},"29":{"position":[[280,4]]},"33":{"position":[[156,4],[433,5]]}},"keywords":{}}],["workaround",{"_index":821,"title":{},"content":{"63":{"position":[[450,12]]}},"keywords":{}}],["wrap",{"_index":316,"title":{},"content":{"7":{"position":[[1763,8]]},"20":{"position":[[414,7]]},"36":{"position":[[186,5]]},"38":{"position":[[71,5]]},"44":{"position":[[394,8],[783,4],[1034,8]]},"45":{"position":[[89,4]]},"55":{"position":[[149,4]]},"65":{"position":[[193,4]]}},"keywords":{}}],["you'll",{"_index":540,"title":{},"content":{"24":{"position":[[569,6]]},"27":{"position":[[628,6]]}},"keywords":{}}],["you'r",{"_index":683,"title":{},"content":{"43":{"position":[[24,6]]},"44":{"position":[[1238,6]]}},"keywords":{}}],["yourself",{"_index":729,"title":{},"content":{"50":{"position":[[743,8]]}},"keywords":{}}]],"pipeline":["stemmer"]} \ No newline at end of file diff --git a/lunr-index-1705944535620.json b/lunr-index-1705944535620.json new file mode 100644 index 0000000..0d5a083 --- /dev/null +++ b/lunr-index-1705944535620.json @@ -0,0 +1 @@ +{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,551.905]],["content/0",[0,7.753,1,9.378,2,11.155,3,12.7,4,4.379,5,7.454,6,4.016]],["keywords/0",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/1",[15,559.759,16,461.548]],["content/1",[]],["keywords/1",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/2",[4,369.541]],["content/2",[0,2.02,4,1.352,6,3.031,8,1.321,9,0.55,11,0.857,14,0.533,17,1.206,18,1.283,19,4.254,20,3.922,21,12.623,22,2.368,23,4.09,24,0.676,25,2.02,26,2.896,27,2.896,28,3.922,29,9.585,30,8.26,31,3.627,32,5.462,33,4.212,34,3.445,35,1.741,36,1.683,37,3.445,38,3.922,39,3.922,40,4.212,41,3.445,42,3.922,43,7.832,44,2.688,45,3.922,46,3.922,47,2.709,48,3.131,49,3.445,50,2.896,51,3.922,52,3.445,53,3.922,54,1.303,55,3.731,56,12.623,57,3.922,58,5.684,59,7.325,60,6.701,61,5.095,62,3.798,63,2.776,64,3.991,65,3.922,66,3.204,67,5.684,68,2.975,69,3.204,70,3.445,71,3.922,72,4.254,73,3.922,74,3.922,75,1.87,76,1.683,77,3.922,78,2.419,79,2.553,80,2.553,81,3.445,82,2.709,83,5.165,84,2.975,85,5.165,86,2.896,87,3.922,88,3.131,89,2.896,90,1.942,91,1.393]],["keywords/2",[]],["title/3",[58,941.321]],["content/3",[6,1.957,8,1.417,11,0.376,19,3.187,32,3.187,44,3.017,54,1.679,59,6.403,60,6.526,62,3.632,63,2.655,66,4.591,68,4.263,70,5.435,72,3.187,75,2.95,76,2.655,80,4.027,92,2.771,93,3.817,94,6.188,95,9.271,96,8.144,97,8.209,98,4.569,99,5.435,100,1.85,101,6.188,102,9.765,103,6.188,104,9.117,105,8.144,106,6.188,107,6.188,108,5.435,109,5.435,110,5.435,111,4.274,112,5.442,113,6.188,114,9.271,115,6.188,116,2.655,117,3.321,118,6.188,119,5.435,120,3.321,121,3.321,122,4.94,123,8.144,124,2.845,125,2.409,126,2.747,127,5.435]],["keywords/3",[]],["title/4",[128,575.119]],["content/4",[8,0.646,9,1.826,10,1.527,11,0.61,13,1.19,18,1.993,31,3.87,36,2.962,44,3.271,59,4.769,61,4.259,64,4.259,69,3.419,75,3.292,76,2.962,80,4.494,125,3.913,126,3.065,128,5.395,129,6.905,130,6.905,131,6.943,132,6.065,133,6.065,134,6.543,135,8.025,136,5.512,137,6.905,138,5.263,139,8.025,140,5.512,141,6.065,142,6.065,143,3.175,144,6.905,145,5.512,146,5.099,147,5.512,148,4.769,149,4.053,150,4.794,151,6.905,152,5.512,153,6.905,154,3.175,155,5.099,156,4.769,157,4.259,158,6.065,159,5.512,160,5.512,161,6.065,162,6.201,163,6.905,164,6.905]],["keywords/4",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/5",[156,740.124]],["content/5",[1,8.683,62,6.903,78,7.253,102,8.683,156,8.122,165,11.76,166,10.329,167,5.607,168,6.903,169,11.76,170,8.122,171,11.76,172,11.76,173,11.76]],["keywords/5",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/6",[24,74.991,100,214.671,174,421.572]],["content/6",[1,8.275,2,9.844,18,2.221,24,1.17,93,6.912,100,3.35,125,4.362,136,8.946,174,8.189,175,11.207,176,4.503,177,9.844,178,7.74,179,3.646,180,11.207,181,8.946,182,11.207]],["keywords/6",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/7",[9,86.438,183,401.276,184,361.893,185,401.276]],["content/7",[4,1.619,7,1.568,8,0.874,9,1.05,11,0.567,14,0.638,17,1.443,18,0.931,19,2.418,24,0.975,44,2.436,54,2.281,55,2.914,72,2.418,84,2.159,100,2.791,120,5.012,131,3.242,138,3.324,143,3.443,148,3.242,150,3.57,159,5.977,176,1.886,181,3.748,183,3.056,184,4.395,185,4.873,186,3.467,187,4.124,188,3.467,189,2.325,190,8.203,191,4.695,192,4.695,193,4.695,194,4.124,195,4.124,196,4.695,197,4.124,198,2.418,199,3.748,200,4.695,201,3.242,202,3.748,203,3.748,204,5.977,205,5.171,206,3.856,207,3.056,208,3.748,209,1.668,210,1.291,211,4.124,212,2.418,213,4.395,214,3.443,215,5.529,216,4.124,217,4.695,218,2.756,219,4.124,220,5.482,221,4.124,222,4.695,223,6.577,224,4.695,225,4.124,226,4.695,227,2.519,228,4.695,229,4.695,230,3.242,231,4.124,232,3.748,233,4.124,234,4.124]],["keywords/7",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/8",[6,271.963,179,279.84]],["content/8",[]],["keywords/8",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/9",[235,1071.673]],["content/9",[6,3.475,8,0.568,9,0.851,11,0.555,14,1.242,17,1.866,18,1.811,19,3.126,23,3.005,24,1.147,36,2.604,44,2.973,50,4.482,62,3.563,63,4.715,64,3.744,67,5.331,68,2.791,78,3.744,79,3.95,90,3.005,92,1.814,93,7.542,100,1.814,117,3.257,121,3.257,125,2.363,126,2.694,139,4.845,154,5.053,157,3.744,162,3.744,179,3.576,198,3.126,208,4.845,210,1.67,236,2.519,237,5.331,238,6.07,239,3.402,240,8.115,241,6.07,242,3.563,243,6.07,244,3.95,245,6.07,246,3.402,247,2.791,248,3.557,249,4.192,250,6.07,251,4.482,252,4.482,253,4.845,254,4.845,255,4.482,256,5.331,257,5.331,258,2.694,259,8.026,260,3.95,261,3.402,262,6.07,263,3.744,264,5.331,265,4.192,266,2.439,267,2.894,268,5.331]],["keywords/9",[]],["title/10",[269,1071.673]],["content/10",[6,3.559,14,1.759,16,4.342,17,3.061,18,3.017,23,2.565,24,1.412,25,2.667,54,0.704,55,2.016,63,4.828,68,3.72,78,3.195,90,2.565,92,2.976,93,3.195,100,1.548,104,3.825,125,2.016,126,2.299,149,3.04,154,2.381,176,4.001,179,2.633,206,2.667,209,1.84,210,3.096,248,2.016,249,3.577,251,7.352,253,10.33,254,4.134,255,3.825,258,2.299,260,3.371,270,8.091,271,8.091,272,3.825,273,5.179,274,7.948,275,3.04,276,3.592,277,3.577,278,5.179,279,5.974,280,5.179,281,3.825,282,3.825,283,7.107,284,5.179,285,4.549,286,3.825,287,4.134,288,5.179,289,5.179,290,3.577,291,3.577,292,4.549,293,2.016,294,2.903,295,5.179,296,4.134,297,4.134]],["keywords/10",[]],["title/11",[6,194.963,54,83.816,198,317.516,266,247.721]],["content/11",[4,2.247,6,1.251,8,1.134,9,1.607,11,0.504,14,0.538,18,0.784,19,3.355,23,3.226,24,0.867,33,5.407,35,4.277,36,2.795,43,4.811,44,2.12,54,1.31,55,3.75,60,4.877,62,4.877,63,3.564,68,5.823,69,3.226,78,7.07,82,2.731,83,5.201,84,2.996,88,3.157,89,2.92,90,1.958,91,1.405,93,2.439,100,1.182,120,2.122,138,2.892,148,2.731,150,1.886,176,2.618,187,3.474,198,2.037,202,3.157,203,3.157,208,3.157,227,2.122,237,3.474,246,5.4,258,3.688,263,2.439,267,1.886,293,1.539,294,2.217,298,3.955,299,2.574,300,5.723,301,3.955,302,4.459,303,1.492,304,3.157,305,3.157,306,3.955,307,6.135,308,6.135,309,3.474,310,3.955,311,6.515,312,3.955,313,5.738,314,2.122,315,2.731,316,3.955,317,3.955,318,1.958,319,2.92,320,3.474,321,3.955,322,6.515,323,2.574,324,3.955,325,3.955,326,3.955,327,3.955,328,3.871,329,3.955,330,2.321,331,3.474,332,3.955,333,3.474,334,3.955,335,3.157,336,3.955,337,3.474,338,3.955,339,3.474,340,2.731,341,2.92,342,3.157,343,3.157,344,2.92,345,3.157,346,3.474,347,3.955]],["keywords/11",[]],["title/12",[348,496.019,349,573.316,350,630.858]],["content/12",[4,2.47,8,1.133,11,0.627,17,3.721,18,1.42,24,1.264,31,4.016,54,1.801,61,4.419,72,3.69,76,4.43,92,2.141,110,6.293,111,4.948,121,3.845,125,2.789,131,4.948,168,4.205,174,4.205,176,4.149,184,6.061,207,6.72,210,1.971,230,4.948,261,4.016,264,6.293,340,4.948,344,5.29,348,4.948,349,5.719,350,6.293,351,4.419,352,7.164,353,7.164,354,4.663,355,7.164,356,7.164,357,5.29,358,7.164,359,5.719,360,7.164,361,3.294,362,7.164,363,4.419,364,7.164,365,7.164,366,7.164,367,7.164,368,7.164,369,7.164,370,7.164,371,5.29]],["keywords/12",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/13",[372,660.98]],["content/13",[11,0.622,13,1.765,24,1.07,47,7.074,93,6.318,149,6.013,157,6.318,167,4.884,179,3.333,351,8.129,372,9.49,373,10.521,374,10.244,375,8.177,376,8.177,377,10.244,378,10.244,379,10.244,380,10.244,381,8.998,382,7.074]],["keywords/13",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/14",[11,43.591,93,442.977,227,385.435]],["content/14",[]],["keywords/14",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/15",[266,430.587]],["content/15",[9,1.774,11,0.584,23,4.765,54,2.22,55,3.746,63,4.129,100,2.876,108,8.453,202,10.102,227,5.164,236,3.994,246,5.394,266,5.085,276,4.272,303,3.631,323,6.263,328,3.866,383,8.453,384,9.623,385,8.453,386,8.453,387,8.453,388,7.682]],["keywords/15",[]],["title/16",[198,551.905]],["content/16",[8,0.91,11,0.59,23,4.813,54,2.258,55,3.784,63,4.171,227,5.217,236,4.035,246,5.449,267,6.075,276,4.315,303,3.668,313,6.714,314,5.217,323,6.327,328,3.906,361,4.47,383,8.539,385,8.539,386,8.539,387,8.539,388,7.76,389,9.721]],["keywords/16",[]],["title/17",[54,97.638,390,718.217,391,630.858]],["content/17",[]],["keywords/17",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/18",[92,184.281,252,455.261,330,361.893,392,541.551]],["content/18",[54,2.135,90,5.36,92,3.236,236,4.493,252,7.993,266,4.349,303,4.085,328,4.349,330,6.354,392,9.508,393,13.652,394,10.825,395,8.641,396,10.825,397,8.641,398,10.825,399,10.825]],["keywords/18",[]],["title/19",[400,630.858,401,402.551,402,630.858]],["content/19",[4,2.907,12,1.969,14,1.146,17,3.56,18,2.822,24,1.381,25,4.342,27,6.226,54,2.186,66,4.175,90,4.175,92,2.52,100,2.52,116,3.617,189,4.175,210,2.319,361,3.877,363,5.2,400,11.617,401,4.726,402,7.406,403,8.432,404,4.949,405,14.237,406,6.731,407,8.432,408,8.432,409,8.432]],["keywords/19",[]],["title/20",[9,120.576,36,368.988]],["content/20",[4,2.42,6,2.798,8,0.657,9,1.84,11,0.617,17,2.158,18,1.754,23,2.145,24,1.062,25,3.615,31,4.959,34,3.805,35,3.928,36,5.817,37,3.805,54,2.086,55,2.732,61,2.672,64,2.672,68,1.992,69,3.475,80,2.82,92,1.295,100,1.295,117,2.325,131,2.992,138,1.923,145,3.458,146,5.183,176,2.82,189,3.475,210,1.931,214,3.227,236,1.798,240,3.199,242,2.543,266,1.741,276,1.923,293,1.686,294,2.428,302,2.325,303,1.635,304,3.458,307,6.533,308,3.199,309,3.805,313,2.992,319,3.199,323,2.82,328,3.555,351,2.672,410,4.332,411,4.332,412,4.332,413,4.332,414,5.183,415,3.458,416,5.603,417,3.805,418,4.332,419,3.458,420,4.332,421,4.332,422,4.332,423,4.332,424,4.332,425,4.332,426,4.332,427,6.165,428,7.019,429,4.332,430,7.019,431,4.12,432,4.332,433,4.332,434,4.332,435,3.199,436,4.332,437,3.805,438,3.458,439,4.332,440,4.332,441,4.332,442,4.332,443,4.332,444,4.332,445,4.332,446,4.332]],["keywords/20",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/21",[91,305.472,258,381.791]],["content/21",[10,2.422,11,0.835,13,2.369,91,4.884,124,5.035,150,5.221,167,5.221,258,4.861,279,8.085,308,8.085,447,9.618,448,9.618,449,6.753,450,10.949,451,10.949,452,10.949,453,5.035]],["keywords/21",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/22",[25,369.878,116,308.138,454,342.456]],["content/22",[25,6.812,116,5.675,454,6.307,455,13.228,456,13.228]],["keywords/22",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/23",[168,629.041]],["content/23",[]],["keywords/23",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/24",[457,791.331]],["content/24",[0,4.23,6,2.597,8,0.769,24,1.187,44,2.673,54,1.117,84,5.229,98,6.065,100,2.455,102,6.065,117,4.408,128,4.408,143,3.777,154,3.777,168,4.821,239,7.311,266,3.3,302,4.408,303,5.313,328,3.3,346,7.215,351,5.066,371,6.065,382,5.673,401,4.604,457,6.065,458,4.821,459,6.557,460,6.557,461,9.989,462,7.215,463,7.402,464,5.066,465,7.215,466,8.214,467,7.215,468,7.215,469,7.215,470,8.214,471,8.214]],["keywords/24",[]],["title/25",[472,855.461]],["content/25",[9,1.309,11,0.567,24,1.296,48,7.456,49,8.204,50,9.163,54,1.27,69,4.625,80,6.079,85,7.456,92,2.792,100,2.792,176,3.753,198,6.39,201,6.451,227,5.013,263,5.761,267,4.454,314,5.013,371,6.897,435,6.897,461,8.204,462,8.204,473,8.204,474,9.34,475,7.456,476,6.897,477,7.456,478,9.34,479,9.34,480,8.204,481,8.204]],["keywords/25",[]],["title/26",[54,97.638,482,630.858,483,630.858]],["content/26",[6,3.673,8,1.087,11,0.705,24,1.213,168,6.819,239,6.511,265,8.023,294,6.511,303,4.383,351,7.165,359,9.273,459,9.273,460,9.273,472,9.273,484,11.616]],["keywords/26",[]],["title/27",[54,97.638,482,630.858,483,630.858]],["content/27",[6,2.553,8,1.052,11,0.682,24,1.459,44,2.627,84,3.713,92,2.413,125,3.143,143,3.713,150,3.85,162,4.98,176,3.244,239,6.299,242,4.74,244,5.255,276,3.584,291,5.577,294,4.526,303,3.047,314,4.333,328,4.515,333,7.092,342,6.446,343,6.446,463,5.255,464,4.98,472,6.446,475,6.446,480,7.092,481,7.092,485,8.075,486,6.446,487,7.092,488,7.092,489,7.092,490,7.092,491,5.962,492,8.075,493,8.075,494,5.962,495,8.075,496,8.075,497,8.075,498,7.092]],["keywords/27",[]],["title/28",[499,1071.673]],["content/28",[8,0.874,24,0.975,44,3.039,128,6.659,150,4.454,166,8.204,168,5.483,240,6.897,242,5.483,244,6.079,261,5.235,279,9.163,351,5.761,371,6.897,491,6.897,500,13.934,501,9.34,502,9.905,503,8.204,504,9.34,505,9.34,506,9.34,507,9.34,508,9.34,509,8.204,510,6.897,511,8.204,512,8.204,513,8.204,514,9.34]],["keywords/28",[]],["title/29",[515,855.461]],["content/29",[84,4.977,92,3.236,143,4.977,149,6.354,154,4.977,198,5.575,199,8.641,201,7.476,231,9.508,232,8.641,242,6.354,244,7.045,247,4.977,320,9.508,515,8.641,516,9.508,517,8.641,518,9.508,519,7.993,520,10.825,521,10.825]],["keywords/29",[]],["title/30",[522,686.53,523,686.53]],["content/30",[19,6.132,66,5.895,100,3.559,167,5.677,234,10.458,292,10.458,464,7.344,522,11.56,523,11.56,524,10.458,525,11.907]],["keywords/30",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/31",[155,791.331]],["content/31",[1,4.214,4,1.968,6,1.804,8,1.31,9,1.887,11,0.346,12,1.333,24,1.405,44,1.857,60,6.212,68,2.624,76,2.448,78,5.378,84,2.624,92,3.542,100,2.606,122,4.555,135,4.555,138,2.533,141,5.012,143,2.624,149,3.35,150,2.721,155,4.214,168,3.35,170,3.941,188,4.214,198,2.939,230,3.941,233,5.012,239,5.932,242,6.212,244,3.714,281,4.214,286,4.214,303,3.29,314,3.062,331,5.012,341,4.214,354,5.675,467,5.012,468,5.012,488,5.012,490,7.659,502,4.555,526,5.012,527,7.815,528,5.706,529,8.72,530,5.706,531,5.706,532,5.706,533,9.296,534,8.72,535,5.012,536,5.012,537,5.706,538,6.022,539,5.706,540,5.706,541,3.062,542,5.012,543,5.706]],["keywords/31",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/32",[8,57.701,11,37.42,44,200.61,150,293.977]],["content/32",[]],["keywords/32",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/33",[254,855.461]],["content/33",[54,2.32,179,3.444,209,3.759,210,2.911,236,4.393,247,4.867,248,4.12,266,4.253,303,3.994,328,5.946,414,7.816,541,5.68,544,5.933]],["keywords/33",[]],["title/34",[7,224.423]],["content/34",[17,2.9,54,2.311,55,4.862,179,3.069,209,3.35,210,2.595,247,4.337,248,3.672,257,8.285,260,6.139,266,3.79,303,3.559,323,6.139,328,5.626,414,6.965,416,7.53,541,5.062,544,5.287,545,12.49,546,9.433]],["keywords/34",[]],["title/35",[91,380.638]],["content/35",[]],["keywords/35",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/36",[183,697.496]],["content/36",[5,7.168,24,1.275,54,1.66,66,6.046,91,5.223,92,3.65,236,5.068,276,5.421,395,9.748,547,12.212]],["keywords/36",[]],["title/37",[91,305.472,258,381.791]],["content/37",[11,0.751,13,2.131,91,5.264,154,5.688,258,5.491,279,9.134,375,9.874,449,7.63,548,12.37]],["keywords/37",[]],["title/38",[91,305.472,116,368.988]],["content/38",[0,6.629,25,6.629,91,5.389,116,5.522,154,5.918,275,7.555]],["keywords/38",[]],["title/39",[24,89.8,266,345.558]],["content/39",[]],["keywords/39",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/40",[302,575.119]],["content/40",[54,2.329,179,3.522,209,3.845,210,2.978,236,4.493,247,4.977,248,4.214,266,4.349,303,4.085,328,5.485,541,5.809,544,6.067]],["keywords/40",[]],["title/41",[84,492.754]],["content/41",[11,0.705,24,1.213,126,5.157,143,5.341,186,8.578,266,5.732,291,8.023,305,9.273,330,6.819,458,6.819,549,6.819,550,10.204,551,10.204,552,11.616]],["keywords/41",[]],["title/42",[179,348.699]],["content/42",[6,2.842,44,2.925,54,2.309,84,4.133,100,2.686,179,3.935,209,3.192,210,2.472,236,3.73,239,5.038,246,6.778,247,4.133,248,3.499,266,3.611,303,4.564,318,4.45,328,3.611,519,6.637,541,4.824,544,5.038,553,8.988,554,8.988,555,8.988,556,8.988,557,8.988]],["keywords/42",[]],["title/43",[24,89.8,486,686.53]],["content/43",[0,3.556,13,1.19,18,1.369,24,1.238,44,3.271,54,2.027,60,4.053,66,3.419,84,3.175,92,3.005,100,2.064,116,2.962,121,3.706,143,3.175,154,3.175,159,5.512,174,4.053,176,2.774,186,5.099,189,3.419,195,8.831,212,3.556,220,5.901,230,4.769,236,2.866,239,3.87,261,3.87,266,5.561,276,3.065,291,4.769,299,4.494,303,4.473,361,3.175,463,4.494,464,4.259,465,6.065,486,8.025,510,5.099,518,6.065,519,5.099,536,6.065,558,8.831,559,6.905,560,6.905,561,6.065,562,6.905,563,6.905,564,6.905,565,6.905,566,6.905,567,6.905]],["keywords/43",[]],["title/44",[22,338.408,568,541.551,569,455.261]],["content/44",[]],["keywords/44",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/45",[4,247.66,22,262.872,527,530.337]],["content/45",[4,2.933,11,0.516,16,7.131,22,4.863,24,0.888,25,4.381,26,8.603,31,4.768,32,4.381,35,3.776,36,3.65,40,5.537,44,2.768,54,1.943,63,3.65,69,4.212,98,6.282,116,4.998,128,4.565,178,5.875,209,3.021,302,4.565,354,5.537,406,9.3,449,5.247,569,6.282,570,7.472,571,8.507,572,6.282,573,8.507,574,8.507,575,8.507,576,5.537,577,4.056,578,4.768]],["keywords/45",[]],["title/46",[22,262.872,23,355.618,24,74.991]],["content/46",[4,1.889,11,0.332,17,1.684,22,4.586,23,2.712,24,0.882,33,3.565,35,2.431,36,2.35,40,5.499,54,2.316,63,2.35,69,2.712,75,2.611,76,2.35,92,1.637,112,3.215,125,2.132,138,2.431,147,4.372,209,1.945,210,1.507,214,2.518,293,2.132,315,3.783,328,2.201,361,5.761,431,3.215,435,4.044,437,4.811,449,3.378,494,4.044,510,4.044,527,4.044,569,8.563,572,4.044,576,7.548,577,5.529,578,4.736,579,6.745,580,5.477,581,5.477,582,5.477,583,5.477,584,7.422,585,5.477,586,5.477,587,4.044,588,5.477,589,4.811,590,4.811,591,5.477,592,5.477,593,5.477,594,5.477,595,5.477,596,5.477,597,5.477]],["keywords/46",[]],["title/47",[24,64.375,179,200.61,598,455.261,599,492.155]],["content/47",[4,3.07,11,0.54,13,1.534,16,6.449,22,4.398,23,4.409,24,0.93,26,8.874,35,5.335,36,3.82,40,5.795,54,2.13,143,4.094,179,2.897,247,4.094,340,6.149,363,5.492,404,5.226,449,5.492,494,6.575,517,7.108,570,7.821,576,5.795,577,4.246,578,4.991,579,7.108,599,7.108,600,8.904,601,7.821,602,8.904,603,6.575]],["keywords/47",[]],["title/48",[18,142.355,24,74.991,25,369.878]],["content/48",[4,3.922,17,2.525,18,2.586,22,4.162,25,4.23,54,2.132,75,5.423,116,4.879,126,3.646,133,7.215,179,2.673,209,4.039,210,3.128,247,3.777,248,3.197,249,5.673,349,6.557,363,5.066,406,9.078,572,6.065,579,9.078,599,6.557,603,6.065,604,8.214,605,8.214,606,14.08,607,8.214,608,8.214,609,8.214,610,8.214]],["keywords/48",[]],["title/49",[22,314.782,611,755.435]],["content/49",[8,0.624,16,3.576,22,4.251,24,0.696,26,7.233,33,4.337,35,2.958,36,4.202,40,4.337,54,1.939,55,2.594,63,2.859,69,3.299,76,2.859,98,4.921,100,2.928,126,2.958,140,5.319,154,3.064,256,5.853,275,3.911,299,4.337,300,5.853,307,8.576,354,6.375,361,3.064,404,3.911,449,4.11,463,4.337,469,5.853,475,5.319,509,5.853,549,3.911,550,5.853,558,5.853,576,6.375,577,4.67,578,3.735,587,4.921,598,4.921,611,5.853,612,5.853,613,6.664,614,6.664,615,6.664,616,6.664,617,6.664,618,11.614,619,6.664,620,5.853,621,6.664,622,6.664,623,6.664,624,6.664,625,5.853,626,6.664,627,6.664,628,6.664,629,6.664]],["keywords/49",[]],["title/50",[11,52.199,13,148.185]],["content/50",[]],["keywords/50",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/51",[24,89.8,100,257.062]],["content/51",[8,0.859,9,1.547,10,2.031,11,0.371,12,1.427,15,3.976,18,1.82,23,3.025,24,0.959,36,2.621,54,1.248,75,2.913,76,2.621,89,4.511,100,2.744,111,4.219,132,5.366,135,4.876,145,7.329,146,4.511,147,7.329,157,3.768,167,2.913,190,5.366,218,3.586,258,4.076,276,4.076,282,4.511,318,3.025,348,4.219,363,3.768,388,4.876,401,3.424,415,4.876,453,4.222,458,3.586,463,3.976,477,4.876,515,4.876,516,5.366,577,2.913,601,5.366,630,3.976,631,6.109,632,6.109,633,6.109,634,7.329,635,5.976,636,4.876,637,6.109,638,6.109,639,4.876,640,6.109,641,6.109,642,5.366,643,6.109,644,5.366,645,5.366,646,6.109,647,6.109,648,4.876,649,6.109,650,6.109,651,6.109,652,6.109,653,6.109,654,6.109,655,8.065,656,5.366,657,3.586,658,5.366,659,5.366,660,6.109]],["keywords/51",[]],["title/52",[661,1071.673]],["content/52",[0,2.789,12,1.265,13,0.933,24,1.435,47,3.74,60,3.178,66,2.681,72,2.789,75,2.582,76,2.323,100,1.618,102,3.998,116,2.323,117,2.906,125,3.26,134,5.451,138,2.404,162,5.166,167,3.993,174,3.178,181,4.322,186,3.998,263,3.34,286,3.998,302,2.906,308,3.998,345,4.322,354,3.524,382,3.74,404,4.916,473,4.756,476,3.998,511,4.756,549,3.178,576,3.524,577,2.582,634,6.686,635,3.524,662,5.415,663,5.415,664,5.415,665,4.322,666,5.415,667,5.415,668,4.756,669,4.756,670,5.415,671,5.415,672,5.415,673,5.415,674,5.415,675,5.415,676,5.415,677,3.998,678,4.756,679,5.415,680,5.415,681,4.756,682,5.415,683,4.756,684,5.415,685,5.415,686,5.415,687,5.415,688,5.415,689,4.756,690,5.415,691,5.415,692,5.415,693,5.415,694,5.415,695,5.415,696,5.415,697,5.415,698,5.415,699,5.415,700,8.375,701,5.415,702,5.415,703,5.415,704,5.415,705,4.756,706,5.415,707,5.415,708,5.415,709,5.415,710,5.415,711,4.322,712,5.415,713,5.415,714,5.415,715,5.415,716,5.415,717,5.415,718,4.322,719,5.415]],["keywords/52",[]],["title/53",[720,1071.673]],["content/53",[0,3.804,14,1.004,16,3.964,18,1.464,22,4.507,24,0.771,55,2.875,66,3.657,91,2.624,124,4.853,140,5.896,149,4.336,154,4.853,167,5.032,174,6.195,345,5.896,348,7.289,372,4.556,401,4.14,404,4.336,464,8.286,494,5.454,503,6.488,522,8.425,523,8.425,524,6.488,549,4.336,568,6.488,569,5.454,589,6.488,598,5.454,630,4.807,657,4.336,665,5.896,705,9.27,721,7.386,722,10.554,723,7.386,724,7.386,725,7.386,726,7.386,727,6.488,728,7.386,729,7.386,730,7.386,731,7.386,732,7.386,733,7.386]],["keywords/53",[]],["title/54",[54,97.638,391,630.858,734,718.217]],["content/54",[]],["keywords/54",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/55",[14,73.422,18,107.049,22,197.675,124,248.332,415,431.124]],["content/55",[6,2.036,14,1.915,17,1.979,18,2.496,22,3.495,24,0.997,32,3.316,43,4.754,44,2.095,54,2.173,55,3.717,63,4.097,68,2.96,100,1.924,124,2.96,126,2.858,127,5.656,149,3.779,176,5.404,210,2.627,212,3.316,213,5.605,214,4.391,215,4.754,249,6.595,260,4.191,277,4.447,293,2.506,363,5.89,401,3.609,404,3.779,476,4.754,526,5.656,538,4.447,658,5.656,735,4.754,736,5.656,737,6.439,738,11.383,739,6.439,740,6.439,741,6.439,742,6.439,743,9.55,744,6.439,745,6.439]],["keywords/55",[]],["title/56",[6,194.963,68,283.486,124,283.486,746,541.551]],["content/56",[6,3.707,24,1.394,41,7.539,44,2.793,54,2.196,55,3.341,66,4.25,68,5.39,72,4.42,75,4.093,92,2.566,96,10.296,97,6.338,100,3.504,105,7.539,124,3.947,126,3.81,168,5.038,204,6.852,218,5.038,397,6.852,457,6.338,746,11.725,747,8.583,748,8.583,749,8.583,750,8.583,751,8.583,752,8.583]],["keywords/56",[]],["title/57",[68,248.332,82,372.998,124,248.332,205,372.998,206,278.142]],["content/57",[6,2.69,14,1.584,18,2.309,24,1.492,32,4.381,44,3.791,68,5.357,82,5.875,97,6.282,100,3.971,123,7.472,124,6.109,179,2.768,198,4.381,201,8.046,205,5.875,206,4.381,207,5.537,218,4.993,246,6.53,248,3.311,294,4.768,328,4.681,348,5.875,397,6.791,517,6.791,549,4.993,753,8.507,754,8.507,755,7.472,756,8.507]],["keywords/57",[]],["title/58",[454,410.082,757,559.759]],["content/58",[]],["keywords/58",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/59",[372,660.98]],["content/59",[13,2.218,372,7.939,373,10.274,376,10.274,454,6.137,757,8.377,758,8.377]],["keywords/59",[]],["title/60",[330,629.041]],["content/60",[17,3.149,18,2.03,54,2.306,66,6.526,91,3.638,179,3.333,236,4.251,248,3.987,274,8.177,454,4.884,759,7.564,760,8.579,761,8.177,762,8.998,763,8.998,764,10.244]],["keywords/60",[]],["title/61",[22,262.872,54,97.638,183,467.45]],["content/61",[8,1.2,22,3.595,24,1.025,54,2.058,55,3.823,59,6.783,112,5.765,117,5.271,184,5.765,275,7.528,276,4.36,453,6.962,760,8.348,765,10.238,766,7.252,767,7.665,768,8.627,769,8.627]],["keywords/61",[]],["title/62",[189,530.628]],["content/62",[7,2.403,17,2.965,22,2.389,35,2.897,36,2.8,54,2.334,92,1.951,134,4.248,162,4.026,203,5.21,210,2.653,212,3.361,213,3.831,214,4.435,220,5.662,272,4.819,293,3.755,361,4.435,431,3.831,453,5.276,577,3.112,578,3.658,590,5.733,657,5.662,760,4.248,766,4.819,770,5.21,771,4.508,772,11.475,773,6.527,774,6.527,775,6.527,776,6.527,777,6.527,778,6.527,779,5.21,780,6.527,781,6.527,782,6.527,783,4.819,784,4.819,785,6.527,786,6.527]],["keywords/62",[]],["title/63",[296,855.461]],["content/63",[22,3.962,24,1.13,91,3.845,125,4.214,128,5.809,143,4.977,179,3.522,227,5.809,258,4.805,307,7.993,598,7.993,603,7.993,757,7.045,787,11.992,788,10.825,789,10.825,790,13.652,791,10.825,792,10.825]],["keywords/63",[]],["title/64",[4,247.66,24,74.991,767,385.435]],["content/64",[4,4.197,8,1.285,9,1.272,11,0.834,24,1.434,44,2.952,72,4.673,92,3.638,120,4.869,126,4.028,150,4.326,183,5.906,184,5.326,185,5.906,189,4.493,204,7.243,258,4.028,447,7.97,458,5.326,549,5.326,551,7.97,767,6.532,793,9.074,794,9.074,795,9.074,796,7.97,797,9.074,798,9.074,799,9.074]],["keywords/64",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/65",[24,89.8,206,442.919]],["content/65",[4,3.433,7,2.085,8,1.053,9,1.396,11,0.604,17,1.592,24,1.175,32,4.167,33,3.371,35,3.592,54,2.098,63,2.222,92,3.364,111,3.577,120,2.78,138,2.299,152,4.134,157,3.195,176,5.432,184,3.04,185,3.371,199,4.134,205,5.588,206,5.796,210,2.226,212,2.667,213,5.844,214,3.72,215,7.352,227,5.343,248,2.016,261,2.903,265,3.577,275,3.04,276,2.299,293,4.381,315,3.577,319,3.825,328,2.081,340,3.577,382,3.577,414,5.974,416,7.948,417,7.107,603,3.825,767,2.78,800,5.179,801,5.179,802,4.549,803,5.179,804,8.091,805,5.179,806,5.179,807,4.549,808,5.179,809,5.179,810,4.549,811,4.549,812,5.179,813,5.179]],["keywords/65",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/66",[0,442.919,91,305.472]],["content/66",[0,4.732,4,1.58,5,4.31,6,2.322,11,0.446,13,0.789,16,3.941,17,1.409,18,2.555,19,2.36,24,0.959,35,2.034,43,6.785,54,2.267,55,3.577,72,2.36,80,2.982,83,7.335,88,3.658,89,3.383,91,5.145,92,2.195,116,1.966,124,3.376,128,2.459,138,4.079,146,3.383,162,2.826,176,1.841,179,2.389,188,3.383,209,3.264,247,2.107,248,2.858,251,6.785,265,5.071,266,1.841,267,2.185,268,4.025,314,2.459,318,2.269,357,3.383,404,2.689,448,4.025,449,2.826,464,2.826,527,3.383,549,2.689,630,2.982,657,4.31,681,4.025,683,4.025,711,3.658,727,4.025,810,4.025,814,4.582,815,4.025,816,4.582,817,4.582,818,4.582,819,4.582,820,4.582,821,4.582,822,4.582,823,5.862,824,4.582,825,4.582,826,4.582,827,4.582,828,4.582,829,4.582]],["keywords/66",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/67",[177,755.435,178,593.969]],["content/67",[]],["keywords/67",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/68",[830,1071.673]],["content/68",[4,4.423,5,5.765,8,1.2,11,0.778,17,3.019,18,1.947,44,3.196,76,4.214,120,5.271,131,6.783,138,4.36,139,10.238,150,4.683,167,4.683,176,3.946,194,8.627,197,8.627,282,7.252,357,9.471,427,8.627,538,6.783,645,8.627,823,7.84,831,9.821,832,9.821]],["keywords/68",[]],["title/69",[189,530.628]],["content/69",[8,0.901,11,0.584,15,6.263,24,1.477,31,5.394,44,3.131,69,4.765,75,4.588,121,5.164,150,4.588,154,4.425,167,4.588,170,6.646,183,6.263,189,6.266,201,6.646,218,5.649,240,7.106,266,3.866,267,4.588,276,4.272,381,8.453,502,7.682,833,9.623,834,7.106,835,9.623,836,12.656,837,8.453]],["keywords/69",[]],["title/70",[5,504.822,90,425.843]],["content/70",[5,5.483,8,0.874,9,1.309,11,0.567,18,1.851,27,6.897,54,2.204,61,5.761,90,4.625,120,5.013,179,3.039,209,3.318,210,2.569,236,3.876,239,5.235,247,4.295,248,3.636,266,3.753,302,5.013,303,4.682,305,7.456,328,4.986,458,5.483,541,5.013,544,5.235,838,7.456,839,8.204]],["keywords/70",[]],["title/71",[116,264.517,170,425.801,267,293.977,834,455.261]],["content/71",[4,3.898,8,0.762,9,1.585,11,0.788,17,3.475,54,2.127,61,5.023,69,4.032,76,3.494,79,5.3,116,3.494,170,5.624,209,2.892,210,2.24,214,3.744,267,3.883,293,3.17,313,5.624,318,4.032,341,6.013,361,5.198,431,4.78,577,3.883,834,6.013,840,8.144,841,8.144,842,8.144,843,7.153,844,7.153,845,7.153,846,7.153,847,7.153,848,7.153,849,9.93,850,8.144,851,8.144,852,7.153]],["keywords/71",[]],["title/72",[267,342.456,303,271.017,458,421.572]],["content/72",[8,0.866,11,0.561,17,2.843,44,3.01,54,2.094,61,5.705,76,3.968,150,4.41,162,5.705,209,3.285,210,2.544,214,4.253,239,5.184,247,4.253,267,4.41,293,3.6,303,3.49,431,5.429,438,7.384,458,5.429,489,8.125,519,6.83,838,9.841,839,8.125,843,8.125,853,9.25,854,8.125,855,9.25,856,9.25,857,9.25,858,9.25]],["keywords/72",[]],["title/73",[8,57.701,11,37.42,15,401.276,76,264.517]],["content/73",[4,3.042,8,0.826,9,1.237,10,1.951,11,0.725,17,2.712,31,4.944,54,2.264,75,5.694,125,3.434,161,7.749,209,3.133,210,2.427,214,4.056,218,5.178,276,3.916,293,3.434,361,4.056,431,5.178,438,7.042,834,6.514,838,10.807,849,10.49,859,8.822,860,8.822,861,8.822,862,8.822]],["keywords/73",[]],["title/74",[620,941.321]],["content/74",[12,2.342,18,1.988,24,1.047,25,5.164,100,2.997,116,4.302,126,4.452,136,8.005,148,6.926,157,6.185,167,4.782,174,5.886,207,6.527,283,8.808,318,4.965,340,6.926,578,5.621,669,8.808,863,10.028,864,10.028,865,10.028,866,10.028,867,10.028,868,10.028,869,8.808,870,8.808,871,10.028,872,10.028]],["keywords/74",[]],["title/75",[14,116.919,18,170.467]],["content/75",[]],["keywords/75",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/76",[14,97.638,18,142.355,210,197.555]],["content/76",[8,0.769,11,0.499,14,1.546,17,4.01,18,2.791,24,1.187,35,3.646,36,3.524,54,1.546,69,4.067,76,3.524,90,4.067,104,6.065,125,3.197,179,2.673,206,4.23,209,2.917,210,3.873,249,5.673,287,9.078,330,4.821,357,6.065,577,3.916,578,4.604,639,6.557,648,6.557,657,4.821,767,6.103,769,7.215,873,7.215,874,7.215,875,8.214,876,8.214,877,8.214,878,8.214,879,8.214]],["keywords/76",[]],["title/77",[198,442.919,880,755.435]],["content/77",[8,0.725,9,1.086,14,1.053,17,3.356,18,1.535,32,5.622,54,2.206,63,3.324,99,6.804,109,9.589,117,4.157,119,6.804,124,3.562,158,6.804,209,2.751,210,3.003,214,3.562,267,3.694,293,3.015,313,5.35,318,3.836,341,5.72,361,3.562,431,4.547,460,6.184,510,5.72,577,5.205,811,6.804,844,6.804,845,6.804,846,6.804,847,6.804,848,6.804,852,6.804,881,7.747,882,6.804,883,7.747,884,6.804,885,7.747,886,6.804,887,7.747,888,7.747]],["keywords/77",[]],["title/78",[14,83.816,18,122.203,880,541.551,889,616.544]],["content/78",[5,3.779,9,1.596,10,1.424,11,0.391,14,1.548,17,2.936,18,2.792,24,0.997,27,4.754,35,2.858,36,2.762,54,2.08,75,3.07,124,2.96,125,2.506,143,2.96,179,3.107,209,3.392,210,1.771,212,3.316,225,5.656,248,3.717,255,7.052,258,2.858,277,4.447,287,5.14,318,3.188,330,3.779,335,5.14,337,5.656,354,4.191,578,3.609,612,5.656,630,4.191,639,5.14,659,5.656,678,5.656,711,5.14,886,5.656,890,6.439,891,6.439,892,6.439,893,6.439,894,9.55,895,9.55,896,11.383,897,6.439,898,6.439,899,6.439,900,6.439,901,6.439,902,6.439,903,6.439,904,5.656]],["keywords/78",[]],["title/79",[14,97.638,18,142.355,290,496.019]],["content/79",[7,1.188,8,0.531,9,1.217,10,1.255,11,0.344,14,0.771,15,3.692,17,3.913,18,2.661,24,0.906,54,2.114,55,2.208,69,2.809,90,2.809,92,1.695,125,2.208,138,2.518,189,2.809,210,1.56,212,2.921,213,3.33,214,2.608,220,3.33,247,3.991,248,2.208,255,6.41,258,2.518,259,4.983,260,3.692,274,4.528,282,4.189,290,8.158,293,3.379,294,3.179,323,3.692,328,2.279,335,4.528,361,3.991,404,3.33,435,4.189,576,3.692,634,4.528,635,3.692,636,9.429,668,4.983,677,4.189,689,4.983,755,4.983,873,4.983,884,4.983,904,4.983,905,5.672,906,5.672,907,10.544,908,5.672,909,8.68,910,5.672,911,5.672,912,5.672,913,5.672,914,5.672,915,5.672,916,5.672,917,5.672,918,5.672,919,5.672]],["keywords/79",[]],["title/80",[296,855.461]],["content/80",[]],["keywords/80",[]],["title/81",[32,442.919,920,755.435]],["content/81",[14,1.856,18,2.706,32,5.575,76,4.644,92,3.236,100,3.236,112,6.354,138,6.061,160,8.641,176,4.349,290,9.429,293,5.314,920,9.508,921,11.992,922,10.825]],["keywords/81",[]],["title/82",[14,83.816,176,247.721,218,361.893,630,401.276]],["content/82",[14,1.639,17,2.186,18,2.389,22,3.759,32,3.662,44,2.314,54,2.133,55,3.998,100,2.125,112,4.174,121,3.816,138,3.157,154,3.27,176,6.044,218,4.174,260,4.628,261,3.986,285,6.246,290,7.093,291,7.093,293,4.692,297,5.676,318,3.521,401,3.986,463,4.628,464,4.386,561,6.246,735,5.251,736,6.246,767,3.816,870,6.246,921,6.246,923,7.111,924,7.111,925,7.111,926,7.111,927,7.111,928,7.111,929,7.111,930,7.111,931,7.111,932,7.111,933,7.111]],["keywords/82",[]],["title/83",[14,83.816,18,122.203,86,455.261,934,541.551]],["content/83",[6,2.739,9,1.214,11,0.526,14,1.177,18,1.717,24,0.904,44,2.818,52,7.608,54,1.957,68,3.983,82,8.146,84,3.983,86,6.396,100,2.589,122,6.914,126,3.845,138,3.845,149,5.084,160,6.914,176,3.48,198,6.074,227,4.648,236,3.595,246,6.611,263,5.342,266,3.48,294,4.855,297,6.914,304,6.914,419,6.914,823,6.914,934,7.608,935,8.661,936,8.661,937,8.661,938,8.661,939,8.661]],["keywords/83",[]],["title/84",[9,100.692,184,421.572,185,467.45]],["content/84",[4,1.748,7,1.666,8,1.041,9,0.711,11,0.483,14,1.512,17,3.019,18,2.205,24,0.529,32,4.097,33,5.178,44,1.649,54,2.288,55,3.097,72,2.611,76,2.175,85,4.047,86,3.743,120,4.27,150,2.417,152,7.839,176,3.197,184,2.976,185,3.299,188,3.743,205,6.782,206,2.611,209,2.826,210,2.188,211,6.988,212,2.611,213,4.67,214,4.515,215,8.213,216,6.988,219,4.453,220,6.529,221,4.453,223,6.988,227,5.27,293,1.973,294,2.841,302,2.72,344,3.743,431,2.976,491,3.743,807,4.453,940,4.453,941,5.069,942,5.069,943,7.956,944,7.956,945,5.069,946,5.069,947,5.069]],["keywords/84",[]],["title/85",[24,89.8,267,410.082]],["content/85",[6,1.804,8,0.534,11,0.529,18,1.728,19,2.939,24,1.237,54,2.28,60,3.35,72,2.939,84,4.009,92,2.606,100,1.706,112,3.35,120,3.062,121,4.68,125,2.221,179,2.837,209,3.097,210,2.399,236,4.392,242,5.118,244,3.714,246,3.198,248,3.394,261,3.198,265,3.941,267,6.086,276,2.533,277,3.941,281,4.214,299,3.714,302,3.062,303,3.993,314,4.68,328,2.293,342,4.555,343,4.555,359,4.555,457,4.214,458,3.35,498,5.012,533,5.012,538,3.941,541,4.68,544,4.887,854,7.659,869,5.012,874,5.012,882,5.012,948,5.706,949,5.706,950,5.012,951,5.706,952,5.706]],["keywords/85",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/86",[24,89.8,314,461.548]],["content/86",[]],["keywords/86",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/87",[302,575.119]],["content/87",[24,1.118,54,2.324,179,3.483,209,3.802,210,2.944,236,4.442,248,4.166,303,5.115,314,5.744,328,5.446,541,5.744,544,5.999]],["keywords/87",[]],["title/88",[84,492.754]],["content/88",[4,2.65,18,2.151,24,1.314,54,2.267,64,4.739,84,3.533,92,2.297,121,4.124,143,3.533,155,5.674,156,5.307,179,3.532,209,2.729,210,2.114,230,5.307,236,3.189,242,8.027,246,4.307,248,2.991,252,5.674,261,4.307,277,5.307,299,5.001,303,4.749,314,6.754,339,6.749,459,6.134,541,4.124,544,4.307,655,6.749,950,6.749,953,7.684,954,7.684,955,7.684]],["keywords/88",[]],["title/89",[13,148.185,758,559.759]],["content/89",[]],["keywords/89",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/90",[372,660.98]],["content/90",[11,0.49,13,1.391,18,1.6,19,5.788,22,2.955,47,7.762,91,2.868,117,4.333,126,3.584,128,4.333,143,3.713,154,3.713,167,6.164,174,4.74,258,3.584,318,3.998,351,4.98,372,6.932,373,6.446,376,6.446,382,5.577,401,4.526,453,5.167,454,6.664,477,6.446,542,7.092,587,5.962,625,7.092,630,5.255,635,5.255,648,6.446,665,6.446,718,6.446,735,5.962,757,7.314,758,5.255,956,8.075,957,8.075,958,8.075,959,8.075,960,8.075]],["keywords/90",[]],["title/91",[189,530.628]],["content/91",[13,1.728,15,6.527,18,1.988,24,1.047,47,6.926,116,4.302,125,3.903,167,4.782,189,4.965,419,8.005,453,4.611,454,6.879,587,7.405,757,8.462,758,6.527,760,6.527,761,8.005,767,5.382,771,6.926,961,10.028,962,10.028,963,8.808,964,10.028,965,7.405,966,10.028]],["keywords/91",[]],["title/92",[91,305.472,330,504.822]],["content/92",[5,5.288,6,1.883,8,0.557,11,0.547,13,2.087,18,1.786,24,0.622,31,3.338,54,2.262,66,5.379,79,3.876,90,4.46,91,3.859,92,1.78,125,2.318,126,2.644,143,4.142,154,2.739,157,3.673,178,4.113,179,1.938,209,2.115,210,1.638,236,2.472,247,4.142,248,5.326,258,2.644,275,3.496,276,2.644,395,4.754,453,4.995,454,5.775,512,5.232,541,3.196,544,3.338,677,4.398,757,3.876,758,5.863,759,6.652,760,3.876,761,8.672,762,7.913,763,5.232,771,4.113,965,4.398,967,5.956,968,3.876]],["keywords/92",[]],["title/93",[24,89.8,968,559.759]],["content/93",[7,1.556,8,0.435,11,0.282,17,2.284,22,3.396,24,0.969,31,4.164,35,2.064,36,1.995,48,3.711,54,2.213,55,1.81,62,2.729,66,3.678,79,4.835,90,2.302,91,1.651,92,1.39,112,2.729,116,3.187,121,2.495,125,1.81,134,4.835,178,5.131,210,2.043,212,3.826,213,5.446,214,4.266,220,4.361,232,3.711,263,2.867,272,3.433,275,4.361,286,3.433,293,4.125,299,3.026,315,3.211,318,2.302,319,3.433,361,2.138,363,2.867,453,5.327,454,3.542,476,3.433,487,4.084,491,3.433,513,4.084,535,4.084,549,2.729,577,4.424,578,4.164,584,4.084,642,4.084,657,2.729,718,3.711,760,3.026,765,3.711,766,5.486,768,4.084,770,5.93,771,3.211,779,5.93,783,3.433,784,5.486,796,4.084,963,4.084,965,6.851,968,4.835,969,4.649,970,4.649,971,3.711,972,4.649,973,3.711,974,4.649,975,3.711,976,4.649,977,4.649,978,4.649,979,4.649]],["keywords/93",[]],["title/94",[24,74.991,206,369.878,453,330.236]],["content/94",[7,1.535,17,2.253,24,1.096,35,3.254,54,2.18,72,5.405,75,3.495,92,3.137,97,5.412,120,3.934,124,4.826,125,2.853,126,3.254,134,4.771,138,4.659,206,5.405,210,2.016,212,3.775,213,6.161,214,4.826,220,6.161,293,2.853,361,3.37,453,4.826,577,5.005,656,6.438,657,4.302,766,5.412,770,5.851,771,5.062,779,5.851,783,5.412,784,5.412,965,7.75,971,5.851,973,5.851,975,5.851,980,7.33,981,7.33,982,7.33,983,7.33,984,7.33]],["keywords/94",[]],["title/95",[6,227.114,276,318.83,453,330.236]],["content/95",[6,2.093,7,2.422,18,1.312,22,2.422,24,0.691,35,4.326,44,2.153,54,2.272,55,2.576,63,4.181,64,4.081,92,1.978,111,4.57,134,6.343,189,3.277,206,3.408,220,7.49,253,5.282,272,4.886,281,4.886,293,4.503,315,4.57,361,4.481,453,4.481,454,3.155,577,6.084,644,5.813,657,5.72,783,7.196,784,7.196,971,5.282,973,7.779,975,7.779,985,5.813,986,6.617,987,6.617,988,9.745,989,9.745,990,6.617]],["keywords/95",[]],["title/96",[16,461.548,759,635.064]],["content/96",[6,3.274,8,0.969,13,1.784,19,5.333,24,1.081,62,6.078,63,4.443,91,4.714,112,6.078,128,5.557,179,3.369,207,6.739,212,5.333,247,4.761,248,5.166,251,7.646,258,4.597,344,7.646,454,6.328,759,7.646,767,5.557,991,10.355]],["keywords/96",[]],["title/97",[16,461.548,968,559.759]],["content/97",[0,3.48,6,2.137,10,2.189,11,0.41,16,5.311,18,1.34,19,3.48,23,3.346,36,4.246,40,4.399,59,8.087,60,5.809,62,3.967,63,4.246,64,4.168,68,3.107,75,3.222,78,4.168,79,6.441,81,11.322,91,2.4,104,4.99,117,3.627,128,3.627,167,3.222,207,4.399,275,5.809,293,2.631,318,3.346,375,5.395,453,7.339,454,3.222,572,4.99,635,4.399,735,4.99,765,5.395,767,5.311,787,8.693,802,10.285,837,5.936,940,5.936,968,4.399,985,5.936,992,6.758,993,6.758,994,6.758,995,6.758,996,6.758]],["keywords/97",[]],["title/98",[156,740.124]],["content/98",[13,1.675,24,1.015,50,9.407,91,4.525,117,5.217,121,5.217,124,4.47,142,8.539,148,6.714,261,5.449,263,5.996,401,7.141,453,4.47,454,4.635,538,6.714,635,9.249,636,10.17,677,7.178,758,6.327,767,5.217,815,8.539,968,6.327,997,9.721,998,9.721,999,9.721]],["keywords/98",[]]],"invertedIndex":[["",{"_index":54,"title":{"11":{"position":[[11,1]]},"17":{"position":[[5,1]]},"26":{"position":[[16,2]]},"27":{"position":[[16,1]]},"54":{"position":[[5,1]]},"61":{"position":[[7,1]]}},"content":{"2":{"position":[[667,2],[724,2],[869,2],[1243,2]]},"3":{"position":[[115,1],[125,1],[767,3],[897,3]]},"7":{"position":[[629,1],[721,2],[734,1],[736,1],[738,1],[740,1],[742,3],[773,1],[775,2],[824,2],[854,3],[883,2],[892,1],[961,3],[965,1],[977,1],[979,1],[981,1],[983,1],[985,3],[989,2],[992,3],[1035,2],[1105,1],[1132,2],[1135,2],[1165,1],[1204,1],[1206,1]]},"10":{"position":[[1356,1]]},"11":{"position":[[487,1],[561,1],[930,1],[1012,1]]},"12":{"position":[[380,1],[392,1],[429,2],[500,1]]},"15":{"position":[[136,1],[199,1],[264,1],[287,3],[291,2],[294,2],[297,3]]},"16":{"position":[[123,1],[166,1],[178,1],[295,1],[318,3],[322,2],[325,2],[328,3]]},"18":{"position":[[164,1],[198,1],[212,2],[215,3]]},"19":{"position":[[315,2],[341,1],[390,2],[393,5],[410,1],[412,1],[469,2],[472,2]]},"20":{"position":[[247,1],[266,1],[806,1],[901,2],[912,1],[914,2],[1147,1],[1195,2],[1219,1],[1276,1],[1278,1],[1402,1],[1460,1],[1488,2],[1574,1],[1576,1]]},"24":{"position":[[165,1]]},"25":{"position":[[363,1]]},"33":{"position":[[34,1],[82,1],[115,2],[118,3],[122,2],[125,2],[128,3],[132,2],[158,2]]},"34":{"position":[[34,1],[143,2],[158,1],[249,2],[252,2],[255,3],[259,2],[262,2],[265,3],[269,2],[295,2]]},"36":{"position":[[114,3]]},"40":{"position":[[34,1],[82,1],[96,2],[99,3],[103,2],[106,2],[109,3],[113,2],[139,2]]},"42":{"position":[[141,1],[189,1],[204,2],[207,3],[211,2],[214,2],[217,3],[221,2],[269,1],[311,1],[370,1],[372,1]]},"43":{"position":[[392,1],[404,1],[443,2],[521,2],[536,2],[547,2],[574,1]]},"45":{"position":[[338,1],[364,1],[399,2],[402,1]]},"46":{"position":[[143,1],[209,2],[225,1],[227,2],[306,2],[362,1],[390,2],[442,1],[469,2],[497,1],[531,1],[544,1],[568,2],[631,2],[655,2],[665,1],[678,1],[687,1],[699,1],[719,2],[784,2],[857,1],[874,1],[876,1],[894,2],[973,1],[1002,1],[1004,1]]},"47":{"position":[[273,1],[294,1],[320,1],[355,2],[358,1],[360,1]]},"48":{"position":[[228,2],[287,1],[289,1],[339,2],[342,2],[370,2],[391,2]]},"49":{"position":[[421,1],[501,1],[548,1],[684,1],[689,1],[691,1]]},"51":{"position":[[680,4],[884,1]]},"55":{"position":[[64,3],[386,3],[452,2],[493,3],[531,1],[669,2],[684,1],[686,1],[724,2],[779,2],[793,1],[795,1]]},"56":{"position":[[336,1],[359,2],[362,2],[371,1],[373,2],[376,3],[397,2],[400,2]]},"60":{"position":[[30,1],[70,1],[72,2],[133,2],[178,2],[258,3],[262,3],[266,2],[269,3]]},"61":{"position":[[228,1],[236,1],[238,3],[242,2]]},"62":{"position":[[49,1],[112,2],[155,1],[157,2],[221,1],[285,1],[353,3],[367,1],[369,1],[427,1],[518,1],[520,2],[553,1],[555,2],[658,1],[663,1],[665,3],[669,1],[702,1],[746,1],[787,2],[790,3],[794,1],[796,1]]},"65":{"position":[[669,1],[763,1],[765,2],[854,1],[882,2],[953,1],[990,2],[993,2],[1041,1],[1088,1],[1111,1],[1135,1],[1137,1]]},"66":{"position":[[477,1],[479,3],[483,1],[540,2],[557,3],[561,1],[651,2],[695,1],[718,3],[722,1],[786,2],[804,2],[818,1],[841,3],[845,1],[946,2],[967,2],[981,1],[1004,3],[1008,1],[1087,2],[1107,3],[1111,1],[1161,2],[1188,3],[1192,1],[1266,2],[1286,1]]},"70":{"position":[[170,1],[218,1],[232,2],[235,3],[239,2],[297,2],[323,2]]},"71":{"position":[[280,1],[328,2],[410,1],[426,1],[478,1],[564,1],[566,1]]},"72":{"position":[[305,1],[360,2],[386,1],[423,1],[425,1]]},"73":{"position":[[215,1],[263,2],[277,1],[292,1],[328,1],[330,1],[339,1],[341,4],[346,1],[348,1]]},"76":{"position":[[192,1],[220,1]]},"77":{"position":[[225,1],[227,2],[300,2],[382,1],[398,1],[437,2],[507,1],[541,1],[574,1],[576,1]]},"78":{"position":[[287,1],[389,1],[391,1],[401,1],[430,1],[471,1],[473,1],[646,2],[744,3]]},"79":{"position":[[489,1],[506,1],[549,1],[617,2],[634,2],[697,3],[1036,1],[1125,1],[1127,2],[1139,1],[1179,1],[1181,1]]},"82":{"position":[[369,1],[407,2],[416,1],[425,2],[434,1],[436,2],[452,2],[455,2],[476,1]]},"83":{"position":[[292,1],[470,1],[502,2],[505,3]]},"84":{"position":[[296,1],[388,2],[401,1],[403,1],[405,1],[407,1],[409,3],[432,1],[459,2],[468,1],[470,2],[533,2],[647,3],[651,1],[653,1],[917,1],[985,1],[987,1],[989,1],[991,1],[993,3],[1026,1],[1063,2],[1066,2],[1088,1],[1127,1],[1129,1]]},"85":{"position":[[361,1],[396,1],[410,2],[413,3],[417,2],[420,2],[423,3],[427,2],[453,2],[538,1],[573,1],[588,1],[590,3],[594,1],[607,1],[609,1],[657,2],[660,2],[663,2],[666,3],[670,2],[696,2]]},"87":{"position":[[51,1],[80,1],[94,2],[97,3],[101,2],[104,2],[107,3],[111,2],[137,2]]},"88":{"position":[[169,1],[198,1],[213,1],[215,3],[219,1],[232,1],[234,1],[276,2],[279,2],[282,2],[285,3],[289,2],[315,2]]},"92":{"position":[[140,1],[152,1],[180,1],[205,1],[248,1],[277,1],[328,2],[331,3],[368,1],[413,1],[444,2],[588,2],[696,3],[700,3],[704,2],[707,3],[711,2],[756,2],[782,2]]},"93":{"position":[[658,1],[798,1],[800,2],[855,1],[898,2],[907,1],[920,1],[963,1],[970,1],[972,3],[1046,3],[1050,1],[1052,1],[1107,1],[1198,1],[1200,2],[1266,1],[1310,1],[1346,2],[1349,3],[1353,1],[1355,1]]},"94":{"position":[[321,1],[461,1],[463,2],[535,1],[548,1],[591,1],[598,1],[600,3],[674,1],[676,1]]},"95":{"position":[[372,2],[427,1],[440,1],[483,1],[490,1],[492,3],[566,1],[622,1],[692,2],[701,2],[710,1],[723,1],[766,1],[773,1],[775,3],[849,3],[853,1]]}},"keywords":{}}],["1.6.2",{"_index":732,"title":{},"content":{"53":{"position":[[543,6]]}},"keywords":{}}],["10",{"_index":483,"title":{"26":{"position":[[19,3]]},"27":{"position":[[18,3]]}},"content":{},"keywords":{}}],["2.0",{"_index":728,"title":{},"content":{"53":{"position":[[314,3]]}},"keywords":{}}],["22",{"_index":628,"title":{},"content":{"49":{"position":[[721,3]]}},"keywords":{}}],["3.0",{"_index":725,"title":{},"content":{"53":{"position":[[170,3]]}},"keywords":{}}],["4.0",{"_index":721,"title":{},"content":{"53":{"position":[[13,3]]}},"keywords":{}}],["4.4",{"_index":730,"title":{},"content":{"53":{"position":[[418,3]]}},"keywords":{}}],["4244",{"_index":443,"title":{},"content":{"20":{"position":[[1535,4]]}},"keywords":{}}],["49a6",{"_index":442,"title":{},"content":{"20":{"position":[[1530,4]]}},"keywords":{}}],["50",{"_index":471,"title":{},"content":{"24":{"position":[[488,5]]}},"keywords":{}}],["67",{"_index":465,"title":{},"content":{"24":{"position":[[337,3]]},"43":{"position":[[291,4]]}},"keywords":{}}],["75a2df11517a>",{"_index":445,"title":{},"content":{"20":{"position":[[1545,16]]}},"keywords":{}}],["8",{"_index":320,"title":{},"content":{"11":{"position":[[866,1]]},"29":{"position":[[223,3]]}},"keywords":{}}],["82",{"_index":933,"title":{},"content":{"82":{"position":[[667,3]]}},"keywords":{}}],["869f",{"_index":444,"title":{},"content":{"20":{"position":[[1540,4]]}},"keywords":{}}],["absolut",{"_index":365,"title":{},"content":{"12":{"position":[[551,10]]}},"keywords":{}}],["accept",{"_index":253,"title":{},"content":{"9":{"position":[[610,7]]},"10":{"position":[[99,7],[170,7],[270,6],[814,8],[1006,8],[1156,7]]},"95":{"position":[[69,7]]}},"keywords":{}}],["access",{"_index":76,"title":{"73":{"position":[[0,6]]}},"content":{"2":{"position":[[1283,6]]},"3":{"position":[[730,10]]},"4":{"position":[[635,6]]},"12":{"position":[[119,6],[445,6]]},"31":{"position":[[655,6]]},"46":{"position":[[897,9]]},"49":{"position":[[580,9]]},"51":{"position":[[320,6]]},"52":{"position":[[176,6]]},"68":{"position":[[238,8]]},"71":{"position":[[59,6]]},"72":{"position":[[62,6]]},"76":{"position":[[556,6]]},"81":{"position":[[129,6]]},"84":{"position":[[74,6]]}},"keywords":{}}],["accident",{"_index":680,"title":{},"content":{"52":{"position":[[393,12]]}},"keywords":{}}],["accord",{"_index":292,"title":{},"content":{"10":{"position":[[1206,9]]},"30":{"position":[[92,9]]}},"keywords":{}}],["accordingli",{"_index":751,"title":{},"content":{"56":{"position":[[308,12]]}},"keywords":{}}],["account",{"_index":535,"title":{},"content":{"31":{"position":[[575,8]]},"93":{"position":[[210,7]]}},"keywords":{}}],["accountservic",{"_index":965,"title":{},"content":{"91":{"position":[[276,14]]},"92":{"position":[[739,16]]},"93":{"position":[[766,15],[782,15],[1092,14]]},"94":{"position":[[429,15],[445,15]]}},"keywords":{}}],["achiev",{"_index":938,"title":{},"content":{"83":{"position":[[298,7]]}},"keywords":{}}],["activ",{"_index":81,"title":{},"content":{"2":{"position":[[1375,6]]},"97":{"position":[[151,6],[361,7],[734,6],[839,6]]}},"keywords":{}}],["actual",{"_index":648,"title":{},"content":{"51":{"position":[[570,6]]},"76":{"position":[[463,8]]},"90":{"position":[[124,6]]}},"keywords":{}}],["ad",{"_index":675,"title":{},"content":{"52":{"position":[[310,5]]}},"keywords":{}}],["adapt",{"_index":454,"title":{"22":{"position":[[18,7]]},"58":{"position":[[7,7]]}},"content":{"22":{"position":[[18,7]]},"59":{"position":[[51,7]]},"60":{"position":[[136,8]]},"90":{"position":[[98,8],[247,8],[319,8],[329,8]]},"91":{"position":[[82,7],[97,8],[149,8]]},"92":{"position":[[311,7],[546,8],[596,7],[633,7]]},"93":{"position":[[600,8],[1471,7]]},"95":{"position":[[280,8]]},"96":{"position":[[266,8],[315,7]]},"97":{"position":[[188,7]]},"98":{"position":[[367,7]]}},"keywords":{}}],["add",{"_index":512,"title":{},"content":{"28":{"position":[[348,3]]},"92":{"position":[[4,3]]}},"keywords":{}}],["addit",{"_index":93,"title":{"14":{"position":[[0,10]]}},"content":{"3":{"position":[[39,10]]},"6":{"position":[[26,8]]},"9":{"position":[[119,10],[210,10],[308,10],[971,10]]},"10":{"position":[[633,10]]},"11":{"position":[[1124,10]]},"13":{"position":[[144,10]]}},"keywords":{}}],["addition",{"_index":333,"title":{},"content":{"11":{"position":[[1511,12]]},"27":{"position":[[153,13]]}},"keywords":{}}],["address",{"_index":170,"title":{"71":{"position":[[10,7]]}},"content":{"5":{"position":[[114,7]]},"31":{"position":[[1126,9]]},"69":{"position":[[68,7]]},"71":{"position":[[123,7]]}},"keywords":{}}],["adjust",{"_index":750,"title":{},"content":{"56":{"position":[[301,6]]}},"keywords":{}}],["admin",{"_index":888,"title":{},"content":{"77":{"position":[[543,8]]}},"keywords":{}}],["advanc",{"_index":729,"title":{},"content":{"53":{"position":[[325,8]]}},"keywords":{}}],["advantag",{"_index":719,"title":{},"content":{"52":{"position":[[1126,10]]}},"keywords":{}}],["advis",{"_index":478,"title":{},"content":{"25":{"position":[[293,7]]}},"keywords":{}}],["affect",{"_index":755,"title":{},"content":{"57":{"position":[[171,6]]},"79":{"position":[[883,6]]}},"keywords":{}}],["again",{"_index":913,"title":{},"content":{"79":{"position":[[703,6]]}},"keywords":{}}],["aim",{"_index":352,"title":{},"content":{"12":{"position":[[38,4]]}},"keywords":{}}],["alia",{"_index":609,"title":{},"content":{"48":{"position":[[434,5]]}},"keywords":{}}],["align",{"_index":397,"title":{},"content":{"18":{"position":[[113,5]]},"56":{"position":[[93,6]]},"57":{"position":[[95,5]]}},"keywords":{}}],["allow",{"_index":140,"title":{},"content":{"4":{"position":[[167,6]]},"49":{"position":[[565,5]]},"53":{"position":[[431,8]]}},"keywords":{}}],["along",{"_index":835,"title":{},"content":{"69":{"position":[[155,6]]}},"keywords":{}}],["alreadi",{"_index":47,"title":{},"content":{"2":{"position":[[573,7]]},"13":{"position":[[246,7]]},"52":{"position":[[1049,7]]},"90":{"position":[[447,7],[482,7]]},"91":{"position":[[170,7]]}},"keywords":{}}],["altern",{"_index":494,"title":{},"content":{"27":{"position":[[417,14]]},"46":{"position":[[722,14]]},"47":{"position":[[1,14]]},"53":{"position":[[207,11]]}},"keywords":{}}],["alway",{"_index":870,"title":{},"content":{"74":{"position":[[296,6]]},"82":{"position":[[562,6]]}},"keywords":{}}],["amaz",{"_index":662,"title":{},"content":{"52":{"position":[[14,7]]}},"keywords":{}}],["andreialecu",{"_index":496,"title":{},"content":{"27":{"position":[[518,13]]}},"keywords":{}}],["anoth",{"_index":948,"title":{},"content":{"85":{"position":[[21,7]]}},"keywords":{}}],["anyth",{"_index":161,"title":{},"content":{"4":{"position":[[576,8]]},"73":{"position":[[101,9]]}},"keywords":{}}],["anyway",{"_index":756,"title":{},"content":{"57":{"position":[[299,7]]}},"keywords":{}}],["anywher",{"_index":427,"title":{},"content":{"20":{"position":[[1048,9],[1298,8]]},"68":{"position":[[247,8]]}},"keywords":{}}],["api",{"_index":0,"title":{"0":{"position":[[0,3]]},"66":{"position":[[7,3]]}},"content":{"0":{"position":[[0,3],[44,3]]},"2":{"position":[[50,3]]},"24":{"position":[[208,3]]},"38":{"position":[[43,3]]},"43":{"position":[[210,3]]},"52":{"position":[[928,3]]},"53":{"position":[[237,4]]},"66":{"position":[[7,3],[30,3],[297,3]]},"97":{"position":[[102,4]]}},"keywords":{}}],["apollo",{"_index":480,"title":{},"content":{"25":{"position":[[365,6]]},"27":{"position":[[302,6]]}},"keywords":{}}],["app",{"_index":159,"title":{},"content":{"4":{"position":[[550,4]]},"7":{"position":[[54,3],[251,5]]},"43":{"position":[[400,3]]}},"keywords":{}}],["app.controller.t",{"_index":855,"title":{},"content":{"72":{"position":[[210,17]]}},"keywords":{}}],["app.listen(3000",{"_index":566,"title":{},"content":{"43":{"position":[[556,17]]}},"keywords":{}}],["app.module.t",{"_index":544,"title":{},"content":{"33":{"position":[[1,13]]},"34":{"position":[[1,13]]},"40":{"position":[[1,13]]},"42":{"position":[[108,13]]},"70":{"position":[[137,13]]},"85":{"position":[[328,13],[505,13]]},"87":{"position":[[18,13]]},"88":{"position":[[136,13]]},"92":{"position":[[119,13]]}},"keywords":{}}],["app.service.t",{"_index":860,"title":{},"content":{"73":{"position":[[162,14]]}},"keywords":{}}],["app.us",{"_index":486,"title":{"43":{"position":[[6,8]]}},"content":{"27":{"position":[[84,12]]},"43":{"position":[[492,8],[632,10]]}},"keywords":{}}],["app_guard",{"_index":954,"title":{},"content":{"88":{"position":[[245,10]]}},"keywords":{}}],["app_interceptor",{"_index":854,"title":{},"content":{"72":{"position":[[192,16]]},"85":{"position":[[489,15],[620,16]]}},"keywords":{}}],["appar",{"_index":562,"title":{},"content":{"43":{"position":[[243,10]]}},"keywords":{}}],["appcontrol",{"_index":839,"title":{},"content":{"70":{"position":[[280,16]]},"72":{"position":[[291,13]]}},"keywords":{}}],["appli",{"_index":803,"title":{},"content":{"65":{"position":[[529,7]]}},"keywords":{}}],["applic",{"_index":148,"title":{},"content":{"4":{"position":[[360,12]]},"7":{"position":[[219,11]]},"11":{"position":[[274,10]]},"74":{"position":[[281,11]]},"98":{"position":[[116,12]]}},"keywords":{}}],["appmodul",{"_index":541,"title":{},"content":{"31":{"position":[[1051,9]]},"33":{"position":[[148,9]]},"34":{"position":[[285,9]]},"40":{"position":[[129,9]]},"42":{"position":[[237,9]]},"70":{"position":[[313,9]]},"85":{"position":[[443,9],[686,9]]},"87":{"position":[[127,9]]},"88":{"position":[[305,9]]},"92":{"position":[[772,9]]}},"keywords":{}}],["approach",{"_index":605,"title":{},"content":{"48":{"position":[[27,8]]}},"keywords":{}}],["appservic",{"_index":838,"title":{},"content":{"70":{"position":[[253,13]]},"72":{"position":[[336,11],[348,11]]},"73":{"position":[[8,11],[134,10],[204,10]]}},"keywords":{}}],["appspropag",{"_index":638,"title":{},"content":{"51":{"position":[[259,15]]}},"keywords":{}}],["argument",{"_index":315,"title":{},"content":{"11":{"position":[[731,8]]},"46":{"position":[[807,10]]},"65":{"position":[[595,9]]},"93":{"position":[[400,8]]},"95":{"position":[[128,9]]}},"keywords":{}}],["around",{"_index":645,"title":{},"content":{"51":{"position":[[469,6]]},"68":{"position":[[194,6]]}},"keywords":{}}],["array",{"_index":251,"title":{},"content":{"9":{"position":[[524,5]]},"10":{"position":[[1032,5],[1167,5],[1237,6]]},"66":{"position":[[1013,5],[1116,5],[1197,5]]},"96":{"position":[[114,5]]}},"keywords":{}}],["arrow",{"_index":812,"title":{},"content":{"65":{"position":[[1227,5]]}},"keywords":{}}],["assert(founduser.id",{"_index":777,"title":{},"content":{"62":{"position":[[333,19]]}},"keywords":{}}],["assign",{"_index":109,"title":{},"content":{"3":{"position":[[369,11]]},"77":{"position":[[78,6],[444,6]]}},"keywords":{}}],["assum",{"_index":381,"title":{},"content":{"13":{"position":[[228,7]]},"69":{"position":[[181,7]]}},"keywords":{}}],["assumpt",{"_index":789,"title":{},"content":{"63":{"position":[[83,10]]}},"keywords":{}}],["async",{"_index":7,"title":{"34":{"position":[[0,6]]}},"content":{"7":{"position":[[746,5],[1138,5]]},"62":{"position":[[132,5],[523,5],[671,5]]},"65":{"position":[[276,6],[327,5],[996,5]]},"79":{"position":[[424,5]]},"84":{"position":[[413,5],[1069,5]]},"93":{"position":[[803,5],[1203,5]]},"94":{"position":[[483,5]]},"95":{"position":[[375,5],[570,5],[695,5]]}},"keywords":{"0":{"position":[[0,5]]},"1":{"position":[[0,5]]},"4":{"position":[[0,5]]},"5":{"position":[[0,5]]},"6":{"position":[[0,5]]},"7":{"position":[[0,5]]},"8":{"position":[[0,5]]},"12":{"position":[[0,5]]},"13":{"position":[[0,5]]},"14":{"position":[[0,5]]},"17":{"position":[[0,5]]},"20":{"position":[[0,5]]},"21":{"position":[[0,5]]},"22":{"position":[[0,5]]},"23":{"position":[[0,5]]},"30":{"position":[[0,5]]},"31":{"position":[[0,5]]},"32":{"position":[[0,5]]},"35":{"position":[[0,5]]},"39":{"position":[[0,5]]},"44":{"position":[[0,5]]},"50":{"position":[[0,5]]},"54":{"position":[[0,5]]},"58":{"position":[[0,5]]},"64":{"position":[[0,5]]},"65":{"position":[[0,5]]},"66":{"position":[[0,5]]},"67":{"position":[[0,5]]},"75":{"position":[[0,5]]},"85":{"position":[[0,5]]},"86":{"position":[[0,5]]},"89":{"position":[[0,5]]}}}],["async_hook",{"_index":700,"title":{},"content":{"52":{"position":[[756,11],[1062,11]]}},"keywords":{}}],["asynchron",{"_index":317,"title":{},"content":{"11":{"position":[[762,15]]}},"keywords":{}}],["asynclocalstorag",{"_index":12,"title":{},"content":{"19":{"position":[[368,21]]},"31":{"position":[[39,17]]},"51":{"position":[[994,18]]},"52":{"position":[[496,17]]},"74":{"position":[[218,18]]}},"keywords":{"0":{"position":[[37,17]]},"1":{"position":[[37,17]]},"4":{"position":[[37,17]]},"5":{"position":[[37,17]]},"6":{"position":[[37,17]]},"7":{"position":[[37,17]]},"8":{"position":[[37,17]]},"12":{"position":[[37,17]]},"13":{"position":[[37,17]]},"14":{"position":[[37,17]]},"17":{"position":[[37,17]]},"20":{"position":[[37,17]]},"21":{"position":[[37,17]]},"22":{"position":[[37,17]]},"23":{"position":[[37,17]]},"30":{"position":[[37,17]]},"31":{"position":[[37,17]]},"32":{"position":[[37,17]]},"35":{"position":[[37,17]]},"39":{"position":[[37,17]]},"44":{"position":[[37,17]]},"50":{"position":[[37,17]]},"54":{"position":[[37,17]]},"58":{"position":[[37,17]]},"64":{"position":[[37,17]]},"65":{"position":[[37,17]]},"66":{"position":[[37,17]]},"67":{"position":[[37,17]]},"75":{"position":[[37,17]]},"85":{"position":[[37,17]]},"86":{"position":[[37,17]]},"89":{"position":[[37,17]]}}}],["asynclocalstorage#enterwith",{"_index":339,"title":{},"content":{"11":{"position":[[1902,27]]},"88":{"position":[[447,27]]}},"keywords":{}}],["asynclocalstorage#run",{"_index":343,"title":{},"content":{"11":{"position":[[1981,22]]},"27":{"position":[[485,21]]},"85":{"position":[[117,21]]}},"keywords":{}}],["attempt",{"_index":795,"title":{},"content":{"64":{"position":[[154,8]]}},"keywords":{}}],["augment",{"_index":599,"title":{"47":{"position":[[24,13]]}},"content":{"47":{"position":[[116,7]]},"48":{"position":[[44,10]]}},"keywords":{}}],["authent",{"_index":388,"title":{},"content":{"15":{"position":[[266,14]]},"16":{"position":[[297,14]]},"51":{"position":[[279,14]]}},"keywords":{}}],["author",{"_index":449,"title":{},"content":{"21":{"position":[[76,6]]},"37":{"position":[[38,6]]},"45":{"position":[[378,11]]},"46":{"position":[[511,11]]},"47":{"position":[[334,11]]},"49":{"position":[[473,11]]},"66":{"position":[[221,7]]}},"keywords":{}}],["author'",{"_index":173,"title":{},"content":{"5":{"position":[[190,8]]}},"keywords":{}}],["autogener",{"_index":422,"title":{},"content":{"20":{"position":[[755,13]]}},"keywords":{}}],["automat",{"_index":302,"title":{"40":{"position":[[0,14]]},"87":{"position":[[0,14]]}},"content":{"11":{"position":[[201,13],[366,13],[1222,13]]},"20":{"position":[[163,13]]},"24":{"position":[[236,9]]},"45":{"position":[[91,9]]},"52":{"position":[[296,13]]},"70":{"position":[[28,13]]},"84":{"position":[[743,14]]},"85":{"position":[[314,13]]}},"keywords":{}}],["avail",{"_index":258,"title":{"21":{"position":[[0,9]]},"37":{"position":[[0,9]]}},"content":{"9":{"position":[[740,10]]},"10":{"position":[[669,9]]},"11":{"position":[[414,9],[1652,9],[1782,9]]},"21":{"position":[[0,9]]},"37":{"position":[[68,9]]},"51":{"position":[[222,9],[481,9]]},"63":{"position":[[128,9]]},"64":{"position":[[328,9]]},"78":{"position":[[666,9]]},"79":{"position":[[664,9]]},"90":{"position":[[288,10]]},"92":{"position":[[497,9]]},"96":{"position":[[210,9]]}},"keywords":{}}],["avoid",{"_index":890,"title":{},"content":{"78":{"position":[[74,5]]}},"keywords":{}}],["await",{"_index":220,"title":{},"content":{"7":{"position":[[858,5],[924,5],[1167,5]]},"43":{"position":[[406,5],[550,5]]},"62":{"position":[[223,5],[287,5]]},"79":{"position":[[551,5]]},"84":{"position":[[434,5],[570,5],[610,5],[1090,5]]},"93":{"position":[[922,5],[976,5]]},"94":{"position":[[550,5],[604,5]]},"95":{"position":[[442,5],[496,5],[725,5],[779,5]]}},"keywords":{}}],["awar",{"_index":268,"title":{},"content":{"9":{"position":[[1019,5]]},"66":{"position":[[282,5]]}},"keywords":{}}],["awesom",{"_index":664,"title":{},"content":{"52":{"position":[[56,7]]}},"keywords":{}}],["background",{"_index":830,"title":{"68":{"position":[[0,11]]}},"content":{},"keywords":{}}],["base",{"_index":415,"title":{"55":{"position":[[8,4]]}},"content":{"20":{"position":[[325,5]]},"51":{"position":[[934,5]]}},"keywords":{}}],["basic",{"_index":175,"title":{},"content":{"6":{"position":[[42,5]]}},"keywords":{}}],["becom",{"_index":369,"title":{},"content":{"12":{"position":[[691,6]]}},"keywords":{}}],["befor",{"_index":331,"title":{},"content":{"11":{"position":[[1437,6]]},"31":{"position":[[972,6]]}},"keywords":{}}],["behavior",{"_index":97,"title":{},"content":{"3":{"position":[[147,8],[799,8],[871,8]]},"56":{"position":[[255,8]]},"57":{"position":[[118,8]]},"94":{"position":[[262,9]]}},"keywords":{}}],["below",{"_index":240,"title":{},"content":{"9":{"position":[[165,6],[251,6],[355,6]]},"20":{"position":[[660,5]]},"28":{"position":[[379,5]]},"69":{"position":[[1,5]]}},"keywords":{}}],["benefit",{"_index":688,"title":{},"content":{"52":{"position":[[580,9]]}},"keywords":{}}],["between",{"_index":818,"title":{},"content":{"66":{"position":[[314,7]]}},"keywords":{}}],["bind",{"_index":519,"title":{},"content":{"29":{"position":[[88,4]]},"42":{"position":[[60,4]]},"43":{"position":[[606,4]]},"72":{"position":[[157,4]]}},"keywords":{}}],["bodi",{"_index":219,"title":{},"content":{"7":{"position":[[814,4]]},"84":{"position":[[723,4]]}},"keywords":{}}],["boilerpl",{"_index":982,"title":{},"content":{"94":{"position":[[124,11]]}},"keywords":{}}],["boolean",{"_index":40,"title":{},"content":{"2":{"position":[[352,7],[1327,7]]},"45":{"position":[[390,8]]},"46":{"position":[[232,7],[523,7]]},"47":{"position":[[346,8]]},"49":{"position":[[485,8]]},"97":{"position":[[786,7]]}},"keywords":{}}],["bootstrap",{"_index":195,"title":{},"content":{"7":{"position":[[231,9]]},"43":{"position":[[344,9],[380,11]]}},"keywords":{}}],["both",{"_index":272,"title":{},"content":{"10":{"position":[[265,4]]},"62":{"position":[[160,4]]},"93":{"position":[[239,4]]},"95":{"position":[[5,4]]}},"keywords":{}}],["bound",{"_index":199,"title":{},"content":{"7":{"position":[[307,5]]},"29":{"position":[[43,5]]},"65":{"position":[[1281,6]]}},"keywords":{}}],["break",{"_index":348,"title":{"12":{"position":[[0,8]]}},"content":{"12":{"position":[[0,8]]},"51":{"position":[[407,8]]},"53":{"position":[[142,8],[249,8]]},"57":{"position":[[343,8]]}},"keywords":{}}],["bring",{"_index":722,"title":{},"content":{"53":{"position":[[17,6],[318,6]]}},"keywords":{}}],["built",{"_index":665,"title":{},"content":{"52":{"position":[[64,5]]},"53":{"position":[[61,5]]},"90":{"position":[[501,5]]}},"keywords":{}}],["call",{"_index":138,"title":{},"content":{"4":{"position":[[139,4],[455,7],[593,6]]},"7":{"position":[[106,6],[829,4]]},"11":{"position":[[1894,4],[1961,4]]},"20":{"position":[[1280,7]]},"31":{"position":[[742,5]]},"46":{"position":[[792,6]]},"52":{"position":[[932,6]]},"65":{"position":[[122,5]]},"66":{"position":[[580,6],[743,6],[866,6]]},"68":{"position":[[221,6]]},"79":{"position":[[730,6]]},"81":{"position":[[167,6],[200,6]]},"82":{"position":[[512,7]]},"83":{"position":[[375,4]]},"94":{"position":[[59,4],[87,4]]}},"keywords":{}}],["callback",{"_index":59,"title":{},"content":{"2":{"position":[[714,9],[748,8],[859,9],[892,8],[1266,8]]},"3":{"position":[[314,8],[652,8]]},"4":{"position":[[616,8]]},"61":{"position":[[245,9]]},"97":{"position":[[516,10],[544,8],[687,8]]}},"keywords":{}}],["callhandl",{"_index":846,"title":{},"content":{"71":{"position":[[374,13]]},"77":{"position":[[346,13]]}},"keywords":{}}],["can't",{"_index":503,"title":{},"content":{"28":{"position":[[134,5]]},"53":{"position":[[477,5]]}},"keywords":{}}],["care",{"_index":232,"title":{},"content":{"7":{"position":[[1224,4]]},"29":{"position":[[166,4]]},"93":{"position":[[1485,4]]}},"keywords":{}}],["case",{"_index":100,"title":{"6":{"position":[[17,5]]},"51":{"position":[[4,6]]}},"content":{"3":{"position":[[190,4]]},"6":{"position":[[17,5]]},"7":{"position":[[265,6],[490,5],[1246,4]]},"9":{"position":[[699,6]]},"10":{"position":[[357,4]]},"11":{"position":[[693,4]]},"15":{"position":[[4,4]]},"19":{"position":[[148,4]]},"20":{"position":[[473,4]]},"24":{"position":[[203,4]]},"25":{"position":[[90,4]]},"30":{"position":[[19,4]]},"31":{"position":[[336,6],[483,4]]},"42":{"position":[[9,5]]},"43":{"position":[[305,5]]},"49":{"position":[[121,5],[313,5]]},"51":{"position":[[17,5],[558,5]]},"52":{"position":[[151,5]]},"55":{"position":[[194,4]]},"56":{"position":[[125,6],[292,4]]},"57":{"position":[[187,6],[316,4],[516,5]]},"74":{"position":[[132,4]]},"81":{"position":[[210,4]]},"82":{"position":[[644,5]]},"83":{"position":[[141,6]]},"85":{"position":[[909,4]]}},"keywords":{}}],["caus",{"_index":467,"title":{},"content":{"24":{"position":[[391,5]]},"31":{"position":[[505,6]]}},"keywords":{}}],["caution",{"_index":230,"title":{},"content":{"7":{"position":[[1208,7]]},"12":{"position":[[502,7]]},"31":{"position":[[584,7]]},"43":{"position":[[578,7]]},"88":{"position":[[398,7]]}},"keywords":{}}],["caveat",{"_index":296,"title":{"63":{"position":[[0,8]]},"80":{"position":[[0,8]]}},"content":{"10":{"position":[[1455,7]]}},"keywords":{}}],["central",{"_index":672,"title":{},"content":{"52":{"position":[[260,7]]}},"keywords":{}}],["certain",{"_index":550,"title":{},"content":{"41":{"position":[[46,7]]},"49":{"position":[[384,7]]}},"keywords":{}}],["chain",{"_index":139,"title":{},"content":{"4":{"position":[[144,6],[625,5]]},"9":{"position":[[1060,5]]},"68":{"position":[[203,5],[285,5]]}},"keywords":{}}],["chang",{"_index":124,"title":{"55":{"position":[[0,7]]},"56":{"position":[[0,7]]},"57":{"position":[[0,7]]}},"content":{"3":{"position":[[831,7]]},"21":{"position":[[182,7]]},"53":{"position":[[151,9],[258,7]]},"55":{"position":[[53,7]]},"56":{"position":[[40,7]]},"57":{"position":[[70,7],[153,6],[352,6]]},"66":{"position":[[66,6],[307,6]]},"77":{"position":[[454,6]]},"78":{"position":[[897,8]]},"94":{"position":[[204,6],[249,8]]},"98":{"position":[[259,6]]}},"keywords":{}}],["chapter",{"_index":1,"title":{},"content":{"0":{"position":[[9,7]]},"5":{"position":[[20,7]]},"6":{"position":[[91,8]]},"31":{"position":[[1118,7]]}},"keywords":{}}],["charact",{"_index":321,"title":{},"content":{"11":{"position":[[868,11]]}},"keywords":{}}],["check",{"_index":41,"title":{},"content":{"2":{"position":[[360,5]]},"56":{"position":[[230,5]]}},"keywords":{}}],["choic",{"_index":505,"title":{},"content":{"28":{"position":[[185,7]]}},"keywords":{}}],["cl",{"_index":11,"title":{"14":{"position":[[11,3]]},"32":{"position":[[15,3]]},"50":{"position":[[7,3]]},"73":{"position":[[7,3]]}},"content":{"2":{"position":[[72,3],[172,3],[238,3],[385,3],[456,3],[538,3],[769,3],[910,3],[1049,3],[1179,3],[1302,3],[1382,3]]},"3":{"position":[[166,3]]},"4":{"position":[[381,3],[420,3]]},"7":{"position":[[77,3],[704,4],[1093,5]]},"9":{"position":[[925,3],[982,3]]},"11":{"position":[[1068,3],[1152,3],[1406,3]]},"12":{"position":[[130,3],[388,3]]},"13":{"position":[[114,3]]},"15":{"position":[[158,5]]},"16":{"position":[[145,5]]},"20":{"position":[[40,3],[641,3],[1178,4],[1316,3]]},"21":{"position":[[93,4],[139,3]]},"25":{"position":[[200,3]]},"26":{"position":[[110,3]]},"27":{"position":[[294,3],[565,3]]},"31":{"position":[[669,3]]},"37":{"position":[[55,4]]},"41":{"position":[[39,3]]},"45":{"position":[[227,3]]},"46":{"position":[[174,4]]},"47":{"position":[[268,4]]},"51":{"position":[[943,3]]},"64":{"position":[[66,3],[225,3],[301,3]]},"65":{"position":[[242,3],[701,4],[921,4]]},"66":{"position":[[596,3],[666,5]]},"68":{"position":[[140,3],[158,3]]},"69":{"position":[[293,3]]},"70":{"position":[[109,3]]},"71":{"position":[[88,3],[171,3],[311,4]]},"72":{"position":[[88,3]]},"73":{"position":[[59,3],[246,4]]},"76":{"position":[[599,3]]},"78":{"position":[[866,3]]},"79":{"position":[[790,3]]},"83":{"position":[[288,3]]},"84":{"position":[[371,4],[1014,5]]},"85":{"position":[[51,3],[875,3]]},"90":{"position":[[510,3]]},"92":{"position":[[54,4],[167,5]]},"93":{"position":[[1563,3]]},"97":{"position":[[812,3]]}},"keywords":{"0":{"position":[[32,3]]},"1":{"position":[[32,3]]},"4":{"position":[[32,3]]},"5":{"position":[[32,3]]},"6":{"position":[[32,3]]},"7":{"position":[[32,3]]},"8":{"position":[[32,3]]},"12":{"position":[[32,3]]},"13":{"position":[[32,3]]},"14":{"position":[[32,3]]},"17":{"position":[[32,3]]},"20":{"position":[[32,3]]},"21":{"position":[[32,3]]},"22":{"position":[[32,3]]},"23":{"position":[[32,3]]},"30":{"position":[[32,3]]},"31":{"position":[[32,3]]},"32":{"position":[[32,3]]},"35":{"position":[[32,3]]},"39":{"position":[[32,3]]},"44":{"position":[[32,3]]},"50":{"position":[[32,3]]},"54":{"position":[[32,3]]},"58":{"position":[[32,3]]},"64":{"position":[[32,3]]},"65":{"position":[[32,3]]},"66":{"position":[[32,3]]},"67":{"position":[[32,3]]},"75":{"position":[[32,3]]},"85":{"position":[[32,3]]},"86":{"position":[[32,3]]},"89":{"position":[[32,3]]}}}],["class",{"_index":210,"title":{"76":{"position":[[0,5]]}},"content":{"7":{"position":[[608,5]]},"9":{"position":[[623,5]]},"10":{"position":[[107,5],[367,5],[418,5],[849,5]]},"12":{"position":[[208,5]]},"19":{"position":[[258,5]]},"20":{"position":[[1132,5],[1386,5]]},"33":{"position":[[142,5]]},"34":{"position":[[279,5]]},"40":{"position":[[123,5]]},"42":{"position":[[231,5]]},"46":{"position":[[127,5]]},"48":{"position":[[172,5],[373,5]]},"55":{"position":[[350,6],[513,5]]},"62":{"position":[[31,5],[406,5]]},"65":{"position":[[503,5],[651,5]]},"70":{"position":[[307,5]]},"71":{"position":[[229,5]]},"72":{"position":[[285,5]]},"73":{"position":[[198,5]]},"76":{"position":[[40,5],[181,5],[428,5],[508,6]]},"77":{"position":[[3,5],[176,5]]},"78":{"position":[[268,5]]},"79":{"position":[[1018,5]]},"84":{"position":[[275,5],[896,5]]},"85":{"position":[[437,5],[680,5]]},"87":{"position":[[121,5]]},"88":{"position":[[299,5]]},"92":{"position":[[766,5]]},"93":{"position":[[640,5],[1086,5]]},"94":{"position":[[303,5]]}},"keywords":{}}],["claus",{"_index":676,"title":{},"content":{"52":{"position":[[324,6]]}},"keywords":{}}],["cli",{"_index":196,"title":{},"content":{"7":{"position":[[247,3]]}},"keywords":{}}],["client",{"_index":787,"title":{},"content":{"63":{"position":[[32,6],[117,6]]},"97":{"position":[[281,6],[409,6]]}},"keywords":{}}],["client'",{"_index":833,"title":{},"content":{"69":{"position":[[56,8]]}},"keywords":{}}],["close",{"_index":747,"title":{},"content":{"56":{"position":[[85,7]]}},"keywords":{}}],["cls.enter",{"_index":153,"title":{},"content":{"4":{"position":[[477,12]]}},"keywords":{}}],["cls.get",{"_index":164,"title":{},"content":{"4":{"position":[[681,10]]}},"keywords":{}}],["cls.get('us",{"_index":627,"title":{},"content":{"49":{"position":[[693,17]]}},"keywords":{}}],["cls.get('user.id",{"_index":624,"title":{},"content":{"49":{"position":[[608,19]]}},"keywords":{}}],["cls.get(cls_id",{"_index":38,"title":{},"content":{"2":{"position":[[316,16]]}},"keywords":{}}],["cls.run",{"_index":152,"title":{},"content":{"4":{"position":[[463,9]]},"65":{"position":[[112,9]]},"84":{"position":[[140,10],[183,9],[733,9]]}},"keywords":{}}],["cls.set",{"_index":163,"title":{},"content":{"4":{"position":[[667,9]]}},"keywords":{}}],["cls.set('auth",{"_index":387,"title":{},"content":{"15":{"position":[[248,15]]},"16":{"position":[[279,15]]}},"keywords":{}}],["cls.set('mod",{"_index":228,"title":{},"content":{"7":{"position":[[1107,15]]}},"keywords":{}}],["cls.set('som",{"_index":807,"title":{},"content":{"65":{"position":[[955,13]]},"84":{"position":[[1028,13]]}},"keywords":{}}],["cls.set('tenant_id",{"_index":385,"title":{},"content":{"15":{"position":[[201,20]]},"16":{"position":[[232,20]]}},"keywords":{}}],["cls/transact",{"_index":758,"title":{"89":{"position":[[8,17]]}},"content":{"59":{"position":[[33,17]]},"90":{"position":[[33,17]]},"91":{"position":[[64,17]]},"92":{"position":[[221,19],[293,17]]},"98":{"position":[[44,17]]}},"keywords":{}}],["cls_id",{"_index":309,"title":{},"content":{"11":{"position":[[434,6]]},"20":{"position":[[944,6]]}},"keywords":{}}],["cls_re",{"_index":337,"title":{},"content":{"11":{"position":[[1802,7]]},"78":{"position":[[161,7]]}},"keywords":{}}],["cls_req",{"_index":335,"title":{},"content":{"11":{"position":[[1672,7]]},"78":{"position":[[149,7]]},"79":{"position":[[374,9]]}},"keywords":{}}],["clscontextopt",{"_index":58,"title":{"3":{"position":[[0,18]]}},"content":{"2":{"position":[[695,18],[989,19]]}},"keywords":{}}],["clsguard",{"_index":242,"title":{},"content":{"9":{"position":[[237,9]]},"20":{"position":[[480,8]]},"27":{"position":[[406,9]]},"28":{"position":[[9,8]]},"29":{"position":[[97,8]]},"31":{"position":[[372,8],[818,8],[989,9]]},"85":{"position":[[103,8],[647,9]]},"88":{"position":[[78,8],[266,9],[429,8],[493,8]]}},"keywords":{}}],["clsinterceptor",{"_index":244,"title":{},"content":{"9":{"position":[[335,15]]},"27":{"position":[[448,15]]},"28":{"position":[[21,14]]},"29":{"position":[[109,14]]},"31":{"position":[[231,14]]},"85":{"position":[[69,15]]}},"keywords":{}}],["clsmiddlewar",{"_index":239,"title":{},"content":{"9":{"position":[[146,14]]},"24":{"position":[[101,13],[262,13],[438,13]]},"26":{"position":[[133,13]]},"27":{"position":[[36,13],[210,13]]},"31":{"position":[[213,13],[386,14],[771,13]]},"42":{"position":[[69,13]]},"43":{"position":[[505,15]]},"70":{"position":[[52,13]]},"72":{"position":[[109,13]]}},"keywords":{}}],["clsmiddlewareopt",{"_index":332,"title":{},"content":{"11":{"position":[[1490,20]]}},"keywords":{}}],["clsmodul",{"_index":5,"title":{"70":{"position":[[13,10]]}},"content":{"0":{"position":[[74,9]]},"36":{"position":[[55,10]]},"66":{"position":[[759,11],[882,11]]},"68":{"position":[[32,9]]},"70":{"position":[[14,9]]},"78":{"position":[[230,10]]},"92":{"position":[[107,10],[142,9]]}},"keywords":{}}],["clsmodule.forfeatur",{"_index":249,"title":{},"content":{"9":{"position":[[460,22]]},"10":{"position":[[5,22]]},"48":{"position":[[250,25]]},"55":{"position":[[318,22],[390,22]]},"76":{"position":[[264,22]]}},"keywords":{}}],["clsmodule.forfeature(us",{"_index":877,"title":{},"content":{"76":{"position":[[364,27]]}},"keywords":{}}],["clsmodule.forfeatureasync",{"_index":255,"title":{},"content":{"9":{"position":[[650,27]]},"10":{"position":[[135,27]]},"78":{"position":[[543,27],[618,27]]},"79":{"position":[[115,27],[274,27]]}},"keywords":{}}],["clsmodule.forroot",{"_index":236,"title":{},"content":{"9":{"position":[[5,19]]},"15":{"position":[[104,19]]},"16":{"position":[[90,19]]},"18":{"position":[[166,19]]},"20":{"position":[[774,19]]},"33":{"position":[[36,19]]},"36":{"position":[[67,19]]},"40":{"position":[[36,19]]},"42":{"position":[[143,19]]},"43":{"position":[[693,20]]},"60":{"position":[[1,19]]},"70":{"position":[[172,19]]},"83":{"position":[[438,19]]},"85":{"position":[[285,19],[363,19],[540,19]]},"87":{"position":[[53,19]]},"88":{"position":[[171,19]]},"92":{"position":[[384,19]]}},"keywords":{}}],["clsmodule.forrootasync",{"_index":257,"title":{},"content":{"9":{"position":[[707,24]]},"34":{"position":[[36,24]]}},"keywords":{}}],["clsmodule.regist",{"_index":399,"title":{},"content":{"18":{"position":[[143,20]]}},"keywords":{}}],["clsmoduleopt",{"_index":237,"title":{},"content":{"9":{"position":[[52,17]]},"11":{"position":[[94,16]]}},"keywords":{}}],["clsmoduleproxyclassprovideropt",{"_index":270,"title":{},"content":{"10":{"position":[[185,34],[761,34]]}},"keywords":{}}],["clsmoduleproxyfactoryprovideropt",{"_index":271,"title":{},"content":{"10":{"position":[[223,36],[951,36]]}},"keywords":{}}],["clsplugin",{"_index":820,"title":{},"content":{"66":{"position":[[467,9]]}},"keywords":{}}],["clspluginmodul",{"_index":828,"title":{},"content":{"66":{"position":[[1336,15]]}},"keywords":{}}],["clsplugintransact",{"_index":759,"title":{"96":{"position":[[0,22]]}},"content":{"60":{"position":[[36,24]]},"92":{"position":[[182,22],[419,24]]},"96":{"position":[[5,22]]}},"keywords":{}}],["clsservic",{"_index":4,"title":{"2":{"position":[[0,11]]},"45":{"position":[[10,11]]},"64":{"position":[[10,10]]}},"content":{"0":{"position":[[55,10]]},"2":{"position":[[16,10]]},"7":{"position":[[709,11]]},"11":{"position":[[893,11],[966,11]]},"12":{"position":[[661,10]]},"19":{"position":[[197,10]]},"20":{"position":[[980,10],[1183,11]]},"31":{"position":[[961,10]]},"45":{"position":[[54,10]]},"46":{"position":[[25,10]]},"47":{"position":[[201,10]]},"48":{"position":[[95,10],[327,11]]},"64":{"position":[[10,10],[250,10]]},"65":{"position":[[562,10],[706,11],[926,11]]},"66":{"position":[[672,11]]},"68":{"position":[[71,10],[299,11]]},"71":{"position":[[41,10],[316,11]]},"73":{"position":[[251,11]]},"84":{"position":[[376,11]]},"88":{"position":[[41,11]]}},"keywords":{}}],["clsservice#ent",{"_index":794,"title":{},"content":{"64":{"position":[[115,16]]}},"keywords":{}}],["clsservice#resolveproxyprovid",{"_index":939,"title":{},"content":{"83":{"position":[[380,34]]}},"keywords":{}}],["clsservice#run",{"_index":204,"title":{},"content":{"7":{"position":[[435,15],[837,16]]},"56":{"position":[[149,14]]},"64":{"position":[[97,14]]}},"keywords":{}}],["clsservice#setifundefin",{"_index":479,"title":{},"content":{"25":{"position":[[312,27]]}},"keywords":{}}],["clsservice<myclsstore>",{"_index":579,"title":{},"content":{"46":{"position":[[58,28],[179,29]]},"47":{"position":[[39,28]]},"48":{"position":[[199,28],[444,28]]}},"keywords":{}}],["clsservice<mystore>",{"_index":407,"title":{},"content":{"19":{"position":[[289,25]]}},"keywords":{}}],["clsservicemanag",{"_index":356,"title":{},"content":{"12":{"position":[[190,17]]}},"keywords":{}}],["clsservicemanager.getclsservic",{"_index":362,"title":{},"content":{"12":{"position":[[394,34]]}},"keywords":{}}],["clsstore",{"_index":26,"title":{},"content":{"2":{"position":[[137,9]]},"45":{"position":[[282,9],[329,8]]},"47":{"position":[[128,8],[285,8]]},"49":{"position":[[289,9],[412,8]]}},"keywords":{}}],["cls{middleware,guard,interceptor}opt",{"_index":298,"title":{},"content":{"11":{"position":[[12,40]]}},"keywords":{}}],["clunki",{"_index":654,"title":{},"content":{"51":{"position":[[828,6]]}},"keywords":{}}],["code",{"_index":72,"title":{},"content":{"2":{"position":[[1032,4],[1165,4],[1355,4]]},"3":{"position":[[760,5]]},"7":{"position":[[513,4]]},"12":{"position":[[681,4]]},"52":{"position":[[291,4]]},"56":{"position":[[392,4]]},"64":{"position":[[291,4]]},"66":{"position":[[1428,5]]},"84":{"position":[[216,4]]},"85":{"position":[[168,5]]},"94":{"position":[[136,4],[155,4]]}},"keywords":{}}],["combin",{"_index":552,"title":{},"content":{"41":{"position":[[140,11]]}},"keywords":{}}],["come",{"_index":655,"title":{},"content":{"51":{"position":[[839,4],[895,5]]},"88":{"position":[[502,5]]}},"keywords":{}}],["common",{"_index":132,"title":{},"content":{"4":{"position":[[51,6]]},"51":{"position":[[6,6]]}},"keywords":{}}],["commun",{"_index":959,"title":{},"content":{"90":{"position":[[429,9]]}},"keywords":{}}],["compar",{"_index":708,"title":{},"content":{"52":{"position":[[876,8]]}},"keywords":{}}],["compat",{"_index":168,"title":{"23":{"position":[[0,13]]}},"content":{"5":{"position":[[78,10]]},"12":{"position":[[49,10]]},"24":{"position":[[17,10]]},"26":{"position":[[41,10]]},"28":{"position":[[356,13]]},"31":{"position":[[1136,13]]},"56":{"position":[[267,10]]}},"keywords":{}}],["compil",{"_index":713,"title":{},"content":{"52":{"position":[[963,8]]}},"keywords":{}}],["complain",{"_index":614,"title":{},"content":{"49":{"position":[[144,8]]}},"keywords":{}}],["complex",{"_index":256,"title":{},"content":{"9":{"position":[[687,7]]},"49":{"position":[[72,8]]}},"keywords":{}}],["compon",{"_index":893,"title":{},"content":{"78":{"position":[[112,10]]}},"keywords":{}}],["concern",{"_index":171,"title":{},"content":{"5":{"position":[[126,8]]}},"keywords":{}}],["concurr",{"_index":528,"title":{},"content":{"31":{"position":[[76,10]]}},"keywords":{}}],["configur",{"_index":281,"title":{},"content":{"10":{"position":[[712,13]]},"31":{"position":[[404,10]]},"85":{"position":[[236,13]]},"95":{"position":[[165,9]]}},"keywords":{}}],["configure(consum",{"_index":555,"title":{},"content":{"42":{"position":[[271,19]]}},"keywords":{}}],["confirm",{"_index":514,"title":{},"content":{"28":{"position":[[424,9]]}},"keywords":{}}],["conjunct",{"_index":956,"title":{},"content":{"90":{"position":[[73,11]]}},"keywords":{}}],["connect",{"_index":636,"title":{},"content":{"51":{"position":[[211,10]]},"79":{"position":[[261,11],[538,10],[605,11],[1095,11]]},"98":{"position":[[101,10],[390,11]]}},"keywords":{}}],["consequ",{"_index":534,"title":{},"content":{"31":{"position":[[537,11],[631,10]]}},"keywords":{}}],["consid",{"_index":869,"title":{},"content":{"74":{"position":[[171,8]]},"85":{"position":[[183,10]]}},"keywords":{}}],["consider",{"_index":156,"title":{"5":{"position":[[0,14]]},"98":{"position":[[0,15]]}},"content":{"4":{"position":[[503,14]]},"5":{"position":[[0,14]]},"88":{"position":[[527,15]]}},"keywords":{}}],["console.log(`<${this.cls.getid()}>",{"_index":433,"title":{},"content":{"20":{"position":[[1221,40]]}},"keywords":{}}],["console.log(cls.getid",{"_index":364,"title":{},"content":{"12":{"position":[[474,25]]}},"keywords":{}}],["console.log(typeof",{"_index":743,"title":{},"content":{"55":{"position":[[688,18],[736,18]]}},"keywords":{}}],["const",{"_index":361,"title":{},"content":{"12":{"position":[[382,5]]},"16":{"position":[[168,5]]},"19":{"position":[[318,5]]},"43":{"position":[[394,5]]},"46":{"position":[[347,5],[429,5],[533,5],[851,5],[958,5]]},"49":{"position":[[678,5]]},"62":{"position":[[210,5],[269,5]]},"71":{"position":[[412,5],[465,5]]},"73":{"position":[[279,5]]},"77":{"position":[[384,5]]},"79":{"position":[[491,5],[532,5]]},"93":{"position":[[909,5]]},"94":{"position":[[537,5]]},"95":{"position":[[429,5],[712,5]]}},"keywords":{}}],["constant",{"_index":425,"title":{},"content":{"20":{"position":[[951,8]]}},"keywords":{}}],["constructor",{"_index":212,"title":{},"content":{"7":{"position":[[631,12]]},"43":{"position":[[763,12]]},"55":{"position":[[533,12]]},"62":{"position":[[429,12]]},"65":{"position":[[671,12]]},"78":{"position":[[315,12]]},"79":{"position":[[1038,12]]},"84":{"position":[[298,12]]},"93":{"position":[[660,12],[1109,12]]},"94":{"position":[[323,12]]},"96":{"position":[[28,11]]}},"keywords":{}}],["constructor(priv",{"_index":431,"title":{},"content":{"20":{"position":[[1149,19],[1404,19]]},"46":{"position":[[145,19]]},"62":{"position":[[51,19]]},"71":{"position":[[282,19]]},"72":{"position":[[307,19]]},"73":{"position":[[217,19]]},"77":{"position":[[259,19]]},"84":{"position":[[919,19]]}},"keywords":{}}],["consum",{"_index":192,"title":{},"content":{"7":{"position":[[189,9]]}},"keywords":{}}],["consumer.apply(clsmiddleware).forroutes('custom/rout",{"_index":557,"title":{},"content":{"42":{"position":[[313,56]]}},"keywords":{}}],["contain",{"_index":612,"title":{},"content":{"49":{"position":[[84,8]]},"78":{"position":[[598,10]]}},"keywords":{}}],["context",{"_index":8,"title":{"32":{"position":[[19,7]]},"73":{"position":[[11,7]]}},"content":{"2":{"position":[[76,8],[176,8],[242,7],[389,8],[460,8],[542,7],[773,8],[914,7],[1053,8],[1183,7],[1306,8],[1386,8]]},"3":{"position":[[170,7],[232,8],[271,7],[357,8],[441,8],[537,7],[607,7],[679,8],[714,7]]},"4":{"position":[[424,7]]},"7":{"position":[[128,7],[342,8],[534,7]]},"9":{"position":[[929,7]]},"11":{"position":[[1072,7],[1156,8],[1410,7],[1632,8],[1762,8],[1878,7],[2093,7]]},"12":{"position":[[134,7],[288,7],[324,7]]},"16":{"position":[[151,8]]},"20":{"position":[[967,8],[1320,7]]},"24":{"position":[[397,7]]},"26":{"position":[[114,7]]},"27":{"position":[[130,7],[245,7]]},"28":{"position":[[46,7]]},"31":{"position":[[119,7],[149,7],[310,8],[347,7],[512,7],[673,7],[837,8]]},"49":{"position":[[57,7]]},"51":{"position":[[547,7],[774,7]]},"61":{"position":[[153,8],[283,8]]},"64":{"position":[[70,7],[229,8],[305,8]]},"65":{"position":[[175,7],[246,7],[488,7],[1261,7]]},"68":{"position":[[144,8],[162,7]]},"69":{"position":[[297,8]]},"70":{"position":[[113,7]]},"71":{"position":[[175,8]]},"72":{"position":[[92,7]]},"73":{"position":[[63,7]]},"76":{"position":[[603,8]]},"77":{"position":[[85,7]]},"79":{"position":[[794,8]]},"84":{"position":[[36,7],[170,7],[485,7],[804,8]]},"85":{"position":[[55,7]]},"92":{"position":[[843,7]]},"93":{"position":[[1567,8]]},"96":{"position":[[234,8]]}},"keywords":{"0":{"position":[[7,7]]},"1":{"position":[[7,7]]},"4":{"position":[[7,7]]},"5":{"position":[[7,7]]},"6":{"position":[[7,7]]},"7":{"position":[[7,7]]},"8":{"position":[[7,7]]},"12":{"position":[[7,7]]},"13":{"position":[[7,7]]},"14":{"position":[[7,7]]},"17":{"position":[[7,7]]},"20":{"position":[[7,7]]},"21":{"position":[[7,7]]},"22":{"position":[[7,7]]},"23":{"position":[[7,7]]},"30":{"position":[[7,7]]},"31":{"position":[[7,7]]},"32":{"position":[[7,7]]},"35":{"position":[[7,7]]},"39":{"position":[[7,7]]},"44":{"position":[[7,7]]},"50":{"position":[[7,7]]},"54":{"position":[[7,7]]},"58":{"position":[[7,7]]},"64":{"position":[[7,7]]},"65":{"position":[[7,7]]},"66":{"position":[[7,7]]},"67":{"position":[[7,7]]},"75":{"position":[[7,7]]},"85":{"position":[[7,7]]},"86":{"position":[[7,7]]},"89":{"position":[[7,7]]}}}],["context,extract",{"_index":840,"title":{},"content":{"71":{"position":[[92,15]]}},"keywords":{}}],["context.switchtohttp().getrequest",{"_index":848,"title":{},"content":{"71":{"position":[[428,36]]},"77":{"position":[[400,36]]}},"keywords":{}}],["context.switchtohttp().getrequest<request>",{"_index":389,"title":{},"content":{"16":{"position":[[180,51]]}},"keywords":{}}],["continu",{"_index":129,"title":{},"content":{"4":{"position":[[13,12]]}},"keywords":{}}],["control",{"_index":458,"title":{"72":{"position":[[21,11]]}},"content":{"24":{"position":[[53,11]]},"41":{"position":[[87,7]]},"51":{"position":[[647,12]]},"64":{"position":[[208,7]]},"70":{"position":[[267,12]]},"72":{"position":[[42,11]]},"85":{"position":[[922,12]]}},"keywords":{}}],["controller/resolv",{"_index":950,"title":{},"content":{"85":{"position":[[718,19]]},"88":{"position":[[348,19]]}},"keywords":{}}],["conveni",{"_index":225,"title":{},"content":{"7":{"position":[[1007,11]]},"78":{"position":[[132,12]]}},"keywords":{}}],["convent",{"_index":398,"title":{},"content":{"18":{"position":[[128,11]]}},"keywords":{}}],["copi",{"_index":107,"title":{},"content":{"3":{"position":[[338,4]]}},"keywords":{}}],["core",{"_index":819,"title":{},"content":{"66":{"position":[[358,5]]}},"keywords":{}}],["correct",{"_index":972,"title":{},"content":{"93":{"position":[[541,7]]}},"keywords":{}}],["correctli",{"_index":487,"title":{},"content":{"27":{"position":[[109,9]]},"93":{"position":[[488,9]]}},"keywords":{}}],["correl",{"_index":412,"title":{},"content":{"20":{"position":[[82,13]]}},"keywords":{}}],["couldn't",{"_index":679,"title":{},"content":{"52":{"position":[[384,8]]}},"keywords":{}}],["cours",{"_index":853,"title":{},"content":{"72":{"position":[[135,7]]}},"keywords":{}}],["creat",{"_index":116,"title":{"22":{"position":[[0,8]]},"38":{"position":[[0,8]]},"71":{"position":[[0,6]]}},"content":{"3":{"position":[[553,8]]},"19":{"position":[[177,6]]},"22":{"position":[[0,8]]},"38":{"position":[[4,6]]},"43":{"position":[[446,6]]},"45":{"position":[[212,6],[247,8]]},"48":{"position":[[80,6],[126,8]]},"52":{"position":[[106,7]]},"66":{"position":[[244,6]]},"71":{"position":[[1,6]]},"74":{"position":[[180,8]]},"91":{"position":[[133,6]]},"93":{"position":[[173,6],[200,6]]}},"keywords":{}}],["createaccountforuser(id",{"_index":976,"title":{},"content":{"93":{"position":[[1209,24]]}},"keywords":{}}],["createus",{"_index":984,"title":{},"content":{"94":{"position":[[215,10]]}},"keywords":{}}],["createuser(nam",{"_index":783,"title":{},"content":{"62":{"position":[[677,16]]},"93":{"position":[[809,16]]},"94":{"position":[[489,16]]},"95":{"position":[[381,16],[576,16]]}},"keywords":{}}],["creation",{"_index":99,"title":{},"content":{"3":{"position":[[178,8]]},"77":{"position":[[57,9]]}},"keywords":{}}],["critic",{"_index":701,"title":{},"content":{"52":{"position":[[781,10]]}},"keywords":{}}],["cron",{"_index":190,"title":{},"content":{"7":{"position":[[173,4],[915,8],[1123,8]]},"51":{"position":[[642,4]]}},"keywords":{}}],["cron('45",{"_index":216,"title":{},"content":{"7":{"position":[[724,9]]},"84":{"position":[[391,9],[975,9]]}},"keywords":{}}],["cron('90",{"_index":224,"title":{},"content":{"7":{"position":[[967,9]]}},"keywords":{}}],["croncontrol",{"_index":211,"title":{},"content":{"7":{"position":[[614,14]]},"84":{"position":[[281,14],[902,14]]}},"keywords":{}}],["ctx",{"_index":324,"title":{},"content":{"11":{"position":[[978,4]]}},"keywords":{}}],["current",{"_index":79,"title":{},"content":{"2":{"position":[[1347,7]]},"9":{"position":[[595,9]]},"71":{"position":[[73,7]]},"92":{"position":[[913,7]]},"93":{"position":[[116,7],[359,7]]},"97":{"position":[[141,9],[853,7]]}},"keywords":{}}],["custom",{"_index":25,"title":{"22":{"position":[[11,6]]},"48":{"position":[[8,6]]}},"content":{"2":{"position":[[130,6]]},"10":{"position":[[306,6]]},"19":{"position":[[218,6]]},"20":{"position":[[371,6],[1090,6]]},"22":{"position":[[11,6]]},"38":{"position":[[13,6]]},"45":{"position":[[29,6]]},"48":{"position":[[137,6]]},"74":{"position":[[191,6]]}},"keywords":{}}],["cyclic",{"_index":613,"title":{},"content":{"49":{"position":[[93,6]]}},"keywords":{}}],["data",{"_index":134,"title":{},"content":{"4":{"position":[[91,4],[194,4]]},"52":{"position":[[417,4],[436,4]]},"62":{"position":[[740,5]]},"93":{"position":[[957,5],[1304,5]]},"94":{"position":[[585,5]]},"95":{"position":[[477,5],[760,5]]}},"keywords":{}}],["databas",{"_index":635,"title":{},"content":{"51":{"position":[[202,8],[362,8]]},"52":{"position":[[463,9]]},"79":{"position":[[252,8]]},"90":{"position":[[180,8]]},"97":{"position":[[230,8]]},"98":{"position":[[92,8],[166,10],[381,8]]}},"keywords":{}}],["databaseconnectionmodul",{"_index":908,"title":{},"content":{"79":{"position":[[338,27]]}},"keywords":{}}],["databaseconnectionservic",{"_index":909,"title":{},"content":{"79":{"position":[[384,27],[456,26]]}},"keywords":{}}],["date",{"_index":452,"title":{},"content":{"21":{"position":[[168,4]]}},"keywords":{}}],["db",{"_index":710,"title":{},"content":{"52":{"position":[[913,2]]}},"keywords":{}}],["dbservic",{"_index":910,"title":{},"content":{"79":{"position":[[445,10]]}},"keywords":{}}],["dbservice.gettenantconnection(tenantid",{"_index":912,"title":{},"content":{"79":{"position":[[557,40]]}},"keywords":{}}],["deal",{"_index":697,"title":{},"content":{"52":{"position":[[664,4]]}},"keywords":{}}],["debug",{"_index":821,"title":{},"content":{"66":{"position":[[530,9]]}},"keywords":{}}],["decid",{"_index":166,"title":{},"content":{"5":{"position":[[47,6]]},"28":{"position":[[252,6]]}},"keywords":{}}],["declar",{"_index":603,"title":{},"content":{"47":{"position":[[245,7]]},"48":{"position":[[59,12]]},"63":{"position":[[210,7]]},"65":{"position":[[75,13]]}},"keywords":{}}],["decor",{"_index":206,"title":{"57":{"position":[[51,10]]},"65":{"position":[[8,9]]},"94":{"position":[[24,10]]}},"content":{"7":{"position":[[472,10],[1019,9]]},"10":{"position":[[913,9]]},"57":{"position":[[586,10]]},"65":{"position":[[8,9],[32,9],[297,9],[619,9]]},"76":{"position":[[107,9]]},"84":{"position":[[694,9]]},"94":{"position":[[20,9],[186,10]]},"95":{"position":[[59,9]]}},"keywords":{}}],["deep",{"_index":615,"title":{},"content":{"49":{"position":[[184,5]]}},"keywords":{}}],["default",{"_index":68,"title":{"56":{"position":[[8,7]]},"57":{"position":[[8,7]]}},"content":{"2":{"position":[[943,7],[1212,7]]},"3":{"position":[[294,9],[791,7]]},"9":{"position":[[380,8]]},"10":{"position":[[469,8],[1429,8]]},"11":{"position":[[174,8],[339,8],[800,7],[1196,8],[1328,8],[1574,8],[1702,8],[1836,8]]},"20":{"position":[[287,8]]},"31":{"position":[[249,7]]},"55":{"position":[[5,7]]},"56":{"position":[[5,7],[247,7]]},"57":{"position":[[44,7],[110,7]]},"83":{"position":[[4,8]]},"97":{"position":[[383,7]]}},"keywords":{}}],["defin",{"_index":811,"title":{},"content":{"65":{"position":[[1166,6]]},"77":{"position":[[18,7]]}},"keywords":{}}],["definit",{"_index":926,"title":{},"content":{"82":{"position":[[356,11]]}},"keywords":{}}],["delay",{"_index":934,"title":{"83":{"position":[[0,7]]}},"content":{"83":{"position":[[192,7]]}},"keywords":{}}],["deleg",{"_index":922,"title":{},"content":{"81":{"position":[[119,9]]}},"keywords":{}}],["dep",{"_index":378,"title":{},"content":{"13":{"position":[[160,5]]}},"keywords":{}}],["depend",{"_index":207,"title":{},"content":{"7":{"position":[[518,7]]},"12":{"position":[[74,10],[605,10]]},"57":{"position":[[494,13]]},"74":{"position":[[260,12]]},"96":{"position":[[193,12]]},"97":{"position":[[171,9]]}},"keywords":{}}],["describ",{"_index":2,"title":{},"content":{"0":{"position":[[17,9]]},"6":{"position":[[62,9]]}},"keywords":{}}],["destroy",{"_index":825,"title":{},"content":{"66":{"position":[[897,9]]}},"keywords":{}}],["destructur",{"_index":592,"title":{},"content":{"46":{"position":[[837,13]]}},"keywords":{}}],["detail",{"_index":629,"title":{},"content":{"49":{"position":[[734,8]]}},"keywords":{}}],["details.som",{"_index":466,"title":{},"content":{"24":{"position":[[345,12]]}},"keywords":{}}],["develop",{"_index":181,"title":{},"content":{"6":{"position":[[167,9]]},"7":{"position":[[377,9]]},"52":{"position":[[373,10]]}},"keywords":{}}],["di",{"_index":350,"title":{"12":{"position":[[16,2]]}},"content":{"12":{"position":[[16,2]]}},"keywords":{}}],["differ",{"_index":791,"title":{},"content":{"63":{"position":[[171,9]]}},"keywords":{}}],["difficult",{"_index":367,"title":{},"content":{"12":{"position":[[639,9]]}},"keywords":{}}],["directli",{"_index":299,"title":{},"content":{"11":{"position":[[114,8]]},"43":{"position":[[328,8]]},"49":{"position":[[571,8]]},"85":{"position":[[702,8]]},"88":{"position":[[332,8]]},"93":{"position":[[1441,9]]}},"keywords":{}}],["discuss",{"_index":526,"title":{},"content":{"31":{"position":[[21,9]]},"55":{"position":[[173,11]]}},"keywords":{}}],["distinguish",{"_index":876,"title":{},"content":{"76":{"position":[[137,16]]}},"keywords":{}}],["doc",{"_index":967,"title":{},"content":{"92":{"position":[[641,4]]}},"keywords":{}}],["dogsservic",{"_index":915,"title":{},"content":{"79":{"position":[[1024,11]]}},"keywords":{}}],["don't",{"_index":517,"title":{},"content":{"29":{"position":[[20,5]]},"47":{"position":[[157,5]]},"57":{"position":[[213,5]]}},"keywords":{}}],["done",{"_index":151,"title":{},"content":{"4":{"position":[[447,4]]}},"keywords":{}}],["dot",{"_index":573,"title":{},"content":{"45":{"position":[[194,3]]}},"keywords":{}}],["dotheth",{"_index":580,"title":{},"content":{"46":{"position":[[212,12]]}},"keywords":{}}],["drop",{"_index":402,"title":{"19":{"position":[[18,8]]}},"content":{"19":{"position":[[49,7]]}},"keywords":{}}],["due",{"_index":475,"title":{},"content":{"25":{"position":[[143,3]]},"27":{"position":[[273,3]]},"49":{"position":[[217,3]]}},"keywords":{}}],["durat",{"_index":530,"title":{},"content":{"31":{"position":[[186,8]]}},"keywords":{}}],["dure",{"_index":194,"title":{},"content":{"7":{"position":[[208,6]]},"68":{"position":[[256,6]]}},"keywords":{}}],["dynam",{"_index":282,"title":{},"content":{"10":{"position":[[740,7]]},"51":{"position":[[187,7]]},"68":{"position":[[24,7]]},"79":{"position":[[210,11]]}},"keywords":{}}],["e.g",{"_index":264,"title":{},"content":{"9":{"position":[[904,5]]},"12":{"position":[[332,5]]}},"keywords":{}}],["each",{"_index":677,"title":{},"content":{"52":{"position":[[334,4]]},"79":{"position":[[740,4]]},"92":{"position":[[591,4]]},"98":{"position":[[347,4]]}},"keywords":{}}],["earli",{"_index":539,"title":{},"content":{"31":{"position":[[871,5]]}},"keywords":{}}],["easi",{"_index":144,"title":{},"content":{"4":{"position":[[305,4]]}},"keywords":{}}],["easier",{"_index":182,"title":{},"content":{"6":{"position":[[177,7]]}},"keywords":{}}],["easili",{"_index":875,"title":{},"content":{"76":{"position":[[130,6]]}},"keywords":{}}],["effect",{"_index":103,"title":{},"content":{"3":{"position":[[251,6]]}},"keywords":{}}],["effort",{"_index":684,"title":{},"content":{"52":{"position":[[487,7]]}},"keywords":{}}],["email",{"_index":785,"title":{},"content":{"62":{"position":[[760,6]]}},"keywords":{}}],["empti",{"_index":119,"title":{},"content":{"3":{"position":[[673,5]]},"77":{"position":[[46,5]]}},"keywords":{}}],["enabl",{"_index":630,"title":{"82":{"position":[[36,8]]}},"content":{"51":{"position":[[41,7]]},"53":{"position":[[50,6]]},"66":{"position":[[937,8]]},"78":{"position":[[870,7]]},"90":{"position":[[514,7]]}},"keywords":{}}],["encapsul",{"_index":643,"title":{},"content":{"51":{"position":[[416,13]]}},"keywords":{}}],["enforc",{"_index":581,"title":{},"content":{"46":{"position":[[253,8]]}},"keywords":{}}],["enhanc",{"_index":198,"title":{"11":{"position":[[13,8]]},"16":{"position":[[0,10]]},"77":{"position":[[15,9]]}},"content":{"7":{"position":[[285,9]]},"9":{"position":[[877,9]]},"11":{"position":[[1267,8]]},"25":{"position":[[52,8],[217,9]]},"29":{"position":[[49,10]]},"31":{"position":[[938,9]]},"57":{"position":[[136,10]]},"83":{"position":[[78,8],[354,8]]}},"keywords":{}}],["enough",{"_index":559,"title":{},"content":{"43":{"position":[[50,7]]}},"keywords":{}}],["ensur",{"_index":48,"title":{},"content":{"2":{"position":[[597,8]]},"25":{"position":[[167,6]]},"93":{"position":[[563,7]]}},"keywords":{}}],["enter",{"_index":70,"title":{},"content":{"2":{"position":[[959,8]]},"3":{"position":[[13,5]]}},"keywords":{}}],["enter(opt",{"_index":71,"title":{},"content":{"2":{"position":[[974,14]]}},"keywords":{}}],["enterwith",{"_index":533,"title":{},"content":{"31":{"position":[[438,11],[601,9],[732,9]]},"85":{"position":[[205,10]]}},"keywords":{}}],["enterwith(stor",{"_index":73,"title":{},"content":{"2":{"position":[[1121,16]]}},"keywords":{}}],["entir",{"_index":27,"title":{},"content":{"2":{"position":[[165,6]]},"19":{"position":[[57,9]]},"70":{"position":[[82,6]]},"78":{"position":[[786,8]]}},"keywords":{}}],["entri",{"_index":51,"title":{},"content":{"2":{"position":[[639,5]]}},"keywords":{}}],["error",{"_index":595,"title":{},"content":{"46":{"position":[[952,5]]}},"keywords":{}}],["etc",{"_index":822,"title":{},"content":{"66":{"position":[[645,5]]}},"keywords":{}}],["even",{"_index":572,"title":{},"content":{"45":{"position":[[162,4]]},"46":{"position":[[578,4]]},"48":{"position":[[5,4]]},"97":{"position":[[718,5]]}},"keywords":{}}],["everywher",{"_index":601,"title":{},"content":{"47":{"position":[[68,10]]},"51":{"position":[[232,10]]}},"keywords":{}}],["ex",{"_index":440,"title":{},"content":{"20":{"position":[[1506,4]]}},"keywords":{}}],["exampl",{"_index":189,"title":{"62":{"position":[[0,8]]},"69":{"position":[[0,8]]},"91":{"position":[[0,8]]}},"content":{"7":{"position":[[159,8]]},"19":{"position":[[248,8]]},"20":{"position":[[672,7],[1072,7]]},"43":{"position":[[197,8]]},"64":{"position":[[317,7]]},"69":{"position":[[13,7],[173,7]]},"79":{"position":[[162,7]]},"91":{"position":[[10,8]]},"95":{"position":[[196,7]]}},"keywords":{}}],["except",{"_index":874,"title":{},"content":{"76":{"position":[[66,9]]},"85":{"position":[[943,9]]}},"keywords":{}}],["execut",{"_index":203,"title":{},"content":{"7":{"position":[[420,9]]},"11":{"position":[[1049,8]]},"62":{"position":[[177,8]]}},"keywords":{}}],["executioncontext",{"_index":313,"title":{},"content":{"11":{"position":[[530,17],[673,16],[983,17]]},"16":{"position":[[32,16]]},"20":{"position":[[453,16]]},"71":{"position":[[350,17]]},"77":{"position":[[322,17]]}},"keywords":{}}],["exist",{"_index":102,"title":{},"content":{"3":{"position":[[223,8],[279,6],[476,8],[528,8],[598,8]]},"5":{"position":[[28,6]]},"24":{"position":[[358,8]]},"52":{"position":[[566,9]]}},"keywords":{}}],["exists)sequel",{"_index":960,"title":{},"content":{"90":{"position":[[455,16]]}},"keywords":{}}],["exit(callback",{"_index":74,"title":{},"content":{"2":{"position":[[1228,14]]}},"keywords":{}}],["experi",{"_index":704,"title":{},"content":{"52":{"position":[[826,11]]}},"keywords":{}}],["experiment",{"_index":814,"title":{},"content":{"66":{"position":[[43,12]]}},"keywords":{}}],["explicit",{"_index":501,"title":{},"content":{"28":{"position":[[93,8]]}},"keywords":{}}],["explicitli",{"_index":218,"title":{"82":{"position":[[25,10]]}},"content":{"7":{"position":[[785,10]]},"51":{"position":[[447,10]]},"56":{"position":[[179,10]]},"57":{"position":[[408,10]]},"69":{"position":[[133,10]]},"73":{"position":[[79,10]]},"82":{"position":[[295,10]]}},"keywords":{}}],["export",{"_index":209,"title":{},"content":{"7":{"position":[[601,6]]},"10":{"position":[[531,6]]},"33":{"position":[[135,6]]},"34":{"position":[[272,6]]},"40":{"position":[[116,6]]},"42":{"position":[[224,6]]},"45":{"position":[[293,6]]},"46":{"position":[[120,6]]},"48":{"position":[[165,6],[345,8]]},"66":{"position":[[450,6],[1256,9],[1269,9]]},"70":{"position":[[300,6]]},"71":{"position":[[222,6]]},"72":{"position":[[278,6]]},"73":{"position":[[191,6]]},"76":{"position":[[174,6]]},"77":{"position":[[169,6]]},"78":{"position":[[212,8],[261,6]]},"84":{"position":[[268,6],[889,6]]},"85":{"position":[[430,6],[673,6]]},"87":{"position":[[114,6]]},"88":{"position":[[292,6]]},"92":{"position":[[759,6]]}},"keywords":{}}],["expos",{"_index":357,"title":{},"content":{"12":{"position":[[219,7]]},"66":{"position":[[1360,7]]},"68":{"position":[[14,7],[48,7]]},"76":{"position":[[307,7]]}},"keywords":{}}],["express",{"_index":461,"title":{},"content":{"24":{"position":[[167,8],[367,7]]},"25":{"position":[[372,10]]}},"keywords":{}}],["extend",{"_index":406,"title":{},"content":{"19":{"position":[[281,7]]},"45":{"position":[[274,7],[321,7]]},"48":{"position":[[109,9],[191,7]]}},"keywords":{}}],["extent",{"_index":651,"title":{},"content":{"51":{"position":[[712,6]]}},"keywords":{}}],["extern",{"_index":711,"title":{},"content":{"52":{"position":[[919,8]]},"66":{"position":[[1022,8]]},"78":{"position":[[518,8]]}},"keywords":{}}],["extra",{"_index":683,"title":{},"content":{"52":{"position":[[481,5]]},"66":{"position":[[390,5]]}},"keywords":{}}],["extract",{"_index":925,"title":{},"content":{"82":{"position":[[203,9]]}},"keywords":{}}],["extraproviders?:provid",{"_index":280,"title":{},"content":{"10":{"position":[[589,26]]}},"keywords":{}}],["fact",{"_index":617,"title":{},"content":{"49":{"position":[[228,4]]}},"keywords":{}}],["factori",{"_index":290,"title":{"79":{"position":[[0,7]]}},"content":{"10":{"position":[[1134,7]]},"79":{"position":[[18,7],[43,7],[188,7],[714,7]]},"81":{"position":[[7,7],[219,7]]},"82":{"position":[[222,7],[258,7]]}},"keywords":{}}],["fail",{"_index":796,"title":{},"content":{"64":{"position":[[163,4]]},"93":{"position":[[278,5]]}},"keywords":{}}],["fairli",{"_index":685,"title":{},"content":{"52":{"position":[[523,6]]}},"keywords":{}}],["fallback",{"_index":421,"title":{},"content":{"20":{"position":[[740,8]]}},"keywords":{}}],["fals",{"_index":246,"title":{},"content":{"9":{"position":[[389,6]]},"11":{"position":[[183,6],[348,6],[1711,6],[1845,6]]},"15":{"position":[[281,5]]},"16":{"position":[[312,5]]},"42":{"position":[[50,5],[198,5]]},"57":{"position":[[56,6],[573,5]]},"83":{"position":[[341,5],[495,6]]},"85":{"position":[[582,5]]},"88":{"position":[[207,5]]}},"keywords":{}}],["familiar",{"_index":905,"title":{},"content":{"79":{"position":[[66,9]]}},"keywords":{}}],["fast",{"_index":712,"title":{},"content":{"52":{"position":[[951,5]]}},"keywords":{}}],["fastifi",{"_index":462,"title":{},"content":{"24":{"position":[[176,7]]},"25":{"position":[[393,9]]}},"keywords":{}}],["favorit",{"_index":374,"title":{},"content":{"13":{"position":[[57,8]]}},"keywords":{}}],["featur",{"_index":174,"title":{"6":{"position":[[0,8]]}},"content":{"6":{"position":[[0,8],[135,8]]},"12":{"position":[[537,7]]},"43":{"position":[[225,7]]},"52":{"position":[[73,9]]},"53":{"position":[[387,8],[573,9]]},"74":{"position":[[92,9]]},"90":{"position":[[420,8]]}},"keywords":{}}],["feel",{"_index":600,"title":{},"content":{"47":{"position":[[23,4]]}},"keywords":{}}],["filter",{"_index":952,"title":{},"content":{"85":{"position":[[953,9]]}},"keywords":{}}],["fine",{"_index":797,"title":{},"content":{"64":{"position":[[195,4]]}},"keywords":{}}],["finish",{"_index":936,"title":{},"content":{"83":{"position":[[118,9]]}},"keywords":{}}],["first",{"_index":64,"title":{},"content":{"2":{"position":[[824,5],[1104,5]]},"4":{"position":[[432,6]]},"9":{"position":[[1043,5]]},"20":{"position":[[505,5]]},"88":{"position":[[103,5]]},"95":{"position":[[122,5]]},"97":{"position":[[623,5]]}},"keywords":{}}],["follow",{"_index":19,"title":{},"content":{"2":{"position":[[40,9],[1022,9],[1155,9]]},"3":{"position":[[74,9]]},"7":{"position":[[503,9]]},"9":{"position":[[42,9]]},"11":{"position":[[62,9],[1534,9]]},"30":{"position":[[81,6]]},"66":{"position":[[429,9]]},"85":{"position":[[158,9]]},"90":{"position":[[264,9],[370,9]]},"96":{"position":[[73,9]]},"97":{"position":[[92,9]]}},"keywords":{}}],["forfeatur",{"_index":403,"title":{},"content":{"19":{"position":[[34,10]]}},"keywords":{}}],["forfeature(async",{"_index":269,"title":{"10":{"position":[[0,18]]}},"content":{},"keywords":{}}],["forroot",{"_index":395,"title":{},"content":{"18":{"position":[[81,7]]},"36":{"position":[[33,7]]},"92":{"position":[[85,7]]}},"keywords":{}}],["forroot(async",{"_index":235,"title":{"9":{"position":[[0,15]]}},"content":{},"keywords":{}}],["forrootasync",{"_index":396,"title":{},"content":{"18":{"position":[[96,13]]}},"keywords":{}}],["foundus",{"_index":775,"title":{},"content":{"62":{"position":[[275,9]]}},"keywords":{}}],["framework",{"_index":345,"title":{},"content":{"11":{"position":[[2060,10]]},"52":{"position":[[22,10]]},"53":{"position":[[105,11]]}},"keywords":{}}],["fulli",{"_index":625,"title":{},"content":{"49":{"position":[[649,5]]},"90":{"position":[[414,5]]}},"keywords":{}}],["function",{"_index":176,"title":{"82":{"position":[[0,8]]}},"content":{"6":{"position":[[48,13]]},"7":{"position":[[805,8]]},"10":{"position":[[1142,8],[1287,9],[1406,8]]},"11":{"position":[[597,8],[1035,8]]},"12":{"position":[[351,10],[362,8]]},"20":{"position":[[378,8],[419,8]]},"25":{"position":[[266,9]]},"27":{"position":[[365,12]]},"43":{"position":[[371,8]]},"55":{"position":[[230,8],[305,11],[422,9],[481,11],[782,10]]},"65":{"position":[[333,8],[410,8],[825,8],[892,8],[1199,9],[1212,10],[1233,10]]},"66":{"position":[[563,8]]},"68":{"position":[[212,8]]},"81":{"position":[[237,10]]},"82":{"position":[[42,10],[91,9],[230,8],[276,9],[331,8],[464,11],[578,9]]},"83":{"position":[[63,8]]},"84":{"position":[[714,8],[780,8]]}},"keywords":{}}],["function/callback",{"_index":137,"title":{},"content":{"4":{"position":[[121,17]]}},"keywords":{}}],["functionprovid",{"_index":742,"title":{},"content":{"55":{"position":[[651,17]]}},"keywords":{}}],["further",{"_index":283,"title":{},"content":{"10":{"position":[[806,7],[998,7]]},"74":{"position":[[54,7]]}},"keywords":{}}],["futur",{"_index":815,"title":{},"content":{"66":{"position":[[80,7]]},"98":{"position":[[273,7]]}},"keywords":{}}],["gateway",{"_index":516,"title":{},"content":{"29":{"position":[[11,8]]},"51":{"position":[[670,9]]}},"keywords":{}}],["gener",{"_index":307,"title":{},"content":{"11":{"position":[[380,8],[610,10],[845,8]]},"20":{"position":[[177,8],[300,9],[547,10]]},"49":{"position":[[250,8],[357,10],[520,8]]},"63":{"position":[[14,9]]}},"keywords":{}}],["generateid",{"_index":414,"title":{},"content":{"20":{"position":[[249,11],[821,11]]},"33":{"position":[[97,11]]},"34":{"position":[[173,11]]},"65":{"position":[[794,11],[1098,12]]}},"keywords":{}}],["generateid?:boolean",{"_index":306,"title":{},"content":{"11":{"position":[[319,19]]}},"keywords":{}}],["get",{"_index":489,"title":{},"content":{"27":{"position":[[253,4]]},"72":{"position":[[57,4]]}},"keywords":{}}],["get('/hello",{"_index":857,"title":{},"content":{"72":{"position":[[363,14]]}},"keywords":{}}],["get(key",{"_index":28,"title":{},"content":{"2":{"position":[[185,9]]}},"keywords":{}}],["getal",{"_index":918,"title":{},"content":{"79":{"position":[[1130,8]]}},"keywords":{}}],["getclsservic",{"_index":358,"title":{},"content":{"12":{"position":[[231,15]]}},"keywords":{}}],["getid",{"_index":34,"title":{},"content":{"2":{"position":[[258,8]]},"20":{"position":[[1019,5]]}},"keywords":{}}],["getuserbyid(id",{"_index":780,"title":{},"content":{"62":{"position":[[529,15]]}},"keywords":{}}],["global",{"_index":247,"title":{},"content":{"9":{"position":[[423,7]]},"29":{"position":[[34,8]]},"33":{"position":[[56,7]]},"34":{"position":[[61,7]]},"40":{"position":[[56,7]]},"42":{"position":[[163,7]]},"47":{"position":[[107,8]]},"48":{"position":[[507,6]]},"66":{"position":[[1329,6]]},"70":{"position":[[192,7]]},"72":{"position":[[178,8]]},"79":{"position":[[620,7],[688,8]]},"92":{"position":[[470,7],[836,6]]},"96":{"position":[[227,6]]}},"keywords":{}}],["global?:boolean",{"_index":245,"title":{},"content":{"9":{"position":[[362,17]]}},"keywords":{}}],["good",{"_index":871,"title":{},"content":{"74":{"position":[[305,4]]}},"keywords":{}}],["gql",{"_index":474,"title":{},"content":{"25":{"position":[[129,3]]}},"keywords":{}}],["grain",{"_index":798,"title":{},"content":{"64":{"position":[[200,7]]}},"keywords":{}}],["graphql",{"_index":472,"title":{"25":{"position":[[0,8]]}},"content":{"26":{"position":[[19,7]]},"27":{"position":[[23,8]]}},"keywords":{}}],["great",{"_index":696,"title":{},"content":{"52":{"position":[[658,5]]}},"keywords":{}}],["gt",{"_index":55,"title":{},"content":{"2":{"position":[[670,5],[727,5],[872,5],[1246,5]]},"7":{"position":[[886,5],[1099,5]]},"10":{"position":[[1124,5]]},"11":{"position":[[474,5],[548,5],[919,5],[1001,5]]},"15":{"position":[[193,5]]},"16":{"position":[[160,5]]},"20":{"position":[[867,5],[1492,4]]},"34":{"position":[[137,5],[210,5]]},"49":{"position":[[494,6]]},"53":{"position":[[412,5]]},"55":{"position":[[455,5],[672,5]]},"56":{"position":[[365,5]]},"61":{"position":[[230,5]]},"66":{"position":[[684,5],[807,5],[970,5]]},"79":{"position":[[483,5]]},"82":{"position":[[410,5],[428,5]]},"84":{"position":[[462,5],[1020,5]]},"93":{"position":[[901,5]]},"95":{"position":[[704,5]]}},"keywords":{}}],["guarante",{"_index":504,"title":{},"content":{"28":{"position":[[140,9]]}},"keywords":{}}],["guard",{"_index":314,"title":{"86":{"position":[[8,5]]}},"content":{"11":{"position":[[703,5]]},"16":{"position":[[6,5]]},"25":{"position":[[27,5]]},"27":{"position":[[584,7]]},"31":{"position":[[1086,5]]},"66":{"position":[[638,6]]},"85":{"position":[[832,7],[894,6]]},"87":{"position":[[73,6]]},"88":{"position":[[23,6],[109,5],[191,6]]}},"keywords":{}}],["guard?:clsguardopt",{"_index":241,"title":{},"content":{"9":{"position":[[172,22]]}},"keywords":{}}],["guid",{"_index":523,"title":{"30":{"position":[[10,5]]}},"content":{"30":{"position":[[10,5],[112,6]]},"53":{"position":[[132,5],[297,7]]}},"keywords":{}}],["handleconnect",{"_index":521,"title":{},"content":{"29":{"position":[[194,16]]}},"keywords":{}}],["handlecron",{"_index":943,"title":{},"content":{"84":{"position":[[419,12],[1075,12]]}},"keywords":{}}],["handlecronexample1",{"_index":217,"title":{},"content":{"7":{"position":[[752,20]]}},"keywords":{}}],["handlecronexample2",{"_index":229,"title":{},"content":{"7":{"position":[[1144,20]]}},"keywords":{}}],["handler",{"_index":200,"title":{},"content":{"7":{"position":[[320,7]]}},"keywords":{}}],["happen",{"_index":469,"title":{},"content":{"24":{"position":[[419,8]]},"49":{"position":[[8,7]]}},"keywords":{}}],["happi",{"_index":792,"title":{},"content":{"63":{"position":[[261,6]]}},"keywords":{}}],["harder",{"_index":370,"title":{},"content":{"12":{"position":[[698,6]]}},"keywords":{}}],["has(key",{"_index":39,"title":{},"content":{"2":{"position":[[333,8]]}},"keywords":{}}],["hasn't",{"_index":46,"title":{},"content":{"2":{"position":[[561,6]]}},"keywords":{}}],["have",{"_index":891,"title":{},"content":{"78":{"position":[[80,6]]}},"keywords":{}}],["header",{"_index":420,"title":{},"content":{"20":{"position":[[726,6]]}},"keywords":{}}],["held",{"_index":682,"title":{},"content":{"52":{"position":[[446,4]]}},"keywords":{}}],["hello",{"_index":438,"title":{},"content":{"20":{"position":[[1452,7]]},"72":{"position":[[378,7]]},"73":{"position":[[321,6]]}},"keywords":{}}],["hello"",{"_index":446,"title":{},"content":{"20":{"position":[[1562,11]]}},"keywords":{}}],["help",{"_index":165,"title":{},"content":{"5":{"position":[[38,4]]}},"keywords":{}}],["helper",{"_index":360,"title":{},"content":{"12":{"position":[[371,8]]}},"keywords":{}}],["here",{"_index":510,"title":{},"content":{"28":{"position":[[314,5]]},"43":{"position":[[487,4]]},"46":{"position":[[262,4]]},"77":{"position":[[254,4]]}},"keywords":{}}],["here'",{"_index":689,"title":{},"content":{"52":{"position":[[590,6]]},"79":{"position":[[152,6]]}},"keywords":{}}],["highlight",{"_index":720,"title":{"53":{"position":[[0,11]]}},"content":{},"keywords":{}}],["histori",{"_index":693,"title":{},"content":{"52":{"position":[[633,8]]}},"keywords":{}}],["hit",{"_index":537,"title":{},"content":{"31":{"position":[[723,4]]}},"keywords":{}}],["hold",{"_index":931,"title":{},"content":{"82":{"position":[[615,6]]}},"keywords":{}}],["hood",{"_index":717,"title":{},"content":{"52":{"position":[[1084,5]]}},"keywords":{}}],["hook",{"_index":89,"title":{},"content":{"2":{"position":[[1556,5]]},"11":{"position":[[1372,4]]},"51":{"position":[[947,7]]},"66":{"position":[[927,5]]}},"keywords":{}}],["http",{"_index":836,"title":{},"content":{"69":{"position":[[203,4],[261,4]]}},"keywords":{}}],["hypothet",{"_index":906,"title":{},"content":{"79":{"position":[[175,12]]}},"keywords":{}}],["i'v",{"_index":694,"title":{},"content":{"52":{"position":[[642,4]]}},"keywords":{}}],["id",{"_index":36,"title":{"20":{"position":[[8,2]]}},"content":{"2":{"position":[[296,2]]},"4":{"position":[[335,3]]},"9":{"position":[[1087,3]]},"11":{"position":[[399,3],[633,3]]},"20":{"position":[[8,2],[96,3],[194,3],[310,2],[611,2],[706,2],[896,4],[921,2],[1354,3]]},"45":{"position":[[366,3]]},"46":{"position":[[499,3]]},"47":{"position":[[322,3]]},"49":{"position":[[461,3],[686,2]]},"51":{"position":[[80,2]]},"62":{"position":[[660,2]]},"76":{"position":[[194,3]]},"78":{"position":[[289,3]]},"93":{"position":[[1320,3]]},"97":{"position":[[336,3],[451,4]]}},"keywords":{}}],["idea",{"_index":872,"title":{},"content":{"74":{"position":[[310,5]]}},"keywords":{}}],["ideal",{"_index":410,"title":{},"content":{"20":{"position":[[50,5]]}},"keywords":{}}],["idempot",{"_index":49,"title":{},"content":{"2":{"position":[[606,11]]},"25":{"position":[[230,11]]}},"keywords":{}}],["ident",{"_index":493,"title":{},"content":{"27":{"position":[[378,9]]}},"keywords":{}}],["idgener",{"_index":416,"title":{},"content":{"20":{"position":[[394,11],[839,12]]},"34":{"position":[[191,12]]},"65":{"position":[[544,13],[812,12],[1187,11]]}},"keywords":{}}],["idgenerator?:(ctx",{"_index":312,"title":{},"content":{"11":{"position":[[511,18]]}},"keywords":{}}],["idgenerator?:(req",{"_index":310,"title":{},"content":{"11":{"position":[[446,18]]}},"keywords":{}}],["idgeneratorservic",{"_index":545,"title":{},"content":{"34":{"position":[[83,20],[116,20]]}},"keywords":{}}],["idgeneratorservice.generate(req",{"_index":546,"title":{},"content":{"34":{"position":[[216,32]]}},"keywords":{}}],["ifnest",{"_index":746,"title":{"56":{"position":[[19,8]]}},"content":{"56":{"position":[[20,8],[202,8],[338,9]]}},"keywords":{}}],["ifnested?:'inherit",{"_index":94,"title":{},"content":{"3":{"position":[[95,19]]}},"keywords":{}}],["imper",{"_index":726,"title":{},"content":{"53":{"position":[[226,10]]}},"keywords":{}}],["implement",{"_index":318,"title":{},"content":{"11":{"position":[[808,14]]},"42":{"position":[[247,10]]},"51":{"position":[[919,14]]},"66":{"position":[[415,9]]},"71":{"position":[[253,10]]},"74":{"position":[[198,14]]},"77":{"position":[[198,10]]},"78":{"position":[[910,15]]},"82":{"position":[[129,9]]},"90":{"position":[[350,11]]},"93":{"position":[[578,14]]},"97":{"position":[[196,14]]}},"keywords":{}}],["implicitli",{"_index":980,"title":{},"content":{"94":{"position":[[92,11]]}},"keywords":{}}],["import",{"_index":248,"title":{},"content":{"9":{"position":[[453,6],[776,8]]},"10":{"position":[[509,8]]},"33":{"position":[[25,8]]},"34":{"position":[[25,8]]},"40":{"position":[[25,8]]},"42":{"position":[[132,8]]},"48":{"position":[[241,8]]},"57":{"position":[[481,6]]},"60":{"position":[[61,8]]},"65":{"position":[[1153,9]]},"66":{"position":[[1054,8],[1090,9]]},"70":{"position":[[161,8]]},"78":{"position":[[587,6],[698,7]]},"79":{"position":[[330,7]]},"85":{"position":[[352,8],[529,8]]},"87":{"position":[[42,8]]},"88":{"position":[[160,8]]},"92":{"position":[[133,6],[173,6],[241,6],[341,7],[359,8],[521,8]]},"96":{"position":[[96,8],[153,8]]}},"keywords":{}}],["imports?ani",{"_index":278,"title":{},"content":{"10":{"position":[[478,13]]}},"keywords":{}}],["includ",{"_index":477,"title":{},"content":{"25":{"position":[[247,8]]},"51":{"position":[[49,8]]},"90":{"position":[[490,8]]}},"keywords":{}}],["indic",{"_index":508,"title":{},"content":{"28":{"position":[[224,8]]}},"keywords":{}}],["infer",{"_index":569,"title":{"44":{"position":[[21,9]]}},"content":{"45":{"position":[[106,9]]},"46":{"position":[[326,8],[408,8],[485,8],[642,8]]},"53":{"position":[[355,10]]}},"keywords":{}}],["infinit",{"_index":616,"title":{},"content":{"49":{"position":[[199,9]]}},"keywords":{}}],["info",{"_index":157,"title":{},"content":{"4":{"position":[[527,5]]},"9":{"position":[[829,4]]},"13":{"position":[[118,4]]},"51":{"position":[[879,4]]},"65":{"position":[[201,4]]},"74":{"position":[[115,4]]},"92":{"position":[[655,4]]}},"keywords":{}}],["inform",{"_index":297,"title":{},"content":{"10":{"position":[[1472,12]]},"82":{"position":[[181,11]]},"83":{"position":[[258,11]]}},"keywords":{}}],["inherit",{"_index":105,"title":{},"content":{"3":{"position":[[286,7],[842,7]]},"56":{"position":[[65,8]]}},"keywords":{}}],["initi",{"_index":265,"title":{},"content":{"9":{"position":[[910,10]]},"26":{"position":[[95,10]]},"65":{"position":[[254,14]]},"66":{"position":[[600,11],[774,11]]},"85":{"position":[[38,8]]}},"keywords":{}}],["initialis",{"_index":325,"title":{},"content":{"11":{"position":[[1089,12]]}},"keywords":{}}],["initializeplugin",{"_index":87,"title":{},"content":{"2":{"position":[[1488,20]]}},"keywords":{}}],["initializeplugins?:boolean",{"_index":329,"title":{},"content":{"11":{"position":[[1301,26]]}},"keywords":{}}],["inject",{"_index":17,"title":{},"content":{"2":{"position":[[5,10]]},"7":{"position":[[587,13]]},"9":{"position":[[785,6]]},"10":{"position":[[313,9],[1041,9],[1230,6]]},"12":{"position":[[85,10],[314,9],[616,9]]},"19":{"position":[[11,9],[237,6]]},"20":{"position":[[1118,13],[1372,13]]},"34":{"position":[[75,7]]},"46":{"position":[[14,6]]},"48":{"position":[[408,6]]},"55":{"position":[[499,13]]},"60":{"position":[[185,9]]},"62":{"position":[[17,13],[392,13]]},"65":{"position":[[637,13]]},"66":{"position":[[1394,9]]},"68":{"position":[[60,10]]},"71":{"position":[[29,7],[208,13]]},"72":{"position":[[264,13]]},"73":{"position":[[177,13]]},"76":{"position":[[321,10],[409,8],[472,8]]},"77":{"position":[[155,13],[237,6]]},"78":{"position":[[24,6],[492,6]]},"79":{"position":[[366,7],[678,9],[918,8],[960,8],[1004,13]]},"82":{"position":[[21,9]]},"84":{"position":[[87,8],[254,13],[875,13]]},"93":{"position":[[626,13],[1072,13]]},"94":{"position":[[289,13]]}},"keywords":{}}],["inject('class",{"_index":740,"title":{},"content":{"55":{"position":[[546,14]]}},"keywords":{}}],["inject('funct",{"_index":741,"title":{},"content":{"55":{"position":[[608,17]]}},"keywords":{}}],["inject(cls_req",{"_index":895,"title":{},"content":{"78":{"position":[[328,16],[760,17]]}},"keywords":{}}],["inject(request",{"_index":902,"title":{},"content":{"78":{"position":[[803,16]]}},"keywords":{}}],["inject(tenant_connect",{"_index":916,"title":{},"content":{"79":{"position":[[1051,26]]}},"keywords":{}}],["inject:ani",{"_index":288,"title":{},"content":{"10":{"position":[[1016,12]]}},"keywords":{}}],["injectableproxi",{"_index":287,"title":{},"content":{"10":{"position":[[928,17]]},"76":{"position":[[88,18],[155,18]]},"78":{"position":[[242,18]]}},"keywords":{}}],["insid",{"_index":619,"title":{},"content":{"49":{"position":[[278,6]]}},"keywords":{}}],["instal",{"_index":372,"title":{"13":{"position":[[0,12]]},"59":{"position":[[0,13]]},"90":{"position":[[0,13]]}},"content":{"13":{"position":[[0,12],[13,7],[99,7],[254,10]]},"53":{"position":[[527,7]]},"59":{"position":[[17,7]]},"90":{"position":[[17,7],[216,7]]}},"keywords":{}}],["instanc",{"_index":767,"title":{"64":{"position":[[21,8]]}},"content":{"61":{"position":[[115,8],[172,8],[330,8]]},"64":{"position":[[21,8],[261,8]]},"65":{"position":[[509,8]]},"76":{"position":[[492,8],[576,8]]},"82":{"position":[[533,8]]},"91":{"position":[[228,8]]},"96":{"position":[[299,8]]},"97":{"position":[[288,9],[416,8]]},"98":{"position":[[336,10]]}},"keywords":{}}],["instanti",{"_index":300,"title":{},"content":{"11":{"position":[[128,13],[290,13]]},"49":{"position":[[163,13]]}},"keywords":{}}],["instead",{"_index":340,"title":{},"content":{"11":{"position":[[1930,7]]},"12":{"position":[[594,7]]},"47":{"position":[[99,7]]},"65":{"position":[[454,8]]},"74":{"position":[[163,7]]}},"keywords":{}}],["integr",{"_index":724,"title":{},"content":{"53":{"position":[[67,12]]}},"keywords":{}}],["intellisens",{"_index":588,"title":{},"content":{"46":{"position":[[587,12]]}},"keywords":{}}],["intend",{"_index":262,"title":{},"content":{"9":{"position":[[854,6]]}},"keywords":{}}],["interact",{"_index":831,"title":{},"content":{"68":{"position":[[119,11]]}},"keywords":{}}],["intercept(context",{"_index":845,"title":{},"content":{"71":{"position":[[331,18]]},"77":{"position":[[303,18]]}},"keywords":{}}],["interceptor",{"_index":267,"title":{"71":{"position":[[18,12]]},"72":{"position":[[6,11]]},"85":{"position":[[9,11]]}},"content":{"9":{"position":[[1002,13]]},"11":{"position":[[712,12]]},"16":{"position":[[15,12],[110,12]]},"25":{"position":[[10,11]]},"66":{"position":[[625,12]]},"69":{"position":[[82,11]]},"71":{"position":[[11,11]]},"72":{"position":[[166,11]]},"77":{"position":[[142,11]]},"85":{"position":[[9,11],[257,11],[383,12],[560,12],[809,12]]}},"keywords":{}}],["interceptor?:clsinterceptoropt",{"_index":243,"title":{},"content":{"9":{"position":[[258,34]]}},"keywords":{}}],["interest",{"_index":172,"title":{},"content":{"5":{"position":[[172,10]]}},"keywords":{}}],["interfac",{"_index":16,"title":{"1":{"position":[[8,9]]},"96":{"position":[[23,10]]},"97":{"position":[[16,10]]}},"content":{"10":{"position":[[796,9],[988,9]]},"45":{"position":[[36,9],[259,9],[300,9]]},"47":{"position":[[137,10],[275,9]]},"49":{"position":[[402,9]]},"53":{"position":[[458,11]]},"66":{"position":[[439,10],[457,9]]},"97":{"position":[[21,9],[51,9]]}},"keywords":{}}],["interfer",{"_index":563,"title":{},"content":{"43":{"position":[[254,10]]}},"keywords":{}}],["introduc",{"_index":705,"title":{},"content":{"52":{"position":[[842,10]]},"53":{"position":[[174,10],[271,11]]}},"keywords":{}}],["intuit",{"_index":127,"title":{},"content":{"3":{"position":[[885,10]]},"55":{"position":[[144,10]]}},"keywords":{}}],["invest",{"_index":695,"title":{},"content":{"52":{"position":[[647,8]]}},"keywords":{}}],["invok",{"_index":101,"title":{},"content":{"3":{"position":[[209,7]]}},"keywords":{}}],["io",{"_index":709,"title":{},"content":{"52":{"position":[[892,2]]}},"keywords":{}}],["ip",{"_index":834,"title":{"71":{"position":[[7,2]]}},"content":{"69":{"position":[[65,2]]},"71":{"position":[[120,2]]},"73":{"position":[[47,2]]}},"keywords":{}}],["ip.interceptor.t",{"_index":842,"title":{},"content":{"71":{"position":[[190,17]]}},"keywords":{}}],["isact",{"_index":77,"title":{},"content":{"2":{"position":[[1315,11]]}},"keywords":{}}],["isol",{"_index":644,"title":{},"content":{"51":{"position":[[434,9]]},"95":{"position":[[215,9]]}},"keywords":{}}],["isolationlevel",{"_index":988,"title":{},"content":{"95":{"position":[[341,15],[661,15]]}},"keywords":{}}],["issu",{"_index":463,"title":{},"content":{"24":{"position":[[191,7],[331,5]]},"27":{"position":[[283,5]]},"43":{"position":[[285,5]]},"49":{"position":[[715,5]]},"51":{"position":[[870,7]]},"82":{"position":[[661,5]]}},"keywords":{}}],["istransactionact",{"_index":996,"title":{},"content":{"97":{"position":[[763,22]]}},"keywords":{}}],["it'",{"_index":953,"title":{},"content":{"88":{"position":[[53,4]]}},"keywords":{}}],["itself",{"_index":921,"title":{},"content":{"81":{"position":[[87,6],[190,6]]},"82":{"position":[[239,7]]}},"keywords":{}}],["job",{"_index":191,"title":{},"content":{"7":{"position":[[178,4]]}},"keywords":{}}],["keep",{"_index":800,"title":{},"content":{"65":{"position":[[213,4]]}},"keywords":{}}],["kept",{"_index":451,"title":{},"content":{"21":{"position":[[157,4]]}},"keywords":{}}],["key",{"_index":33,"title":{},"content":{"2":{"position":[[253,4],[371,3]]},"11":{"position":[[441,4],[1680,4],[1810,3]]},"46":{"position":[[608,5]]},"49":{"position":[[597,4]]},"65":{"position":[[969,5]]},"84":{"position":[[512,5],[1042,5]]}},"keywords":{}}],["keyof",{"_index":29,"title":{},"content":{"2":{"position":[[195,5],[342,5],[407,5],[489,5]]}},"keywords":{}}],["know",{"_index":511,"title":{},"content":{"28":{"position":[[334,4]]},"52":{"position":[[554,4]]}},"keywords":{}}],["known",{"_index":346,"title":{},"content":{"11":{"position":[[2075,5]]},"24":{"position":[[185,5]]}},"keywords":{}}],["lack",{"_index":733,"title":{},"content":{"53":{"position":[[556,5]]}},"keywords":{}}],["languag",{"_index":714,"title":{},"content":{"52":{"position":[[972,9]]}},"keywords":{}}],["late",{"_index":560,"title":{},"content":{"43":{"position":[[102,4]]}},"keywords":{}}],["later",{"_index":419,"title":{},"content":{"20":{"position":[[649,5]]},"83":{"position":[[211,5]]},"91":{"position":[[106,6]]}},"keywords":{}}],["leak",{"_index":529,"title":{},"content":{"31":{"position":[[127,5],[305,4]]}},"keywords":{}}],["learn",{"_index":962,"title":{},"content":{"91":{"position":[[120,5]]}},"keywords":{}}],["less",{"_index":532,"title":{},"content":{"31":{"position":[[428,4]]}},"keywords":{}}],["level",{"_index":111,"title":{},"content":{"3":{"position":[[388,5]]},"12":{"position":[[345,5]]},"51":{"position":[[294,5]]},"65":{"position":[[66,5]]},"95":{"position":[[225,5]]}},"keywords":{}}],["librari",{"_index":167,"title":{},"content":{"5":{"position":[[67,7]]},"13":{"position":[[207,10]]},"21":{"position":[[197,8]]},"30":{"position":[[72,8]]},"51":{"position":[[33,7]]},"52":{"position":[[119,7],[1013,7]]},"53":{"position":[[91,9],[518,8]]},"68":{"position":[[6,7]]},"69":{"position":[[35,7]]},"74":{"position":[[46,7]]},"90":{"position":[[189,8],[274,9],[380,10]]},"91":{"position":[[40,7]]},"97":{"position":[[239,8]]}},"keywords":{}}],["life",{"_index":136,"title":{},"content":{"4":{"position":[[111,4]]},"6":{"position":[[157,4]]},"74":{"position":[[87,4]]}},"keywords":{}}],["lifecycl",{"_index":823,"title":{},"content":{"66":{"position":[[726,9],[849,9]]},"68":{"position":[[267,9]]},"83":{"position":[[238,9]]}},"keywords":{}}],["lifetim",{"_index":141,"title":{},"content":{"4":{"position":[[210,8]]},"31":{"position":[[892,8]]}},"keywords":{}}],["limit",{"_index":669,"title":{},"content":{"52":{"position":[[167,8]]},"74":{"position":[[237,8]]}},"keywords":{}}],["link",{"_index":737,"title":{},"content":{"55":{"position":[[155,5]]}},"keywords":{}}],["list",{"_index":279,"title":{},"content":{"10":{"position":[[501,4],[625,4]]},"21":{"position":[[31,5]]},"28":{"position":[[307,6],[389,6]]},"37":{"position":[[7,4]]}},"keywords":{}}],["local",{"_index":130,"title":{},"content":{"4":{"position":[[26,5]]}},"keywords":{}}],["log",{"_index":146,"title":{},"content":{"4":{"position":[[323,3]]},"20":{"position":[[119,8],[1497,4]]},"51":{"position":[[106,7]]},"66":{"position":[[518,7]]}},"keywords":{}}],["log(messag",{"_index":432,"title":{},"content":{"20":{"position":[[1198,12]]}},"keywords":{}}],["logger",{"_index":428,"title":{},"content":{"20":{"position":[[1097,7],[1433,7]]}},"keywords":{}}],["logic",{"_index":957,"title":{},"content":{"90":{"position":[[145,5]]}},"keywords":{}}],["longer",{"_index":932,"title":{},"content":{"82":{"position":[[633,6]]}},"keywords":{}}],["look",{"_index":873,"title":{},"content":{"76":{"position":[[17,4]]},"79":{"position":[[61,4]]}},"keywords":{}}],["lose",{"_index":347,"title":{},"content":{"11":{"position":[[2084,4]]}},"keywords":{}}],["loss",{"_index":468,"title":{},"content":{"24":{"position":[[405,5]]},"31":{"position":[[520,5]]}},"keywords":{}}],["lost",{"_index":490,"title":{},"content":{"27":{"position":[[258,4]]},"31":{"position":[[166,4],[362,5]]}},"keywords":{}}],["lot",{"_index":656,"title":{},"content":{"51":{"position":[[857,3]]},"94":{"position":[[117,3]]}},"keywords":{}}],["made",{"_index":678,"title":{},"content":{"52":{"position":[[352,4]]},"78":{"position":[[178,4]]}},"keywords":{}}],["main",{"_index":992,"title":{},"content":{"97":{"position":[[38,4]]}},"keywords":{}}],["main.t",{"_index":564,"title":{},"content":{"43":{"position":[[363,7]]}},"keywords":{}}],["maintain",{"_index":448,"title":{},"content":{"21":{"position":[[58,10]]},"66":{"position":[[198,10]]}},"keywords":{}}],["major",{"_index":525,"title":{},"content":{"30":{"position":[[50,5]]}},"keywords":{}}],["make",{"_index":125,"title":{},"content":{"3":{"position":[[862,4]]},"4":{"position":[[296,5],[376,4]]},"6":{"position":[[147,4]]},"9":{"position":[[407,4]]},"10":{"position":[[897,4]]},"12":{"position":[[631,4]]},"27":{"position":[[559,5]]},"46":{"position":[[90,4]]},"52":{"position":[[692,6],[796,6]]},"63":{"position":[[245,4]]},"73":{"position":[[123,6]]},"76":{"position":[[120,4]]},"78":{"position":[[649,4]]},"79":{"position":[[637,4]]},"85":{"position":[[869,5]]},"91":{"position":[[310,4]]},"92":{"position":[[489,4]]},"93":{"position":[[447,5]]},"94":{"position":[[145,5]]}},"keywords":{}}],["manag",{"_index":375,"title":{},"content":{"13":{"position":[[74,8]]},"37":{"position":[[23,7]]},"97":{"position":[[816,7]]}},"keywords":{}}],["mani",{"_index":686,"title":{},"content":{"52":{"position":[[542,4]]}},"keywords":{}}],["manipul",{"_index":20,"title":{},"content":{"2":{"position":[[57,10]]}},"keywords":{}}],["manner",{"_index":673,"title":{},"content":{"52":{"position":[[268,7]]}},"keywords":{}}],["manual",{"_index":84,"title":{"41":{"position":[[0,9]]},"88":{"position":[[0,9]]}},"content":{"2":{"position":[[1440,8],[1529,8]]},"7":{"position":[[577,9]]},"11":{"position":[[147,10],[309,9]]},"24":{"position":[[317,9],[452,8]]},"27":{"position":[[70,8]]},"29":{"position":[[124,8]]},"31":{"position":[[1030,8]]},"42":{"position":[[83,8]]},"43":{"position":[[478,8]]},"83":{"position":[[415,8]]},"85":{"position":[[456,8],[477,8]]},"88":{"position":[[87,8]]}},"keywords":{}}],["math.random",{"_index":319,"title":{},"content":{"11":{"position":[[828,13]]},"20":{"position":[[334,14]]},"65":{"position":[[1120,14]]},"93":{"position":[[1332,13]]}},"keywords":{}}],["mean",{"_index":538,"title":{},"content":{"31":{"position":[[753,6],[1004,5]]},"55":{"position":[[73,5]]},"68":{"position":[[95,5]]},"85":{"position":[[845,5]]},"98":{"position":[[134,5]]}},"keywords":{}}],["member",{"_index":731,"title":{},"content":{"53":{"position":[[447,7]]}},"keywords":{}}],["mercuriu",{"_index":481,"title":{},"content":{"25":{"position":[[383,9]]},"27":{"position":[[338,11]]}},"keywords":{}}],["messag",{"_index":434,"title":{},"content":{"20":{"position":[[1262,13]]}},"keywords":{}}],["metadata",{"_index":631,"title":{},"content":{"51":{"position":[[93,8]]}},"keywords":{}}],["method",{"_index":92,"title":{"18":{"position":[[18,6]]}},"content":{"3":{"position":[[19,7],[199,6]]},"9":{"position":[[25,6]]},"10":{"position":[[28,6],[87,6],[163,6]]},"12":{"position":[[247,6]]},"18":{"position":[[23,6]]},"19":{"position":[[80,6]]},"20":{"position":[[1012,6]]},"25":{"position":[[340,7]]},"27":{"position":[[355,6]]},"29":{"position":[[211,6]]},"31":{"position":[[277,7],[450,7],[498,6],[611,6]]},"36":{"position":[[41,6]]},"43":{"position":[[34,6],[354,7]]},"46":{"position":[[753,6]]},"56":{"position":[[164,6]]},"62":{"position":[[165,7]]},"64":{"position":[[40,7],[132,8]]},"65":{"position":[[59,6],[98,6],[133,6],[629,7]]},"66":{"position":[[736,6],[859,6]]},"79":{"position":[[143,7]]},"81":{"position":[[157,6]]},"85":{"position":[[139,6],[862,6]]},"88":{"position":[[475,7]]},"92":{"position":[[93,6]]},"93":{"position":[[522,6]]},"94":{"position":[[52,6],[226,6]]},"95":{"position":[[30,6]]}},"keywords":{}}],["middlewar",{"_index":266,"title":{"11":{"position":[[0,10]]},"15":{"position":[[0,11]]},"39":{"position":[[8,10]]}},"content":{"9":{"position":[[942,10]]},"15":{"position":[[12,10],[124,11]]},"18":{"position":[[186,11]]},"20":{"position":[[794,11]]},"24":{"position":[[375,11]]},"33":{"position":[[70,11]]},"34":{"position":[[146,11]]},"40":{"position":[[70,11]]},"41":{"position":[[113,10],[163,12]]},"42":{"position":[[177,11]]},"43":{"position":[[70,10],[148,11],[467,10],[615,10],[663,10]]},"66":{"position":[[612,12]]},"69":{"position":[[230,11]]},"70":{"position":[[206,11]]},"83":{"position":[[458,11]]}},"keywords":{}}],["middleware/guard/interceptor",{"_index":304,"title":{},"content":{"11":{"position":[[225,28]]},"20":{"position":[[205,29]]},"83":{"position":[[87,30]]}},"keywords":{}}],["middleware?:clsmiddlewareopt",{"_index":238,"title":{},"content":{"9":{"position":[[71,32]]}},"keywords":{}}],["middlewareconsum",{"_index":556,"title":{},"content":{"42":{"position":[[291,19]]}},"keywords":{}}],["migrat",{"_index":522,"title":{"30":{"position":[[0,9]]}},"content":{"30":{"position":[[0,9],[102,9]]},"53":{"position":[[122,9],[287,9]]}},"keywords":{}}],["mind",{"_index":801,"title":{},"content":{"65":{"position":[[221,5]]}},"keywords":{}}],["minor",{"_index":727,"title":{},"content":{"53":{"position":[[242,6]]},"66":{"position":[[322,5]]}},"keywords":{}}],["miss",{"_index":666,"title":{},"content":{"52":{"position":[[91,6]]}},"keywords":{}}],["mix",{"_index":681,"title":{},"content":{"52":{"position":[[406,3]]},"66":{"position":[[1316,5]]}},"keywords":{}}],["mock",{"_index":368,"title":{},"content":{"12":{"position":[[652,4]]}},"keywords":{}}],["modif",{"_index":114,"title":{},"content":{"3":{"position":[[459,13],[577,13]]}},"keywords":{}}],["modul",{"_index":179,"title":{"8":{"position":[[0,6]]},"42":{"position":[[7,7]]},"47":{"position":[[17,6]]}},"content":{"6":{"position":[[105,6]]},"9":{"position":[[416,6],[492,8],[587,7]]},"10":{"position":[[518,7],[748,7]]},"13":{"position":[[128,6]]},"33":{"position":[[15,9]]},"34":{"position":[[15,9]]},"40":{"position":[[15,9]]},"42":{"position":[[99,7],[122,9]]},"47":{"position":[[253,6]]},"48":{"position":[[231,9]]},"57":{"position":[[391,6]]},"60":{"position":[[75,6]]},"63":{"position":[[218,6]]},"66":{"position":[[373,6],[1031,7]]},"70":{"position":[[151,9]]},"76":{"position":[[355,7]]},"78":{"position":[[527,7],[609,7]]},"85":{"position":[[342,9],[519,9]]},"87":{"position":[[32,9]]},"88":{"position":[[127,7],[150,9]]},"92":{"position":[[349,9]]},"96":{"position":[[130,7]]}},"keywords":{}}],["more",{"_index":126,"title":{},"content":{"3":{"position":[[880,4]]},"4":{"position":[[522,4]]},"9":{"position":[[682,4]]},"10":{"position":[[1467,4]]},"41":{"position":[[82,4]]},"48":{"position":[[10,4]]},"49":{"position":[[729,4]]},"55":{"position":[[139,4]]},"56":{"position":[[80,4]]},"64":{"position":[[190,4]]},"74":{"position":[[71,4]]},"83":{"position":[[253,4]]},"90":{"position":[[409,4]]},"92":{"position":[[650,4]]},"94":{"position":[[160,4]]}},"keywords":{}}],["motiv",{"_index":661,"title":{"52":{"position":[[0,11]]}},"content":{},"keywords":{}}],["mount",{"_index":303,"title":{"72":{"position":[[0,5]]}},"content":{"11":{"position":[[215,5]]},"15":{"position":[[138,6]]},"16":{"position":[[125,6]]},"18":{"position":[[200,6]]},"20":{"position":[[808,6]]},"24":{"position":[[124,5],[246,8],[309,7],[428,5]]},"26":{"position":[[156,5]]},"27":{"position":[[62,7]]},"31":{"position":[[857,5],[1039,5]]},"33":{"position":[[84,6]]},"34":{"position":[[160,6]]},"40":{"position":[[84,6]]},"42":{"position":[[24,5],[191,6]]},"43":{"position":[[90,7],[319,5],[457,5]]},"70":{"position":[[42,5],[220,6]]},"72":{"position":[[4,8]]},"85":{"position":[[398,6],[468,5],[575,6]]},"87":{"position":[[5,6],[82,6]]},"88":{"position":[[72,5],[200,6],[323,5]]}},"keywords":{}}],["mount?:boolean",{"_index":301,"title":{},"content":{"11":{"position":[[159,14]]}},"keywords":{}}],["much",{"_index":864,"title":{},"content":{"74":{"position":[[16,4]]}},"keywords":{}}],["multi",{"_index":637,"title":{},"content":{"51":{"position":[[246,5]]}},"keywords":{}}],["multipl",{"_index":50,"title":{},"content":{"2":{"position":[[630,8]]},"9":{"position":[[868,8]]},"25":{"position":[[72,8],[105,8]]},"98":{"position":[[157,8],[311,8]]}},"keywords":{}}],["my.logger.t",{"_index":429,"title":{},"content":{"20":{"position":[[1105,12]]}},"keywords":{}}],["my.service.t",{"_index":436,"title":{},"content":{"20":{"position":[[1358,13]]}},"keywords":{}}],["myclsmodul",{"_index":608,"title":{},"content":{"48":{"position":[[379,11]]}},"keywords":{}}],["myclsservic",{"_index":606,"title":{},"content":{"48":{"position":[[178,12],[300,13],[354,15],[415,12]]}},"keywords":{}}],["myclsstor",{"_index":575,"title":{},"content":{"45":{"position":[[310,10]]}},"keywords":{}}],["mycontextservic",{"_index":405,"title":{},"content":{"19":{"position":[[264,16],[324,16],[423,17],[451,17]]}},"keywords":{}}],["mycontextservice(new",{"_index":408,"title":{},"content":{"19":{"position":[[347,20]]}},"keywords":{}}],["mylogg",{"_index":430,"title":{},"content":{"20":{"position":[[1138,8],[1441,10]]}},"keywords":{}}],["myplugin",{"_index":547,"title":{},"content":{"36":{"position":[[101,12]]}},"keywords":{}}],["myservic",{"_index":437,"title":{},"content":{"20":{"position":[[1392,9]]},"46":{"position":[[133,9]]}},"keywords":{}}],["name",{"_index":657,"title":{},"content":{"51":{"position":[[890,4]]},"53":{"position":[[424,6]]},"62":{"position":[[748,5],[754,5]]},"66":{"position":[[489,4],[543,5]]},"76":{"position":[[434,5]]},"93":{"position":[[965,4]]},"94":{"position":[[593,4]]},"95":{"position":[[485,4],[768,4]]}},"keywords":{}}],["namespac",{"_index":400,"title":{"19":{"position":[[0,9]]}},"content":{"19":{"position":[[1,9],[157,11],[186,10]]}},"keywords":{}}],["name}@email.com",{"_index":786,"title":{},"content":{"62":{"position":[[767,19]]}},"keywords":{}}],["nativ",{"_index":660,"title":{},"content":{"51":{"position":[[987,6]]}},"keywords":{}}],["necessari",{"_index":344,"title":{},"content":{"11":{"position":[[2040,10]]},"12":{"position":[[562,10]]},"84":{"position":[[14,9]]},"96":{"position":[[255,10]]}},"keywords":{}}],["need",{"_index":143,"title":{},"content":{"4":{"position":[[253,4]]},"7":{"position":[[95,4],[559,4]]},"24":{"position":[[297,5]]},"27":{"position":[[50,5]]},"29":{"position":[[179,6]]},"31":{"position":[[473,6]]},"41":{"position":[[69,4]]},"43":{"position":[[165,4]]},"47":{"position":[[163,4]]},"63":{"position":[[198,4]]},"78":{"position":[[484,4]]},"88":{"position":[[8,4]]},"90":{"position":[[208,4]]},"92":{"position":[[62,4],[481,4]]}},"keywords":{}}],["neglig",{"_index":707,"title":{},"content":{"52":{"position":[[865,10]]}},"keywords":{}}],["nest",{"_index":98,"title":{},"content":{"3":{"position":[[159,6]]},"24":{"position":[[33,4]]},"45":{"position":[[171,6]]},"49":{"position":[[590,6]]}},"keywords":{}}],["nest'",{"_index":359,"title":{},"content":{"12":{"position":[[307,6]]},"26":{"position":[[12,6]]},"85":{"position":[[802,6]]}},"keywords":{}}],["nestfactory.create(appmodul",{"_index":565,"title":{},"content":{"43":{"position":[[412,30]]}},"keywords":{}}],["nestinterceptor",{"_index":844,"title":{},"content":{"71":{"position":[[264,15]]},"77":{"position":[[209,15]]}},"keywords":{}}],["nestj",{"_index":13,"title":{"50":{"position":[[0,6]]},"89":{"position":[[0,7]]}},"content":{"4":{"position":[[154,7]]},"13":{"position":[[107,6]]},"21":{"position":[[86,6],[131,7]]},"37":{"position":[[48,6]]},"43":{"position":[[236,6]]},"47":{"position":[[260,7]]},"52":{"position":[[1,6]]},"59":{"position":[[25,7]]},"66":{"position":[[366,6]]},"90":{"position":[[25,7]]},"91":{"position":[[56,7]]},"92":{"position":[[47,6],[159,7],[212,8],[284,8]]},"96":{"position":[[123,6]]},"98":{"position":[[36,7]]}},"keywords":{"0":{"position":[[56,6]]},"1":{"position":[[56,6]]},"4":{"position":[[56,6]]},"5":{"position":[[56,6]]},"6":{"position":[[56,6]]},"7":{"position":[[56,6]]},"8":{"position":[[56,6]]},"12":{"position":[[56,6]]},"13":{"position":[[56,6]]},"14":{"position":[[56,6]]},"17":{"position":[[56,6]]},"20":{"position":[[56,6]]},"21":{"position":[[56,6]]},"22":{"position":[[56,6]]},"23":{"position":[[56,6]]},"30":{"position":[[56,6]]},"31":{"position":[[56,6]]},"32":{"position":[[56,6]]},"35":{"position":[[56,6]]},"39":{"position":[[56,6]]},"44":{"position":[[56,6]]},"50":{"position":[[56,6]]},"54":{"position":[[56,6]]},"58":{"position":[[56,6]]},"64":{"position":[[56,6]]},"65":{"position":[[56,6]]},"66":{"position":[[56,6]]},"67":{"position":[[56,6]]},"75":{"position":[[56,6]]},"85":{"position":[[56,6]]},"86":{"position":[[56,6]]},"89":{"position":[[56,6]]}}}],["nestjs'",{"_index":353,"title":{},"content":{"12":{"position":[[65,8]]}},"keywords":{}}],["nestjs/common",{"_index":380,"title":{},"content":{"13":{"position":[[192,14]]}},"keywords":{}}],["nestjs/cor",{"_index":379,"title":{},"content":{"13":{"position":[[175,12]]}},"keywords":{}}],["nestjs/graphql",{"_index":482,"title":{"26":{"position":[[0,15]]},"27":{"position":[[0,15]]}},"content":{},"keywords":{}}],["nestmodul",{"_index":554,"title":{},"content":{"42":{"position":[[258,10]]}},"keywords":{}}],["never",{"_index":978,"title":{},"content":{"93":{"position":[[1379,5]]}},"keywords":{}}],["new",{"_index":66,"title":{},"content":{"2":{"position":[[906,3],[1175,3]]},"3":{"position":[[564,3],[669,3]]},"19":{"position":[[343,3]]},"30":{"position":[[46,3]]},"36":{"position":[[96,4]]},"43":{"position":[[501,3]]},"52":{"position":[[530,3]]},"53":{"position":[[1,3]]},"56":{"position":[[243,3]]},"60":{"position":[[32,3],[145,3]]},"92":{"position":[[415,3],[555,3],[880,3]]},"93":{"position":[[83,3],[326,3]]}},"keywords":{}}],["next",{"_index":341,"title":{},"content":{"11":{"position":[[1954,6]]},"31":{"position":[[1113,4]]},"71":{"position":[[368,5]]},"77":{"position":[[340,5]]}},"keywords":{}}],["next.handl",{"_index":852,"title":{},"content":{"71":{"position":[[549,14]]},"77":{"position":[[559,14]]}},"keywords":{}}],["nice",{"_index":690,"title":{},"content":{"52":{"position":[[599,4]]}},"keywords":{}}],["node",{"_index":702,"title":{},"content":{"52":{"position":[[803,4]]}},"keywords":{}}],["node_modul",{"_index":788,"title":{},"content":{"63":{"position":[[42,13]]}},"keywords":{}}],["nodeconf",{"_index":692,"title":{},"content":{"52":{"position":[[614,8]]}},"keywords":{}}],["non",{"_index":837,"title":{},"content":{"69":{"position":[[257,3]]},"97":{"position":[[391,3]]}},"keywords":{}}],["nonexist",{"_index":594,"title":{},"content":{"46":{"position":[[909,11]]}},"keywords":{}}],["normal",{"_index":884,"title":{},"content":{"77":{"position":[[480,6]]},"79":{"position":[[11,6]]}},"keywords":{}}],["notat",{"_index":574,"title":{},"content":{"45":{"position":[[198,9]]}},"keywords":{}}],["note",{"_index":121,"title":{},"content":{"3":{"position":[[771,4]]},"9":{"position":[[841,5]]},"12":{"position":[[517,5]]},"43":{"position":[[593,5]]},"69":{"position":[[163,4]]},"82":{"position":[[480,4]]},"85":{"position":[[778,4],[790,5]]},"88":{"position":[[413,5]]},"93":{"position":[[1359,4]]},"98":{"position":[[8,4]]}},"keywords":{}}],["notexist",{"_index":596,"title":{},"content":{"46":{"position":[[964,8]]}},"keywords":{}}],["noth",{"_index":507,"title":{},"content":{"28":{"position":[[205,7]]}},"keywords":{}}],["notic",{"_index":513,"title":{},"content":{"28":{"position":[[370,7]]},"93":{"position":[[1364,6]]}},"keywords":{}}],["now",{"_index":363,"title":{},"content":{"12":{"position":[[436,3]]},"19":{"position":[[71,3]]},"47":{"position":[[149,3]]},"48":{"position":[[396,3]]},"51":{"position":[[476,4]]},"55":{"position":[[109,3],[263,3]]},"93":{"position":[[1,3]]}},"keywords":{}}],["npm",{"_index":373,"title":{},"content":{"13":{"position":[[34,3],[95,3]]},"59":{"position":[[13,3]]},"90":{"position":[[13,3]]}},"keywords":{}}],["npmyarnpnpm",{"_index":376,"title":{},"content":{"13":{"position":[[83,11]]},"59":{"position":[[1,11]]},"90":{"position":[[1,11]]}},"keywords":{}}],["number",{"_index":578,"title":{},"content":{"45":{"position":[[370,7]]},"46":{"position":[[422,6],[503,7]]},"47":{"position":[[326,7]]},"49":{"position":[[465,7]]},"62":{"position":[[545,7]]},"74":{"position":[[250,6]]},"76":{"position":[[198,7]]},"78":{"position":[[293,7]]},"93":{"position":[[1234,8],[1324,7]]}},"keywords":{}}],["object",{"_index":63,"title":{},"content":{"2":{"position":[[810,6],[1090,6]]},"3":{"position":[[58,6]]},"9":{"position":[[107,6],[198,6],[296,6]]},"10":{"position":[[1274,6],[1358,8],[1421,7],[1441,9]]},"11":{"position":[[658,6],[1618,6],[1748,6]]},"15":{"position":[[48,7]]},"16":{"position":[[49,6]]},"45":{"position":[[178,7]]},"46":{"position":[[830,6]]},"49":{"position":[[25,6]]},"55":{"position":[[120,9],[727,8]]},"65":{"position":[[446,7]]},"77":{"position":[[487,6]]},"95":{"position":[[108,6],[143,6]]},"96":{"position":[[57,6]]},"97":{"position":[[312,6],[609,6]]}},"keywords":{}}],["observable<any>",{"_index":847,"title":{},"content":{"71":{"position":[[388,21]]},"77":{"position":[[360,21]]}},"keywords":{}}],["offend",{"_index":470,"title":{},"content":{"24":{"position":[[473,9]]}},"keywords":{}}],["older",{"_index":485,"title":{},"content":{"27":{"position":[[5,5]]}},"keywords":{}}],["omit",{"_index":553,"title":{},"content":{"42":{"position":[[15,4]]}},"keywords":{}}],["on",{"_index":117,"title":{},"content":{"3":{"position":[[568,4]]},"9":{"position":[[1049,3]]},"20":{"position":[[769,4]]},"24":{"position":[[483,4]]},"52":{"position":[[98,4]]},"61":{"position":[[374,5]]},"77":{"position":[[117,3]]},"90":{"position":[[224,3]]},"97":{"position":[[727,3]]},"98":{"position":[[194,3]]}},"keywords":{}}],["onc",{"_index":160,"title":{},"content":{"4":{"position":[[555,4]]},"81":{"position":[[136,4]]},"83":{"position":[[248,4]]}},"keywords":{}}],["onclsinit",{"_index":88,"title":{},"content":{"2":{"position":[[1546,9]]},"11":{"position":[[1362,9]]},"66":{"position":[[654,11]]}},"keywords":{}}],["onmoduledestroy",{"_index":827,"title":{},"content":{"66":{"position":[[949,17]]}},"keywords":{}}],["onmoduleinit",{"_index":824,"title":{},"content":{"66":{"position":[[789,14]]}},"keywords":{}}],["oper",{"_index":476,"title":{},"content":{"25":{"position":[[183,9]]},"52":{"position":[[895,9]]},"55":{"position":[[95,8]]},"93":{"position":[[244,10]]}},"keywords":{}}],["option",{"_index":6,"title":{"8":{"position":[[7,7]]},"11":{"position":[[22,8]]},"56":{"position":[[28,7]]},"95":{"position":[[20,8]]}},"content":{"0":{"position":[[84,8]]},"2":{"position":[[782,10],[802,7],[1062,10],[1082,7]]},"3":{"position":[[50,7]]},"9":{"position":[[130,7],[221,7],[319,7]]},"10":{"position":[[283,8],[401,9],[492,8],[616,8]]},"11":{"position":[[588,8]]},"20":{"position":[[153,6],[275,8],[406,7]]},"24":{"position":[[130,6]]},"26":{"position":[[162,7]]},"27":{"position":[[224,8]]},"31":{"position":[[807,7]]},"42":{"position":[[30,6]]},"55":{"position":[[285,6]]},"56":{"position":[[29,6],[211,7]]},"57":{"position":[[563,6]]},"66":{"position":[[396,7],[1299,7]]},"83":{"position":[[363,7]]},"85":{"position":[[305,8]]},"92":{"position":[[616,8]]},"95":{"position":[[80,8]]},"96":{"position":[[49,7]]},"97":{"position":[[571,10]]}},"keywords":{}}],["order",{"_index":291,"title":{},"content":{"10":{"position":[[1193,5]]},"27":{"position":[[100,5]]},"41":{"position":[[104,5]]},"43":{"position":[[274,6]]},"82":{"position":[[4,5],[109,5]]}},"keywords":{}}],["origin",{"_index":658,"title":{},"content":{"51":{"position":[[910,8]]},"55":{"position":[[164,8]]}},"keywords":{}}],["otel",{"_index":716,"title":{},"content":{"52":{"position":[[1027,6]]}},"keywords":{}}],["other",{"_index":499,"title":{"28":{"position":[[0,7]]}},"content":{},"keywords":{}}],["otherservic",{"_index":804,"title":{},"content":{"65":{"position":[[735,13],[749,13]]}},"keywords":{}}],["otherwis",{"_index":491,"title":{},"content":{"27":{"position":[[263,9]]},"28":{"position":[[233,10]]},"84":{"position":[[60,9]]},"93":{"position":[[1506,9]]}},"keywords":{}}],["out",{"_index":349,"title":{"12":{"position":[[9,3]]}},"content":{"12":{"position":[[9,3]]},"48":{"position":[[153,3]]}},"keywords":{}}],["outsid",{"_index":184,"title":{"7":{"position":[[6,7]]},"84":{"position":[[0,7]]}},"content":{"7":{"position":[[6,7],[113,7]]},"12":{"position":[[142,7],[296,7]]},"61":{"position":[[256,7]]},"64":{"position":[[351,7]]},"65":{"position":[[160,7]]},"84":{"position":[[24,7]]}},"keywords":{}}],["over",{"_index":551,"title":{},"content":{"41":{"position":[[95,4]]},"64":{"position":[[216,4]]}},"keywords":{}}],["overhead",{"_index":706,"title":{},"content":{"52":{"position":[[853,8]]}},"keywords":{}}],["overrid",{"_index":96,"title":{},"content":{"3":{"position":[[127,10],[812,9]]},"56":{"position":[[53,8],[348,10]]}},"keywords":{}}],["packag",{"_index":351,"title":{},"content":{"12":{"position":[[30,7]]},"13":{"position":[[38,7],[66,7]]},"20":{"position":[[133,7]]},"24":{"position":[[6,7]]},"26":{"position":[[62,7]]},"28":{"position":[[271,7]]},"90":{"position":[[439,7]]}},"keywords":{}}],["page",{"_index":548,"title":{},"content":{"37":{"position":[[86,5]]}},"keywords":{}}],["paramet",{"_index":23,"title":{"46":{"position":[[13,10]]}},"content":{"2":{"position":[[97,9],[830,10],[1110,10]]},"9":{"position":[[807,10]]},"10":{"position":[[388,9]]},"11":{"position":[[72,10],[1544,11]]},"15":{"position":[[91,11]]},"16":{"position":[[78,10]]},"20":{"position":[[511,10]]},"46":{"position":[[48,9]]},"47":{"position":[[188,9]]},"51":{"position":[[787,10]]},"97":{"position":[[629,10]]}},"keywords":{}}],["parent",{"_index":104,"title":{},"content":{"3":{"position":[[264,6],[350,6],[434,6],[707,6]]},"10":{"position":[[733,6]]},"76":{"position":[[348,6]]},"97":{"position":[[748,6]]}},"keywords":{}}],["part",{"_index":187,"title":{},"content":{"7":{"position":[[42,4]]},"11":{"position":[[1394,4]]}},"keywords":{}}],["pass",{"_index":276,"title":{"95":{"position":[[0,7]]}},"content":{"10":{"position":[[434,6],[704,7]]},"15":{"position":[[60,6]]},"16":{"position":[[59,6]]},"20":{"position":[[242,4]]},"27":{"position":[[179,4]]},"36":{"position":[[18,4]]},"43":{"position":[[683,6]]},"51":{"position":[[458,7],[762,7]]},"61":{"position":[[189,6]]},"65":{"position":[[605,6]]},"69":{"position":[[144,7]]},"73":{"position":[[90,7]]},"85":{"position":[[227,4]]},"92":{"position":[[70,4]]}},"keywords":{}}],["passport",{"_index":649,"title":{},"content":{"51":{"position":[[620,9]]}},"keywords":{}}],["path",{"_index":618,"title":{},"content":{"49":{"position":[[272,5],[372,5],[533,5]]}},"keywords":{}}],["peer",{"_index":377,"title":{},"content":{"13":{"position":[[155,4]]}},"keywords":{}}],["peopl",{"_index":687,"title":{},"content":{"52":{"position":[[547,6]]}},"keywords":{}}],["per",{"_index":997,"title":{},"content":{"98":{"position":[[112,3]]}},"keywords":{}}],["person",{"_index":698,"title":{},"content":{"52":{"position":[[675,8]]}},"keywords":{}}],["phase",{"_index":947,"title":{},"content":{"84":{"position":[[867,6]]}},"keywords":{}}],["piec",{"_index":799,"title":{},"content":{"64":{"position":[[282,5]]}},"keywords":{}}],["place",{"_index":882,"title":{},"content":{"77":{"position":[[121,5]]},"85":{"position":[[29,5]]}},"keywords":{}}],["plan",{"_index":999,"title":{},"content":{"98":{"position":[[294,5]]}},"keywords":{}}],["platform",{"_index":500,"title":{},"content":{"28":{"position":[[69,9],[173,8],[286,8]]}},"keywords":{}}],["pleas",{"_index":261,"title":{},"content":{"9":{"position":[[834,6]]},"12":{"position":[[510,6]]},"28":{"position":[[320,6]]},"43":{"position":[[586,6]]},"65":{"position":[[206,6]]},"82":{"position":[[650,6]]},"85":{"position":[[783,6]]},"88":{"position":[[406,6]]},"98":{"position":[[1,6]]}},"keywords":{}}],["pleasant",{"_index":699,"title":{},"content":{"52":{"position":[[716,8]]}},"keywords":{}}],["plethora",{"_index":663,"title":{},"content":{"52":{"position":[[44,8]]}},"keywords":{}}],["plugin",{"_index":91,"title":{"21":{"position":[[10,7]]},"35":{"position":[[0,7]]},"37":{"position":[[10,8]]},"38":{"position":[[11,7]]},"66":{"position":[[0,6]]},"92":{"position":[[0,6]]}},"content":{"2":{"position":[[1576,8]]},"11":{"position":[[1381,7]]},"21":{"position":[[10,7],[41,7]]},"36":{"position":[[10,7],[87,8]]},"37":{"position":[[15,7],[78,7]]},"38":{"position":[[20,7],[36,6]]},"53":{"position":[[36,7]]},"60":{"position":[[21,8]]},"63":{"position":[[61,6]]},"66":{"position":[[0,6],[23,6],[167,7],[260,7],[340,6],[501,7],[1071,6],[1144,6],[1225,6],[1292,6],[1413,6]]},"90":{"position":[[57,6]]},"92":{"position":[[35,6],[404,8],[514,6]]},"93":{"position":[[22,6]]},"96":{"position":[[170,6],[351,7]]},"97":{"position":[[68,7]]},"98":{"position":[[62,6],[229,7]]}},"keywords":{}}],["plugin)us",{"_index":646,"title":{},"content":{"51":{"position":[[514,12]]}},"keywords":{}}],["point",{"_index":52,"title":{},"content":{"2":{"position":[[645,7]]},"83":{"position":[[217,5]]}},"keywords":{}}],["popul",{"_index":880,"title":{"77":{"position":[[0,8]]},"78":{"position":[[5,10]]}},"content":{},"keywords":{}}],["possibl",{"_index":354,"title":{},"content":{"12":{"position":[[107,8]]},"31":{"position":[[110,8],[904,8]]},"45":{"position":[[7,8]]},"49":{"position":[[190,8],[263,8]]},"52":{"position":[[728,9]]},"78":{"position":[[12,8]]}},"keywords":{}}],["pre",{"_index":723,"title":{},"content":{"53":{"position":[[57,3]]}},"keywords":{}}],["prefer",{"_index":459,"title":{},"content":{"24":{"position":[[73,9]]},"26":{"position":[[78,9]]},"88":{"position":[[58,10]]}},"keywords":{}}],["prepar",{"_index":944,"title":{},"content":{"84":{"position":[[473,7],[792,7]]}},"keywords":{}}],["present",{"_index":937,"title":{},"content":{"83":{"position":[[273,7]]}},"keywords":{}}],["pretti",{"_index":863,"title":{},"content":{"74":{"position":[[9,6]]}},"keywords":{}}],["previou",{"_index":536,"title":{},"content":{"31":{"position":[[688,8]]},"43":{"position":[[25,8]]}},"keywords":{}}],["primit",{"_index":920,"title":{"81":{"position":[[3,9]]}},"content":{"81":{"position":[[41,9]]}},"keywords":{}}],["prior",{"_index":561,"title":{},"content":{"43":{"position":[[177,5]]},"82":{"position":[[497,5]]}},"keywords":{}}],["prisma",{"_index":757,"title":{"58":{"position":[[0,6]]}},"content":{"59":{"position":[[59,6]]},"63":{"position":[[7,6]]},"90":{"position":[[300,6],[312,6]]},"91":{"position":[[33,6],[90,6]]},"92":{"position":[[319,8]]}},"keywords":{}}],["prisma.$transact",{"_index":768,"title":{},"content":{"61":{"position":[[203,21]]},"93":{"position":[[1421,19]]}},"keywords":{}}],["prisma/cli",{"_index":790,"title":{},"content":{"63":{"position":[[141,15],[225,16]]}},"keywords":{}}],["prismacli",{"_index":760,"title":{},"content":{"60":{"position":[[95,12],[208,12]]},"61":{"position":[[102,12],[317,12]]},"62":{"position":[[598,12]]},"91":{"position":[[215,12]]},"92":{"position":[[682,13]]},"93":{"position":[[1401,12]]}},"keywords":{}}],["prismainjectiontoken",{"_index":763,"title":{},"content":{"60":{"position":[[221,21]]},"92":{"position":[[660,21]]}},"keywords":{}}],["prismamodul",{"_index":761,"title":{},"content":{"60":{"position":[[120,12]]},"91":{"position":[[185,12]]},"92":{"position":[[370,13],[450,12],[530,15]]}},"keywords":{}}],["prismaservic",{"_index":764,"title":{},"content":{"60":{"position":[[243,14]]}},"keywords":{}}],["privat",{"_index":213,"title":{},"content":{"7":{"position":[[644,7],[687,7]]},"55":{"position":[[569,7],[634,7]]},"62":{"position":[[442,7]]},"65":{"position":[[684,7],[718,7],[1090,7]]},"79":{"position":[[1078,7]]},"84":{"position":[[311,7],[354,7]]},"93":{"position":[[673,7],[749,7],[1122,7]]},"94":{"position":[[336,7],[412,7]]}},"keywords":{}}],["probabl",{"_index":540,"title":{},"content":{"31":{"position":[[1021,8]]}},"keywords":{}}],["process",{"_index":418,"title":{},"content":{"20":{"position":[[558,7]]}},"keywords":{}}],["product",{"_index":816,"title":{},"content":{"66":{"position":[[117,11]]}},"keywords":{}}],["programmat",{"_index":3,"title":{},"content":{"0":{"position":[[31,12]]}},"keywords":{}}],["project",{"_index":169,"title":{},"content":{"5":{"position":[[99,7]]}},"keywords":{}}],["promis",{"_index":802,"title":{},"content":{"65":{"position":[[363,9]]},"97":{"position":[[483,7],[527,7],[670,7]]}},"keywords":{}}],["promise<account>",{"_index":977,"title":{},"content":{"93":{"position":[[1243,22]]}},"keywords":{}}],["promise<string>",{"_index":311,"title":{},"content":{"11":{"position":[[489,21],[563,21]]}},"keywords":{}}],["promise<user>",{"_index":973,"title":{},"content":{"93":{"position":[[835,19]]},"94":{"position":[[515,19]]},"95":{"position":[[407,19],[602,19]]}},"keywords":{}}],["promise<void>",{"_index":83,"title":{},"content":{"2":{"position":[[1420,19],[1509,19]]},"11":{"position":[[932,20],[1014,20]]},"66":{"position":[[697,20],[820,20],[983,20]]}},"keywords":{}}],["propag",{"_index":642,"title":{},"content":{"51":{"position":[[350,11]]},"93":{"position":[[1545,10]]}},"keywords":{}}],["proper",{"_index":571,"title":{},"content":{"45":{"position":[[73,6]]}},"keywords":{}}],["properli",{"_index":813,"title":{},"content":{"65":{"position":[[1272,8]]}},"keywords":{}}],["properti",{"_index":112,"title":{},"content":{"3":{"position":[[394,10],[485,10]]},"46":{"position":[[921,8]]},"61":{"position":[[8,8]]},"81":{"position":[[143,8]]},"82":{"position":[[319,8]]},"85":{"position":[[269,8]]},"93":{"position":[[470,8]]},"96":{"position":[[83,11]]}},"keywords":{}}],["protocol",{"_index":543,"title":{},"content":{"31":{"position":[[1173,10]]}},"keywords":{}}],["provid",{"_index":18,"title":{"48":{"position":[[15,9]]},"55":{"position":[[27,10]]},"75":{"position":[[6,9]]},"76":{"position":[[12,10]]},"78":{"position":[[22,9]]},"79":{"position":[[14,10]]},"83":{"position":[[28,10]]}},"content":{"2":{"position":[[27,8],[1477,10]]},"4":{"position":[[40,8],[277,10]]},"6":{"position":[[112,8]]},"7":{"position":[[1270,10]]},"9":{"position":[[539,9],[635,10]]},"10":{"position":[[67,10],[119,10],[344,9],[373,9],[542,9],[579,9],[644,9],[887,9],[1062,9],[1176,9],[1329,9],[1385,8]]},"11":{"position":[[1250,9]]},"12":{"position":[[170,8]]},"19":{"position":[[113,10],[225,8],[399,10],[414,8]]},"20":{"position":[[141,8],[361,7],[991,8]]},"43":{"position":[[734,7]]},"48":{"position":[[144,8],[276,10],[291,8]]},"51":{"position":[[592,9],[749,9]]},"53":{"position":[[191,9]]},"55":{"position":[[39,9],[216,8],[341,8],[413,8]]},"57":{"position":[[229,9],[449,9]]},"60":{"position":[[111,8]]},"66":{"position":[[1125,9],[1151,9],[1164,11],[1176,11],[1206,9],[1232,8],[1368,9]]},"68":{"position":[[86,8]]},"70":{"position":[[242,10]]},"74":{"position":[[62,8]]},"76":{"position":[[7,9],[46,10],[246,9],[332,8]]},"77":{"position":[[9,8]]},"78":{"position":[[37,9],[62,8],[194,9],[501,8],[689,8],[838,9]]},"79":{"position":[[26,10],[51,9],[196,8],[302,8],[825,9],[979,7]]},"81":{"position":[[15,9],[78,8]]},"82":{"position":[[347,8],[371,8],[553,8]]},"83":{"position":[[19,9]]},"84":{"position":[[102,8],[242,10],[550,8],[824,9]]},"85":{"position":[[596,10],[611,8]]},"88":{"position":[[221,10],[236,8]]},"90":{"position":[[112,7]]},"91":{"position":[[204,8]]},"92":{"position":[[714,10],[820,8]]},"95":{"position":[[264,8]]},"97":{"position":[[79,8]]}},"keywords":{}}],["provide?:ani",{"_index":273,"title":{},"content":{"10":{"position":[[293,12]]}},"keywords":{}}],["proxi",{"_index":14,"title":{"55":{"position":[[21,5]]},"75":{"position":[[0,5]]},"76":{"position":[[6,5]]},"78":{"position":[[16,5]]},"79":{"position":[[8,5]]},"82":{"position":[[9,7]]},"83":{"position":[[22,5]]}},"content":{"2":{"position":[[1471,5]]},"7":{"position":[[1264,5]]},"9":{"position":[[533,5],[629,5]]},"10":{"position":[[61,5],[113,5],[686,6],[881,5],[1323,5],[1379,5]]},"11":{"position":[[1244,5]]},"19":{"position":[[107,5]]},"53":{"position":[[185,5]]},"55":{"position":[[33,5],[210,5],[357,7],[432,7],[561,7],[626,7]]},"57":{"position":[[223,5],[443,5]]},"76":{"position":[[240,5],[530,5]]},"77":{"position":[[248,5]]},"78":{"position":[[56,5],[188,5],[683,5]]},"79":{"position":[[37,5]]},"81":{"position":[[1,5],[101,5]]},"82":{"position":[[31,7],[68,5],[547,5]]},"83":{"position":[[13,5]]},"84":{"position":[[96,5],[236,5],[544,5],[818,5]]}},"keywords":{"0":{"position":[[64,5]]},"1":{"position":[[64,5]]},"4":{"position":[[64,5]]},"5":{"position":[[64,5]]},"6":{"position":[[64,5]]},"7":{"position":[[64,5]]},"8":{"position":[[64,5]]},"12":{"position":[[64,5]]},"13":{"position":[[64,5]]},"14":{"position":[[64,5]]},"17":{"position":[[64,5]]},"20":{"position":[[64,5]]},"21":{"position":[[64,5]]},"22":{"position":[[64,5]]},"23":{"position":[[64,5]]},"30":{"position":[[64,5]]},"31":{"position":[[64,5]]},"32":{"position":[[64,5]]},"35":{"position":[[64,5]]},"39":{"position":[[64,5]]},"44":{"position":[[64,5]]},"50":{"position":[[64,5]]},"54":{"position":[[64,5]]},"58":{"position":[[64,5]]},"64":{"position":[[64,5]]},"65":{"position":[[64,5]]},"66":{"position":[[64,5]]},"67":{"position":[[64,5]]},"75":{"position":[[64,5]]},"85":{"position":[[64,5]]},"86":{"position":[[64,5]]},"89":{"position":[[64,5]]}}}],["proxyproviders?:typ",{"_index":250,"title":{},"content":{"9":{"position":[[501,22]]}},"keywords":{}}],["publish",{"_index":450,"title":{},"content":{"21":{"position":[[111,9]]}},"keywords":{}}],["purpos",{"_index":413,"title":{},"content":{"20":{"position":[[108,7]]}},"keywords":{}}],["purposeskeep",{"_index":632,"title":{},"content":{"51":{"position":[[114,15]]}},"keywords":{}}],["put",{"_index":326,"title":{},"content":{"11":{"position":[[1120,3]]}},"keywords":{}}],["qualiti",{"_index":865,"title":{},"content":{"74":{"position":[[76,7]]}},"keywords":{}}],["queri",{"_index":473,"title":{},"content":{"25":{"position":[[114,7]]},"52":{"position":[[339,6]]}},"keywords":{}}],["queue",{"_index":193,"title":{},"content":{"7":{"position":[[201,6]]}},"keywords":{}}],["quick",{"_index":177,"title":{"67":{"position":[[0,5]]}},"content":{"6":{"position":[[79,5]]}},"keywords":{}}],["quickli",{"_index":426,"title":{},"content":{"20":{"position":[[1028,7]]}},"keywords":{}}],["quot;<44c2d8ff",{"_index":441,"title":{},"content":{"20":{"position":[[1511,18]]}},"keywords":{}}],["quot;apply"",{"_index":923,"title":{},"content":{"82":{"position":[[143,17]]}},"keywords":{}}],["quot;official"",{"_index":817,"title":{},"content":{"66":{"position":[[146,20]]}},"keywords":{}}],["quot;polluting"",{"_index":610,"title":{},"content":{"48":{"position":[[481,21]]}},"keywords":{}}],["quot;request"",{"_index":647,"title":{},"content":{"51":{"position":[[527,19]]}},"keywords":{}}],["rare",{"_index":531,"title":{},"content":{"31":{"position":[[331,4]]}},"keywords":{}}],["raw",{"_index":979,"title":{},"content":{"93":{"position":[[1397,3]]}},"keywords":{}}],["re",{"_index":108,"title":{},"content":{"3":{"position":[[366,2]]},"15":{"position":[[178,4]]}},"keywords":{}}],["read",{"_index":866,"title":{},"content":{"74":{"position":[[105,4]]}},"keywords":{}}],["readabl",{"_index":983,"title":{},"content":{"94":{"position":[[165,9]]}},"keywords":{}}],["readonli",{"_index":214,"title":{},"content":{"7":{"position":[[652,8],[695,8]]},"20":{"position":[[1169,8],[1424,8]]},"46":{"position":[[165,8]]},"55":{"position":[[577,8],[642,8]]},"62":{"position":[[71,8],[450,8]]},"65":{"position":[[692,8],[726,8]]},"71":{"position":[[302,8]]},"72":{"position":[[327,8]]},"73":{"position":[[237,8]]},"77":{"position":[[279,8]]},"79":{"position":[[1086,8]]},"84":{"position":[[319,8],[362,8],[939,8]]},"93":{"position":[[681,8],[757,8],[1130,8]]},"94":{"position":[[344,8],[420,8]]}},"keywords":{}}],["real",{"_index":748,"title":{},"content":{"56":{"position":[[110,4]]}},"keywords":{}}],["realli",{"_index":867,"title":{},"content":{"74":{"position":[[140,6]]}},"keywords":{}}],["receiv",{"_index":417,"title":{},"content":{"20":{"position":[[428,8]]},"65":{"position":[[428,7],[471,7]]}},"keywords":{}}],["record",{"_index":670,"title":{},"content":{"52":{"position":[[197,7]]}},"keywords":{}}],["redirect",{"_index":878,"title":{},"content":{"76":{"position":[[542,9]]}},"keywords":{}}],["refer",{"_index":275,"title":{},"content":{"10":{"position":[[424,9]]},"38":{"position":[[47,10]]},"49":{"position":[[100,11]]},"61":{"position":[[74,6],[295,6]]},"65":{"position":[[573,9]]},"92":{"position":[[933,10]]},"93":{"position":[[136,10],[379,10]]},"97":{"position":[[124,9],[369,6]]}},"keywords":{}}],["reflect",{"_index":113,"title":{},"content":{"3":{"position":[[417,9]]}},"keywords":{}}],["reflected.overrid",{"_index":118,"title":{},"content":{"3":{"position":[[623,18]]}},"keywords":{}}],["reflected.reus",{"_index":115,"title":{},"content":{"3":{"position":[[504,15]]}},"keywords":{}}],["regardless",{"_index":930,"title":{},"content":{"82":{"position":[[588,10]]}},"keywords":{}}],["regist",{"_index":90,"title":{"70":{"position":[[0,8]]}},"content":{"2":{"position":[[1565,10]]},"9":{"position":[[564,10]]},"10":{"position":[[50,8]]},"11":{"position":[[1288,12]]},"18":{"position":[[47,8]]},"19":{"position":[[98,8]]},"70":{"position":[[1,8]]},"76":{"position":[[227,8]]},"79":{"position":[[94,10]]},"92":{"position":[[8,8],[792,9]]},"93":{"position":[[29,11]]}},"keywords":{}}],["registerasync",{"_index":394,"title":{},"content":{"18":{"position":[[63,14]]}},"keywords":{}}],["registr",{"_index":330,"title":{"18":{"position":[[5,12]]},"60":{"position":[[0,13]]},"92":{"position":[[7,13]]}},"content":{"11":{"position":[[1418,12]]},"18":{"position":[[10,12]]},"41":{"position":[[124,12]]},"76":{"position":[[287,13]]},"78":{"position":[[571,12]]}},"keywords":{}}],["regular",{"_index":769,"title":{},"content":{"61":{"position":[[309,7]]},"76":{"position":[[32,7]]}},"keywords":{}}],["relat",{"_index":829,"title":{},"content":{"66":{"position":[[1420,7]]}},"keywords":{}}],["reli",{"_index":188,"title":{},"content":{"7":{"position":[[63,6]]},"31":{"position":[[953,4]]},"66":{"position":[[103,4]]},"84":{"position":[[226,6]]}},"keywords":{}}],["rememb",{"_index":497,"title":{},"content":{"27":{"position":[[536,8]]}},"keywords":{}}],["renam",{"_index":392,"title":{"18":{"position":[[25,8]]}},"content":{"18":{"position":[[34,7]]}},"keywords":{}}],["replac",{"_index":659,"title":{},"content":{"51":{"position":[[971,8]]},"78":{"position":[[795,7]]}},"keywords":{}}],["repositori",{"_index":674,"title":{},"content":{"52":{"position":[[280,10]]}},"keywords":{}}],["req",{"_index":323,"title":{},"content":{"11":{"position":[[905,4]]},"15":{"position":[[164,4]]},"16":{"position":[[174,3]]},"20":{"position":[[852,5]]},"34":{"position":[[204,5]]},"79":{"position":[[430,5]]}},"keywords":{}}],["req.headers['x",{"_index":423,"title":{},"content":{"20":{"position":[[873,14]]}},"keywords":{}}],["req.params('tenant_id",{"_index":386,"title":{},"content":{"15":{"position":[[222,25]]},"16":{"position":[[253,25]]}},"keywords":{}}],["req.params['tenantid",{"_index":911,"title":{},"content":{"79":{"position":[[508,23]]}},"keywords":{}}],["request",{"_index":9,"title":{"7":{"position":[[21,7]]},"20":{"position":[[0,7]]},"84":{"position":[[12,8]]}},"content":{"2":{"position":[[288,7]]},"4":{"position":[[186,7],[231,7],[262,7],[327,7]]},"7":{"position":[[21,7],[145,7]]},"9":{"position":[[1079,7]]},"11":{"position":[[391,7],[465,8],[625,7],[650,7],[910,8],[1610,7]]},"15":{"position":[[27,7],[169,8]]},"20":{"position":[[0,7],[74,7],[186,7],[441,7],[698,7],[718,7],[858,8],[888,7]]},"25":{"position":[[133,8]]},"31":{"position":[[87,8],[200,8],[642,8],[697,7],[715,7],[884,7]]},"51":{"position":[[72,7],[577,7],[734,7]]},"64":{"position":[[366,7]]},"65":{"position":[[192,8],[391,8],[438,7]]},"70":{"position":[[89,7]]},"71":{"position":[[140,7],[418,7]]},"73":{"position":[[145,7]]},"77":{"position":[[390,7]]},"78":{"position":[[345,8],[354,8],[823,7]]},"79":{"position":[[436,8],[745,7]]},"83":{"position":[[230,7]]},"84":{"position":[[51,8]]}},"keywords":{"0":{"position":[[16,7]]},"1":{"position":[[16,7]]},"4":{"position":[[16,7]]},"5":{"position":[[16,7]]},"6":{"position":[[16,7]]},"7":{"position":[[16,7]]},"8":{"position":[[16,7]]},"12":{"position":[[16,7]]},"13":{"position":[[16,7]]},"14":{"position":[[16,7]]},"17":{"position":[[16,7]]},"20":{"position":[[16,7]]},"21":{"position":[[16,7]]},"22":{"position":[[16,7]]},"23":{"position":[[16,7]]},"30":{"position":[[16,7]]},"31":{"position":[[16,7]]},"32":{"position":[[16,7]]},"35":{"position":[[16,7]]},"39":{"position":[[16,7]]},"44":{"position":[[16,7]]},"50":{"position":[[16,7]]},"54":{"position":[[16,7]]},"58":{"position":[[16,7]]},"64":{"position":[[16,7]]},"65":{"position":[[16,7]]},"66":{"position":[[16,7]]},"67":{"position":[[16,7]]},"75":{"position":[[16,7]]},"85":{"position":[[16,7]]},"86":{"position":[[16,7]]},"89":{"position":[[16,7]]}}}],["request'",{"_index":671,"title":{},"content":{"52":{"position":[[240,9]]}},"keywords":{}}],["request.connection.remoteaddress",{"_index":850,"title":{},"content":{"71":{"position":[[480,33]]}},"keywords":{}}],["request.user.id",{"_index":886,"title":{},"content":{"77":{"position":[[509,16]]},"78":{"position":[[403,16]]}},"keywords":{}}],["requestmak",{"_index":633,"title":{},"content":{"51":{"position":[[169,13]]}},"keywords":{}}],["requir",{"_index":149,"title":{},"content":{"4":{"position":[[397,8]]},"10":{"position":[[562,8]]},"13":{"position":[[135,8]]},"29":{"position":[[76,8]]},"31":{"position":[[1068,7]]},"53":{"position":[[378,8]]},"55":{"position":[[267,8]]},"83":{"position":[[160,8]]}},"keywords":{}}],["resolut",{"_index":86,"title":{"83":{"position":[[8,10]]}},"content":{"2":{"position":[[1457,10]]},"83":{"position":[[178,10]]},"84":{"position":[[559,10]]}},"keywords":{}}],["resolv",{"_index":294,"title":{},"content":{"10":{"position":[[1256,8]]},"11":{"position":[[1236,7]]},"20":{"position":[[588,7]]},"26":{"position":[[27,9]]},"27":{"position":[[142,10]]},"57":{"position":[[435,7]]},"79":{"position":[[222,8]]},"83":{"position":[[33,8]]},"84":{"position":[[842,8]]}},"keywords":{}}],["resolveproxyprovid",{"_index":82,"title":{"57":{"position":[[19,21]]}},"content":{"2":{"position":[[1395,24]]},"11":{"position":[[1444,21]]},"57":{"position":[[541,21]]},"83":{"position":[[316,21],[472,22]]}},"keywords":{}}],["resolveproxyproviders?:boolean",{"_index":327,"title":{},"content":{"11":{"position":[[1165,30]]}},"keywords":{}}],["resourcesseamlessli",{"_index":641,"title":{},"content":{"51":{"position":[[330,19]]}},"keywords":{}}],["resp",{"_index":393,"title":{},"content":{"18":{"position":[[56,6],[89,6]]}},"keywords":{}}],["respect",{"_index":518,"title":{},"content":{"29":{"position":[[26,7]]},"43":{"position":[[655,7]]}},"keywords":{}}],["respons",{"_index":202,"title":{},"content":{"7":{"position":[[391,11]]},"11":{"position":[[1739,8]]},"15":{"position":[[39,8],[183,9]]}},"keywords":{}}],["rest",{"_index":457,"title":{"24":{"position":[[0,5]]}},"content":{"24":{"position":[[48,4]]},"56":{"position":[[380,4]]},"85":{"position":[[917,4]]}},"keywords":{}}],["restrict",{"_index":640,"title":{},"content":{"51":{"position":[[311,8]]}},"keywords":{}}],["result",{"_index":435,"title":{},"content":{"20":{"position":[[1328,7]]},"25":{"position":[[37,6]]},"46":{"position":[[935,6]]},"79":{"position":[[761,6]]}},"keywords":{}}],["retriev",{"_index":31,"title":{},"content":{"2":{"position":[[212,8],[275,8]]},"4":{"position":[[80,10]]},"12":{"position":[[275,8]]},"20":{"position":[[683,10],[1036,8],[1339,10]]},"45":{"position":[[121,10]]},"69":{"position":[[98,10]]},"73":{"position":[[27,8]]},"92":{"position":[[900,8]]},"93":{"position":[[103,8],[346,8]]}},"keywords":{}}],["return",{"_index":293,"title":{},"content":{"10":{"position":[[1244,7]]},"11":{"position":[[778,7]]},"20":{"position":[[577,6]]},"46":{"position":[[760,7]]},"55":{"position":[[113,6]]},"62":{"position":[[611,6],[704,6]]},"65":{"position":[[354,6],[856,6],[1043,6],[1113,6]]},"71":{"position":[[542,6]]},"72":{"position":[[388,6]]},"73":{"position":[[314,6]]},"77":{"position":[[552,6]]},"79":{"position":[[598,6],[1141,6]]},"81":{"position":[[32,6],[227,7]]},"82":{"position":[[266,7],[418,6],[569,8]]},"84":{"position":[[116,6]]},"93":{"position":[[529,7],[857,6],[1033,6],[1268,6]]},"94":{"position":[[661,6]]},"95":{"position":[[553,6],[624,6],[836,6]]},"97":{"position":[[794,7]]}},"keywords":{}}],["reus",{"_index":95,"title":{},"content":{"3":{"position":[[117,7],[522,5]]}},"keywords":{}}],["role",{"_index":639,"title":{},"content":{"51":{"position":[[303,4]]},"76":{"position":[[206,5]]},"78":{"position":[[301,5]]}},"keywords":{}}],["rolemodul",{"_index":900,"title":{},"content":{"78":{"position":[[706,13]]}},"keywords":{}}],["roleservic",{"_index":896,"title":{},"content":{"78":{"position":[[363,12],[376,12],[654,11]]}},"keywords":{}}],["roleservice.getforid(request.user.id",{"_index":899,"title":{},"content":{"78":{"position":[[432,38]]}},"keywords":{}}],["root",{"_index":252,"title":{"18":{"position":[[0,4]]}},"content":{"9":{"position":[[582,4]]},"18":{"position":[[5,4]]},"88":{"position":[[122,4]]}},"keywords":{}}],["rout",{"_index":305,"title":{},"content":{"11":{"position":[[263,5]]},"41":{"position":[[54,7]]},"70":{"position":[[128,7]]}},"keywords":{}}],["run",{"_index":60,"title":{},"content":{"2":{"position":[[740,3],[884,3],[1014,3],[1147,3],[1258,3],[1360,4]]},"3":{"position":[[5,3],[306,3],[644,3]]},"11":{"position":[[1354,3],[1431,5],[2106,4]]},"31":{"position":[[271,5],[492,5],[1095,3]]},"43":{"position":[[173,3]]},"52":{"position":[[808,3]]},"85":{"position":[[822,3]]},"97":{"position":[[535,4],[678,4]]}},"keywords":{}}],["run(callback",{"_index":53,"title":{},"content":{"2":{"position":[[653,13]]}},"keywords":{}}],["run(opt",{"_index":57,"title":{},"content":{"2":{"position":[[682,12]]}},"keywords":{}}],["runtransact",{"_index":773,"title":{},"content":{"62":{"position":[[138,16]]}},"keywords":{}}],["runwith(stor",{"_index":65,"title":{},"content":{"2":{"position":[[841,14]]}},"keywords":{}}],["s",{"_index":21,"title":{},"content":{"2":{"position":[[90,1],[155,1],[201,3],[348,3],[413,2],[495,2],[856,2],[1138,3]]}},"keywords":{}}],["s[key",{"_index":30,"title":{},"content":{"2":{"position":[[205,6],[423,8],[505,8]]}},"keywords":{}}],["sadli",{"_index":492,"title":{},"content":{"27":{"position":[[309,7]]}},"keywords":{}}],["safe",{"_index":527,"title":{"45":{"position":[[5,4]]}},"content":{"31":{"position":[[60,4],[266,4],[433,4]]},"46":{"position":[[106,4]]},"66":{"position":[[178,4]]}},"keywords":{}}],["safer",{"_index":342,"title":{},"content":{"11":{"position":[[1975,5]]},"27":{"position":[[479,5]]},"85":{"position":[[194,5]]}},"keywords":{}}],["safeti",{"_index":568,"title":{"44":{"position":[[5,6]]}},"content":{"53":{"position":[[339,6]]}},"keywords":{}}],["same",{"_index":162,"title":{},"content":{"4":{"position":[[611,4],[649,4]]},"9":{"position":[[894,4]]},"27":{"position":[[321,4]]},"52":{"position":[[219,4],[458,4]]},"62":{"position":[[193,4]]},"66":{"position":[[216,4]]},"72":{"position":[[76,4]]}},"keywords":{}}],["save",{"_index":981,"title":{},"content":{"94":{"position":[[109,5]]}},"keywords":{}}],["savereq?:boolean",{"_index":334,"title":{},"content":{"11":{"position":[[1557,16]]}},"keywords":{}}],["saveres?:boolean",{"_index":336,"title":{},"content":{"11":{"position":[[1685,16]]}},"keywords":{}}],["sayhello",{"_index":861,"title":{},"content":{"73":{"position":[[266,10]]}},"keywords":{}}],["scope",{"_index":10,"title":{},"content":{"4":{"position":[[270,6]]},"21":{"position":[[143,5]]},"51":{"position":[[585,6],[742,6]]},"73":{"position":[[153,7]]},"78":{"position":[[831,6]]},"79":{"position":[[894,5]]},"97":{"position":[[755,7],[861,6]]}},"keywords":{"0":{"position":[[25,5]]},"1":{"position":[[25,5]]},"4":{"position":[[25,5]]},"5":{"position":[[25,5]]},"6":{"position":[[25,5]]},"7":{"position":[[25,5]]},"8":{"position":[[25,5]]},"12":{"position":[[25,5]]},"13":{"position":[[25,5]]},"14":{"position":[[25,5]]},"17":{"position":[[25,5]]},"20":{"position":[[25,5]]},"21":{"position":[[25,5]]},"22":{"position":[[25,5]]},"23":{"position":[[25,5]]},"30":{"position":[[25,5]]},"31":{"position":[[25,5]]},"32":{"position":[[25,5]]},"35":{"position":[[25,5]]},"39":{"position":[[25,5]]},"44":{"position":[[25,5]]},"50":{"position":[[25,5]]},"54":{"position":[[25,5]]},"58":{"position":[[25,5]]},"64":{"position":[[25,5]]},"65":{"position":[[25,5]]},"66":{"position":[[25,5]]},"67":{"position":[[25,5]]},"75":{"position":[[25,5]]},"85":{"position":[[25,5]]},"86":{"position":[[25,5]]},"89":{"position":[[25,5]]}}}],["seamlessli",{"_index":226,"title":{},"content":{"7":{"position":[[1064,11]]}},"keywords":{}}],["second",{"_index":383,"title":{},"content":{"15":{"position":[[74,6]]},"16":{"position":[[71,6]]}},"keywords":{}}],["section",{"_index":447,"title":{},"content":{"21":{"position":[[23,7]]},"64":{"position":[[374,8]]}},"keywords":{}}],["secur",{"_index":155,"title":{"31":{"position":[[0,8]]}},"content":{"4":{"position":[[494,8]]},"31":{"position":[[0,8]]},"88":{"position":[[518,8]]}},"keywords":{}}],["see",{"_index":154,"title":{},"content":{"4":{"position":[[490,3]]},"9":{"position":[[161,3],[247,3],[351,3]]},"10":{"position":[[1451,3]]},"24":{"position":[[327,3]]},"29":{"position":[[218,4]]},"37":{"position":[[60,3]]},"38":{"position":[[28,3]]},"43":{"position":[[281,3]]},"49":{"position":[[711,3]]},"53":{"position":[[117,4],[283,3]]},"69":{"position":[[278,3]]},"82":{"position":[[657,3]]},"90":{"position":[[307,4]]},"92":{"position":[[625,3]]}},"keywords":{}}],["self",{"_index":889,"title":{"78":{"position":[[0,4]]}},"content":{},"keywords":{}}],["separ",{"_index":892,"title":{},"content":{"78":{"position":[[103,8]]}},"keywords":{}}],["serializ",{"_index":989,"title":{},"content":{"95":{"position":[[357,14],[677,14]]}},"keywords":{}}],["servic",{"_index":15,"title":{"1":{"position":[[0,7]]},"73":{"position":[[22,8]]}},"content":{"51":{"position":[[390,8]]},"69":{"position":[[117,7]]},"79":{"position":[[941,8]]},"91":{"position":[[251,8]]}},"keywords":{}}],["set",{"_index":44,"title":{"32":{"position":[[0,7]]}},"content":{"2":{"position":[[437,3],[519,3],[581,4]]},"3":{"position":[[84,9],[138,4]]},"4":{"position":[[409,3],[568,3]]},"7":{"position":[[331,3],[570,3]]},"9":{"position":[[962,3],[1071,3]]},"11":{"position":[[1852,3],[1867,3]]},"24":{"position":[[137,3]]},"27":{"position":[[119,3]]},"28":{"position":[[39,3]]},"31":{"position":[[830,3]]},"42":{"position":[[40,3]]},"43":{"position":[[524,11],[674,8]]},"45":{"position":[[135,7]]},"55":{"position":[[298,3]]},"56":{"position":[[190,7]]},"57":{"position":[[284,3],[533,3]]},"64":{"position":[[51,7]]},"68":{"position":[[104,7]]},"69":{"position":[[282,7]]},"72":{"position":[[123,3]]},"82":{"position":[[306,3]]},"83":{"position":[[312,3]]},"84":{"position":[[159,3]]},"95":{"position":[[207,3]]}},"keywords":{}}],["set(key",{"_index":42,"title":{},"content":{"2":{"position":[[398,8]]}},"keywords":{}}],["setifundefined(key",{"_index":45,"title":{},"content":{"2":{"position":[[469,19]]}},"keywords":{}}],["setup",{"_index":227,"title":{"14":{"position":[[15,5]]}},"content":{"7":{"position":[[1086,6]]},"11":{"position":[[1477,7]]},"15":{"position":[[151,6]]},"16":{"position":[[138,6]]},"25":{"position":[[260,5]]},"63":{"position":[[181,6]]},"65":{"position":[[404,5],[885,6],[1177,5]]},"83":{"position":[[57,5]]},"84":{"position":[[774,5],[861,5],[1007,6]]}},"keywords":{}}],["setup?:(cl",{"_index":322,"title":{},"content":{"11":{"position":[[880,12],[953,12]]}},"keywords":{}}],["sever",{"_index":180,"title":{},"content":{"6":{"position":[[121,7]]}},"keywords":{}}],["shallow",{"_index":106,"title":{},"content":{"3":{"position":[[330,7]]}},"keywords":{}}],["share",{"_index":61,"title":{},"content":{"2":{"position":[[762,6],[1042,6],[1295,6]]},"4":{"position":[[178,7]]},"12":{"position":[[459,6]]},"20":{"position":[[24,6]]},"70":{"position":[[102,6]]},"71":{"position":[[81,6]]},"72":{"position":[[81,6]]}},"keywords":{}}],["shorthand",{"_index":37,"title":{},"content":{"2":{"position":[[302,9]]},"20":{"position":[[1002,9]]}},"keywords":{}}],["shutdown",{"_index":826,"title":{},"content":{"66":{"position":[[918,8]]}},"keywords":{}}],["simpl",{"_index":868,"title":{},"content":{"74":{"position":[[147,7]]}},"keywords":{}}],["singl",{"_index":142,"title":{},"content":{"4":{"position":[[224,6]]},"98":{"position":[[85,6]]}},"keywords":{}}],["singleton",{"_index":904,"title":{},"content":{"78":{"position":[[878,10]]},"79":{"position":[[860,9]]}},"keywords":{}}],["slower",{"_index":703,"title":{},"content":{"52":{"position":[[812,7]]}},"keywords":{}}],["solut",{"_index":653,"title":{},"content":{"51":{"position":[[808,9]]}},"keywords":{}}],["solv",{"_index":667,"title":{},"content":{"52":{"position":[[130,5]]}},"keywords":{}}],["solvabl",{"_index":652,"title":{},"content":{"51":{"position":[[719,8]]}},"keywords":{}}],["some_funct",{"_index":927,"title":{},"content":{"82":{"position":[[380,14]]}},"keywords":{}}],["someclass",{"_index":738,"title":{},"content":{"55":{"position":[[375,10],[586,10],[597,10]]}},"keywords":{}}],["somefunct",{"_index":739,"title":{},"content":{"55":{"position":[[461,13]]}},"keywords":{}}],["someservic",{"_index":215,"title":{},"content":{"7":{"position":[[661,12],[674,12]]},"55":{"position":[[519,11]]},"65":{"position":[[657,11],[841,12],[908,12]]},"84":{"position":[[328,12],[341,12],[948,12],[961,13]]}},"keywords":{}}],["someth",{"_index":928,"title":{},"content":{"82":{"position":[[442,9]]}},"keywords":{}}],["sometim",{"_index":186,"title":{},"content":{"7":{"position":[[29,10]]},"41":{"position":[[1,10]]},"43":{"position":[[1,10]]},"52":{"position":[[771,9]]}},"keywords":{}}],["somewher",{"_index":158,"title":{},"content":{"4":{"position":[[533,9]]},"77":{"position":[[106,10]]}},"keywords":{}}],["soon",{"_index":935,"title":{},"content":{"83":{"position":[[45,4]]}},"keywords":{}}],["space",{"_index":133,"title":{},"content":{"4":{"position":[[58,5]]},"48":{"position":[[519,6]]}},"keywords":{}}],["special",{"_index":231,"title":{},"content":{"7":{"position":[[1216,7]]},"29":{"position":[[158,7]]}},"keywords":{}}],["specif",{"_index":668,"title":{},"content":{"52":{"position":[[138,8]]},"79":{"position":[[236,8]]}},"keywords":{}}],["specifi",{"_index":570,"title":{},"content":{"45":{"position":[[19,7]]},"47":{"position":[[171,7]]}},"keywords":{}}],["start",{"_index":178,"title":{"67":{"position":[[6,5]]}},"content":{"6":{"position":[[85,5]]},"45":{"position":[[238,5]]},"92":{"position":[[872,5]]},"93":{"position":[[75,5],[318,5]]}},"keywords":{}}],["startcontextualworkflow(valu",{"_index":808,"title":{},"content":{"65":{"position":[[1002,30]]}},"keywords":{}}],["static",{"_index":355,"title":{},"content":{"12":{"position":[[183,6]]}},"keywords":{}}],["still",{"_index":404,"title":{},"content":{"19":{"position":[[131,5]]},"47":{"position":[[215,5]]},"49":{"position":[[639,5]]},"52":{"position":[[85,5],[517,5]]},"53":{"position":[[495,5]]},"55":{"position":[[242,5]]},"66":{"position":[[37,5]]},"79":{"position":[[849,5]]}},"keywords":{}}],["stop",{"_index":621,"title":{},"content":{"49":{"position":[[352,4]]}},"keywords":{}}],["storag",{"_index":131,"title":{},"content":{"4":{"position":[[32,7],[654,7]]},"7":{"position":[[81,7]]},"12":{"position":[[466,7]]},"20":{"position":[[31,8]]},"68":{"position":[[175,7]]}},"keywords":{}}],["store",{"_index":69,"title":{},"content":{"2":{"position":[[951,7],[1220,7]]},"4":{"position":[[68,7]]},"11":{"position":[[1600,5],[1729,5]]},"20":{"position":[[627,6],[927,6]]},"25":{"position":[[204,5]]},"45":{"position":[[231,6]]},"46":{"position":[[778,5]]},"49":{"position":[[44,5]]},"69":{"position":[[46,5]]},"71":{"position":[[152,6]]},"76":{"position":[[585,6]]},"79":{"position":[[776,6]]}},"keywords":{}}],["strategi",{"_index":650,"title":{},"content":{"51":{"position":[[630,11]]}},"keywords":{}}],["string",{"_index":35,"title":{},"content":{"2":{"position":[[267,7]]},"11":{"position":[[480,6],[554,6],[788,7],[856,6]]},"20":{"position":[[318,6],[604,6],[1211,7]]},"45":{"position":[[350,7]]},"46":{"position":[[340,6]]},"47":{"position":[[229,6],[306,7]]},"49":{"position":[[433,7]]},"62":{"position":[[694,7]]},"65":{"position":[[945,7],[1033,7]]},"66":{"position":[[549,7]]},"76":{"position":[[212,7]]},"78":{"position":[[307,7]]},"93":{"position":[[826,8]]},"94":{"position":[[506,8]]},"95":{"position":[[398,8],[593,8]]}},"keywords":{}}],["subject",{"_index":998,"title":{},"content":{"98":{"position":[[248,7]]}},"keywords":{}}],["subsequ",{"_index":941,"title":{},"content":{"84":{"position":[[205,10]]}},"keywords":{}}],["subtre",{"_index":622,"title":{},"content":{"49":{"position":[[392,8]]}},"keywords":{}}],["succe",{"_index":969,"title":{},"content":{"93":{"position":[[267,7]]}},"keywords":{}}],["such",{"_index":197,"title":{},"content":{"7":{"position":[[260,4]]},"68":{"position":[[280,4]]}},"keywords":{}}],["suppli",{"_index":67,"title":{},"content":{"2":{"position":[[929,9],[1198,9]]},"9":{"position":[[759,6]]}},"keywords":{}}],["support",{"_index":401,"title":{"19":{"position":[[10,7]]}},"content":{"19":{"position":[[21,7]]},"24":{"position":[[38,9]]},"51":{"position":[[610,9]]},"53":{"position":[[24,7]]},"55":{"position":[[248,10]]},"82":{"position":[[13,7]]},"90":{"position":[[534,8]]},"98":{"position":[[74,8],[303,7]]}},"keywords":{}}],["suppos",{"_index":963,"title":{},"content":{"91":{"position":[[159,7]]},"93":{"position":[[148,7]]}},"keywords":{}}],["sure",{"_index":286,"title":{},"content":{"10":{"position":[[902,4]]},"31":{"position":[[849,4]]},"52":{"position":[[357,4]]},"93":{"position":[[453,4]]}},"keywords":{}}],["symbol",{"_index":589,"title":{},"content":{"46":{"position":[[658,6]]},"53":{"position":[[440,6]]}},"keywords":{}}],["sync",{"_index":254,"title":{"33":{"position":[[0,5]]}},"content":{"9":{"position":[[618,4]]},"10":{"position":[[82,4]]}},"keywords":{}}],["synchron",{"_index":316,"title":{},"content":{"11":{"position":[[744,14]]}},"keywords":{}}],["t",{"_index":56,"title":{},"content":{"2":{"position":[[676,3],[680,1],[733,3],[737,2],[878,3],[882,1],[1252,3],[1256,1]]}},"keywords":{}}],["take",{"_index":62,"title":{},"content":{"2":{"position":[[793,5],[1073,5]]},"3":{"position":[[31,4]]},"5":{"position":[[199,4]]},"9":{"position":[[32,5]]},"11":{"position":[[53,4],[640,5],[1524,5]]},"93":{"position":[[1479,5]]},"96":{"position":[[40,5]]},"97":{"position":[[582,5]]}},"keywords":{}}],["taken",{"_index":233,"title":{},"content":{"7":{"position":[[1237,5]]},"31":{"position":[[564,5]]}},"keywords":{}}],["talk",{"_index":691,"title":{},"content":{"52":{"position":[[604,4]]}},"keywords":{}}],["target",{"_index":285,"title":{},"content":{"10":{"position":[[842,6]]},"82":{"position":[[74,6]]}},"keywords":{}}],["techniqu",{"_index":366,"title":{},"content":{"12":{"position":[[584,9]]}},"keywords":{}}],["tediou",{"_index":602,"title":{},"content":{"47":{"position":[[82,8]]}},"keywords":{}}],["tenant",{"_index":634,"title":{},"content":{"51":{"position":[[195,6],[252,6]]},"52":{"position":[[410,6],[427,8]]},"79":{"position":[[245,6]]}},"keywords":{}}],["tenant_connect",{"_index":907,"title":{},"content":{"79":{"position":[[311,18],[646,17],[807,17]]}},"keywords":{}}],["tenantconnect",{"_index":917,"title":{},"content":{"79":{"position":[[1107,17]]}},"keywords":{}}],["tenantid",{"_index":576,"title":{},"content":{"45":{"position":[[340,9]]},"46":{"position":[[309,8],[353,8],[667,10],[859,9]]},"47":{"position":[[296,9]]},"49":{"position":[[423,9],[539,8]]},"52":{"position":[[224,8]]},"79":{"position":[[497,8]]}},"keywords":{}}],["termin",{"_index":611,"title":{"49":{"position":[[0,8]]}},"content":{"49":{"position":[[335,8]]}},"keywords":{}}],["terminal<",{"_index":623,"title":{},"content":{"49":{"position":[[447,13]]}},"keywords":{}}],["test",{"_index":371,"title":{},"content":{"12":{"position":[[708,5]]},"24":{"position":[[151,6]]},"25":{"position":[[349,6]]},"28":{"position":[[102,4]]}},"keywords":{}}],["thank",{"_index":495,"title":{},"content":{"27":{"position":[[507,7]]}},"keywords":{}}],["thar",{"_index":942,"title":{},"content":{"84":{"position":[[221,4]]}},"keywords":{}}],["that'",{"_index":620,"title":{"74":{"position":[[0,6]]}},"content":{"49":{"position":[[302,6]]}},"keywords":{}}],["there'",{"_index":506,"title":{},"content":{"28":{"position":[[197,7]]}},"keywords":{}}],["therefor",{"_index":201,"title":{},"content":{"7":{"position":[[351,10]]},"25":{"position":[[276,10]]},"29":{"position":[[60,9]]},"57":{"position":[[267,9],[463,9]]},"69":{"position":[[212,9]]}},"keywords":{}}],["thing",{"_index":626,"title":{},"content":{"49":{"position":[[666,6]]}},"keywords":{}}],["third",{"_index":384,"title":{},"content":{"15":{"position":[[85,5]]}},"keywords":{}}],["this.accountservice.createaccountforuser(user.id",{"_index":975,"title":{},"content":{"93":{"position":[[982,50]]},"94":{"position":[[610,50]]},"95":{"position":[[502,50],[785,50]]}},"keywords":{}}],["this.appservice.sayhello",{"_index":858,"title":{},"content":{"72":{"position":[[395,27]]}},"keywords":{}}],["this.cls.get",{"_index":593,"title":{},"content":{"46":{"position":[[878,15]]}},"keywords":{}}],["this.cls.get('ip",{"_index":862,"title":{},"content":{"73":{"position":[[294,19]]}},"keywords":{}}],["this.cls.get('tenantid",{"_index":583,"title":{},"content":{"46":{"position":[[364,25]]}},"keywords":{}}],["this.cls.get('us",{"_index":586,"title":{},"content":{"46":{"position":[[546,21]]}},"keywords":{}}],["this.cls.get('user.id",{"_index":585,"title":{},"content":{"46":{"position":[[444,24]]}},"keywords":{}}],["this.cls.get('user.nam",{"_index":597,"title":{},"content":{"46":{"position":[[975,26]]}},"keywords":{}}],["this.cls.resolveproxyprovid",{"_index":946,"title":{},"content":{"84":{"position":[[576,33]]}},"keywords":{}}],["this.cls.run",{"_index":752,"title":{},"content":{"56":{"position":[[322,13]]}},"keywords":{}}],["this.cls.run(async",{"_index":221,"title":{},"content":{"7":{"position":[[864,18]]},"84":{"position":[[440,18]]}},"keywords":{}}],["this.cls.set('ip",{"_index":851,"title":{},"content":{"71":{"position":[[514,18]]}},"keywords":{}}],["this.cls.set('mod",{"_index":222,"title":{},"content":{"7":{"position":[[894,20]]}},"keywords":{}}],["this.cls.set('som",{"_index":945,"title":{},"content":{"84":{"position":[[493,18]]}},"keywords":{}}],["this.cls.set('user.author",{"_index":582,"title":{},"content":{"46":{"position":[[267,31]]}},"keywords":{}}],["this.connection.dogs.getal",{"_index":919,"title":{},"content":{"79":{"position":[[1148,30]]}},"keywords":{}}],["this.functionprovid",{"_index":745,"title":{},"content":{"55":{"position":[[755,23]]}},"keywords":{}}],["this.generateid",{"_index":806,"title":{},"content":{"65":{"position":[[863,18]]}},"keywords":{}}],["this.id",{"_index":897,"title":{},"content":{"78":{"position":[[393,7]]}},"keywords":{}}],["this.logger.log('hello",{"_index":439,"title":{},"content":{"20":{"position":[[1462,25]]}},"keywords":{}}],["this.otherservice.dosomething(valu",{"_index":809,"title":{},"content":{"65":{"position":[[1050,37]]}},"keywords":{}}],["this.rol",{"_index":898,"title":{},"content":{"78":{"position":[[420,9]]}},"keywords":{}}],["this.someclass",{"_index":744,"title":{},"content":{"55":{"position":[[707,16]]}},"keywords":{}}],["this.someservice.dotheth",{"_index":223,"title":{},"content":{"7":{"position":[[930,30],[1173,30]]},"84":{"position":[[616,30],[1096,30]]}},"keywords":{}}],["this.txhost.tx.user.cr",{"_index":784,"title":{},"content":{"62":{"position":[[711,28]]},"93":{"position":[[928,28],[1275,28]]},"94":{"position":[[556,28]]},"95":{"position":[[448,28],[731,28]]}},"keywords":{}}],["this.txhost.tx.user.finduniqu",{"_index":782,"title":{},"content":{"62":{"position":[[618,32]]}},"keywords":{}}],["this.txhost.withtransact",{"_index":990,"title":{},"content":{"95":{"position":[[631,29]]}},"keywords":{}}],["this.txhost.withtransaction(async",{"_index":974,"title":{},"content":{"93":{"position":[[864,33]]}},"keywords":{}}],["this.user.id",{"_index":885,"title":{},"content":{"77":{"position":[[494,12]]}},"keywords":{}}],["this.user.rol",{"_index":887,"title":{},"content":{"77":{"position":[[526,14]]}},"keywords":{}}],["this.userrepository.createuser('john",{"_index":774,"title":{},"content":{"62":{"position":[[229,39]]}},"keywords":{}}],["this.userrepository.getuserbyid(r1.id",{"_index":776,"title":{},"content":{"62":{"position":[[293,39]]}},"keywords":{}}],["those",{"_index":382,"title":{},"content":{"13":{"position":[[236,5]]},"24":{"position":[[467,5]]},"52":{"position":[[191,5]]},"65":{"position":[[342,6]]},"90":{"position":[[231,5]]}},"keywords":{}}],["throughout",{"_index":135,"title":{},"content":{"4":{"position":[[96,10],[339,10]]},"31":{"position":[[171,10]]},"51":{"position":[[148,10]]}},"keywords":{}}],["time",{"_index":263,"title":{},"content":{"9":{"position":[[899,4]]},"11":{"position":[[2016,4]]},"25":{"position":[[81,5]]},"52":{"position":[[684,4]]},"83":{"position":[[431,5]]},"93":{"position":[[165,4]]},"98":{"position":[[26,5]]}},"keywords":{}}],["timeout",{"_index":986,"title":{},"content":{"95":{"position":[[238,8]]}},"keywords":{}}],["tip",{"_index":901,"title":{},"content":{"78":{"position":[[750,3]]}},"keywords":{}}],["todo",{"_index":455,"title":{},"content":{"22":{"position":[[26,5]]}},"keywords":{}}],["token",{"_index":274,"title":{},"content":{"10":{"position":[[323,5],[1051,6],[1216,6]]},"60":{"position":[[195,5]]},"79":{"position":[[987,5]]}},"keywords":{}}],["tool",{"_index":411,"title":{},"content":{"20":{"position":[[56,4]]}},"keywords":{}}],["top",{"_index":110,"title":{},"content":{"3":{"position":[[384,3]]},"12":{"position":[[341,3]]}},"keywords":{}}],["trace",{"_index":715,"title":{},"content":{"52":{"position":[[1005,7]]}},"keywords":{}}],["track",{"_index":145,"title":{},"content":{"4":{"position":[[313,5]]},"20":{"position":[[65,8]]},"51":{"position":[[59,8],[130,5]]}},"keywords":{}}],["transact",{"_index":453,"title":{"94":{"position":[[10,13]]},"95":{"position":[[8,11]]}},"content":{"21":{"position":[[206,13]]},"51":{"position":[[371,11],[500,13]]},"61":{"position":[[88,13],[139,13],[269,13],[360,13]]},"62":{"position":[[115,16],[198,11],[584,13]]},"90":{"position":[[131,13],[522,11]]},"91":{"position":[[315,14]]},"92":{"position":[[21,13],[884,11],[921,11]]},"93":{"position":[[87,11],[124,11],[330,11],[367,11],[1520,11]]},"94":{"position":[[5,14],[466,16]]},"95":{"position":[[45,13],[179,12]]},"97":{"position":[[112,11],[158,12],[269,11],[300,11],[324,11],[346,11],[395,13],[439,11],[558,12],[706,11],[824,11]]},"98":{"position":[[215,13]]}},"keywords":{}}],["transactional<transactionaladapterprisma>",{"_index":987,"title":{},"content":{"95":{"position":[[290,50]]}},"keywords":{}}],["transactionaladapt",{"_index":991,"title":{},"content":{"96":{"position":[[275,20]]}},"keywords":{}}],["transactionaladapterprisma",{"_index":762,"title":{},"content":{"60":{"position":[[149,28]]},"92":{"position":[[250,26],[559,28]]}},"keywords":{}}],["transactionhost",{"_index":968,"title":{"93":{"position":[[10,16]]},"97":{"position":[[0,15]]}},"content":{"92":{"position":[[804,15]]},"93":{"position":[[56,15],[299,15]]},"97":{"position":[[5,15]]},"98":{"position":[[320,15]]}},"keywords":{}}],["transactionhost<adapter>",{"_index":970,"title":{},"content":{"93":{"position":[[416,30]]}},"keywords":{}}],["transactionhost<transactionaladapterprisma>",{"_index":766,"title":{},"content":{"61":{"position":[[24,49]]},"62":{"position":[[467,50]]},"93":{"position":[[698,50],[1147,50]]},"94":{"position":[[361,50]]}},"keywords":{}}],["transactionopt",{"_index":985,"title":{},"content":{"95":{"position":[[89,18]]},"97":{"position":[[590,18]]}},"keywords":{}}],["transpar",{"_index":604,"title":{},"content":{"48":{"position":[[15,11]]}},"keywords":{}}],["transport",{"_index":502,"title":{},"content":{"28":{"position":[[117,11],[396,10]]},"31":{"position":[[1163,9]]},"69":{"position":[[266,11]]}},"keywords":{}}],["trap",{"_index":924,"title":{},"content":{"82":{"position":[[161,5]]}},"keywords":{}}],["tri",{"_index":509,"title":{},"content":{"28":{"position":[[262,3]]},"49":{"position":[[241,5]]}},"keywords":{}}],["trigger",{"_index":85,"title":{},"content":{"2":{"position":[[1449,7],[1538,7]]},"25":{"position":[[61,10]]},"84":{"position":[[536,7]]}},"keywords":{}}],["true",{"_index":328,"title":{},"content":{"11":{"position":[[1205,5],[1337,5],[1583,5],[1859,4]]},"15":{"position":[[145,5]]},"16":{"position":[[132,5]]},"18":{"position":[[207,4]]},"20":{"position":[[261,4],[815,5],[833,5]]},"24":{"position":[[144,5]]},"27":{"position":[[198,4],[329,4]]},"33":{"position":[[64,5],[91,5],[109,5]]},"34":{"position":[[69,5],[167,5],[185,5]]},"40":{"position":[[64,5],[91,4]]},"42":{"position":[[171,5]]},"46":{"position":[[299,6]]},"57":{"position":[[81,4],[294,4]]},"65":{"position":[[806,5]]},"70":{"position":[[200,5],[227,4]]},"79":{"position":[[628,5]]},"85":{"position":[[405,4]]},"87":{"position":[[12,4],[89,4]]}},"keywords":{}}],["turn",{"_index":903,"title":{},"content":{"78":{"position":[[851,4]]}},"keywords":{}}],["two",{"_index":964,"title":{},"content":{"91":{"position":[[241,3]]}},"keywords":{}}],["tx",{"_index":765,"title":{},"content":{"61":{"position":[[5,2],[225,2]]},"93":{"position":[[467,2]]},"97":{"position":[[108,3]]}},"keywords":{}}],["txhost",{"_index":779,"title":{},"content":{"62":{"position":[[459,7]]},"93":{"position":[[690,7],[1139,7]]},"94":{"position":[[353,7]]}},"keywords":{}}],["txhost.tx",{"_index":781,"title":{},"content":{"62":{"position":[[558,9]]}},"keywords":{}}],["type",{"_index":22,"title":{"44":{"position":[[0,4],[16,4]]},"45":{"position":[[0,4]]},"46":{"position":[[8,4]]},"49":{"position":[[9,5]]},"55":{"position":[[13,4]]},"61":{"position":[[0,6]]}},"content":{"2":{"position":[[92,4],[122,4]]},"45":{"position":[[80,6],[101,4],[221,5]]},"46":{"position":[[43,4],[111,7],[240,4],[626,4],[947,4]]},"47":{"position":[[183,4],[236,7]]},"48":{"position":[[89,5],[514,4]]},"49":{"position":[[158,4],[344,4],[655,6]]},"53":{"position":[[334,4],[350,4],[566,6]]},"55":{"position":[[280,4],[475,5]]},"61":{"position":[[347,5]]},"62":{"position":[[571,5]]},"63":{"position":[[103,5]]},"82":{"position":[[314,4],[458,5]]},"90":{"position":[[155,5]]},"93":{"position":[[395,4],[482,5],[549,5]]},"95":{"position":[[251,4]]}},"keywords":{}}],["type?:'funct",{"_index":295,"title":{},"content":{"10":{"position":[[1339,16]]}},"keywords":{}}],["typeof",{"_index":736,"title":{},"content":{"55":{"position":[[88,6]]},"82":{"position":[[520,6]]}},"keywords":{}}],["typeorm",{"_index":958,"title":{},"content":{"90":{"position":[[392,7]]}},"keywords":{}}],["typescript",{"_index":598,"title":{"47":{"position":[[6,10]]}},"content":{"49":{"position":[[127,10]]},"53":{"position":[[401,10]]},"63":{"position":[[250,10]]}},"keywords":{}}],["ultim",{"_index":793,"title":{},"content":{"64":{"position":[[78,10]]}},"keywords":{}}],["unavail",{"_index":498,"title":{},"content":{"27":{"position":[[569,11]]},"85":{"position":[[879,11]]}},"keywords":{}}],["undefin",{"_index":940,"title":{},"content":{"84":{"position":[[123,10]]},"97":{"position":[[429,9]]}},"keywords":{}}],["under",{"_index":308,"title":{},"content":{"11":{"position":[[424,5],[1662,5],[1792,5]]},"20":{"position":[[934,5]]},"21":{"position":[[121,5]]},"52":{"position":[[1074,5]]}},"keywords":{}}],["underli",{"_index":735,"title":{},"content":{"55":{"position":[[13,10]]},"82":{"position":[[57,10]]},"90":{"position":[[169,10]]},"97":{"position":[[219,10]]}},"keywords":{}}],["undocu",{"_index":753,"title":{},"content":{"57":{"position":[[16,12]]}},"keywords":{}}],["uniqu",{"_index":879,"title":{},"content":{"76":{"position":[[569,6]]}},"keywords":{}}],["unlik",{"_index":949,"title":{},"content":{"85":{"position":[[92,6]]}},"keywords":{}}],["until",{"_index":122,"title":{},"content":{"3":{"position":[[777,5]]},"31":{"position":[[705,5]]},"83":{"position":[[200,5]]}},"keywords":{}}],["up",{"_index":150,"title":{"32":{"position":[[8,2]]}},"content":{"4":{"position":[[413,2],[572,3]]},"7":{"position":[[335,2],[574,2]]},"11":{"position":[[1871,2]]},"21":{"position":[[162,2]]},"27":{"position":[[123,2]]},"28":{"position":[[43,2]]},"31":{"position":[[834,2]]},"64":{"position":[[59,2]]},"68":{"position":[[112,2]]},"69":{"position":[[290,2]]},"72":{"position":[[127,3]]},"84":{"position":[[163,2]]}},"keywords":{}}],["upgrad",{"_index":524,"title":{},"content":{"30":{"position":[[31,9]]},"53":{"position":[[483,7]]}},"keywords":{}}],["upon",{"_index":881,"title":{},"content":{"77":{"position":[[52,4]]}},"keywords":{}}],["us",{"_index":24,"title":{"6":{"position":[[13,3]]},"39":{"position":[[0,5]]},"43":{"position":[[0,5]]},"46":{"position":[[0,5]]},"47":{"position":[[0,5]]},"48":{"position":[[0,5]]},"51":{"position":[[0,3]]},"64":{"position":[[0,5]]},"65":{"position":[[0,5]]},"85":{"position":[[0,5]]},"86":{"position":[[0,5]]},"93":{"position":[[0,5]]},"94":{"position":[[0,5]]}},"content":{"2":{"position":[[110,4],[586,6]]},"6":{"position":[[13,3]]},"7":{"position":[[454,5],[999,3],[1258,5]]},"9":{"position":[[646,3],[695,3],[864,3]]},"10":{"position":[[42,4],[332,3],[461,4],[693,6],[868,4],[1072,4],[1310,4]]},"11":{"position":[[823,4],[1112,4],[1886,5]]},"12":{"position":[[267,4],[528,3],[573,5]]},"13":{"position":[[46,5]]},"19":{"position":[[90,4],[144,3],[212,3]]},"20":{"position":[[492,5],[535,4],[655,4],[1080,4]]},"24":{"position":[[93,3],[226,5]]},"25":{"position":[[1,5],[304,3]]},"26":{"position":[[125,3]]},"27":{"position":[[396,5],[440,3],[470,4],[550,5]]},"28":{"position":[[1,3]]},"31":{"position":[[68,3],[257,4],[419,4],[621,5],[765,5],[924,3]]},"36":{"position":[[4,3]]},"41":{"position":[[35,3]]},"43":{"position":[[132,3],[539,7],[626,5]]},"45":{"position":[[186,5]]},"46":{"position":[[95,3],[826,3]]},"47":{"position":[[33,5]]},"49":{"position":[[327,3]]},"51":{"position":[[13,3],[728,5]]},"52":{"position":[[147,3],[703,3],[749,3],[957,3],[996,3],[1057,4],[1111,3]]},"53":{"position":[[509,3]]},"55":{"position":[[190,3],[202,5]]},"56":{"position":[[121,3],[140,4],[288,3]]},"57":{"position":[[183,3],[219,3],[254,3],[369,4]]},"61":{"position":[[129,4]]},"63":{"position":[[206,3]]},"64":{"position":[[0,5],[89,3],[246,3]]},"65":{"position":[[0,5],[49,4],[155,4],[319,4]]},"66":{"position":[[129,5],[509,4],[1385,4]]},"69":{"position":[[24,5],[197,5],[226,3]]},"74":{"position":[[128,3]]},"76":{"position":[[256,3],[418,5]]},"78":{"position":[[535,3],[754,5]]},"79":{"position":[[105,5],[969,5]]},"83":{"position":[[137,3]]},"84":{"position":[[766,3]]},"85":{"position":[[0,5],[112,4],[219,3],[851,5]]},"87":{"position":[[1,3]]},"88":{"position":[[33,3],[438,4],[483,5]]},"91":{"position":[[25,3]]},"92":{"position":[[864,4]]},"93":{"position":[[48,3],[291,3],[1385,4]]},"94":{"position":[[37,4],[176,5]]},"95":{"position":[[157,4]]},"96":{"position":[[338,4]]},"98":{"position":[[190,3]]}},"keywords":{}}],["usag",{"_index":183,"title":{"7":{"position":[[0,5]]},"36":{"position":[[0,6]]},"61":{"position":[[9,6]]}},"content":{"7":{"position":[[0,5]]},"64":{"position":[[345,5]]},"69":{"position":[[246,5]]}},"keywords":{}}],["usecl",{"_index":205,"title":{"57":{"position":[[44,6]]}},"content":{"7":{"position":[[464,7],[1076,9]]},"57":{"position":[[378,7]]},"65":{"position":[[22,9],[287,9]]},"84":{"position":[[662,10],[684,9],[997,9]]}},"keywords":{}}],["useclass",{"_index":277,"title":{},"content":{"10":{"position":[[444,8]]},"55":{"position":[[365,9]]},"78":{"position":[[720,9]]},"85":{"position":[[637,9]]},"88":{"position":[[256,9]]}},"keywords":{}}],["useclass:typ",{"_index":284,"title":{},"content":{"10":{"position":[[824,13]]}},"keywords":{}}],["usecls<[string]>",{"_index":805,"title":{},"content":{"65":{"position":[[768,25]]}},"keywords":{}}],["useenterwith",{"_index":488,"title":{},"content":{"27":{"position":[[184,13]]},"31":{"position":[[794,12]]}},"keywords":{}}],["useenterwith?:boolean",{"_index":338,"title":{},"content":{"11":{"position":[[1814,21]]}},"keywords":{}}],["useexist",{"_index":607,"title":{},"content":{"48":{"position":[[314,12]]}},"keywords":{}}],["usefactori",{"_index":260,"title":{},"content":{"9":{"position":[[796,10]]},"10":{"position":[[1084,11]]},"34":{"position":[[104,11]]},"55":{"position":[[440,11]]},"79":{"position":[[412,11]]},"82":{"position":[[395,11]]}},"keywords":{}}],["usefactory:(...arg",{"_index":289,"title":{},"content":{"10":{"position":[[1096,20]]}},"keywords":{}}],["useguards(clsguard",{"_index":955,"title":{},"content":{"88":{"position":[[374,21]]}},"keywords":{}}],["useinterceptors(clsinterceptor",{"_index":951,"title":{},"content":{"85":{"position":[[744,33]]}},"keywords":{}}],["useinterceptors(useripinterceptor",{"_index":856,"title":{},"content":{"72":{"position":[[228,35]]}},"keywords":{}}],["user",{"_index":577,"title":{},"content":{"45":{"position":[[358,5]]},"46":{"position":[[472,4],[539,4],[680,6],[869,4]]},"47":{"position":[[314,5]]},"49":{"position":[[441,5],[550,4]]},"51":{"position":[[143,4]]},"52":{"position":[[250,4]]},"62":{"position":[[216,4]]},"71":{"position":[[185,4]]},"76":{"position":[[187,4]]},"77":{"position":[[288,5],[294,5]]},"93":{"position":[[183,5],[915,4],[1040,5]]},"94":{"position":[[543,4],[668,5]]},"95":{"position":[[435,4],[560,5],[718,4],[843,5]]}},"keywords":{}}],["user'",{"_index":859,"title":{},"content":{"73":{"position":[[40,6]]}},"keywords":{}}],["user.author",{"_index":591,"title":{},"content":{"46":{"position":[[701,17]]}},"keywords":{}}],["user.id",{"_index":590,"title":{},"content":{"46":{"position":[[689,9]]},"62":{"position":[[357,9]]}},"keywords":{}}],["user.repository.t",{"_index":778,"title":{},"content":{"62":{"position":[[373,18]]}},"keywords":{}}],["user.service.t",{"_index":770,"title":{},"content":{"62":{"position":[[1,15]]},"93":{"position":[[610,15],[1056,15]]},"94":{"position":[[273,15]]}},"keywords":{}}],["userid",{"_index":584,"title":{},"content":{"46":{"position":[[393,6],[435,6]]},"93":{"position":[[1312,7]]}},"keywords":{}}],["userinterceptor",{"_index":883,"title":{},"content":{"77":{"position":[[182,15]]}},"keywords":{}}],["userip",{"_index":849,"title":{},"content":{"71":{"position":[[471,6],[533,8]]},"73":{"position":[[285,6],[332,6]]}},"keywords":{}}],["useripinterceptor",{"_index":843,"title":{},"content":{"71":{"position":[[235,17]]},"72":{"position":[[17,17]]}},"keywords":{}}],["userrepositori",{"_index":772,"title":{},"content":{"62":{"position":[[80,15],[96,15],[412,14]]}},"keywords":{}}],["users'",{"_index":841,"title":{},"content":{"71":{"position":[[112,7]]}},"keywords":{}}],["userservic",{"_index":771,"title":{},"content":{"62":{"position":[[37,11]]},"91":{"position":[[260,11]]},"92":{"position":[[725,13]]},"93":{"position":[[646,11]]},"94":{"position":[[309,11]]}},"keywords":{}}],["userwithrol",{"_index":894,"title":{},"content":{"78":{"position":[[274,12],[730,13]]}},"keywords":{}}],["usevalu",{"_index":409,"title":{},"content":{"19":{"position":[[441,9]]}},"keywords":{}}],["usual",{"_index":259,"title":{},"content":{"9":{"position":[[770,5],[821,6]]},"79":{"position":[[996,6]]}},"keywords":{}}],["uuid",{"_index":424,"title":{},"content":{"20":{"position":[[904,7]]}},"keywords":{}}],["v10",{"_index":484,"title":{},"content":{"26":{"position":[[7,4]]}},"keywords":{}}],["v2.x",{"_index":390,"title":{"17":{"position":[[0,4]]}},"content":{},"keywords":{}}],["v3",{"_index":754,"title":{},"content":{"57":{"position":[[32,3]]}},"keywords":{}}],["v3.x",{"_index":391,"title":{"17":{"position":[[7,4]]},"54":{"position":[[0,4]]}},"content":{},"keywords":{}}],["v4",{"_index":123,"title":{},"content":{"3":{"position":[[783,3],[856,2]]},"57":{"position":[[89,2]]}},"keywords":{}}],["v4.0",{"_index":929,"title":{},"content":{"82":{"position":[[506,5]]}},"keywords":{}}],["v4.x",{"_index":734,"title":{"54":{"position":[[7,4]]}},"content":{},"keywords":{}}],["valu",{"_index":32,"title":{"81":{"position":[[13,7]]}},"content":{"2":{"position":[[223,5],[416,6],[443,5],[498,6],[525,5]]},"3":{"position":[[691,6]]},"45":{"position":[[143,7]]},"55":{"position":[[24,5]]},"57":{"position":[[6,5]]},"65":{"position":[[938,6],[981,8]]},"77":{"position":[[93,6],[461,6]]},"81":{"position":[[51,6]]},"82":{"position":[[606,5]]},"84":{"position":[[524,8],[1054,8]]}},"keywords":{}}],["variabl",{"_index":208,"title":{},"content":{"7":{"position":[[542,10]]},"9":{"position":[[986,9]]},"11":{"position":[[1135,9]]}},"keywords":{}}],["variou",{"_index":542,"title":{},"content":{"31":{"position":[[1155,7]]},"90":{"position":[[90,7]]}},"keywords":{}}],["version",{"_index":464,"title":{},"content":{"24":{"position":[[212,10]]},"27":{"position":[[11,8]]},"30":{"position":[[56,7]]},"43":{"position":[[214,10]]},"53":{"position":[[5,7],[162,7],[306,7],[535,7]]},"66":{"position":[[328,9]]},"82":{"position":[[488,8]]}},"keywords":{}}],["via",{"_index":832,"title":{},"content":{"68":{"position":[[291,3]]}},"keywords":{}}],["void",{"_index":43,"title":{},"content":{"2":{"position":[[432,4],[514,4],[968,5],[1009,4],[1142,4]]},"11":{"position":[[925,4],[1007,4]]},"55":{"position":[[678,5]]},"66":{"position":[[690,4],[813,4],[976,4]]}},"keywords":{}}],["want",{"_index":549,"title":{},"content":{"41":{"position":[[22,4]]},"49":{"position":[[36,4]]},"52":{"position":[[946,4]]},"53":{"position":[[501,4]]},"57":{"position":[[427,4]]},"64":{"position":[[175,4]]},"66":{"position":[[236,4]]},"93":{"position":[[192,4]]}},"keywords":{}}],["warn",{"_index":810,"title":{},"content":{"65":{"position":[[1139,7]]},"66":{"position":[[11,7]]}},"keywords":{}}],["way",{"_index":460,"title":{},"content":{"24":{"position":[[83,3]]},"26":{"position":[[88,3]]},"77":{"position":[[34,3]]}},"keywords":{}}],["we'd",{"_index":966,"title":{},"content":{"91":{"position":[[297,4]]}},"keywords":{}}],["we'll",{"_index":961,"title":{},"content":{"91":{"position":[[19,5]]}},"keywords":{}}],["web",{"_index":185,"title":{"7":{"position":[[17,3]]},"84":{"position":[[8,3]]}},"content":{"7":{"position":[[17,3],[141,3]]},"64":{"position":[[362,3]]},"65":{"position":[[188,3]]},"84":{"position":[[47,3]]}},"keywords":{}}],["websocket",{"_index":515,"title":{"29":{"position":[[0,11]]}},"content":{"29":{"position":[[1,9]]},"51":{"position":[[660,9]]}},"keywords":{}}],["websocketgateway",{"_index":520,"title":{},"content":{"29":{"position":[[140,17]]}},"keywords":{}}],["well",{"_index":718,"title":{},"content":{"52":{"position":[[1106,4]]},"90":{"position":[[240,5]]},"93":{"position":[[230,4]]}},"keywords":{}}],["whatev",{"_index":914,"title":{},"content":{"79":{"position":[[903,8]]}},"keywords":{}}],["whether",{"_index":78,"title":{},"content":{"2":{"position":[[1335,7]]},"5":{"position":[[54,7]]},"9":{"position":[[396,7]]},"10":{"position":[[1367,7]]},"11":{"position":[[190,7],[355,7],[1211,7],[1343,7],[1589,7],[1718,7]]},"31":{"position":[[31,7],[137,7]]},"97":{"position":[[802,7]]}},"keywords":{}}],["whole",{"_index":147,"title":{},"content":{"4":{"position":[[354,5]]},"46":{"position":[[772,5]]},"51":{"position":[[163,5],[851,5]]}},"keywords":{}}],["within",{"_index":80,"title":{},"content":{"2":{"position":[[1365,6]]},"3":{"position":[[741,6]]},"4":{"position":[[600,6]]},"20":{"position":[[1307,6]]},"25":{"position":[[210,6]]},"66":{"position":[[587,6]]}},"keywords":{}}],["without",{"_index":75,"title":{},"content":{"2":{"position":[[1275,7]]},"3":{"position":[[545,7]]},"4":{"position":[[241,7]]},"46":{"position":[[799,7]]},"48":{"position":[[36,7],[473,7]]},"51":{"position":[[399,7]]},"52":{"position":[[473,7]]},"56":{"position":[[171,7]]},"69":{"position":[[125,7]]},"73":{"position":[[71,7],[115,7]]},"78":{"position":[[889,7]]},"94":{"position":[[241,7]]},"97":{"position":[[696,7]]}},"keywords":{}}],["withouttransaction(callback",{"_index":995,"title":{},"content":{"97":{"position":[[640,29]]}},"keywords":{}}],["withtransact",{"_index":971,"title":{},"content":{"93":{"position":[[506,15]]},"94":{"position":[[71,15]]},"95":{"position":[[14,15]]}},"keywords":{}}],["withtransaction(callback",{"_index":993,"title":{},"content":{"97":{"position":[[456,26]]}},"keywords":{}}],["withtransaction(opt",{"_index":994,"title":{},"content":{"97":{"position":[[491,24]]}},"keywords":{}}],["won't",{"_index":558,"title":{},"content":{"43":{"position":[[41,5],[115,5]]},"49":{"position":[[559,5]]}},"keywords":{}}],["work",{"_index":128,"title":{"4":{"position":[[7,5]]}},"content":{"4":{"position":[[7,5],[385,5]]},"24":{"position":[[285,4]]},"28":{"position":[[158,4],[437,5]]},"45":{"position":[[156,5]]},"63":{"position":[[68,5]]},"66":{"position":[[1081,5]]},"90":{"position":[[64,5]]},"96":{"position":[[180,5]]},"97":{"position":[[43,7]]}},"keywords":{}}],["world",{"_index":749,"title":{},"content":{"56":{"position":[[115,5]]}},"keywords":{}}],["wrap",{"_index":120,"title":{},"content":{"3":{"position":[[752,7]]},"7":{"position":[[407,8],[796,4],[1047,8]]},"11":{"position":[[1941,8]]},"64":{"position":[[273,4]]},"65":{"position":[[89,4]]},"68":{"position":[[188,5]]},"70":{"position":[[72,5]]},"84":{"position":[[196,4],[704,5]]},"85":{"position":[[149,4]]},"94":{"position":[[45,4]]}},"keywords":{}}],["written",{"_index":456,"title":{},"content":{"22":{"position":[[38,8]]}},"keywords":{}}],["you'll",{"_index":587,"title":{},"content":{"46":{"position":[[571,6]]},"49":{"position":[[632,6]]},"90":{"position":[[201,6]]},"91":{"position":[[113,6]]}},"keywords":{}}],["you'r",{"_index":234,"title":{},"content":{"7":{"position":[[1251,6]]},"30":{"position":[[24,6]]}},"keywords":{}}],["yourself",{"_index":567,"title":{},"content":{"43":{"position":[[747,8]]}},"keywords":{}}]],"pipeline":["stemmer"]} \ No newline at end of file diff --git a/lunr-index.json b/lunr-index.json old mode 100755 new mode 100644 index 209a353..0d5a083 --- a/lunr-index.json +++ b/lunr-index.json @@ -1 +1 @@ -{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,168.091,1,26.193]],["content/0",[]],["keywords/0",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/1",[8,82.762,9,204.318]],["content/1",[1,0.194,3,0.56,4,1.094,5,1.932,6,1.295,8,0.914,9,2.258,10,4.993,11,2.993,12,4.993,13,4.993,14,6.697,15,2.466,16,5.759,17,4.489,18,5.759,19,2.843,20,4.489,21,6.697,22,5.759,23,4.113,24,6.697,25,4.489,26,4.993,27,3.562,28,4.993,29,5.759,30,5.759,31,4.489,32,4.113,33,4.489,34,5.759,35,2.166,36,5.759,37,5.759,38,5.759,39,2.582,40,5.759,41,5.759,42,3.812,43,2.843,44,4.113,45,5.759,46,5.759,47,4.113,48,4.241,49,5.759,50,5.759,51,4.993,52,1.715,53,4.113,54,5.759,55,5.759,56,4.993,57,3.347,58,4.489,59,4.993,60,1.279,61,5.759,62,5.759,63,2.707,64,5.759,65,5.759,66,7.45,67,5.759,68,3.562,69,3.347,70,4.489,71,5.759,72,3.16,73,4.993,74,5.759,75,4.993,76,5.759]],["keywords/1",[]],["title/2",[77,973.298]],["content/2",[0,1.091,6,1.135,8,1.347,9,1.326,11,4.04,19,2.492,24,6.06,25,3.935,35,1.898,43,2.492,78,5.048,79,4.377,80,5.048,81,5.048,82,5.048,83,2.934,84,4.808,85,5.048,86,3.122,87,2.623,88,5.048,89,4.377,90,4.377,91,3.605,92,5.048,93,4.808,94,3.122,95,5.048,96,5.048,97,5.048,98,5.048,99,3.122,100,2.623,101,5.048,102,5.048,103,4.377,104,4.377,105,4.377,106,3.935,107,3.935,108,5.048,109,5.048,110,5.048,111,6.741,112,5.048,113,5.048,114,5.048,115,5.048,116,2.934,117,5.048,118,5.048,119,4.377,120,3.605,121,5.048,122,4.377,123,5.048,124,5.048,125,5.048,126,5.048,127,5.048,128,5.048,129,5.048,130,5.048,131,5.048,132,3.341,133,3.329,134,5.048,135,2.934,136,7.775,137,3.605,138,5.048,139,5.048,140,2.934,141,5.048,142,5.048,143,4.377,144,5.048,145,5.048,146,5.048,147,5.048,148,4.377,149,5.048,150,4.377,151,2.934,152,2.162,153,3.605,154,5.048,155,5.048,156,5.048,157,5.048,158,5.048,159,3.935,160,3.935,161,5.048,162,5.048,163,5.048]],["keywords/2",[]],["title/3",[164,973.298]],["content/3",[7,0.875,8,0.831,11,4.059,44,5.577,52,1.559,70,6.088,83,6.21,84,4.83,116,4.539,143,9.265,151,4.539,153,5.577,165,8.062,166,7.81,167,5.577,168,7.81,169,7.81,170,6.088,171,4.059,172,6.088,173,6.088,174,7.81,175,7.81,176,7.81,177,5.216,178,6.772,179,5.577,180,4.539,181,6.088,182,3.501,183,7.81,184,6.088,185,6.772,186,7.81,187,4.83,188,6.772,189,6.772,190,6.088,191,7.81,192,7.81]],["keywords/3",[]],["title/4",[193,258.596,194,292.396]],["content/4",[]],["keywords/4",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/5",[195,973.298]],["content/5",[1,0.333,3,0.352,4,0.576,7,0.919,8,1.054,9,1.422,15,2.318,27,3.347,39,4.438,52,1.637,63,2.544,69,3.146,86,3.347,93,3.347,132,3.582,133,2.318,171,5.145,177,2.318,193,3.292,194,3.723,196,2.217,197,1.952,198,3.582,199,3.146,200,4.693,201,2.958,202,4.693,203,6.419,204,2.813,205,7.07,206,2.672,207,5.412,208,2.969,209,3.676,210,5.412,211,3.347,212,3.854,213,3.146,214,2.813,215,2.813,216,3.582,217,3.512,218,3.865,219,5.412,220,4.693,221,2.969,222,4.219,223,4.219,224,4.693,225,4.219,226,1.422,227,3.865,228,2.969,229,4.693,230,4.693,231,4.693,232,7.11,233,1.73,234,3.865,235,2.969,236,3.347,237,5.412,238,4.219,239,2.672,240,4.693,241,3.865,242,2.727,243,6.392,244,5.412,245,3.582,246,4.219]],["keywords/5",[]],["title/6",[247,973.298]],["content/6",[7,1.303,8,1.358,9,1.357,23,3.687,27,3.193,39,2.315,48,3.905,52,2.838,63,2.427,106,4.025,133,2.211,177,2.211,180,3.001,182,2.315,187,4.893,193,2.631,194,3.616,197,3.469,203,3.001,214,2.684,217,3.388,218,3.687,220,8.339,221,2.833,224,10.631,225,4.025,226,2.832,227,3.687,233,3.445,234,5.65,248,7.911,249,7.911,250,5.164,251,2.833,252,8.339,253,4.477,254,5.65,255,6.86,256,1.65,257,5.164,258,5.164,259,4.025,260,4.025,261,6.86,262,4.477,263,3.193,264,4.025,265,5.164,266,3.687,267,3.104,268,3.418,269,4.477,270,2.211,271,2.833]],["keywords/6",[]],["title/7",[60,82.565,194,208.527,201,200.036,239,273.746]],["content/7",[1,0.305,3,0.699,4,1.142,7,0.425,8,0.836,9,0.996,15,2.653,27,4.857,39,3.52,52,0.757,60,1.35,63,2.911,72,2.08,79,3.288,100,4.081,132,2.51,140,2.204,152,2.653,160,6.122,182,4.065,194,1.426,198,5.198,199,3.6,200,3.288,202,3.288,203,2.204,206,1.872,209,1.7,213,6.234,214,5.881,215,4.712,216,6.615,221,2.08,239,1.872,242,2.06,243,2.956,267,2.43,270,1.624,271,2.08,272,3.792,273,2.51,274,5.371,275,2.538,276,1.979,277,2.956,278,2.956,279,2.51,280,2.708,281,6.122,282,3.288,283,5.198,284,4.829,285,3.831,286,4.712,287,6.194,288,6.194,289,5.198,290,3.288,291,3.792,292,3.792,293,3.288,294,3.288,295,3.792,296,3.398,297,2.06,298,5.371,299,5.371,300,3.288,301,3.792,302,3.792,303,2.708,304,2.833,305,3.288,306,3.792,307,2.777,308,2.956,309,3.792,310,2.956,311,3.288,312,2.956,313,1.782,314,3.288,315,2.708,316,2.08,317,2.708,318,2.956,319,2.956,320,2.956,321,3.288,322,3.792]],["keywords/7",[]],["title/8",[151,565.686]],["content/8",[151,8.021,194,4.384,297,3.877,323,8.325,324,10.108,325,11.658,326,7.717]],["keywords/8",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/9",[44,462.311,327,504.646,328,561.327]],["content/9",[1,0.322,3,0.728,8,1.189,32,4.752,35,3.591,44,4.752,52,1.328,60,1.817,83,3.867,99,4.115,133,2.85,135,3.867,197,2.4,226,1.748,233,3.57,235,3.651,236,4.115,240,5.769,267,3.747,297,2.213,315,4.752,320,5.187,327,5.187,328,5.769,329,4.115,330,6.654,331,3.867,332,6.654,333,7.444,334,5.906,335,6.654,336,6.654,337,5.187,338,6.654,339,3.867,340,5.187,341,5.769,342,6.654,343,3.285,344,6.654,345,4.752,346,3.867,347,4.404,348,6.654,349,4.404,350,6.654,351,6.654,352,6.654,353,6.654,354,6.654,355,6.654,356,4.752]],["keywords/9",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/10",[1,21.808,203,376.26,296,355.176]],["content/10",[]],["keywords/10",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/11",[201,351.097]],["content/11",[1,0.3,4,1.24,9,2.336,31,6.931,39,3.986,48,4.389,60,2.23,63,4.179,182,3.986,196,3.642,201,4.204,215,4.621,276,2.841,285,5.499,296,4.878,304,3.207,310,9.085,357,7.709,358,8.891,359,7.709,360,7.709,361,7.709,362,7.709]],["keywords/11",[]],["title/12",[239,480.47]],["content/12",[1,0.303,3,0.585,31,7,39,4.026,48,4.433,60,2.267,63,4.22,182,4.026,196,3.679,206,4.433,209,5.259,215,4.667,276,2.87,285,5.554,289,5.944,296,4.927,304,3.239,343,4.433,357,7.786,360,7.786,361,7.786,362,7.786,363,8.98]],["keywords/12",[]],["title/13",[364,644.237]],["content/13",[11,5.621,120,7.724,198,7.16,216,7.16,323,7.724,331,6.287,364,7.16,365,10.816,366,9.379,367,10.816,368,7.16,369,10.816,370,10.816,371,10.816]],["keywords/13",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/14",[4,82.762,15,332.998]],["content/14",[1,0.317,3,0.425,4,1.288,8,1.003,9,1.064,14,3.155,15,5.352,17,5.092,48,1.998,52,1.639,60,2.101,63,1.902,73,3.51,86,2.503,100,2.104,152,1.733,160,3.155,182,2.928,194,3.088,196,1.658,197,1.46,201,1.46,205,2.891,208,2.221,214,2.104,226,1.716,233,2.087,245,2.679,251,3.584,267,2.563,270,1.733,271,2.221,276,1.293,277,3.155,280,4.665,281,6.401,282,3.51,284,5.092,285,2.503,286,4.268,289,2.679,293,3.51,297,2.172,304,2.962,307,2.928,329,2.503,339,4.773,346,2.353,347,2.679,372,4.048,373,4.048,374,4.048,375,4.048,376,4.048,377,4.048,378,3.51,379,3.796,380,4.048,381,4.048,382,4.048,383,4.048,384,4.048,385,4.048,386,3.51,387,3.51,388,4.048,389,5.664,390,6.532,391,4.048,392,6.532,393,3.796,394,3.395,395,4.048,396,4.048,397,4.048,398,2.679,399,2.679,400,4.048,401,3.51,402,3.155,403,4.048,404,4.048,405,4.048,406,4.048,407,4.048,408,4.048,409,4.048,410,4.048]],["keywords/14",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/15",[411,644.237]],["content/15",[0,1.387,1,0.313,3,0.418,4,1.278,5,1.443,10,5.564,14,5.002,15,2.748,17,5.002,20,7.252,21,5.002,35,2.413,43,3.168,52,1.857,69,3.729,93,5.753,111,8.066,133,3.984,152,4.687,171,3.335,180,3.729,184,5.002,228,3.52,242,3.094,245,4.247,246,7.252,279,4.247,307,2.876,313,4.372,339,3.729,346,3.729,347,6.158,364,4.247,398,4.247,411,6.158,412,6.417,413,6.417,414,5.564,415,5.002,416,6.417,417,5.564,418,6.417,419,3.016,420,6.417,421,6.417,422,5.002,423,6.417,424,4.582,425,5.564,426,5.002,427,5.002,428,5.564,429,5.002,430,6.417,431,6.417]],["keywords/15",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/16",[190,758.708]],["content/16",[0,2.043,1,0.318,8,1.006,11,4.912,69,5.494,91,6.75,159,7.368,180,5.494,190,11.01,193,3.143,203,5.494,329,7.499,432,12.126,433,9.452,434,9.452,435,9.452,436,9.452,437,9.452,438,9.452,439,9.452,440,8.196]],["keywords/16",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/17",[424,695.06]],["content/17",[1,0.179,3,0.84,4,1.32,6,1.195,8,1.32,9,2.126,20,4.144,35,1.999,106,4.144,135,4.702,140,5.691,152,2.277,180,3.09,194,1.999,197,3.948,204,5.089,206,2.624,208,5.372,211,3.288,214,2.763,216,5.354,239,2.624,242,1.768,259,4.144,275,2.178,276,2.585,297,1.768,312,4.144,313,2.499,317,3.796,323,3.796,331,3.09,349,3.519,368,3.519,417,4.61,419,2.499,424,3.796,441,5.316,442,7.633,443,5.316,444,8.089,445,7.014,446,5.316,447,5.316,448,5.316,449,8.49,450,4.61,451,4.61,452,8.089,453,4.144,454,5.316,455,4.61,456,4.61,457,5.316,458,6.306,459,5.316,460,4.144,461,5.316,462,5.316,463,2.763,464,5.316,465,4.144,466,5.316]],["keywords/17",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/18",[42,514.68,187,480.88]],["content/18",[]],["keywords/18",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/19",[297,323.691]],["content/19",[1,0.442,3,0.855,4,0.404,7,0.425,8,0.659,15,1.624,35,1.426,39,2.777,43,1.872,52,1.237,60,1.35,63,3.691,99,4.857,116,3.6,140,6.234,151,2.204,159,2.956,177,2.653,182,4.065,194,3.41,198,4.1,199,4.564,213,3.6,214,3.219,216,2.51,223,2.956,231,5.371,233,1.212,238,2.956,242,2.612,245,4.1,251,2.08,275,1.553,283,4.1,286,1.971,297,1.261,298,8.666,299,3.288,303,2.708,307,2.777,339,3.6,346,4.564,386,3.288,387,3.288,398,2.51,429,7.791,467,3.792,468,11.805,469,2.708,470,2.708,471,3.792,472,9.067,473,7.853,474,5.483,475,3.792,476,3.792,477,3.792,478,3.792,479,3.792,480,3.792,481,3.288,482,3.288,483,3.792,484,3.288,485,3.792,486,11.805,487,3.792,488,5.371,489,3.792,490,3.288,491,3.792,492,3.792,493,3.792,494,3.792,495,3.792,496,2.956,497,2.708]],["keywords/19",[]],["title/20",[488,843.924]],["content/20",[1,0.213,3,0.929,9,1.662,32,4.518,35,2.379,39,2.836,43,3.123,60,1.371,86,3.912,87,3.288,116,5.352,120,9.048,140,6.309,194,2.379,197,3.321,198,4.187,199,3.677,203,3.677,214,3.288,242,3.062,260,9.294,316,3.471,341,5.485,359,5.485,398,4.187,429,7.178,474,3.471,490,5.485,498,6.326,499,9.208,500,6.326,501,9.208,502,5.485,503,4.518,504,5.485,505,6.326,506,6.326,507,4.931,508,6.326,509,6.326,510,6.326,511,5.485,512,6.575,513,9.208,514,9.208,515,6.326]],["keywords/20",[]],["title/21",[8,68.905,9,170.109,83,376.26]],["content/21",[8,1.098,9,2.712,52,2.06,83,7.449,107,8.045,133,4.42,193,3.432,203,5.998,267,4.049,323,7.37,324,8.948,415,8.045,516,10.32,517,8.948,518,8.045,519,10.32,520,10.32]],["keywords/21",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/22",[177,357.669,178,480.822,179,396.007]],["content/22",[]],["keywords/22",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/23",[177,277.244,297,215.299,442,504.646]],["content/23",[1,0.358,8,0.824,15,3.316,19,3.822,39,3.471,60,1.943,87,5.52,94,4.788,100,4.024,135,4.5,177,5.192,179,5.529,187,7.498,213,4.5,242,2.575,251,4.248,256,2.474,286,4.024,297,2.575,307,3.471,339,4.5,411,5.125,469,7.585,474,4.248,503,5.529,518,6.036,521,6.713,522,7.743,523,6.036,524,7.743,525,7.743,526,8.28,527,7.743,528,7.743,529,4.5,530,5.529]],["keywords/23",[]],["title/24",[8,68.905,63,304.255,177,277.244]],["content/24",[1,0.172,8,0.835,15,2.186,19,5.29,21,3.979,35,1.92,39,2.288,43,2.52,60,2.326,63,2.399,94,6.627,133,2.186,152,2.186,167,3.646,177,4.952,179,7.652,185,4.426,197,1.842,213,4.558,226,1.341,233,1.631,256,1.631,270,2.186,283,3.379,286,2.653,290,4.426,297,1.698,304,1.842,307,2.288,343,5.708,393,2.967,394,2.653,399,3.379,401,4.426,442,3.979,512,3.646,523,3.979,529,4.558,530,3.646,531,6.113,532,5.105,533,5.105,534,3.646,535,5.105,536,5.105,537,7.842,538,5.105,539,5.105,540,4.426,541,5.105,542,5.105,543,5.105,544,5.105,545,5.105,546,5.105,547,5.105,548,5.105,549,5.105]],["keywords/24",[]],["title/25",[8,59.023,181,432.271,193,184.421,550,432.271]],["content/25",[0,1.781,1,0.278,8,0.877,15,3.529,19,4.067,28,7.144,60,2.142,63,3.872,84,5.096,94,5.096,167,5.884,177,4.745,187,6.852,193,2.74,212,3.872,213,4.789,286,5.758,297,2.74,315,5.884,345,5.884,419,3.872,469,7.912,521,7.144,529,4.789,530,5.884,531,6.423,550,6.423,551,8.239,552,8.239,553,7.144,554,6.423]],["keywords/25",[]],["title/26",[8,68.905,52,129.248,251,355.176]],["content/26",[43,5.182,52,2.399,60,2.144,87,5.456,177,4.496,193,2.531,212,3.577,217,3.26,218,5.436,226,2.758,228,4.176,233,2.432,251,4.176,256,3.355,297,3.491,327,5.933,345,5.436,414,6.6,523,5.933,526,8.183,531,8.183,550,5.933,554,5.933,555,7.612,556,7.612,557,12.954,558,7.612,559,7.612,560,7.612,561,7.612]],["keywords/26",[]],["title/27",[177,332.998,562,674.21]],["content/27",[3,0.404,8,0.659,9,2.383,15,3.884,19,4.477,35,2.33,39,2.777,60,1.954,68,3.832,84,3.832,94,5.608,135,5.271,153,4.424,171,3.22,177,4.594,181,4.829,182,2.777,184,4.829,187,3.832,213,3.601,228,3.399,229,5.372,253,5.372,273,4.101,274,5.372,281,8.361,283,4.101,286,3.22,307,2.777,343,3.058,469,6.476,503,4.424,529,3.601,530,4.424,540,5.372,562,5.372,563,5.372,564,5.372,565,6.195,566,6.195,567,6.195,568,6.195,569,4.829,570,6.195,571,5.372,572,10.726,573,6.195,574,5.372,575,6.195,576,5.372,577,6.195,578,6.195,579,5.372,580,6.195,581,6.195,582,6.195,583,6.195,584,6.195,585,6.195]],["keywords/27",[]],["title/28",[331,565.686]],["content/28",[]],["keywords/28",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/29",[586,758.708]],["content/29",[3,0.496,8,1.117,9,2,53,5.436,57,4.424,60,1.133,68,6.492,86,4.707,91,5.436,100,3.956,120,5.436,151,4.424,165,5.038,171,3.956,194,2.862,201,2.746,204,6.245,242,2.531,275,4.301,276,4.139,304,2.746,321,6.6,329,4.707,331,4.424,356,5.436,411,5.038,419,3.577,450,6.6,451,6.6,503,5.436,563,6.6,586,5.933,587,5.933,588,5.436,589,9.102,590,6.6,591,6.6,592,7.612,593,7.612,594,7.612]],["keywords/29",[]],["title/30",[595,758.708]],["content/30",[1,0.291,4,0.919,8,1.217,9,2.269,13,7.487,60,1.286,104,7.487,132,5.716,148,7.487,197,3.115,206,4.263,209,3.871,238,8.912,239,5.643,267,3.388,296,4.737,307,3.871,356,6.166,398,5.716,399,5.716,481,7.487,482,7.487,496,6.731,569,6.731,589,7.487,590,7.487,596,8.635,597,6.166,598,8.635,599,8.635,600,7.487,601,7.487]],["keywords/30",[]],["title/31",[60,96.389,602,561.327,603,561.327]],["content/31",[1,0.36,3,0.696,8,1.138,194,4.019,204,5.554,241,7.633,271,5.864,276,3.415,329,6.61,331,6.212,340,8.331,587,8.331,588,7.633,595,8.331,604,10.688]],["keywords/31",[]],["title/32",[60,96.389,602,561.327,603,561.327]],["content/32",[1,0.35,3,0.676,8,1.369,48,3.695,68,4.629,93,4.629,133,3.205,165,4.954,167,5.345,194,2.815,197,2.7,204,5.393,206,3.695,208,4.106,211,4.629,242,2.489,267,2.936,268,4.954,271,4.106,275,3.066,276,2.392,304,3.743,305,6.49,312,5.835,313,3.518,318,5.835,319,5.835,419,3.518,445,6.49,569,5.835,595,5.835,600,6.49,601,6.49,605,7.485,606,5.835,607,7.485,608,6.49,609,5.835,610,7.485,611,7.485,612,7.485,613,7.485,614,7.485,615,6.49]],["keywords/32",[]],["title/33",[616,973.298]],["content/33",[3,0.562,8,0.919,119,7.487,188,7.487,205,6.166,208,4.737,211,5.34,235,4.737,242,2.872,255,9.912,313,4.058,329,5.34,331,5.019,356,6.166,366,7.487,411,7.567,465,8.912,534,6.166,571,7.487,609,6.731,617,12.816,618,8.635,619,8.635,620,8.635,621,8.635,622,8.635,623,8.635,624,8.635,625,8.635,626,8.635]],["keywords/33",[]],["title/34",[58,758.708]],["content/34",[58,7.777,59,8.65,171,5.185,180,5.798,197,3.599,208,5.473,211,6.17,212,4.689,239,4.925,275,4.087,294,8.65,419,4.689,553,8.65,597,7.124,627,8.65,628,8.65,629,7.124,630,9.976,631,8.65,632,8.65,633,9.976]],["keywords/34",[]],["title/35",[517,674.21,518,606.131]],["content/35",[]],["keywords/35",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/36",[634,973.298]],["content/36",[1,0.398,3,0.769,11,4.714,23,6.478,35,3.411,52,1.811,152,3.885,233,2.899,242,3.017,246,9.204,267,3.558,297,3.927,313,4.263,316,4.976,326,6.004,337,9.204,347,6.004,389,7.865,458,7.071,635,9.071,636,9.071,637,7.865,638,7.865,639,7.865,640,9.071]],["keywords/36",[]],["title/37",[379,565.686]],["content/37",[1,0.3,3,0.579,8,1.384,11,4.621,42,5.885,43,4.389,47,6.349,48,4.389,171,4.621,201,3.207,205,6.349,209,3.986,236,5.499,242,2.957,307,3.986,313,4.179,339,5.168,368,5.885,379,6.774,440,7.709,465,6.931,597,6.349,641,8.891,642,6.349,643,8.891,644,11.654,645,6.931,646,8.891]],["keywords/37",[]],["title/38",[221,426.602,326,514.68]],["content/38",[1,0.291,3,0.562,4,0.919,52,1.724,57,5.019,60,2.215,100,4.488,193,2.872,196,3.537,201,3.115,204,4.488,212,4.058,217,3.698,221,4.737,226,2.269,256,2.759,276,3.653,278,6.731,304,4.124,316,4.737,326,5.716,346,5.019,463,4.488,470,6.166,647,4.737,648,6.731,649,7.487]],["keywords/38",[]],["title/39",[87,288.188,209,248.588,368,367.052,642,396.007]],["content/39",[1,0.403,3,0.492,4,1.111,19,3.726,35,2.838,60,2.139,72,4.141,87,3.922,209,3.383,223,5.884,226,1.983,233,3.335,256,2.412,270,3.232,289,4.996,297,3.471,307,3.383,317,5.39,343,5.152,346,4.387,368,4.996,393,4.387,394,3.922,642,5.39,650,7.548,651,7.548,652,7.548,653,6.544,654,6.544,655,6.544,656,6.544,657,6.544,658,6.544,659,9.049,660,7.548,661,7.548,662,6.544]],["keywords/39",[]],["title/40",[57,376.26,209,290.209,276,206.875]],["content/40",[1,0.288,3,0.557,35,3.216,57,4.971,60,2.106,93,5.289,204,4.445,209,3.834,212,4.02,226,2.247,233,2.733,242,2.844,256,2.733,270,3.663,276,2.733,313,4.02,346,4.971,393,4.971,394,4.445,402,6.667,608,7.416,629,6.108,648,8.855,649,7.416,653,7.416,663,8.553,664,7.416,665,8.553,666,8.553,667,8.553,668,8.553]],["keywords/40",[]],["title/41",[1,18.68,3,36.116,35,208.527,42,367.052]],["content/41",[1,0.371,3,0.532,4,0.869,5,1.836,43,5.436,47,5.831,48,4.03,60,2.274,133,3.497,226,2.145,233,2.609,256,2.609,270,3.497,297,2.715,339,4.745,343,4.03,393,4.745,394,4.243,402,6.364,428,7.079,642,5.831,648,9.713,659,9.548,669,8.165,670,8.165,671,8.165,672,8.165]],["keywords/41",[]],["title/42",[574,843.924]],["content/42",[6,2.082,8,0.985,9,2.433,11,4.811,52,1.848,69,5.38,72,5.079,83,5.38,87,4.811,90,8.027,228,5.079,251,5.079,261,8.027,279,6.128,315,6.611,333,7.216,415,7.216,529,5.38,673,9.257,674,9.257,675,9.257,676,9.257,677,9.257,678,9.257,679,8.027,680,7.216,681,9.257,682,9.257]],["keywords/42",[]],["title/43",[172,606.131,173,606.131]],["content/43",[9,2.877,11,5.69,116,6.363,165,7.247,172,10.361,173,10.361,189,9.493,199,6.363,269,9.493,683,9.493,684,10.948]],["keywords/43",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/44",[4,59.023,334,342.946,645,432.271,685,367.052]],["content/44",[1,0.294,2,1.578,3,0.568,4,0.747,7,0.496,8,0.928,9,2.29,47,3.161,52,0.884,56,7.557,60,2.295,99,2.737,107,3.45,137,3.161,152,3.005,182,3.145,199,2.573,226,1.163,233,1.414,239,2.185,242,2.333,243,3.45,256,1.414,263,4.339,267,1.737,275,1.813,279,2.93,296,2.428,297,1.472,300,3.838,310,3.45,313,3.297,316,4.782,333,3.45,334,4.339,347,2.93,349,2.93,379,2.573,394,3.646,419,3.297,426,3.45,453,3.45,460,3.45,597,3.161,628,3.838,631,3.838,632,3.838,637,3.838,639,3.838,645,3.45,683,3.838,685,4.644,686,4.426,687,4.426,688,4.426,689,4.426,690,3.838,691,4.426,692,7.016,693,5.469,694,3.838,695,2.93,696,5.469,697,6.084,698,3.838,699,4.426,700,4.426,701,6.224,702,3.838,703,4.426,704,6.084,705,4.426,706,3.838,707,4.426,708,4.426,709,4.426]],["keywords/44",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/45",[8,82.762,263,480.88]],["content/45",[1,0.294,2,2.587,3,0.749,4,0.928,8,1.457,32,6.226,69,5.067,91,6.226,152,3.734,197,4.645,235,4.783,241,6.226,263,7.964,267,3.42,270,3.734,316,4.783,334,5.392,422,6.796,554,6.796,685,5.771,693,8.969,710,8.719,711,8.719,712,8.719]],["keywords/45",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/46",[8,82.762,201,280.491]],["content/46",[]],["keywords/46",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/47",[100,505.818]],["content/47",[60,2.337,193,3.318,196,4.087,201,3.599,212,4.689,217,4.272,226,2.621,256,3.188,276,3.188,304,4.527,463,5.185,647,5.473]],["keywords/47",[]],["title/48",[275,398.724]],["content/48",[1,0.36,8,1.138,57,6.212,137,7.633,153,7.633,201,4.725,228,5.864,268,7.074,278,8.331,419,5.023,576,9.267,713,10.688,714,7.633,715,10.688]],["keywords/48",[]],["title/49",[193,323.691]],["content/49",[9,2.185,60,2.318,72,4.562,193,3.708,194,3.127,196,3.407,201,3,204,4.322,212,3.908,215,5.794,217,3.561,226,2.185,242,2.766,256,2.657,275,3.407,276,3.563,304,3,463,4.322,629,5.938,647,4.562,716,8.316,717,8.316,718,8.316,719,8.316,720,8.316]],["keywords/49",[]],["title/50",[8,82.762,606,606.131]],["content/50",[0,1.387,8,1.165,9,1.686,48,3.168,52,1.281,60,2.041,68,3.968,83,3.729,87,3.335,116,3.729,137,4.582,140,3.729,151,3.729,165,4.247,171,3.335,196,2.629,197,3.356,201,4.596,204,3.335,235,3.52,236,3.968,242,3.094,267,2.517,268,4.247,273,4.247,275,2.629,276,3.497,343,3.168,349,4.247,379,3.729,419,3.016,426,5.002,455,5.564,534,4.582,579,8.066,591,5.564,606,7.252,627,5.564,629,4.582,690,8.066,695,4.247,701,6.643,721,6.417,722,6.417,723,6.417,724,6.417,725,6.417,726,6.417,727,6.417,728,6.417,729,6.417]],["keywords/50",[]],["title/51",[1,18.68,3,36.116,242,184.421,313,260.619]],["content/51",[]],["keywords/51",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/52",[225,758.708]],["content/52",[60,2.328,193,3.246,196,3.998,201,3.521,212,4.587,217,4.18,226,2.565,256,3.119,276,3.119,280,6.97,304,4.903,463,5.072,647,5.355]],["keywords/52",[]],["title/53",[2,218.846]],["content/53",[60,2.32,182,5.158,193,2.9,201,3.145,212,4.098,217,3.734,226,2.291,230,7.56,233,2.786,234,6.226,256,2.786,276,2.786,280,6.226,284,6.796,285,5.392,304,4.645,463,4.531,647,4.783,730,11.505,731,8.719]],["keywords/53",[]],["title/54",[60,96.389,732,561.327,733,561.327]],["content/54",[6,1.453,7,0.724,8,1.17,9,1.698,52,2.404,53,4.615,60,2.239,84,3.997,87,3.359,116,3.756,196,2.648,197,3.373,201,2.331,221,5.13,222,5.038,226,1.698,233,2.988,251,3.546,276,2.065,297,2.149,304,2.331,343,3.19,345,4.615,379,3.756,470,4.615,526,5.038,714,4.615,732,5.604,733,5.604,734,6.463,735,9.351,736,6.463,737,6.463,738,6.463,739,6.463,740,6.463,741,6.463,742,10.988,743,6.463,744,6.463,745,12.043,746,6.463,747,6.463,748,6.463]],["keywords/54",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/55",[8,82.762,209,348.57]],["content/55",[1,0.272,3,0.346,8,1.165,9,1.397,48,2.624,52,1.615,57,3.09,60,2.291,99,3.288,100,2.763,133,2.277,140,3.09,193,2.69,194,1.999,196,4.011,197,2.918,199,3.09,206,3.993,208,4.438,209,5.278,211,3.288,215,2.763,217,3.464,226,2.126,235,2.917,236,5.003,241,3.796,254,3.796,256,2.585,259,4.144,273,3.519,275,3.314,276,3.129,304,1.918,316,2.917,318,4.144,319,4.144,340,4.144,449,4.61,458,4.144,463,4.204,512,3.796,586,4.144,615,4.61,647,4.438,664,7.014,679,4.61,749,5.316,750,4.61,751,5.316,752,4.61,753,5.316,754,4.61,755,5.316]],["keywords/55",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/56",[7,87.161,52,155.24]],["content/56",[]],["keywords/56",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/57",[7,72.568,52,129.248,226,170.109]],["content/57",[1,0.254,3,0.492,7,1.17,8,1.111,15,3.232,19,3.726,33,5.884,35,2.838,51,6.544,52,2.577,60,1.554,70,5.884,133,3.232,193,2.51,218,5.39,221,4.141,226,3.392,233,3.823,256,2.412,260,5.884,263,4.668,264,8.136,286,3.922,307,3.383,337,5.884,529,4.387,714,5.39,754,6.544,756,6.544,757,7.548,758,7.548,759,7.548,760,7.548,761,7.548,762,9.049,763,7.548,764,7.548]],["keywords/57",[]],["title/58",[239,383.847,765,674.21]],["content/58",[3,0.464,4,0.759,7,0.799,19,4.951,39,3.196,52,1.423,60,2.214,72,3.911,86,4.409,170,5.557,209,3.196,226,2.635,233,3.205,256,2.278,270,3.053,289,4.719,317,5.091,343,3.519,393,4.143,394,3.705,425,6.181,474,5.502,504,6.181,507,5.557,511,8.696,534,5.091,588,5.091,654,6.181,655,6.181,656,6.181,657,6.181,658,6.181,662,6.181,750,6.181,766,7.129,767,7.129,768,7.129,769,7.129,770,6.181,771,7.129,772,6.181,773,7.129,774,7.129]],["keywords/58",[]],["title/59",[7,62.16,52,110.712,765,480.822,775,554.532]],["content/59",[1,0.199,4,1.111,5,1.329,7,1.17,8,0.932,12,5.125,15,2.531,19,2.918,27,3.655,33,4.607,43,2.918,52,2.577,60,2.086,72,3.243,75,5.125,105,5.125,133,2.531,135,3.435,150,5.125,170,4.607,193,2.913,217,3.751,226,1.553,227,6.255,233,2.799,254,4.221,256,2.799,264,4.607,286,3.072,308,4.607,311,5.125,326,3.912,419,2.778,470,4.221,529,3.435,564,5.125,695,3.912,706,5.125,714,4.221,772,5.125,776,5.91,777,5.91,778,5.91,779,5.91,780,5.91,781,8.759,782,8.759,783,10.436,784,5.91,785,5.91,786,5.91,787,5.91,788,5.91,789,5.91,790,5.91,791,5.125]],["keywords/59",[]],["title/60",[7,72.568,52,129.248,266,462.311]],["content/60",[1,0.177,2,1.181,3,0.342,4,0.853,5,1.181,7,0.589,8,0.853,23,3.752,24,4.096,25,4.096,26,9.431,27,3.249,42,3.478,52,2.465,60,2.125,84,3.249,89,4.556,94,3.249,103,4.556,122,4.556,133,2.25,152,2.25,182,2.355,197,1.895,212,3.768,217,2.25,221,2.883,226,1.381,227,5.725,232,4.556,233,3.743,234,3.752,252,4.556,266,7.768,270,3.433,271,2.883,285,3.249,304,1.895,307,2.355,308,4.096,343,3.958,379,3.054,394,2.731,399,3.478,695,3.478,696,4.096,701,3.752,756,4.556,770,4.556,791,4.556,792,5.254,793,5.254,794,9.721,795,5.254,796,8.017,797,5.254,798,5.254,799,5.254,800,5.254,801,5.254,802,5.254,803,5.254,804,5.254,805,5.254,806,5.254,807,5.254,808,5.254]],["keywords/60",[]],["title/61",[809,973.298]],["content/61",[]],["keywords/61",[]],["title/62",[474,426.602,810,674.21]],["content/62",[7,1.407,9,2.621,35,3.752,52,2.505,152,5.374,197,3.599,266,8.962,267,3.914,270,5.374,427,7.777,474,5.473,512,7.124,810,8.65,811,12.549,812,9.976]],["keywords/62",[]],["title/63",[7,62.16,267,217.548,680,432.271,813,480.822]],["content/63",[7,1.41,9,2.185,53,5.938,68,5.143,69,4.833,72,4.562,135,4.833,152,3.561,171,4.322,228,4.562,233,2.657,235,4.562,262,7.21,267,4.934,268,7.379,270,3.561,279,5.504,364,5.504,399,5.504,453,6.482,474,4.562,507,6.482,588,5.938,680,6.482,762,7.21,813,7.21,814,8.316,815,8.316,816,8.316,817,8.316,818,8.316,819,8.316,820,8.316,821,8.316]],["keywords/63",[]],["title/64",[7,62.16,52,110.712,497,396.007,822,480.822]],["content/64",[1,0.27,4,0.854,7,0.899,8,0.854,9,2.107,52,1.601,60,1.971,132,5.308,152,3.434,180,4.661,194,3.015,196,3.285,201,2.893,214,4.167,215,5.654,228,4.399,239,5.37,242,2.667,267,3.146,271,4.399,275,3.285,277,6.251,296,4.399,303,7.769,378,6.953,427,6.251,456,6.953,484,6.953,497,5.727,638,6.953,822,6.953,823,8.019,824,8.019,825,8.019,826,8.019,827,6.953,828,8.019]],["keywords/64",[]],["title/65",[4,68.905,334,400.366,685,428.507]],["content/65",[1,0.245,2,1.635,3,0.585,4,0.493,7,1.14,8,0.493,35,1.742,52,2.03,60,2.293,93,2.864,99,2.864,182,3.26,214,2.407,215,2.407,226,1.911,233,2.869,242,2.986,256,2.324,263,2.864,270,1.984,271,2.541,283,4.813,296,3.989,297,1.54,303,5.193,304,2.623,313,2.177,316,2.541,320,3.61,334,2.864,393,2.692,394,4.665,422,5.668,460,3.61,474,3.989,496,3.61,497,3.308,502,4.016,609,3.61,685,3.066,693,6.998,694,6.305,695,3.066,696,5.668,697,8.818,698,6.305,701,7.262,702,4.016,704,6.305,827,4.016,829,4.632,830,4.632,831,4.632,832,7.272,833,7.272,834,4.632,835,7.272,836,4.632,837,4.632]],["keywords/65",[]],["title/66",[8,82.762,206,383.847]],["content/66",[]],["keywords/66",[0,47.015,1,7.326,2,48.901,3,14.165,4,23.148,5,48.901,6,48.901,7,24.379]],["title/67",[100,505.818]],["content/67",[8,1.05,60,2.333,193,3.281,196,4.042,206,4.871,217,4.226,226,2.593,256,3.153,276,3.982,304,4.495,463,5.128,647,5.413]],["keywords/67",[]],["title/68",[275,398.724]],["content/68",[8,1.235,52,2.002,60,2.277,66,6.181,193,3.335,196,2.92,197,2.572,206,5.728,208,6.908,215,3.705,217,3.053,222,5.557,226,1.873,235,3.911,236,4.409,245,4.719,254,5.091,256,2.278,273,4.719,275,2.92,276,3.708,297,2.371,314,6.181,349,4.719,364,4.719,419,3.35,424,5.091,463,3.705,587,5.557,647,3.911,752,6.181,838,7.129,839,7.129,840,7.129]],["keywords/68",[]]],"invertedIndex":[["",{"_index":60,"title":{"7":{"position":[[11,1]]},"31":{"position":[[16,2]]},"32":{"position":[[16,1]]},"54":{"position":[[5,1]]}},"content":{"1":{"position":[[657,4],[859,1]]},"7":{"position":[[488,1],[563,1],[933,1],[1016,1]]},"9":{"position":[[380,1],[392,1],[429,2],[500,1]]},"11":{"position":[[134,1],[197,1],[262,1],[285,3],[289,2],[292,2],[295,3]]},"12":{"position":[[121,1],[164,1],[176,1],[293,1],[316,3],[320,2],[323,2],[326,3]]},"14":{"position":[[247,1],[266,1],[806,1],[901,2],[912,1],[914,2],[1147,1],[1195,2],[1219,1],[1276,1],[1278,1],[1402,1],[1460,1],[1488,2],[1574,1],[1576,1]]},"19":{"position":[[664,2],[721,2],[866,2],[1240,2]]},"20":{"position":[[115,1],[127,1]]},"23":{"position":[[363,1],[389,1],[424,2],[427,1]]},"24":{"position":[[141,1],[207,2],[223,1],[225,2],[304,2],[360,1],[388,2],[440,1],[467,2],[495,1],[529,1],[542,1],[566,2],[629,2],[653,2],[663,1],[676,1],[685,1],[697,1],[717,2],[782,2],[855,1],[872,1],[874,1],[892,2],[971,1],[1000,1],[1002,1]]},"25":{"position":[[270,1],[291,1],[317,1],[352,2],[355,1],[357,1]]},"26":{"position":[[226,2],[285,1],[287,1],[337,2],[340,2],[368,2],[389,2]]},"27":{"position":[[418,1],[498,1],[544,1],[680,1],[685,1],[687,1]]},"29":{"position":[[162,1]]},"30":{"position":[[359,1]]},"38":{"position":[[168,1],[216,1],[230,2],[233,3],[237,2],[295,2],[321,2]]},"39":{"position":[[277,1],[325,2],[407,1],[423,1],[475,1],[561,1],[563,1]]},"40":{"position":[[302,1],[357,2],[383,1],[420,1],[422,1]]},"41":{"position":[[213,1],[261,2],[275,1],[290,1],[326,1],[328,1],[337,1],[339,4],[344,1],[346,1]]},"44":{"position":[[616,1],[708,2],[721,1],[723,1],[725,1],[727,1],[729,3],[760,1],[762,2],[811,2],[841,3],[870,2],[879,1],[948,3],[952,1],[964,1],[966,1],[968,1],[970,1],[972,3],[976,2],[979,3],[1022,2],[1092,1],[1119,2],[1122,2],[1152,1],[1191,1],[1193,1]]},"47":{"position":[[33,1],[81,1],[95,2],[98,3],[102,2],[105,2],[108,3],[112,2],[138,2]]},"49":{"position":[[139,1],[187,1],[202,2],[205,3],[209,2],[212,2],[215,3],[219,2],[267,1],[309,1],[368,1],[370,1]]},"50":{"position":[[389,1],[401,1],[440,2],[518,2],[533,2],[544,2],[571,1]]},"52":{"position":[[33,1],[81,1],[114,2],[117,3],[121,2],[124,2],[127,3],[131,2],[157,2]]},"53":{"position":[[33,1],[142,2],[157,1],[248,2],[251,2],[254,3],[258,2],[261,2],[264,3],[268,2],[294,2]]},"54":{"position":[[5,1],[174,1],[208,1],[222,2],[225,3],[542,2],[568,1],[617,2],[620,5],[637,1],[639,1],[696,2],[699,2]]},"55":{"position":[[361,1],[396,1],[410,2],[413,3],[417,2],[420,2],[423,3],[427,2],[453,2],[538,1],[573,1],[588,1],[590,3],[594,1],[607,1],[609,1],[657,2],[660,2],[663,2],[666,3],[670,2],[696,2]]},"57":{"position":[[204,1],[232,1]]},"58":{"position":[[243,1],[245,2],[318,2],[400,1],[416,1],[455,2],[525,1],[559,1],[592,1],[594,1]]},"59":{"position":[[308,1],[410,1],[412,1],[422,1],[451,1],[492,1],[494,1],[665,2],[763,3]]},"60":{"position":[[485,1],[502,1],[545,1],[613,2],[630,2],[693,3],[1045,1],[1134,1],[1136,2],[1148,1],[1188,1],[1190,1]]},"64":{"position":[[291,1],[467,1],[499,2],[502,3]]},"65":{"position":[[311,1],[403,2],[416,1],[418,1],[420,1],[422,1],[424,3],[447,1],[474,2],[483,1],[485,2],[548,2],[662,3],[666,1],[668,1],[951,1],[1019,1],[1021,1],[1023,1],[1025,1],[1027,3],[1089,1],[1131,2],[1134,2],[1156,1],[1195,1],[1197,1]]},"67":{"position":[[49,1],[78,1],[92,2],[95,3],[99,2],[102,2],[105,3],[109,2],[135,2]]},"68":{"position":[[167,1],[196,1],[211,1],[213,3],[217,1],[230,1],[232,1],[274,2],[277,2],[280,2],[283,3],[287,2],[313,2]]}},"keywords":{}}],["1.6.2",{"_index":191,"title":{},"content":{"3":{"position":[[385,6]]}},"keywords":{}}],["10",{"_index":603,"title":{"31":{"position":[[19,3]]},"32":{"position":[[18,3]]}},"content":{},"keywords":{}}],["2.0",{"_index":174,"title":{},"content":{"3":{"position":[[156,3]]}},"keywords":{}}],["22",{"_index":584,"title":{},"content":{"27":{"position":[[717,3]]}},"keywords":{}}],["3.0",{"_index":166,"title":{},"content":{"3":{"position":[[13,3]]}},"keywords":{}}],["4.4",{"_index":183,"title":{},"content":{"3":{"position":[[260,3]]}},"keywords":{}}],["4244",{"_index":407,"title":{},"content":{"14":{"position":[[1535,4]]}},"keywords":{}}],["49a6",{"_index":406,"title":{},"content":{"14":{"position":[[1530,4]]}},"keywords":{}}],["50",{"_index":594,"title":{},"content":{"29":{"position":[[483,5]]}},"keywords":{}}],["67",{"_index":591,"title":{},"content":{"29":{"position":[[332,3]]},"50":{"position":[[290,4]]}},"keywords":{}}],["75a2df11517a>",{"_index":409,"title":{},"content":{"14":{"position":[[1545,16]]}},"keywords":{}}],["8",{"_index":294,"title":{},"content":{"7":{"position":[[868,1]]},"34":{"position":[[222,3]]}},"keywords":{}}],["82",{"_index":820,"title":{},"content":{"63":{"position":[[419,3]]}},"keywords":{}}],["869f",{"_index":408,"title":{},"content":{"14":{"position":[[1540,4]]}},"keywords":{}}],["absolut",{"_index":350,"title":{},"content":{"9":{"position":[[551,10]]}},"keywords":{}}],["accept",{"_index":224,"title":{},"content":{"5":{"position":[[611,7]]},"6":{"position":[[98,7],[168,7],[268,6],[812,8],[1003,8],[1154,7]]}},"keywords":{}}],["access",{"_index":35,"title":{"41":{"position":[[0,6]]}},"content":{"1":{"position":[[318,6]]},"2":{"position":[[174,6]]},"9":{"position":[[119,6],[445,6]]},"15":{"position":[[635,6]]},"17":{"position":[[655,6]]},"19":{"position":[[1280,6]]},"20":{"position":[[392,10]]},"24":{"position":[[895,9]]},"27":{"position":[[576,9]]},"36":{"position":[[236,8]]},"39":{"position":[[57,6]]},"40":{"position":[[61,6]]},"57":{"position":[[564,6]]},"62":{"position":[[128,6]]},"65":{"position":[[73,6]]}},"keywords":{}}],["accident",{"_index":109,"title":{},"content":{"2":{"position":[[391,12]]}},"keywords":{}}],["accord",{"_index":269,"title":{},"content":{"6":{"position":[[1204,9]]},"43":{"position":[[92,9]]}},"keywords":{}}],["account",{"_index":454,"title":{},"content":{"17":{"position":[[575,8]]}},"keywords":{}}],["achiev",{"_index":827,"title":{},"content":{"64":{"position":[[296,7]]},"65":{"position":[[769,7]]}},"keywords":{}}],["activ",{"_index":495,"title":{},"content":{"19":{"position":[[1372,6]]}},"keywords":{}}],["actual",{"_index":51,"title":{},"content":{"1":{"position":[[547,6]]},"57":{"position":[[471,8]]}},"keywords":{}}],["ad",{"_index":101,"title":{},"content":{"2":{"position":[[308,5]]}},"keywords":{}}],["add",{"_index":624,"title":{},"content":{"33":{"position":[[345,3]]}},"keywords":{}}],["addit",{"_index":203,"title":{"10":{"position":[[0,10]]}},"content":{"5":{"position":[[118,10],[210,10],[309,10],[984,10]]},"6":{"position":[[632,10]]},"7":{"position":[[1128,10]]},"16":{"position":[[144,10]]},"20":{"position":[[38,10]]},"21":{"position":[[26,8]]}},"keywords":{}}],["addition",{"_index":305,"title":{},"content":{"7":{"position":[[1331,12]]},"32":{"position":[[152,13]]}},"keywords":{}}],["address",{"_index":368,"title":{"39":{"position":[[10,7]]}},"content":{"13":{"position":[[114,7]]},"17":{"position":[[1126,9]]},"37":{"position":[[67,7]]},"39":{"position":[[121,7]]}},"keywords":{}}],["admin",{"_index":774,"title":{},"content":{"58":{"position":[[561,8]]}},"keywords":{}}],["advanc",{"_index":176,"title":{},"content":{"3":{"position":[[167,8]]}},"keywords":{}}],["advantag",{"_index":163,"title":{},"content":{"2":{"position":[[1121,10]]}},"keywords":{}}],["advis",{"_index":598,"title":{},"content":{"30":{"position":[[291,7]]}},"keywords":{}}],["affect",{"_index":801,"title":{},"content":{"60":{"position":[[878,6]]}},"keywords":{}}],["again",{"_index":800,"title":{},"content":{"60":{"position":[[698,6]]}},"keywords":{}}],["aim",{"_index":330,"title":{},"content":{"9":{"position":[[38,4]]}},"keywords":{}}],["alia",{"_index":560,"title":{},"content":{"26":{"position":[[431,5]]}},"keywords":{}}],["align",{"_index":739,"title":{},"content":{"54":{"position":[[124,5]]}},"keywords":{}}],["allow",{"_index":184,"title":{},"content":{"3":{"position":[[273,8]]},"15":{"position":[[167,6]]},"27":{"position":[[561,5]]}},"keywords":{}}],["along",{"_index":643,"title":{},"content":{"37":{"position":[[154,6]]}},"keywords":{}}],["alreadi",{"_index":159,"title":{},"content":{"2":{"position":[[1044,7]]},"16":{"position":[[246,7]]},"19":{"position":[[570,7]]}},"keywords":{}}],["altern",{"_index":167,"title":{},"content":{"3":{"position":[[50,11]]},"24":{"position":[[720,14]]},"25":{"position":[[0,14]]},"32":{"position":[[415,14]]}},"keywords":{}}],["alway",{"_index":680,"title":{"63":{"position":[[18,6]]}},"content":{"42":{"position":[[294,6]]},"63":{"position":[[255,6]]}},"keywords":{}}],["amaz",{"_index":78,"title":{},"content":{"2":{"position":[[13,7]]}},"keywords":{}}],["andreialecu",{"_index":613,"title":{},"content":{"32":{"position":[[516,13]]}},"keywords":{}}],["anoth",{"_index":749,"title":{},"content":{"55":{"position":[[21,7]]}},"keywords":{}}],["anyth",{"_index":428,"title":{},"content":{"15":{"position":[[576,8]]},"41":{"position":[[100,9]]}},"keywords":{}}],["anywher",{"_index":389,"title":{},"content":{"14":{"position":[[1048,9],[1298,8]]},"36":{"position":[[245,8]]}},"keywords":{}}],["api",{"_index":151,"title":{"8":{"position":[[0,3]]}},"content":{"2":{"position":[[924,3]]},"3":{"position":[[80,4]]},"8":{"position":[[0,3],[44,3]]},"19":{"position":[[49,3]]},"29":{"position":[[203,3]]},"50":{"position":[[209,3]]}},"keywords":{}}],["apollo",{"_index":600,"title":{},"content":{"30":{"position":[[361,6]]},"32":{"position":[[301,6]]}},"keywords":{}}],["app",{"_index":426,"title":{},"content":{"15":{"position":[[550,4]]},"44":{"position":[[54,3]]},"50":{"position":[[397,3]]}},"keywords":{}}],["app.controller.t",{"_index":665,"title":{},"content":{"40":{"position":[[207,17]]}},"keywords":{}}],["app.listen(3000",{"_index":728,"title":{},"content":{"50":{"position":[[553,17]]}},"keywords":{}}],["app.module.t",{"_index":647,"title":{},"content":{"38":{"position":[[135,13]]},"47":{"position":[[0,13]]},"49":{"position":[[106,13]]},"52":{"position":[[0,13]]},"53":{"position":[[0,13]]},"55":{"position":[[328,13],[505,13]]},"67":{"position":[[16,13]]},"68":{"position":[[134,13]]}},"keywords":{}}],["app.service.t",{"_index":670,"title":{},"content":{"41":{"position":[[160,14]]}},"keywords":{}}],["app.us",{"_index":606,"title":{"50":{"position":[[6,8]]}},"content":{"32":{"position":[[83,12]]},"50":{"position":[[489,8],[628,10]]}},"keywords":{}}],["app_guard",{"_index":839,"title":{},"content":{"68":{"position":[[243,10]]}},"keywords":{}}],["app_interceptor",{"_index":664,"title":{},"content":{"40":{"position":[[190,16]]},"55":{"position":[[489,15],[620,16]]}},"keywords":{}}],["appar",{"_index":724,"title":{},"content":{"50":{"position":[[242,10]]}},"keywords":{}}],["appcontrol",{"_index":649,"title":{},"content":{"38":{"position":[[278,16]]},"40":{"position":[[288,13]]}},"keywords":{}}],["applic",{"_index":279,"title":{},"content":{"7":{"position":[[273,10]]},"15":{"position":[[360,12]]},"42":{"position":[[279,11]]},"44":{"position":[[221,11]]},"63":{"position":[[335,13]]}},"keywords":{}}],["appmodul",{"_index":463,"title":{},"content":{"17":{"position":[[1051,9]]},"38":{"position":[[311,9]]},"47":{"position":[[128,9]]},"49":{"position":[[235,9]]},"52":{"position":[[147,9]]},"53":{"position":[[284,9]]},"55":{"position":[[443,9],[686,9]]},"67":{"position":[[125,9]]},"68":{"position":[[303,9]]}},"keywords":{}}],["approach",{"_index":556,"title":{},"content":{"26":{"position":[[26,8]]}},"keywords":{}}],["appservic",{"_index":648,"title":{},"content":{"38":{"position":[[251,13]]},"40":{"position":[[333,11],[345,11]]},"41":{"position":[[7,11],[133,10],[202,10]]}},"keywords":{}}],["appspropag",{"_index":30,"title":{},"content":{"1":{"position":[[257,15]]}},"keywords":{}}],["arg",{"_index":265,"title":{},"content":{"6":{"position":[[1105,9]]}},"keywords":{}}],["argument",{"_index":290,"title":{},"content":{"7":{"position":[[733,8]]},"24":{"position":[[805,10]]}},"keywords":{}}],["around",{"_index":636,"title":{},"content":{"36":{"position":[[192,6]]}},"keywords":{}}],["around.us",{"_index":49,"title":{},"content":{"1":{"position":[[491,12]]}},"keywords":{}}],["array",{"_index":220,"title":{},"content":{"5":{"position":[[525,5]]},"6":{"position":[[1029,5],[1165,5],[1235,6]]}},"keywords":{}}],["assign",{"_index":511,"title":{},"content":{"20":{"position":[[500,11]]},"58":{"position":[[77,6],[462,6]]}},"keywords":{}}],["assum",{"_index":440,"title":{},"content":{"16":{"position":[[228,7]]},"37":{"position":[[179,7]]}},"keywords":{}}],["async",{"_index":2,"title":{"53":{"position":[[0,6]]}},"content":{"44":{"position":[[733,5],[1125,5]]},"45":{"position":[[276,6],[327,5]]},"60":{"position":[[420,5]]},"65":{"position":[[428,5],[1137,5]]}},"keywords":{"0":{"position":[[0,5]]},"4":{"position":[[0,5]]},"8":{"position":[[0,5]]},"9":{"position":[[0,5]]},"10":{"position":[[0,5]]},"13":{"position":[[0,5]]},"14":{"position":[[0,5]]},"15":{"position":[[0,5]]},"16":{"position":[[0,5]]},"17":{"position":[[0,5]]},"18":{"position":[[0,5]]},"21":{"position":[[0,5]]},"22":{"position":[[0,5]]},"28":{"position":[[0,5]]},"35":{"position":[[0,5]]},"43":{"position":[[0,5]]},"44":{"position":[[0,5]]},"45":{"position":[[0,5]]},"46":{"position":[[0,5]]},"51":{"position":[[0,5]]},"54":{"position":[[0,5]]},"55":{"position":[[0,5]]},"56":{"position":[[0,5]]},"66":{"position":[[0,5]]}}}],["async_hook",{"_index":136,"title":{},"content":{"2":{"position":[[752,11],[1057,11]]}},"keywords":{}}],["asynchron",{"_index":292,"title":{},"content":{"7":{"position":[[764,15]]}},"keywords":{}}],["asynclocalstorag",{"_index":6,"title":{},"content":{"1":{"position":[[969,18]]},"2":{"position":[[493,17]]},"17":{"position":[[39,17]]},"42":{"position":[[216,18]]},"54":{"position":[[595,21]]}},"keywords":{"0":{"position":[[37,17]]},"4":{"position":[[37,17]]},"8":{"position":[[37,17]]},"9":{"position":[[37,17]]},"10":{"position":[[37,17]]},"13":{"position":[[37,17]]},"14":{"position":[[37,17]]},"15":{"position":[[37,17]]},"16":{"position":[[37,17]]},"17":{"position":[[37,17]]},"18":{"position":[[37,17]]},"21":{"position":[[37,17]]},"22":{"position":[[37,17]]},"28":{"position":[[37,17]]},"35":{"position":[[37,17]]},"43":{"position":[[37,17]]},"44":{"position":[[37,17]]},"45":{"position":[[37,17]]},"46":{"position":[[37,17]]},"51":{"position":[[37,17]]},"54":{"position":[[37,17]]},"55":{"position":[[37,17]]},"56":{"position":[[37,17]]},"66":{"position":[[37,17]]}}}],["asynclocalstorage#enterwith",{"_index":314,"title":{},"content":{"7":{"position":[[1724,27]]},"68":{"position":[[442,27]]}},"keywords":{}}],["asynclocalstorage#run",{"_index":319,"title":{},"content":{"7":{"position":[[1803,22]]},"32":{"position":[[483,21]]},"55":{"position":[[117,21]]}},"keywords":{}}],["augment",{"_index":550,"title":{"25":{"position":[[24,13]]}},"content":{"25":{"position":[[115,7]]},"26":{"position":[[43,10]]}},"keywords":{}}],["authent",{"_index":31,"title":{},"content":{"1":{"position":[[277,14]]},"11":{"position":[[264,14]]},"12":{"position":[[295,14]]}},"keywords":{}}],["author",{"_index":530,"title":{},"content":{"23":{"position":[[403,11]]},"24":{"position":[[509,11]]},"25":{"position":[[331,11]]},"27":{"position":[[470,11]]}},"keywords":{}}],["author'",{"_index":371,"title":{},"content":{"13":{"position":[[190,8]]}},"keywords":{}}],["autogener",{"_index":382,"title":{},"content":{"14":{"position":[[755,13]]}},"keywords":{}}],["automat",{"_index":100,"title":{"47":{"position":[[0,14]]},"67":{"position":[[0,14]]}},"content":{"2":{"position":[[294,13]]},"7":{"position":[[200,13],[366,13],[1227,13]]},"14":{"position":[[163,13]]},"23":{"position":[[90,9]]},"29":{"position":[[231,9]]},"38":{"position":[[27,13]]},"55":{"position":[[314,13]]}},"keywords":{}}],["avail",{"_index":27,"title":{},"content":{"1":{"position":[[220,9]]},"5":{"position":[[740,10]]},"6":{"position":[[668,9]]},"7":{"position":[[414,9],[1472,9],[1603,9]]},"59":{"position":[[685,9]]},"60":{"position":[[660,9]]}},"keywords":{}}],["avoid",{"_index":776,"title":{},"content":{"59":{"position":[[73,5]]}},"keywords":{}}],["await",{"_index":701,"title":{},"content":{"44":{"position":[[845,5],[911,5],[1154,5]]},"50":{"position":[[403,5],[547,5]]},"60":{"position":[[547,5]]},"65":{"position":[[449,5],[585,5],[625,5],[1158,5]]}},"keywords":{}}],["awar",{"_index":244,"title":{},"content":{"5":{"position":[[1032,5]]}},"keywords":{}}],["awesom",{"_index":81,"title":{},"content":{"2":{"position":[[55,7]]}},"keywords":{}}],["background",{"_index":634,"title":{"36":{"position":[[0,11]]}},"content":{},"keywords":{}}],["base",{"_index":73,"title":{},"content":{"1":{"position":[[909,5]]},"14":{"position":[[325,5]]}},"keywords":{}}],["basic",{"_index":516,"title":{},"content":{"21":{"position":[[42,5]]}},"keywords":{}}],["becom",{"_index":354,"title":{},"content":{"9":{"position":[[691,6]]}},"keywords":{}}],["befor",{"_index":461,"title":{},"content":{"17":{"position":[[972,6]]}},"keywords":{}}],["behavior",{"_index":502,"title":{},"content":{"20":{"position":[[146,8]]},"65":{"position":[[786,8]]}},"keywords":{}}],["below",{"_index":205,"title":{},"content":{"5":{"position":[[164,6],[251,6],[356,6]]},"14":{"position":[[660,5]]},"33":{"position":[[375,5]]},"37":{"position":[[0,5]]}},"keywords":{}}],["benefit",{"_index":121,"title":{},"content":{"2":{"position":[[577,9]]}},"keywords":{}}],["bind",{"_index":629,"title":{},"content":{"34":{"position":[[87,4]]},"40":{"position":[[155,4]]},"49":{"position":[[59,4]]},"50":{"position":[[602,4]]}},"keywords":{}}],["bodi",{"_index":700,"title":{},"content":{"44":{"position":[[801,4]]}},"keywords":{}}],["boolean",{"_index":213,"title":{},"content":{"5":{"position":[[372,7]]},"7":{"position":[[165,7],[331,7],[1193,7],[1386,7],[1515,7],[1650,7]]},"19":{"position":[[349,7],[1324,7]]},"23":{"position":[[415,8]]},"24":{"position":[[230,7],[521,7]]},"25":{"position":[[343,8]]},"27":{"position":[[482,8]]}},"keywords":{}}],["bootstrap",{"_index":690,"title":{},"content":{"44":{"position":[[233,10]]},"50":{"position":[[342,9],[377,11]]}},"keywords":{}}],["both",{"_index":250,"title":{},"content":{"6":{"position":[[263,4]]}},"keywords":{}}],["bound",{"_index":628,"title":{},"content":{"34":{"position":[[42,5]]},"44":{"position":[[294,5]]}},"keywords":{}}],["break",{"_index":44,"title":{"9":{"position":[[0,8]]}},"content":{"1":{"position":[[429,8]]},"3":{"position":[[92,8]]},"9":{"position":[[0,8]]}},"keywords":{}}],["bring",{"_index":175,"title":{},"content":{"3":{"position":[[160,6]]}},"keywords":{}}],["built",{"_index":82,"title":{},"content":{"2":{"position":[[63,5]]}},"keywords":{}}],["call",{"_index":152,"title":{},"content":{"2":{"position":[[928,6]]},"7":{"position":[[1716,4],[1783,4]]},"14":{"position":[[1280,7]]},"15":{"position":[[139,4],[455,7],[593,6]]},"17":{"position":[[742,5]]},"24":{"position":[[790,6]]},"36":{"position":[[219,6]]},"44":{"position":[[106,6],[816,4]]},"45":{"position":[[122,5]]},"60":{"position":[[725,6]]},"62":{"position":[[166,6],[199,6]]},"63":{"position":[[209,7]]},"64":{"position":[[373,4]]}},"keywords":{}}],["callback",{"_index":429,"title":{},"content":{"15":{"position":[[616,8]]},"19":{"position":[[711,9],[745,8],[856,9],[889,8],[1263,8]]},"20":{"position":[[314,8],[445,8]]}},"keywords":{}}],["callhandl",{"_index":656,"title":{},"content":{"39":{"position":[[371,13]]},"58":{"position":[[364,13]]}},"keywords":{}}],["can't",{"_index":188,"title":{},"content":{"3":{"position":[[319,5]]},"33":{"position":[[132,5]]}},"keywords":{}}],["care",{"_index":632,"title":{},"content":{"34":{"position":[[165,4]]},"44":{"position":[[1211,4]]}},"keywords":{}}],["case",{"_index":9,"title":{"1":{"position":[[4,6]]},"21":{"position":[[17,5]]}},"content":{"1":{"position":[[16,5],[535,5]]},"2":{"position":[[149,5]]},"5":{"position":[[700,6]]},"6":{"position":[[355,4]]},"7":{"position":[[695,4]]},"11":{"position":[[3,4]]},"14":{"position":[[473,4]]},"17":{"position":[[336,6],[483,4]]},"20":{"position":[[189,4]]},"21":{"position":[[17,5]]},"27":{"position":[[119,5],[311,5]]},"29":{"position":[[198,4]]},"30":{"position":[[89,4]]},"42":{"position":[[130,4]]},"43":{"position":[[19,4]]},"44":{"position":[[252,6],[477,5],[1233,4]]},"49":{"position":[[8,5]]},"50":{"position":[[303,5]]},"54":{"position":[[376,4]]},"55":{"position":[[909,4]]},"62":{"position":[[209,4]]},"63":{"position":[[394,5]]},"64":{"position":[[140,6]]}},"keywords":{}}],["caus",{"_index":450,"title":{},"content":{"17":{"position":[[505,6]]},"29":{"position":[[386,5]]}},"keywords":{}}],["caution",{"_index":349,"title":{},"content":{"9":{"position":[[502,7]]},"17":{"position":[[584,7]]},"44":{"position":[[1195,7]]},"50":{"position":[[574,7]]},"68":{"position":[[393,7]]}},"keywords":{}}],["caveat",{"_index":809,"title":{"61":{"position":[[0,8]]}},"content":{},"keywords":{}}],["central",{"_index":96,"title":{},"content":{"2":{"position":[[258,7]]}},"keywords":{}}],["certain",{"_index":576,"title":{},"content":{"27":{"position":[[382,7]]},"48":{"position":[[45,7]]}},"keywords":{}}],["chain",{"_index":246,"title":{},"content":{"5":{"position":[[1073,5]]},"15":{"position":[[144,6],[625,5]]},"36":{"position":[[201,5],[283,5]]}},"keywords":{}}],["chang",{"_index":170,"title":{},"content":{"3":{"position":[[101,7]]},"58":{"position":[[472,6]]},"59":{"position":[[915,8]]}},"keywords":{}}],["chapter",{"_index":323,"title":{},"content":{"8":{"position":[[9,7]]},"13":{"position":[[20,7]]},"17":{"position":[[1118,7]]},"21":{"position":[[91,8]]}},"keywords":{}}],["charact",{"_index":295,"title":{},"content":{"7":{"position":[[870,11]]}},"keywords":{}}],["check",{"_index":477,"title":{},"content":{"19":{"position":[[357,5]]}},"keywords":{}}],["choic",{"_index":620,"title":{},"content":{"33":{"position":[[183,7]]}},"keywords":{}}],["cl",{"_index":1,"title":{"0":{"position":[[7,3]]},"10":{"position":[[11,3]]},"41":{"position":[[7,3]]},"51":{"position":[[15,3]]}},"content":{"1":{"position":[[918,3]]},"5":{"position":[[924,3],[970,3],[995,3]]},"7":{"position":[[890,5],[964,5],[1072,3],[1156,3]]},"9":{"position":[[130,3],[388,3]]},"11":{"position":[[156,5]]},"12":{"position":[[143,5]]},"14":{"position":[[40,3],[641,3],[1178,4],[1316,3]]},"15":{"position":[[381,3],[420,3]]},"16":{"position":[[114,3]]},"17":{"position":[[669,3]]},"19":{"position":[[71,3],[169,3],[235,3],[382,3],[453,3],[535,3],[766,3],[907,3],[1046,3],[1176,3],[1299,3],[1379,3]]},"20":{"position":[[165,3]]},"23":{"position":[[225,3],[293,3]]},"24":{"position":[[172,4]]},"25":{"position":[[265,4]]},"30":{"position":[[198,3]]},"31":{"position":[[109,3]]},"32":{"position":[[293,3],[563,3]]},"36":{"position":[[139,3],[156,3]]},"37":{"position":[[291,3]]},"38":{"position":[[108,3]]},"39":{"position":[[86,3],[169,3],[308,4]]},"40":{"position":[[87,3]]},"41":{"position":[[58,3],[244,4]]},"44":{"position":[[77,3],[691,4],[1080,5]]},"45":{"position":[[242,3]]},"48":{"position":[[38,3]]},"55":{"position":[[51,3],[875,3]]},"57":{"position":[[607,3]]},"59":{"position":[[884,3]]},"60":{"position":[[785,3]]},"64":{"position":[[287,3]]},"65":{"position":[[386,4],[1077,5]]}},"keywords":{"0":{"position":[[32,3]]},"4":{"position":[[32,3]]},"8":{"position":[[32,3]]},"9":{"position":[[32,3]]},"10":{"position":[[32,3]]},"13":{"position":[[32,3]]},"14":{"position":[[32,3]]},"15":{"position":[[32,3]]},"16":{"position":[[32,3]]},"17":{"position":[[32,3]]},"18":{"position":[[32,3]]},"21":{"position":[[32,3]]},"22":{"position":[[32,3]]},"28":{"position":[[32,3]]},"35":{"position":[[32,3]]},"43":{"position":[[32,3]]},"44":{"position":[[32,3]]},"45":{"position":[[32,3]]},"46":{"position":[[32,3]]},"51":{"position":[[32,3]]},"54":{"position":[[32,3]]},"55":{"position":[[32,3]]},"56":{"position":[[32,3]]},"66":{"position":[[32,3]]}}}],["class",{"_index":226,"title":{"57":{"position":[[0,5]]}},"content":{"5":{"position":[[624,5]]},"6":{"position":[[106,5],[365,5],[416,5],[847,5]]},"9":{"position":[[208,5]]},"14":{"position":[[1132,5],[1386,5]]},"24":{"position":[[125,5]]},"26":{"position":[[170,5],[371,5]]},"38":{"position":[[305,5]]},"39":{"position":[[226,5]]},"40":{"position":[[282,5]]},"41":{"position":[[196,5]]},"44":{"position":[[595,5]]},"47":{"position":[[122,5]]},"49":{"position":[[229,5]]},"52":{"position":[[141,5]]},"53":{"position":[[278,5]]},"54":{"position":[[485,5]]},"55":{"position":[[437,5],[680,5]]},"57":{"position":[[39,5],[193,5],[437,5],[516,6]]},"58":{"position":[[2,5],[194,5]]},"59":{"position":[[289,5]]},"60":{"position":[[1027,5]]},"65":{"position":[[290,5],[930,5]]},"67":{"position":[[119,5]]},"68":{"position":[[297,5]]}},"keywords":{}}],["claus",{"_index":102,"title":{},"content":{"2":{"position":[[322,6]]}},"keywords":{}}],["client'",{"_index":641,"title":{},"content":{"37":{"position":[[55,8]]}},"keywords":{}}],["cls.enter",{"_index":423,"title":{},"content":{"15":{"position":[[477,12]]}},"keywords":{}}],["cls.get",{"_index":431,"title":{},"content":{"15":{"position":[[681,10]]}},"keywords":{}}],["cls.get('us",{"_index":583,"title":{},"content":{"27":{"position":[[689,17]]}},"keywords":{}}],["cls.get('user.id",{"_index":580,"title":{},"content":{"27":{"position":[[604,19]]}},"keywords":{}}],["cls.get(cls_id",{"_index":475,"title":{},"content":{"19":{"position":[[313,16]]}},"keywords":{}}],["cls.run",{"_index":422,"title":{},"content":{"15":{"position":[[463,9]]},"45":{"position":[[112,9]]},"65":{"position":[[138,10],[180,9]]}},"keywords":{}}],["cls.set",{"_index":430,"title":{},"content":{"15":{"position":[[667,9]]}},"keywords":{}}],["cls.set('auth",{"_index":362,"title":{},"content":{"11":{"position":[[246,15]]},"12":{"position":[[277,15]]}},"keywords":{}}],["cls.set('mod",{"_index":708,"title":{},"content":{"44":{"position":[[1094,15]]}},"keywords":{}}],["cls.set('tenant_id",{"_index":360,"title":{},"content":{"11":{"position":[[199,20]]},"12":{"position":[[230,20]]}},"keywords":{}}],["cls_id",{"_index":282,"title":{},"content":{"7":{"position":[[434,6]]},"14":{"position":[[944,6]]}},"keywords":{}}],["cls_re",{"_index":311,"title":{},"content":{"7":{"position":[[1623,7]]},"59":{"position":[[159,7]]}},"keywords":{}}],["cls_req",{"_index":308,"title":{},"content":{"7":{"position":[[1492,7]]},"59":{"position":[[147,7]]},"60":{"position":[[370,9]]}},"keywords":{}}],["clscontextopt",{"_index":488,"title":{"20":{"position":[[0,18]]}},"content":{"19":{"position":[[692,18],[986,19]]}},"keywords":{}}],["clsguard",{"_index":208,"title":{},"content":{"5":{"position":[[237,9]]},"14":{"position":[[480,8]]},"17":{"position":[[372,8],[818,8],[989,9]]},"32":{"position":[[405,9]]},"33":{"position":[[8,8]]},"34":{"position":[[96,8]]},"55":{"position":[[103,8],[647,9]]},"68":{"position":[[77,8],[264,9],[424,8],[488,8]]}},"keywords":{}}],["clsguardopt",{"_index":207,"title":{},"content":{"5":{"position":[[179,15]]}},"keywords":{}}],["clsinterceptor",{"_index":211,"title":{},"content":{"5":{"position":[[336,15]]},"17":{"position":[[231,14]]},"32":{"position":[[446,15]]},"33":{"position":[[20,14]]},"34":{"position":[[108,14]]},"55":{"position":[[69,15]]}},"keywords":{}}],["clsinterceptoropt",{"_index":210,"title":{},"content":{"5":{"position":[[272,21]]}},"keywords":{}}],["clsmiddlewar",{"_index":204,"title":{},"content":{"5":{"position":[[145,14]]},"17":{"position":[[213,13],[386,14],[771,13]]},"29":{"position":[[100,13],[257,13],[433,13]]},"31":{"position":[[132,13]]},"32":{"position":[[35,13],[209,13]]},"38":{"position":[[51,13]]},"40":{"position":[[108,13]]},"49":{"position":[[68,13]]},"50":{"position":[[502,15]]}},"keywords":{}}],["clsmiddlewareopt",{"_index":202,"title":{},"content":{"5":{"position":[[82,20]]},"7":{"position":[[1310,20]]}},"keywords":{}}],["clsmodul",{"_index":326,"title":{"38":{"position":[[13,10]]}},"content":{"8":{"position":[[74,9]]},"36":{"position":[[31,9]]},"38":{"position":[[13,9]]},"59":{"position":[[228,10]]}},"keywords":{}}],["clsmodule.forfeatur",{"_index":218,"title":{},"content":{"5":{"position":[[460,22]]},"6":{"position":[[4,22]]},"26":{"position":[[248,25]]},"57":{"position":[[275,22]]}},"keywords":{}}],["clsmodule.forfeature(us",{"_index":761,"title":{},"content":{"57":{"position":[[374,27]]}},"keywords":{}}],["clsmodule.forfeatureasync",{"_index":227,"title":{},"content":{"5":{"position":[[651,27]]},"6":{"position":[[133,27]]},"59":{"position":[[563,27],[637,27]]},"60":{"position":[[113,27],[270,27]]}},"keywords":{}}],["clsmodule.forroot",{"_index":196,"title":{},"content":{"5":{"position":[[4,19]]},"11":{"position":[[102,19]]},"12":{"position":[[88,19]]},"14":{"position":[[774,19]]},"38":{"position":[[170,19]]},"47":{"position":[[35,19]]},"49":{"position":[[141,19]]},"50":{"position":[[689,20]]},"52":{"position":[[35,19]]},"54":{"position":[[176,19]]},"55":{"position":[[285,19],[363,19],[540,19]]},"64":{"position":[[435,19]]},"67":{"position":[[51,19]]},"68":{"position":[[169,19]]}},"keywords":{}}],["clsmodule.forrootasync",{"_index":230,"title":{},"content":{"5":{"position":[[707,24]]},"53":{"position":[[35,24]]}},"keywords":{}}],["clsmodule.regist",{"_index":741,"title":{},"content":{"54":{"position":[[153,20]]}},"keywords":{}}],["clsmoduleopt",{"_index":200,"title":{},"content":{"5":{"position":[[51,17]]},"7":{"position":[[93,16]]}},"keywords":{}}],["clsmoduleproxyclassprovideropt",{"_index":248,"title":{},"content":{"6":{"position":[[183,34],[759,34]]}},"keywords":{}}],["clsmoduleproxyfactoryprovideropt",{"_index":249,"title":{},"content":{"6":{"position":[[221,36],[948,36]]}},"keywords":{}}],["clsservic",{"_index":297,"title":{"19":{"position":[[0,11]]},"23":{"position":[[10,11]]}},"content":{"7":{"position":[[896,11],[970,11]]},"8":{"position":[[55,10]]},"9":{"position":[[661,10]]},"14":{"position":[[980,10],[1183,11]]},"17":{"position":[[961,10]]},"19":{"position":[[15,10]]},"23":{"position":[[53,10]]},"24":{"position":[[24,10]]},"25":{"position":[[199,10]]},"26":{"position":[[94,10],[325,11]]},"36":{"position":[[70,10],[297,11]]},"39":{"position":[[39,10],[313,11]]},"41":{"position":[[249,11]]},"44":{"position":[[696,11]]},"54":{"position":[[425,10]]},"65":{"position":[[391,11]]},"68":{"position":[[40,11]]}},"keywords":{}}],["clsservice#resolveproxyprovid",{"_index":828,"title":{},"content":{"64":{"position":[[378,34]]}},"keywords":{}}],["clsservice#run",{"_index":692,"title":{},"content":{"44":{"position":[[422,15],[824,16]]}},"keywords":{}}],["clsservice#setifundefin",{"_index":599,"title":{},"content":{"30":{"position":[[310,27]]}},"keywords":{}}],["clsservice<myclsstore>",{"_index":531,"title":{},"content":{"24":{"position":[[57,28],[177,29]]},"25":{"position":[[38,28]]},"26":{"position":[[197,28],[441,28]]}},"keywords":{}}],["clsservice<mystore>",{"_index":746,"title":{},"content":{"54":{"position":[[516,25]]}},"keywords":{}}],["clsservicemanag",{"_index":336,"title":{},"content":{"9":{"position":[[190,17]]}},"keywords":{}}],["clsservicemanager.getclsservic",{"_index":344,"title":{},"content":{"9":{"position":[[394,34]]}},"keywords":{}}],["clsstore",{"_index":469,"title":{},"content":{"19":{"position":[[135,9]]},"23":{"position":[[280,9],[354,8]]},"25":{"position":[[127,8],[282,8]]},"27":{"position":[[287,9],[409,8]]}},"keywords":{}}],["cls{middleware,guard,interceptor}opt",{"_index":272,"title":{},"content":{"7":{"position":[[11,40]]}},"keywords":{}}],["clunki",{"_index":65,"title":{},"content":{"1":{"position":[[804,6]]}},"keywords":{}}],["code",{"_index":99,"title":{},"content":{"2":{"position":[[289,4]]},"9":{"position":[[681,4]]},"19":{"position":[[1029,4],[1162,4],[1352,4]]},"44":{"position":[[500,4]]},"55":{"position":[[168,5]]},"65":{"position":[[213,4]]}},"keywords":{}}],["code.inherit",{"_index":508,"title":{},"content":{"20":{"position":[[422,12]]}},"keywords":{}}],["combin",{"_index":715,"title":{},"content":{"48":{"position":[[139,11]]}},"keywords":{}}],["come",{"_index":66,"title":{},"content":{"1":{"position":[[815,4],[870,5]]},"68":{"position":[[497,5]]}},"keywords":{}}],["common",{"_index":10,"title":{},"content":{"1":{"position":[[5,6]]},"15":{"position":[[51,6]]}},"keywords":{}}],["compar",{"_index":146,"title":{},"content":{"2":{"position":[[872,8]]}},"keywords":{}}],["compat",{"_index":331,"title":{"28":{"position":[[0,13]]}},"content":{"9":{"position":[[49,10]]},"13":{"position":[[78,10]]},"17":{"position":[[1136,13]]},"29":{"position":[[16,10]]},"31":{"position":[[40,10]]},"33":{"position":[[353,13]]}},"keywords":{}}],["compil",{"_index":155,"title":{},"content":{"2":{"position":[[959,8]]}},"keywords":{}}],["complain",{"_index":566,"title":{},"content":{"27":{"position":[[142,8]]}},"keywords":{}}],["complex",{"_index":229,"title":{},"content":{"5":{"position":[[688,7]]},"27":{"position":[[71,8]]}},"keywords":{}}],["compon",{"_index":779,"title":{},"content":{"59":{"position":[[111,10]]}},"keywords":{}}],["concern",{"_index":369,"title":{},"content":{"13":{"position":[[126,8]]}},"keywords":{}}],["concurr",{"_index":443,"title":{},"content":{"17":{"position":[[76,10]]}},"keywords":{}}],["configur",{"_index":259,"title":{},"content":{"6":{"position":[[711,13]]},"17":{"position":[[404,10]]},"55":{"position":[[236,13]]}},"keywords":{}}],["configure(consum",{"_index":718,"title":{},"content":{"49":{"position":[[269,19]]}},"keywords":{}}],["confirm",{"_index":626,"title":{},"content":{"33":{"position":[[420,9]]}},"keywords":{}}],["connect",{"_index":26,"title":{},"content":{"1":{"position":[[209,10]]},"60":{"position":[[258,11],[534,10],[601,11],[1104,11]]}},"keywords":{}}],["consequ",{"_index":452,"title":{},"content":{"17":{"position":[[537,11],[631,10]]}},"keywords":{}}],["consid",{"_index":679,"title":{},"content":{"42":{"position":[[169,8]]},"55":{"position":[[183,10]]}},"keywords":{}}],["consider",{"_index":364,"title":{"13":{"position":[[0,14]]}},"content":{"13":{"position":[[0,14]]},"15":{"position":[[503,14]]},"63":{"position":[[372,13]]},"68":{"position":[[522,15]]}},"keywords":{}}],["console.log(`<${this.cls.getid()}>",{"_index":396,"title":{},"content":{"14":{"position":[[1221,40]]}},"keywords":{}}],["console.log(cls.getid",{"_index":348,"title":{},"content":{"9":{"position":[[474,25]]}},"keywords":{}}],["const",{"_index":343,"title":{},"content":{"9":{"position":[[382,5]]},"12":{"position":[[166,5]]},"24":{"position":[[345,5],[427,5],[531,5],[849,5],[956,5]]},"27":{"position":[[674,5]]},"39":{"position":[[409,5],[462,5]]},"41":{"position":[[277,5]]},"50":{"position":[[391,5]]},"54":{"position":[[545,5]]},"58":{"position":[[402,5]]},"60":{"position":[[487,5],[528,5]]}},"keywords":{}}],["constant",{"_index":385,"title":{},"content":{"14":{"position":[[951,8]]}},"keywords":{}}],["constructor",{"_index":695,"title":{},"content":{"44":{"position":[[618,12]]},"50":{"position":[[759,12]]},"59":{"position":[[336,12]]},"60":{"position":[[1047,12]]},"65":{"position":[[313,12]]}},"keywords":{}}],["constructor(priv",{"_index":393,"title":{},"content":{"14":{"position":[[1149,19],[1404,19]]},"24":{"position":[[143,19]]},"39":{"position":[[279,19]]},"40":{"position":[[304,19]]},"41":{"position":[[215,19]]},"58":{"position":[[277,19]]},"65":{"position":[[953,19]]}},"keywords":{}}],["consum",{"_index":688,"title":{},"content":{"44":{"position":[[189,9]]}},"keywords":{}}],["consumer.apply(clsmiddleware).forroutes('custom/rout",{"_index":720,"title":{},"content":{"49":{"position":[[311,56]]}},"keywords":{}}],["contain",{"_index":564,"title":{},"content":{"27":{"position":[[83,8]]},"59":{"position":[[618,10]]}},"keywords":{}}],["context",{"_index":3,"title":{"41":{"position":[[11,7]]},"51":{"position":[[19,7]]}},"content":{"1":{"position":[[524,7],[750,7]]},"5":{"position":[[928,7]]},"7":{"position":[[1076,7],[1160,8],[1452,8],[1583,8],[1700,7],[1915,7]]},"9":{"position":[[134,7],[288,7],[324,7]]},"12":{"position":[[149,8]]},"14":{"position":[[967,8],[1320,7]]},"15":{"position":[[424,7]]},"17":{"position":[[119,7],[149,7],[310,8],[347,7],[512,7],[673,7],[837,8]]},"19":{"position":[[75,8],[173,8],[239,7],[386,8],[457,8],[539,7],[770,8],[911,7],[1050,8],[1180,7],[1303,8],[1383,8]]},"20":{"position":[[169,7],[231,8],[270,7],[341,8],[376,7],[488,8],[572,8],[668,7],[738,7]]},"27":{"position":[[56,7]]},"29":{"position":[[392,7]]},"31":{"position":[[113,7]]},"32":{"position":[[129,7],[244,7]]},"33":{"position":[[45,7]]},"36":{"position":[[143,8],[160,7]]},"37":{"position":[[295,8]]},"38":{"position":[[112,7]]},"39":{"position":[[173,8]]},"40":{"position":[[91,7]]},"41":{"position":[[62,7]]},"44":{"position":[[128,7],[329,8],[521,7]]},"45":{"position":[[175,7],[246,7]]},"55":{"position":[[55,7]]},"57":{"position":[[611,8]]},"58":{"position":[[84,7]]},"60":{"position":[[789,8]]},"65":{"position":[[35,7],[167,7],[500,7]]}},"keywords":{"0":{"position":[[7,7]]},"4":{"position":[[7,7]]},"8":{"position":[[7,7]]},"9":{"position":[[7,7]]},"10":{"position":[[7,7]]},"13":{"position":[[7,7]]},"14":{"position":[[7,7]]},"15":{"position":[[7,7]]},"16":{"position":[[7,7]]},"17":{"position":[[7,7]]},"18":{"position":[[7,7]]},"21":{"position":[[7,7]]},"22":{"position":[[7,7]]},"28":{"position":[[7,7]]},"35":{"position":[[7,7]]},"43":{"position":[[7,7]]},"44":{"position":[[7,7]]},"45":{"position":[[7,7]]},"46":{"position":[[7,7]]},"51":{"position":[[7,7]]},"54":{"position":[[7,7]]},"55":{"position":[[7,7]]},"56":{"position":[[7,7]]},"66":{"position":[[7,7]]}}}],["context,extract",{"_index":650,"title":{},"content":{"39":{"position":[[90,15]]}},"keywords":{}}],["context.switchtohttp().getrequest",{"_index":658,"title":{},"content":{"39":{"position":[[425,36]]},"58":{"position":[[418,36]]}},"keywords":{}}],["context.switchtohttp().getrequest<request>",{"_index":363,"title":{},"content":{"12":{"position":[[178,51]]}},"keywords":{}}],["continu",{"_index":412,"title":{},"content":{"15":{"position":[[13,12]]}},"keywords":{}}],["control",{"_index":57,"title":{"40":{"position":[[21,11]]}},"content":{"1":{"position":[[624,12]]},"29":{"position":[[52,11]]},"38":{"position":[[265,12]]},"40":{"position":[[41,11]]},"48":{"position":[[86,7]]},"55":{"position":[[922,12]]}},"keywords":{}}],["controller/resolv",{"_index":752,"title":{},"content":{"55":{"position":[[718,19]]},"68":{"position":[[345,19]]}},"keywords":{}}],["conveni",{"_index":706,"title":{},"content":{"44":{"position":[[994,11]]},"59":{"position":[[130,12]]}},"keywords":{}}],["convent",{"_index":740,"title":{},"content":{"54":{"position":[[139,11]]}},"keywords":{}}],["copi",{"_index":510,"title":{},"content":{"20":{"position":[[469,4]]}},"keywords":{}}],["correctli",{"_index":607,"title":{},"content":{"32":{"position":[[108,9]]}},"keywords":{}}],["correl",{"_index":374,"title":{},"content":{"14":{"position":[[82,13]]}},"keywords":{}}],["couldn't",{"_index":108,"title":{},"content":{"2":{"position":[[382,8]]}},"keywords":{}}],["cours",{"_index":663,"title":{},"content":{"40":{"position":[[133,7]]}},"keywords":{}}],["creat",{"_index":87,"title":{"39":{"position":[[0,6]]}},"content":{"2":{"position":[[104,7]]},"20":{"position":[[684,8]]},"23":{"position":[[210,6],[245,8]]},"26":{"position":[[79,6],[125,8]]},"39":{"position":[[0,6]]},"42":{"position":[[178,8]]},"50":{"position":[[443,6]]},"54":{"position":[[405,6]]}},"keywords":{}}],["creation",{"_index":504,"title":{},"content":{"20":{"position":[[177,8]]},"58":{"position":[[56,9]]}},"keywords":{}}],["critic",{"_index":138,"title":{},"content":{"2":{"position":[[777,10]]}},"keywords":{}}],["cron",{"_index":56,"title":{},"content":{"1":{"position":[[619,4]]},"44":{"position":[[173,4],[902,8],[1110,8]]}},"keywords":{}}],["cron('45",{"_index":698,"title":{},"content":{"44":{"position":[[711,9]]},"65":{"position":[[406,9],[1009,9]]}},"keywords":{}}],["cron('90",{"_index":705,"title":{},"content":{"44":{"position":[[954,9]]}},"keywords":{}}],["cron.controller.t",{"_index":832,"title":{},"content":{"65":{"position":[[250,18],[890,18]]}},"keywords":{}}],["croncontrol",{"_index":694,"title":{},"content":{"44":{"position":[[601,14]]},"65":{"position":[[296,14],[936,14]]}},"keywords":{}}],["ctx",{"_index":288,"title":{},"content":{"7":{"position":[[526,5],[982,4]]}},"keywords":{}}],["current",{"_index":223,"title":{},"content":{"5":{"position":[[596,9]]},"19":{"position":[[1344,7]]},"39":{"position":[[71,7]]}},"keywords":{}}],["custom",{"_index":251,"title":{"26":{"position":[[8,6]]}},"content":{"6":{"position":[[304,6]]},"14":{"position":[[371,6],[1090,6]]},"19":{"position":[[128,6]]},"23":{"position":[[28,6]]},"26":{"position":[[136,6]]},"42":{"position":[[189,6]]},"54":{"position":[[446,6]]}},"keywords":{}}],["cyclic",{"_index":565,"title":{},"content":{"27":{"position":[[92,6]]}},"keywords":{}}],["data",{"_index":111,"title":{},"content":{"2":{"position":[[415,4],[434,4]]},"15":{"position":[[91,4],[194,4]]}},"keywords":{}}],["databas",{"_index":25,"title":{},"content":{"1":{"position":[[200,8]]},"2":{"position":[[461,9]]},"60":{"position":[[249,8]]}},"keywords":{}}],["databaseconnectionmodul",{"_index":795,"title":{},"content":{"60":{"position":[[334,27]]}},"keywords":{}}],["databaseconnectionservic",{"_index":796,"title":{},"content":{"60":{"position":[[380,27],[452,26]]}},"keywords":{}}],["db",{"_index":149,"title":{},"content":{"2":{"position":[[909,2]]}},"keywords":{}}],["dbservic",{"_index":797,"title":{},"content":{"60":{"position":[[441,10]]}},"keywords":{}}],["dbservice.gettenantconnection(tenantid",{"_index":799,"title":{},"content":{"60":{"position":[[553,40]]}},"keywords":{}}],["deal",{"_index":130,"title":{},"content":{"2":{"position":[[661,4]]}},"keywords":{}}],["decid",{"_index":366,"title":{},"content":{"13":{"position":[[47,6]]},"33":{"position":[[249,6]]}},"keywords":{}}],["declar",{"_index":554,"title":{},"content":{"25":{"position":[[242,7]]},"26":{"position":[[58,12]]},"45":{"position":[[75,13]]}},"keywords":{}}],["decor",{"_index":263,"title":{"45":{"position":[[8,9]]}},"content":{"6":{"position":[[911,9]]},"44":{"position":[[459,10],[1006,9]]},"45":{"position":[[8,9],[32,9],[297,9]]},"57":{"position":[[106,9]]},"65":{"position":[[755,10]]}},"keywords":{}}],["deep",{"_index":567,"title":{},"content":{"27":{"position":[[182,5]]}},"keywords":{}}],["default",{"_index":214,"title":{},"content":{"5":{"position":[[380,8]]},"6":{"position":[[467,8]]},"7":{"position":[[173,8],[339,8],[802,7],[1201,8],[1394,8],[1523,8],[1658,8]]},"14":{"position":[[287,8]]},"17":{"position":[[249,7]]},"19":{"position":[[940,7],[1209,7]]},"20":{"position":[[294,9]]},"64":{"position":[[3,8]]},"65":{"position":[[732,7]]}},"keywords":{}}],["defin",{"_index":766,"title":{},"content":{"58":{"position":[[17,7]]}},"keywords":{}}],["delay",{"_index":822,"title":{"64":{"position":[[0,7]]}},"content":{"64":{"position":[[191,7]]}},"keywords":{}}],["deleg",{"_index":812,"title":{},"content":{"62":{"position":[[118,9]]}},"keywords":{}}],["dep",{"_index":437,"title":{},"content":{"16":{"position":[[160,5]]}},"keywords":{}}],["depend",{"_index":333,"title":{},"content":{"9":{"position":[[74,10],[605,10]]},"42":{"position":[[258,12]]},"44":{"position":[[505,7]]}},"keywords":{}}],["describ",{"_index":324,"title":{},"content":{"8":{"position":[[17,9]]},"21":{"position":[[62,9]]}},"keywords":{}}],["destructur",{"_index":544,"title":{},"content":{"24":{"position":[[835,13]]}},"keywords":{}}],["detail",{"_index":585,"title":{},"content":{"27":{"position":[[730,8]]}},"keywords":{}}],["details.som",{"_index":592,"title":{},"content":{"29":{"position":[[340,12]]}},"keywords":{}}],["develop",{"_index":107,"title":{},"content":{"2":{"position":[[371,10]]},"21":{"position":[[167,9]]},"44":{"position":[[364,9]]}},"keywords":{}}],["di",{"_index":328,"title":{"9":{"position":[[16,2]]}},"content":{"9":{"position":[[16,2]]}},"keywords":{}}],["difficult",{"_index":352,"title":{},"content":{"9":{"position":[[639,9]]}},"keywords":{}}],["directli",{"_index":273,"title":{},"content":{"7":{"position":[[113,8]]},"27":{"position":[[567,8]]},"50":{"position":[[326,8]]},"55":{"position":[[702,8]]},"68":{"position":[[329,8]]}},"keywords":{}}],["discuss",{"_index":441,"title":{},"content":{"17":{"position":[[21,9]]}},"keywords":{}}],["distinguish",{"_index":759,"title":{},"content":{"57":{"position":[[136,16]]}},"keywords":{}}],["dogs.service.t",{"_index":803,"title":{},"content":{"60":{"position":[[997,15]]}},"keywords":{}}],["dogsservic",{"_index":804,"title":{},"content":{"60":{"position":[[1033,11]]}},"keywords":{}}],["don't",{"_index":553,"title":{},"content":{"25":{"position":[[155,5]]},"34":{"position":[[19,5]]}},"keywords":{}}],["done",{"_index":421,"title":{},"content":{"15":{"position":[[447,4]]}},"keywords":{}}],["dot",{"_index":524,"title":{},"content":{"23":{"position":[[193,3]]}},"keywords":{}}],["dotheth",{"_index":532,"title":{},"content":{"24":{"position":[[210,12]]}},"keywords":{}}],["drop",{"_index":744,"title":{},"content":{"54":{"position":[[277,7]]}},"keywords":{}}],["due",{"_index":569,"title":{},"content":{"27":{"position":[[215,3]]},"30":{"position":[[141,3]]},"32":{"position":[[272,3]]}},"keywords":{}}],["durat",{"_index":446,"title":{},"content":{"17":{"position":[[186,8]]}},"keywords":{}}],["dure",{"_index":637,"title":{},"content":{"36":{"position":[[254,6]]},"44":{"position":[[210,6]]}},"keywords":{}}],["dynam",{"_index":23,"title":{},"content":{"1":{"position":[[185,7]]},"6":{"position":[[739,7]]},"36":{"position":[[23,7]]},"60":{"position":[[207,11]]}},"keywords":{}}],["e.g",{"_index":240,"title":{},"content":{"5":{"position":[[903,5]]},"9":{"position":[[332,5]]}},"keywords":{}}],["each",{"_index":103,"title":{},"content":{"2":{"position":[[332,4]]},"60":{"position":[[735,4]]}},"keywords":{}}],["earli",{"_index":459,"title":{},"content":{"17":{"position":[[871,5]]}},"keywords":{}}],["easi",{"_index":420,"title":{},"content":{"15":{"position":[[305,4]]}},"keywords":{}}],["easier",{"_index":520,"title":{},"content":{"21":{"position":[[177,7]]}},"keywords":{}}],["easili",{"_index":758,"title":{},"content":{"57":{"position":[[129,6]]}},"keywords":{}}],["effect",{"_index":506,"title":{},"content":{"20":{"position":[[250,6]]}},"keywords":{}}],["effort",{"_index":114,"title":{},"content":{"2":{"position":[[485,7]]}},"keywords":{}}],["empti",{"_index":507,"title":{},"content":{"20":{"position":[[335,5]]},"58":{"position":[[45,5]]},"63":{"position":[[86,5]]}},"keywords":{}}],["enabl",{"_index":12,"title":{},"content":{"1":{"position":[[40,7]]},"59":{"position":[[888,7]]}},"keywords":{}}],["encapsul",{"_index":45,"title":{},"content":{"1":{"position":[[438,13]]}},"keywords":{}}],["enforc",{"_index":533,"title":{},"content":{"24":{"position":[[251,8]]}},"keywords":{}}],["enhanc",{"_index":239,"title":{"7":{"position":[[13,8]]},"12":{"position":[[0,10]]},"58":{"position":[[15,9]]}},"content":{"5":{"position":[[876,9]]},"7":{"position":[[1272,8]]},"17":{"position":[[938,9]]},"30":{"position":[[51,8],[215,9]]},"34":{"position":[[48,10]]},"44":{"position":[[272,9]]},"64":{"position":[[77,8],[352,8]]}},"keywords":{}}],["enough",{"_index":721,"title":{},"content":{"50":{"position":[[49,7]]}},"keywords":{}}],["ensur",{"_index":481,"title":{},"content":{"19":{"position":[[594,8]]},"30":{"position":[[165,6]]}},"keywords":{}}],["enter",{"_index":490,"title":{},"content":{"19":{"position":[[956,8]]},"20":{"position":[[12,5]]}},"keywords":{}}],["enter(opt",{"_index":491,"title":{},"content":{"19":{"position":[[971,14]]}},"keywords":{}}],["enterwith",{"_index":449,"title":{},"content":{"17":{"position":[[438,11],[601,9],[732,9]]},"55":{"position":[[205,10]]}},"keywords":{}}],["enterwith(stor",{"_index":492,"title":{},"content":{"19":{"position":[[1118,16]]}},"keywords":{}}],["entir",{"_index":470,"title":{},"content":{"19":{"position":[[162,6]]},"38":{"position":[[81,6]]},"54":{"position":[[285,9]]},"59":{"position":[[804,8]]}},"keywords":{}}],["entri",{"_index":483,"title":{},"content":{"19":{"position":[[636,5]]}},"keywords":{}}],["error",{"_index":547,"title":{},"content":{"24":{"position":[[950,5]]}},"keywords":{}}],["even",{"_index":523,"title":{},"content":{"23":{"position":[[161,4]]},"24":{"position":[[576,4]]},"26":{"position":[[4,4]]}},"keywords":{}}],["everywher",{"_index":28,"title":{},"content":{"1":{"position":[[230,10]]},"25":{"position":[[67,10]]}},"keywords":{}}],["ex",{"_index":404,"title":{},"content":{"14":{"position":[[1506,4]]}},"keywords":{}}],["exampl",{"_index":379,"title":{"37":{"position":[[0,8]]}},"content":{"14":{"position":[[672,7],[1072,7]]},"37":{"position":[[12,7],[171,7]]},"44":{"position":[[159,8]]},"50":{"position":[[196,8]]},"54":{"position":[[476,8]]},"60":{"position":[[159,7]]}},"keywords":{}}],["except",{"_index":754,"title":{},"content":{"55":{"position":[[943,9]]},"57":{"position":[[65,9]]}},"keywords":{}}],["execut",{"_index":300,"title":{},"content":{"7":{"position":[[1053,8]]},"44":{"position":[[407,9]]}},"keywords":{}}],["executioncontext",{"_index":289,"title":{},"content":{"7":{"position":[[532,17],[675,16],[987,17]]},"12":{"position":[[31,16]]},"14":{"position":[[453,16]]},"39":{"position":[[347,17]]},"58":{"position":[[340,17]]}},"keywords":{}}],["exist",{"_index":120,"title":{},"content":{"2":{"position":[[563,9]]},"13":{"position":[[28,6]]},"20":{"position":[[222,8],[278,6],[607,8],[659,8],[729,8]]},"29":{"position":[[353,8]]}},"keywords":{}}],["exit(callback",{"_index":493,"title":{},"content":{"19":{"position":[[1225,14]]}},"keywords":{}}],["experi",{"_index":142,"title":{},"content":{"2":{"position":[[822,11]]}},"keywords":{}}],["explicit",{"_index":618,"title":{},"content":{"33":{"position":[[91,8]]}},"keywords":{}}],["explicitli",{"_index":47,"title":{},"content":{"1":{"position":[[469,10]]},"37":{"position":[[132,10]]},"41":{"position":[[78,10]]},"44":{"position":[[772,10]]}},"keywords":{}}],["export",{"_index":256,"title":{},"content":{"6":{"position":[[530,6]]},"23":{"position":[[318,6]]},"24":{"position":[[118,6]]},"26":{"position":[[163,6],[343,8]]},"38":{"position":[[298,6]]},"39":{"position":[[219,6]]},"40":{"position":[[275,6]]},"41":{"position":[[189,6]]},"44":{"position":[[588,6]]},"47":{"position":[[115,6]]},"49":{"position":[[222,6]]},"52":{"position":[[134,6]]},"53":{"position":[[271,6]]},"55":{"position":[[430,6],[673,6]]},"57":{"position":[[186,6]]},"58":{"position":[[187,6]]},"59":{"position":[[210,8],[282,6]]},"65":{"position":[[283,6],[923,6]]},"67":{"position":[[112,6]]},"68":{"position":[[290,6]]}},"keywords":{}}],["expos",{"_index":337,"title":{},"content":{"9":{"position":[[219,7]]},"36":{"position":[[13,7],[47,7]]},"57":{"position":[[318,7]]}},"keywords":{}}],["express",{"_index":589,"title":{},"content":{"29":{"position":[[164,8],[362,7]]},"30":{"position":[[368,10]]}},"keywords":{}}],["extend",{"_index":526,"title":{},"content":{"23":{"position":[[272,7],[346,7]]},"26":{"position":[[108,9],[189,7]]},"54":{"position":[[508,7]]}},"keywords":{}}],["extent",{"_index":61,"title":{},"content":{"1":{"position":[[688,6]]}},"keywords":{}}],["extern",{"_index":150,"title":{},"content":{"2":{"position":[[915,8]]},"59":{"position":[[538,8]]}},"keywords":{}}],["extra",{"_index":113,"title":{},"content":{"2":{"position":[[479,5]]}},"keywords":{}}],["extraprovid",{"_index":257,"title":{},"content":{"6":{"position":[[588,16]]}},"keywords":{}}],["fact",{"_index":570,"title":{},"content":{"27":{"position":[[226,4]]}},"keywords":{}}],["factori",{"_index":266,"title":{"60":{"position":[[0,7]]}},"content":{"6":{"position":[[1132,7]]},"60":{"position":[[17,7],[42,7],[185,7],[709,7]]},"62":{"position":[[6,7],[218,7]]}},"keywords":{}}],["fairli",{"_index":115,"title":{},"content":{"2":{"position":[[520,6]]}},"keywords":{}}],["fallback",{"_index":381,"title":{},"content":{"14":{"position":[[740,8]]}},"keywords":{}}],["fals",{"_index":215,"title":{},"content":{"5":{"position":[[389,6]]},"7":{"position":[[182,6],[348,6],[1532,6],[1667,6]]},"11":{"position":[[279,5]]},"12":{"position":[[310,5]]},"49":{"position":[[49,5],[196,5]]},"55":{"position":[[582,5]]},"64":{"position":[[339,5],[492,6]]},"65":{"position":[[723,5]]},"68":{"position":[[205,5]]}},"keywords":{}}],["familiar",{"_index":792,"title":{},"content":{"60":{"position":[[65,9]]}},"keywords":{}}],["fast",{"_index":154,"title":{},"content":{"2":{"position":[[947,5]]}},"keywords":{}}],["fastifi",{"_index":590,"title":{},"content":{"29":{"position":[[173,7]]},"30":{"position":[[389,9]]}},"keywords":{}}],["favorit",{"_index":433,"title":{},"content":{"16":{"position":[[57,8]]}},"keywords":{}}],["favourit",{"_index":40,"title":{},"content":{"1":{"position":[[391,9]]}},"keywords":{}}],["featur",{"_index":83,"title":{"21":{"position":[[0,8]]}},"content":{"2":{"position":[[72,9]]},"3":{"position":[[229,8],[415,9]]},"9":{"position":[[537,7]]},"21":{"position":[[0,8],[135,8]]},"42":{"position":[[91,9]]},"50":{"position":[[224,7]]}},"keywords":{}}],["feel",{"_index":551,"title":{},"content":{"25":{"position":[[22,4]]}},"keywords":{}}],["filter",{"_index":755,"title":{},"content":{"55":{"position":[[953,9]]}},"keywords":{}}],["fine",{"_index":819,"title":{},"content":{"63":{"position":[[321,4]]}},"keywords":{}}],["finish",{"_index":824,"title":{},"content":{"64":{"position":[[117,9]]}},"keywords":{}}],["first",{"_index":245,"title":{},"content":{"5":{"position":[[1056,5]]},"14":{"position":[[505,5]]},"15":{"position":[[432,6]]},"19":{"position":[[821,5],[1101,5]]},"68":{"position":[[102,5]]}},"keywords":{}}],["follow",{"_index":199,"title":{},"content":{"5":{"position":[[41,9]]},"7":{"position":[[61,9],[1354,9]]},"19":{"position":[[39,9],[1019,9],[1152,9]]},"20":{"position":[[73,9]]},"43":{"position":[[81,6]]},"44":{"position":[[490,9]]},"55":{"position":[[158,9]]}},"keywords":{}}],["forfeatur",{"_index":743,"title":{},"content":{"54":{"position":[[262,10]]}},"keywords":{}}],["forfeature(async",{"_index":247,"title":{"6":{"position":[[0,18]]}},"content":{},"keywords":{}}],["forroot",{"_index":737,"title":{},"content":{"54":{"position":[[92,7]]}},"keywords":{}}],["forroot(async",{"_index":195,"title":{"5":{"position":[[0,15]]}},"content":{},"keywords":{}}],["forrootasync",{"_index":738,"title":{},"content":{"54":{"position":[[107,13]]}},"keywords":{}}],["framework",{"_index":79,"title":{},"content":{"2":{"position":[[21,10]]},"7":{"position":[[1882,10]]}},"keywords":{}}],["fulli",{"_index":581,"title":{},"content":{"27":{"position":[[645,5]]}},"keywords":{}}],["function",{"_index":267,"title":{"63":{"position":[[25,9]]}},"content":{"6":{"position":[[1140,8],[1285,9]]},"7":{"position":[[599,8],[1039,8]]},"9":{"position":[[351,10],[362,8]]},"14":{"position":[[378,8],[419,8]]},"21":{"position":[[48,13]]},"30":{"position":[[264,9]]},"32":{"position":[[364,12]]},"36":{"position":[[210,8]]},"44":{"position":[[792,8]]},"45":{"position":[[333,8]]},"50":{"position":[[368,8]]},"62":{"position":[[236,10]]},"63":{"position":[[41,10],[92,9],[269,9]]},"64":{"position":[[62,8]]}},"keywords":{}}],["function/callback",{"_index":416,"title":{},"content":{"15":{"position":[[121,17]]}},"keywords":{}}],["further",{"_index":261,"title":{},"content":{"6":{"position":[[804,7],[995,7]]},"42":{"position":[[53,7]]}},"keywords":{}}],["gateway",{"_index":59,"title":{},"content":{"1":{"position":[[647,9]]},"34":{"position":[[10,8]]}},"keywords":{}}],["gener",{"_index":281,"title":{},"content":{"7":{"position":[[380,8],[612,10],[847,8]]},"14":{"position":[[177,8],[300,9],[547,10]]},"27":{"position":[[248,8],[355,10],[516,8]]}},"keywords":{}}],["generateid",{"_index":280,"title":{},"content":{"7":{"position":[[318,12]]},"14":{"position":[[249,11],[821,11]]},"52":{"position":[[96,11]]},"53":{"position":[[172,11]]}},"keywords":{}}],["get",{"_index":608,"title":{},"content":{"32":{"position":[[252,4]]},"40":{"position":[[56,4]]}},"keywords":{}}],["get('/hello",{"_index":667,"title":{},"content":{"40":{"position":[[360,14]]}},"keywords":{}}],["get(key",{"_index":471,"title":{},"content":{"19":{"position":[[182,9]]}},"keywords":{}}],["getal",{"_index":807,"title":{},"content":{"60":{"position":[[1139,8]]}},"keywords":{}}],["getclsservic",{"_index":338,"title":{},"content":{"9":{"position":[[231,15]]}},"keywords":{}}],["getid",{"_index":387,"title":{},"content":{"14":{"position":[[1019,5]]},"19":{"position":[[255,8]]}},"keywords":{}}],["global",{"_index":212,"title":{},"content":{"5":{"position":[[363,8],[423,7]]},"25":{"position":[[106,8]]},"26":{"position":[[504,6]]},"34":{"position":[[33,8]]},"38":{"position":[[190,7]]},"40":{"position":[[176,8]]},"47":{"position":[[55,7]]},"49":{"position":[[161,7]]},"52":{"position":[[55,7]]},"53":{"position":[[60,7]]},"60":{"position":[[616,7],[684,8]]}},"keywords":{}}],["good",{"_index":681,"title":{},"content":{"42":{"position":[[303,4]]}},"keywords":{}}],["gql",{"_index":596,"title":{},"content":{"30":{"position":[[128,3]]}},"keywords":{}}],["graphql",{"_index":595,"title":{"30":{"position":[[0,8]]}},"content":{"31":{"position":[[18,7]]},"32":{"position":[[22,8]]}},"keywords":{}}],["great",{"_index":129,"title":{},"content":{"2":{"position":[[655,5]]}},"keywords":{}}],["gt",{"_index":182,"title":{},"content":{"3":{"position":[[254,5]]},"6":{"position":[[1122,5]]},"7":{"position":[[475,5],[550,5],[922,5],[1005,5]]},"11":{"position":[[191,5]]},"12":{"position":[[158,5]]},"14":{"position":[[867,5],[1492,4]]},"19":{"position":[[667,5],[724,5],[869,5],[1243,5]]},"27":{"position":[[491,6]]},"44":{"position":[[873,5],[1086,5]]},"53":{"position":[[136,5],[209,5]]},"60":{"position":[[479,5]]},"65":{"position":[[477,5],[1083,5]]}},"keywords":{}}],["guarante",{"_index":619,"title":{},"content":{"33":{"position":[[138,9]]}},"keywords":{}}],["guard",{"_index":206,"title":{"66":{"position":[[8,5]]}},"content":{"5":{"position":[[171,7]]},"7":{"position":[[705,5]]},"12":{"position":[[5,5]]},"17":{"position":[[1086,5]]},"30":{"position":[[26,5]]},"32":{"position":[[582,7]]},"55":{"position":[[832,7],[894,6]]},"67":{"position":[[71,6]]},"68":{"position":[[22,6],[108,5],[189,6]]}},"keywords":{}}],["guid",{"_index":173,"title":{"43":{"position":[[10,5]]}},"content":{"3":{"position":[[140,7]]},"43":{"position":[[10,5],[112,6]]}},"keywords":{}}],["handleconnect",{"_index":633,"title":{},"content":{"34":{"position":[[193,16]]}},"keywords":{}}],["handlecron",{"_index":833,"title":{},"content":{"65":{"position":[[434,12],[1143,12]]}},"keywords":{}}],["handlecronexample1",{"_index":699,"title":{},"content":{"44":{"position":[[739,20]]}},"keywords":{}}],["handlecronexample2",{"_index":709,"title":{},"content":{"44":{"position":[[1131,20]]}},"keywords":{}}],["handler",{"_index":691,"title":{},"content":{"44":{"position":[[307,7]]}},"keywords":{}}],["happen",{"_index":563,"title":{},"content":{"27":{"position":[[7,7]]},"29":{"position":[[414,8]]}},"keywords":{}}],["harder",{"_index":355,"title":{},"content":{"9":{"position":[[698,6]]}},"keywords":{}}],["has(key",{"_index":476,"title":{},"content":{"19":{"position":[[330,8]]}},"keywords":{}}],["hasn't",{"_index":480,"title":{},"content":{"19":{"position":[[558,6]]}},"keywords":{}}],["have",{"_index":777,"title":{},"content":{"59":{"position":[[79,6]]}},"keywords":{}}],["header",{"_index":380,"title":{},"content":{"14":{"position":[[726,6]]}},"keywords":{}}],["held",{"_index":112,"title":{},"content":{"2":{"position":[[444,4]]}},"keywords":{}}],["hello",{"_index":402,"title":{},"content":{"14":{"position":[[1452,7]]},"40":{"position":[[375,7]]},"41":{"position":[[319,6]]}},"keywords":{}}],["hello"",{"_index":410,"title":{},"content":{"14":{"position":[[1562,11]]}},"keywords":{}}],["help",{"_index":365,"title":{},"content":{"13":{"position":[[38,4]]}},"keywords":{}}],["helper",{"_index":342,"title":{},"content":{"9":{"position":[[371,8]]}},"keywords":{}}],["here",{"_index":534,"title":{},"content":{"24":{"position":[[260,4]]},"33":{"position":[[311,5]]},"50":{"position":[[484,4]]},"58":{"position":[[272,4]]}},"keywords":{}}],["here'",{"_index":122,"title":{},"content":{"2":{"position":[[587,6]]},"60":{"position":[[149,6]]}},"keywords":{}}],["highlight",{"_index":164,"title":{"3":{"position":[[0,11]]}},"content":{},"keywords":{}}],["histori",{"_index":126,"title":{},"content":{"2":{"position":[[630,8]]}},"keywords":{}}],["hit",{"_index":457,"title":{},"content":{"17":{"position":[[723,4]]}},"keywords":{}}],["hold",{"_index":818,"title":{},"content":{"63":{"position":[[306,6]]}},"keywords":{}}],["hood",{"_index":161,"title":{},"content":{"2":{"position":[[1079,5]]}},"keywords":{}}],["hook",{"_index":74,"title":{},"content":{"1":{"position":[[922,7]]}},"keywords":{}}],["http",{"_index":644,"title":{},"content":{"37":{"position":[[201,4],[259,4]]}},"keywords":{}}],["hypothet",{"_index":793,"title":{},"content":{"60":{"position":[[172,12]]}},"keywords":{}}],["i'v",{"_index":127,"title":{},"content":{"2":{"position":[[639,4]]}},"keywords":{}}],["id",{"_index":15,"title":{"14":{"position":[[8,2]]}},"content":{"1":{"position":[[78,2]]},"5":{"position":[[1100,3]]},"7":{"position":[[399,3],[635,3]]},"14":{"position":[[8,2],[96,3],[194,3],[310,2],[611,2],[706,2],[896,4],[921,2],[1354,3]]},"15":{"position":[[335,3]]},"19":{"position":[[293,2]]},"23":{"position":[[391,3]]},"24":{"position":[[497,3]]},"25":{"position":[[319,3]]},"27":{"position":[[458,3],[682,2]]},"57":{"position":[[206,3]]},"59":{"position":[[310,3]]}},"keywords":{}}],["idea",{"_index":682,"title":{},"content":{"42":{"position":[[308,5]]}},"keywords":{}}],["ideal",{"_index":372,"title":{},"content":{"14":{"position":[[50,5]]}},"keywords":{}}],["idempot",{"_index":482,"title":{},"content":{"19":{"position":[[603,11]]},"30":{"position":[[228,11]]}},"keywords":{}}],["ident",{"_index":611,"title":{},"content":{"32":{"position":[[377,9]]}},"keywords":{}}],["idgener",{"_index":284,"title":{},"content":{"7":{"position":[[446,13],[512,13]]},"14":{"position":[[394,11],[839,12]]},"53":{"position":[[190,12]]}},"keywords":{}}],["idgeneratorservic",{"_index":730,"title":{},"content":{"53":{"position":[[82,20],[115,20]]}},"keywords":{}}],["idgeneratorservice.generate(req",{"_index":731,"title":{},"content":{"53":{"position":[[215,32]]}},"keywords":{}}],["ifnest",{"_index":498,"title":{},"content":{"20":{"position":[[93,10]]}},"keywords":{}}],["imper",{"_index":168,"title":{},"content":{"3":{"position":[[69,10]]}},"keywords":{}}],["implement",{"_index":72,"title":{},"content":{"1":{"position":[[894,14]]},"7":{"position":[[810,14]]},"39":{"position":[[250,10]]},"42":{"position":[[196,14]]},"49":{"position":[[245,10]]},"58":{"position":[[216,10]]},"59":{"position":[[928,15]]},"63":{"position":[[150,9]]}},"keywords":{}}],["import",{"_index":217,"title":{},"content":{"5":{"position":[[453,6],[776,8]]},"6":{"position":[[476,8],[508,8]]},"26":{"position":[[239,8]]},"38":{"position":[[159,8]]},"47":{"position":[[24,8]]},"49":{"position":[[130,8]]},"52":{"position":[[24,8]]},"53":{"position":[[24,8]]},"55":{"position":[[352,8],[529,8]]},"59":{"position":[[607,6],[717,7]]},"60":{"position":[[326,7]]},"67":{"position":[[40,8]]},"68":{"position":[[158,8]]}},"keywords":{}}],["includ",{"_index":13,"title":{},"content":{"1":{"position":[[48,8]]},"30":{"position":[[245,8]]}},"keywords":{}}],["indic",{"_index":623,"title":{},"content":{"33":{"position":[[222,8]]}},"keywords":{}}],["infer",{"_index":179,"title":{"22":{"position":[[21,9]]}},"content":{"3":{"position":[[197,10]]},"23":{"position":[[105,9]]},"24":{"position":[[324,8],[406,8],[483,8],[640,8]]}},"keywords":{}}],["infinit",{"_index":568,"title":{},"content":{"27":{"position":[[197,9]]}},"keywords":{}}],["info",{"_index":69,"title":{},"content":{"1":{"position":[[854,4]]},"5":{"position":[[828,4]]},"15":{"position":[[527,5]]},"16":{"position":[[118,4]]},"42":{"position":[[113,4]]},"45":{"position":[[201,4]]},"63":{"position":[[432,4]]}},"keywords":{}}],["inform",{"_index":825,"title":{},"content":{"64":{"position":[[257,11]]}},"keywords":{}}],["inherit",{"_index":500,"title":{},"content":{"20":{"position":[[117,9]]}},"keywords":{}}],["initi",{"_index":241,"title":{},"content":{"5":{"position":[[909,10]]},"31":{"position":[[94,10]]},"45":{"position":[[254,14]]},"55":{"position":[[38,8]]}},"keywords":{}}],["initialis",{"_index":301,"title":{},"content":{"7":{"position":[[1093,12]]}},"keywords":{}}],["inject",{"_index":233,"title":{},"content":{"5":{"position":[[785,6]]},"6":{"position":[[311,9],[1012,7],[1038,9],[1228,6]]},"9":{"position":[[85,10],[314,9],[616,9]]},"14":{"position":[[1118,13],[1372,13]]},"19":{"position":[[4,10]]},"24":{"position":[[13,6]]},"26":{"position":[[405,6]]},"36":{"position":[[59,10]]},"39":{"position":[[27,7],[205,13]]},"40":{"position":[[261,13]]},"41":{"position":[[175,13]]},"44":{"position":[[574,13]]},"53":{"position":[[74,7]]},"54":{"position":[[239,9],[465,6]]},"57":{"position":[[332,10],[418,8],[480,8]]},"58":{"position":[[173,13],[255,6]]},"59":{"position":[[23,6],[512,6]]},"60":{"position":[[362,7],[674,9],[913,8],[954,8],[1013,13]]},"63":{"position":[[20,9]]},"65":{"position":[[86,8],[269,13],[909,13]]}},"keywords":{}}],["inject(cls_req",{"_index":782,"title":{},"content":{"59":{"position":[[349,16],[778,17]]}},"keywords":{}}],["inject(request",{"_index":789,"title":{},"content":{"59":{"position":[[821,16]]}},"keywords":{}}],["inject(tenant_connect",{"_index":805,"title":{},"content":{"60":{"position":[[1060,26]]}},"keywords":{}}],["injectableproxi",{"_index":264,"title":{},"content":{"6":{"position":[[926,17]]},"57":{"position":[[87,18],[167,18]]},"59":{"position":[[263,18]]}},"keywords":{}}],["insid",{"_index":573,"title":{},"content":{"27":{"position":[[276,6]]}},"keywords":{}}],["instal",{"_index":190,"title":{"16":{"position":[[0,12]]}},"content":{"3":{"position":[[369,7]]},"16":{"position":[[0,12],[13,7],[99,7],[254,10]]}},"keywords":{}}],["instanc",{"_index":762,"title":{},"content":{"57":{"position":[[500,8],[584,8]]},"63":{"position":[[230,8]]}},"keywords":{}}],["instanti",{"_index":274,"title":{},"content":{"7":{"position":[[127,13],[289,13]]},"27":{"position":[[161,13]]}},"keywords":{}}],["instead",{"_index":315,"title":{},"content":{"7":{"position":[[1752,7]]},"9":{"position":[[594,7]]},"25":{"position":[[98,7]]},"42":{"position":[[161,7]]}},"keywords":{}}],["intellisens",{"_index":541,"title":{},"content":{"24":{"position":[[585,12]]}},"keywords":{}}],["intend",{"_index":237,"title":{},"content":{"5":{"position":[[853,6]]}},"keywords":{}}],["interact",{"_index":635,"title":{},"content":{"36":{"position":[[118,11]]}},"keywords":{}}],["intercept(context",{"_index":655,"title":{},"content":{"39":{"position":[[328,18]]},"58":{"position":[[321,18]]}},"keywords":{}}],["interceptor",{"_index":209,"title":{"39":{"position":[[18,12]]},"40":{"position":[[6,11]]},"55":{"position":[[9,11]]}},"content":{"5":{"position":[[258,13],[1015,13]]},"7":{"position":[[714,12]]},"12":{"position":[[14,12],[108,12]]},"30":{"position":[[9,11]]},"37":{"position":[[81,11]]},"39":{"position":[[10,11]]},"40":{"position":[[164,11]]},"55":{"position":[[9,11],[257,11],[383,12],[560,12],[809,12]]},"58":{"position":[[141,11]]}},"keywords":{}}],["interest",{"_index":370,"title":{},"content":{"13":{"position":[[172,10]]}},"keywords":{}}],["interfac",{"_index":187,"title":{"18":{"position":[[8,9]]}},"content":{"3":{"position":[[300,11]]},"6":{"position":[[794,9],[985,9]]},"23":{"position":[[35,9],[257,9],[325,9]]},"25":{"position":[[136,10],[272,9]]},"27":{"position":[[399,9]]}},"keywords":{}}],["interfer",{"_index":725,"title":{},"content":{"50":{"position":[[253,10]]}},"keywords":{}}],["introduc",{"_index":143,"title":{},"content":{"2":{"position":[[838,10]]},"3":{"position":[[17,10],[114,11]]}},"keywords":{}}],["invest",{"_index":128,"title":{},"content":{"2":{"position":[[644,8]]}},"keywords":{}}],["invok",{"_index":505,"title":{},"content":{"20":{"position":[[208,7]]}},"keywords":{}}],["io",{"_index":147,"title":{},"content":{"2":{"position":[[888,2]]}},"keywords":{}}],["ip",{"_index":642,"title":{"39":{"position":[[7,2]]}},"content":{"37":{"position":[[64,2]]},"39":{"position":[[118,2]]},"41":{"position":[[46,2]]}},"keywords":{}}],["ip.interceptor.t",{"_index":652,"title":{},"content":{"39":{"position":[[187,17]]}},"keywords":{}}],["isact",{"_index":494,"title":{},"content":{"19":{"position":[[1312,11]]}},"keywords":{}}],["isol",{"_index":46,"title":{},"content":{"1":{"position":[[456,9]]}},"keywords":{}}],["issu",{"_index":68,"title":{},"content":{"1":{"position":[[846,7]]},"27":{"position":[[711,5]]},"29":{"position":[[187,7],[326,5]]},"32":{"position":[[282,5]]},"50":{"position":[[284,5]]},"63":{"position":[[413,5]]}},"keywords":{}}],["it'",{"_index":838,"title":{},"content":{"68":{"position":[[52,4]]}},"keywords":{}}],["itself",{"_index":811,"title":{},"content":{"62":{"position":[[86,6],[189,6]]}},"keywords":{}}],["job",{"_index":687,"title":{},"content":{"44":{"position":[[178,4]]}},"keywords":{}}],["keep",{"_index":710,"title":{},"content":{"45":{"position":[[213,4]]}},"keywords":{}}],["key",{"_index":283,"title":{},"content":{"7":{"position":[[441,4],[1500,4],[1631,3]]},"19":{"position":[[250,4],[368,3]]},"24":{"position":[[606,5]]},"27":{"position":[[593,4]]},"65":{"position":[[527,5],[1110,5]]}},"keywords":{}}],["keyof",{"_index":472,"title":{},"content":{"19":{"position":[[192,5],[339,5],[404,5],[486,5]]}},"keywords":{}}],["know",{"_index":119,"title":{},"content":{"2":{"position":[[551,4]]},"33":{"position":[[331,4]]}},"keywords":{}}],["known",{"_index":321,"title":{},"content":{"7":{"position":[[1897,5]]},"29":{"position":[[181,5]]}},"keywords":{}}],["lack",{"_index":192,"title":{},"content":{"3":{"position":[[398,5]]}},"keywords":{}}],["languag",{"_index":156,"title":{},"content":{"2":{"position":[[968,9]]}},"keywords":{}}],["late",{"_index":722,"title":{},"content":{"50":{"position":[[101,4]]}},"keywords":{}}],["later",{"_index":378,"title":{},"content":{"14":{"position":[[649,5]]},"64":{"position":[[210,5]]}},"keywords":{}}],["leak",{"_index":444,"title":{},"content":{"17":{"position":[[127,5],[305,4]]}},"keywords":{}}],["less",{"_index":448,"title":{},"content":{"17":{"position":[[428,4]]}},"keywords":{}}],["level",{"_index":32,"title":{},"content":{"1":{"position":[[292,5]]},"9":{"position":[[345,5]]},"20":{"position":[[519,5]]},"45":{"position":[[66,5]]}},"keywords":{}}],["librari",{"_index":11,"title":{},"content":{"1":{"position":[[32,7]]},"2":{"position":[[117,7],[1008,7]]},"3":{"position":[[360,8]]},"13":{"position":[[67,7]]},"16":{"position":[[207,10]]},"36":{"position":[[5,7]]},"37":{"position":[[34,7]]},"42":{"position":[[45,7]]},"43":{"position":[[72,8]]}},"keywords":{}}],["life",{"_index":415,"title":{},"content":{"15":{"position":[[111,4]]},"21":{"position":[[157,4]]},"42":{"position":[[86,4]]}},"keywords":{}}],["lifecycl",{"_index":638,"title":{},"content":{"36":{"position":[[265,9]]},"64":{"position":[[237,9]]}},"keywords":{}}],["lifetim",{"_index":417,"title":{},"content":{"15":{"position":[[210,8]]},"17":{"position":[[892,8]]}},"keywords":{}}],["limit",{"_index":90,"title":{},"content":{"2":{"position":[[165,8]]},"42":{"position":[[235,8]]}},"keywords":{}}],["list",{"_index":255,"title":{},"content":{"6":{"position":[[500,4],[624,4]]},"33":{"position":[[304,6],[385,6]]}},"keywords":{}}],["local",{"_index":413,"title":{},"content":{"15":{"position":[[26,5]]}},"keywords":{}}],["log",{"_index":17,"title":{},"content":{"1":{"position":[[104,7]]},"14":{"position":[[119,8],[1497,4]]},"15":{"position":[[323,3]]}},"keywords":{}}],["log(messag",{"_index":395,"title":{},"content":{"14":{"position":[[1198,12]]}},"keywords":{}}],["logger",{"_index":390,"title":{},"content":{"14":{"position":[[1097,7],[1433,7]]}},"keywords":{}}],["look",{"_index":756,"title":{},"content":{"57":{"position":[[16,4]]},"60":{"position":[[60,4]]}},"keywords":{}}],["lose",{"_index":322,"title":{},"content":{"7":{"position":[[1906,4]]}},"keywords":{}}],["loss",{"_index":451,"title":{},"content":{"17":{"position":[[520,5]]},"29":{"position":[[400,5]]}},"keywords":{}}],["lost",{"_index":445,"title":{},"content":{"17":{"position":[[166,4],[362,5]]},"32":{"position":[[257,4]]}},"keywords":{}}],["lot",{"_index":67,"title":{},"content":{"1":{"position":[[833,3]]}},"keywords":{}}],["made",{"_index":105,"title":{},"content":{"2":{"position":[[350,4]]},"59":{"position":[[176,4]]}},"keywords":{}}],["main.t",{"_index":726,"title":{},"content":{"50":{"position":[[360,7]]}},"keywords":{}}],["major",{"_index":684,"title":{},"content":{"43":{"position":[[50,5]]}},"keywords":{}}],["make",{"_index":133,"title":{},"content":{"2":{"position":[[689,6],[792,6]]},"5":{"position":[[407,4]]},"6":{"position":[[895,4]]},"9":{"position":[[631,4]]},"15":{"position":[[296,5],[376,4]]},"21":{"position":[[147,4]]},"24":{"position":[[89,4]]},"32":{"position":[[557,5]]},"41":{"position":[[122,6]]},"55":{"position":[[869,5]]},"57":{"position":[[119,4]]},"59":{"position":[[668,4]]},"60":{"position":[[633,4]]}},"keywords":{}}],["manag",{"_index":434,"title":{},"content":{"16":{"position":[[74,8]]}},"keywords":{}}],["mani",{"_index":117,"title":{},"content":{"2":{"position":[[539,4]]}},"keywords":{}}],["manipul",{"_index":467,"title":{},"content":{"19":{"position":[[56,10]]}},"keywords":{}}],["manner",{"_index":97,"title":{},"content":{"2":{"position":[[266,7]]}},"keywords":{}}],["manual",{"_index":275,"title":{"48":{"position":[[0,9]]},"68":{"position":[[0,9]]}},"content":{"7":{"position":[[146,10],[308,9]]},"17":{"position":[[1030,8]]},"19":{"position":[[1437,8]]},"29":{"position":[[312,9],[447,8]]},"32":{"position":[[69,8]]},"34":{"position":[[123,8]]},"44":{"position":[[564,9]]},"49":{"position":[[82,8]]},"50":{"position":[[475,8]]},"55":{"position":[[456,8],[477,8]]},"64":{"position":[[413,8]]},"68":{"position":[[86,8]]}},"keywords":{}}],["math.random",{"_index":293,"title":{},"content":{"7":{"position":[[830,13]]},"14":{"position":[[334,14]]}},"keywords":{}}],["mean",{"_index":458,"title":{},"content":{"17":{"position":[[753,6],[1004,5]]},"36":{"position":[[94,5]]},"55":{"position":[[845,5]]}},"keywords":{}}],["member",{"_index":186,"title":{},"content":{"3":{"position":[[289,7]]}},"keywords":{}}],["mercuriu",{"_index":601,"title":{},"content":{"30":{"position":[[379,9]]},"32":{"position":[[337,11]]}},"keywords":{}}],["messag",{"_index":397,"title":{},"content":{"14":{"position":[[1262,13]]}},"keywords":{}}],["metadata",{"_index":16,"title":{},"content":{"1":{"position":[[91,8]]}},"keywords":{}}],["method",{"_index":197,"title":{},"content":{"5":{"position":[[24,6]]},"6":{"position":[[27,6],[86,6],[161,6]]},"9":{"position":[[247,6]]},"14":{"position":[[1012,6]]},"17":{"position":[[277,7],[450,7],[498,6],[611,6]]},"20":{"position":[[18,7],[198,6]]},"24":{"position":[[751,6]]},"30":{"position":[[338,7]]},"32":{"position":[[354,6]]},"34":{"position":[[210,6]]},"45":{"position":[[59,6],[98,6],[133,6]]},"50":{"position":[[33,6],[352,7]]},"54":{"position":[[34,6],[308,6]]},"55":{"position":[[139,6],[862,6]]},"60":{"position":[[141,7]]},"62":{"position":[[156,6]]},"68":{"position":[[470,7]]}},"keywords":{}}],["middlewar",{"_index":201,"title":{"7":{"position":[[0,10]]},"11":{"position":[[0,11]]},"46":{"position":[[8,10]]}},"content":{"5":{"position":[[69,12],[941,10]]},"11":{"position":[[11,10],[122,11]]},"14":{"position":[[794,11]]},"29":{"position":[[370,11]]},"37":{"position":[[228,11]]},"38":{"position":[[204,11]]},"47":{"position":[[69,11]]},"48":{"position":[[112,10],[162,12]]},"49":{"position":[[175,11]]},"50":{"position":[[69,10],[147,11],[464,10],[611,10],[659,10]]},"52":{"position":[[69,11]]},"53":{"position":[[145,11]]},"54":{"position":[[196,11]]},"64":{"position":[[455,11]]}},"keywords":{}}],["middleware/guard/interceptor",{"_index":277,"title":{},"content":{"7":{"position":[[224,28]]},"14":{"position":[[205,29]]},"64":{"position":[[86,30]]}},"keywords":{}}],["middlewareconsum",{"_index":719,"title":{},"content":{"49":{"position":[[289,19]]}},"keywords":{}}],["migrat",{"_index":172,"title":{"43":{"position":[[0,9]]}},"content":{"3":{"position":[[130,9]]},"43":{"position":[[0,9],[102,9]]}},"keywords":{}}],["mind",{"_index":711,"title":{},"content":{"45":{"position":[[221,5]]}},"keywords":{}}],["minor",{"_index":169,"title":{},"content":{"3":{"position":[[85,6]]}},"keywords":{}}],["miss",{"_index":85,"title":{},"content":{"2":{"position":[[90,6]]}},"keywords":{}}],["mix",{"_index":110,"title":{},"content":{"2":{"position":[[404,3]]}},"keywords":{}}],["mock",{"_index":353,"title":{},"content":{"9":{"position":[[652,4]]}},"keywords":{}}],["modif",{"_index":514,"title":{},"content":{"20":{"position":[[590,13],[708,13]]}},"keywords":{}}],["modul",{"_index":193,"title":{"4":{"position":[[0,6]]},"25":{"position":[[17,6]]},"49":{"position":[[7,7]]}},"content":{"5":{"position":[[416,6],[492,8],[588,7]]},"6":{"position":[[517,7],[747,7]]},"16":{"position":[[128,6]]},"21":{"position":[[105,6]]},"25":{"position":[[250,6]]},"26":{"position":[[229,9]]},"38":{"position":[[149,9]]},"47":{"position":[[14,9]]},"49":{"position":[[98,7],[120,9]]},"52":{"position":[[14,9]]},"53":{"position":[[14,9]]},"55":{"position":[[342,9],[519,9]]},"57":{"position":[[366,7]]},"59":{"position":[[547,7],[629,7]]},"67":{"position":[[30,9]]},"68":{"position":[[126,7],[148,9]]}},"keywords":{}}],["more",{"_index":228,"title":{},"content":{"5":{"position":[[683,4]]},"15":{"position":[[522,4]]},"26":{"position":[[9,4]]},"27":{"position":[[725,4]]},"42":{"position":[[70,4]]},"48":{"position":[[81,4]]},"63":{"position":[[427,4]]},"64":{"position":[[252,4]]}},"keywords":{}}],["motiv",{"_index":77,"title":{"2":{"position":[[0,11]]}},"content":{},"keywords":{}}],["mount",{"_index":276,"title":{"40":{"position":[[0,5]]}},"content":{"7":{"position":[[157,7],[214,5]]},"11":{"position":[[136,6]]},"12":{"position":[[123,6]]},"14":{"position":[[808,6]]},"17":{"position":[[857,5],[1039,5]]},"29":{"position":[[123,5],[241,8],[304,7],[423,5]]},"31":{"position":[[155,5]]},"32":{"position":[[61,7]]},"38":{"position":[[41,5],[218,6]]},"40":{"position":[[3,8]]},"47":{"position":[[83,6]]},"49":{"position":[[23,5],[189,6]]},"50":{"position":[[89,7],[317,5],[454,5]]},"52":{"position":[[83,6]]},"53":{"position":[[159,6]]},"54":{"position":[[210,6]]},"55":{"position":[[398,6],[468,5],[575,6]]},"67":{"position":[[4,6],[80,6]]},"68":{"position":[[71,5],[198,6],[320,5]]}},"keywords":{}}],["much",{"_index":674,"title":{},"content":{"42":{"position":[[15,4]]}},"keywords":{}}],["multi",{"_index":29,"title":{},"content":{"1":{"position":[[244,5]]}},"keywords":{}}],["multipl",{"_index":238,"title":{},"content":{"5":{"position":[[867,8]]},"19":{"position":[[627,8]]},"30":{"position":[[71,8],[104,8]]}},"keywords":{}}],["my.logger.t",{"_index":391,"title":{},"content":{"14":{"position":[[1105,12]]}},"keywords":{}}],["my.service.t",{"_index":400,"title":{},"content":{"14":{"position":[[1358,13]]}},"keywords":{}}],["myclsmodul",{"_index":559,"title":{},"content":{"26":{"position":[[377,11]]}},"keywords":{}}],["myclsservic",{"_index":557,"title":{},"content":{"26":{"position":[[176,12],[298,13],[352,15],[412,12]]}},"keywords":{}}],["myclsstor",{"_index":528,"title":{},"content":{"23":{"position":[[335,10]]}},"keywords":{}}],["mycontextservic",{"_index":745,"title":{},"content":{"54":{"position":[[491,16],[551,16],[650,17],[678,17]]}},"keywords":{}}],["mycontextservice(new",{"_index":747,"title":{},"content":{"54":{"position":[[574,20]]}},"keywords":{}}],["mylogg",{"_index":392,"title":{},"content":{"14":{"position":[[1138,8],[1441,10]]}},"keywords":{}}],["myservic",{"_index":401,"title":{},"content":{"14":{"position":[[1392,9]]},"24":{"position":[[131,9]]}},"keywords":{}}],["name",{"_index":70,"title":{},"content":{"1":{"position":[[865,4]]},"3":{"position":[[266,6]]},"57":{"position":[[443,5]]}},"keywords":{}}],["namespac",{"_index":742,"title":{},"content":{"54":{"position":[[229,9],[385,11],[414,10]]}},"keywords":{}}],["nativ",{"_index":76,"title":{},"content":{"1":{"position":[[962,6]]}},"keywords":{}}],["necessari",{"_index":320,"title":{},"content":{"7":{"position":[[1862,10]]},"9":{"position":[[562,10]]},"65":{"position":[[13,9]]}},"keywords":{}}],["need",{"_index":419,"title":{},"content":{"15":{"position":[[253,4]]},"17":{"position":[[473,6]]},"25":{"position":[[161,4]]},"29":{"position":[[292,5]]},"32":{"position":[[49,5]]},"34":{"position":[[178,6]]},"44":{"position":[[95,4],[546,4]]},"48":{"position":[[68,4]]},"50":{"position":[[164,4]]},"59":{"position":[[504,4]]},"68":{"position":[[7,4]]}},"keywords":{}}],["neglig",{"_index":145,"title":{},"content":{"2":{"position":[[861,10]]}},"keywords":{}}],["nest",{"_index":503,"title":{},"content":{"20":{"position":[[158,6]]},"23":{"position":[[170,6]]},"27":{"position":[[586,6]]},"29":{"position":[[32,4]]}},"keywords":{}}],["nest'",{"_index":340,"title":{},"content":{"9":{"position":[[307,6]]},"31":{"position":[[11,6]]},"55":{"position":[[802,6]]}},"keywords":{}}],["nestfactory.create(appmodul",{"_index":727,"title":{},"content":{"50":{"position":[[409,30]]}},"keywords":{}}],["nestinterceptor",{"_index":654,"title":{},"content":{"39":{"position":[[261,15]]},"58":{"position":[[227,15]]}},"keywords":{}}],["nestj",{"_index":0,"title":{"0":{"position":[[0,6]]}},"content":{"2":{"position":[[0,6]]},"15":{"position":[[154,7]]},"16":{"position":[[107,6]]},"25":{"position":[[257,7]]},"50":{"position":[[235,6]]}},"keywords":{"0":{"position":[[56,6]]},"4":{"position":[[56,6]]},"8":{"position":[[56,6]]},"9":{"position":[[56,6]]},"10":{"position":[[56,6]]},"13":{"position":[[56,6]]},"14":{"position":[[56,6]]},"15":{"position":[[56,6]]},"16":{"position":[[56,6]]},"17":{"position":[[56,6]]},"18":{"position":[[56,6]]},"21":{"position":[[56,6]]},"22":{"position":[[56,6]]},"28":{"position":[[56,6]]},"35":{"position":[[56,6]]},"43":{"position":[[56,6]]},"44":{"position":[[56,6]]},"45":{"position":[[56,6]]},"46":{"position":[[56,6]]},"51":{"position":[[56,6]]},"54":{"position":[[56,6]]},"55":{"position":[[56,6]]},"56":{"position":[[56,6]]},"66":{"position":[[56,6]]}}}],["nestjs'",{"_index":332,"title":{},"content":{"9":{"position":[[65,8]]}},"keywords":{}}],["nestjs/common",{"_index":439,"title":{},"content":{"16":{"position":[[192,14]]}},"keywords":{}}],["nestjs/cor",{"_index":438,"title":{},"content":{"16":{"position":[[175,12]]}},"keywords":{}}],["nestjs/graphql",{"_index":602,"title":{"31":{"position":[[0,15]]},"32":{"position":[[0,15]]}},"content":{},"keywords":{}}],["nestmodul",{"_index":717,"title":{},"content":{"49":{"position":[[256,10]]}},"keywords":{}}],["new",{"_index":116,"title":{},"content":{"2":{"position":[[527,3]]},"3":{"position":[[0,4]]},"19":{"position":[[903,3],[1172,3]]},"20":{"position":[[331,3],[695,3]]},"43":{"position":[[46,3]]},"50":{"position":[[498,3]]},"54":{"position":[[570,3]]}},"keywords":{}}],["next",{"_index":317,"title":{},"content":{"7":{"position":[[1776,6]]},"17":{"position":[[1113,4]]},"39":{"position":[[365,5]]},"58":{"position":[[358,5]]}},"keywords":{}}],["next.handl",{"_index":662,"title":{},"content":{"39":{"position":[[546,14]]},"58":{"position":[[577,14]]}},"keywords":{}}],["nice",{"_index":123,"title":{},"content":{"2":{"position":[[596,4]]}},"keywords":{}}],["node",{"_index":139,"title":{},"content":{"2":{"position":[[799,4]]}},"keywords":{}}],["nodeconf",{"_index":125,"title":{},"content":{"2":{"position":[[611,8]]}},"keywords":{}}],["non",{"_index":646,"title":{},"content":{"37":{"position":[[255,3]]}},"keywords":{}}],["nonexist",{"_index":546,"title":{},"content":{"24":{"position":[[907,11]]}},"keywords":{}}],["normal",{"_index":770,"title":{},"content":{"58":{"position":[[498,6]]},"60":{"position":[[10,6]]}},"keywords":{}}],["notat",{"_index":525,"title":{},"content":{"23":{"position":[[197,9]]}},"keywords":{}}],["note",{"_index":236,"title":{},"content":{"5":{"position":[[840,5]]},"9":{"position":[[517,5]]},"37":{"position":[[161,4]]},"50":{"position":[[589,5]]},"55":{"position":[[778,4],[790,5]]},"68":{"position":[[408,5]]}},"keywords":{}}],["notexist",{"_index":548,"title":{},"content":{"24":{"position":[[962,8]]}},"keywords":{}}],["noth",{"_index":622,"title":{},"content":{"33":{"position":[[203,7]]}},"keywords":{}}],["notic",{"_index":625,"title":{},"content":{"33":{"position":[[367,7]]}},"keywords":{}}],["now",{"_index":345,"title":{},"content":{"9":{"position":[[436,3]]},"25":{"position":[[147,3]]},"26":{"position":[[393,3]]},"54":{"position":[[299,3]]}},"keywords":{}}],["npm",{"_index":432,"title":{},"content":{"16":{"position":[[34,3],[95,3]]}},"keywords":{}}],["npmyarnpnpm",{"_index":435,"title":{},"content":{"16":{"position":[[83,11]]}},"keywords":{}}],["number",{"_index":529,"title":{},"content":{"23":{"position":[[395,7]]},"24":{"position":[[420,6],[501,7]]},"25":{"position":[[323,7]]},"27":{"position":[[462,7]]},"42":{"position":[[248,6]]},"57":{"position":[[210,7]]},"59":{"position":[[314,7]]}},"keywords":{}}],["object",{"_index":39,"title":{},"content":{"1":{"position":[[376,6]]},"5":{"position":[[106,6],[198,6],[297,6]]},"6":{"position":[[1272,6]]},"7":{"position":[[660,6],[1438,6],[1569,6]]},"11":{"position":[[47,7]]},"12":{"position":[[48,6]]},"19":{"position":[[807,6],[1087,6]]},"20":{"position":[[57,6]]},"23":{"position":[[177,7]]},"24":{"position":[[828,6]]},"27":{"position":[[24,6]]},"58":{"position":[[505,6]]}},"keywords":{}}],["observable<any>",{"_index":657,"title":{},"content":{"39":{"position":[[385,21]]},"58":{"position":[[378,21]]}},"keywords":{}}],["offend",{"_index":593,"title":{},"content":{"29":{"position":[[468,9]]}},"keywords":{}}],["older",{"_index":605,"title":{},"content":{"32":{"position":[[4,5]]}},"keywords":{}}],["omit",{"_index":716,"title":{},"content":{"49":{"position":[[14,4]]}},"keywords":{}}],["on",{"_index":86,"title":{},"content":{"2":{"position":[[97,4]]},"5":{"position":[[1062,3]]},"14":{"position":[[769,4]]},"20":{"position":[[699,4]]},"29":{"position":[[478,4]]},"58":{"position":[[116,3]]}},"keywords":{}}],["onc",{"_index":427,"title":{},"content":{"15":{"position":[[555,4]]},"62":{"position":[[135,4]]},"64":{"position":[[247,4]]}},"keywords":{}}],["oper",{"_index":148,"title":{},"content":{"2":{"position":[[891,9]]},"30":{"position":[[181,9]]}},"keywords":{}}],["option",{"_index":194,"title":{"4":{"position":[[7,7]]},"7":{"position":[[22,8]]}},"content":{"5":{"position":[[129,7],[221,7],[320,7]]},"6":{"position":[[281,8],[399,9],[491,8]]},"7":{"position":[[590,8]]},"8":{"position":[[84,8]]},"14":{"position":[[153,6],[275,8],[406,7]]},"17":{"position":[[807,7]]},"19":{"position":[[779,10],[799,7],[1059,10],[1079,7]]},"20":{"position":[[49,7]]},"29":{"position":[[129,6]]},"31":{"position":[[161,7]]},"32":{"position":[[223,8]]},"49":{"position":[[29,6]]},"55":{"position":[[305,8]]},"64":{"position":[[361,7]]}},"keywords":{}}],["order",{"_index":268,"title":{},"content":{"6":{"position":[[1191,5]]},"32":{"position":[[99,5]]},"48":{"position":[[103,5]]},"50":{"position":[[273,6]]},"63":{"position":[[3,5],[130,5]]}},"keywords":{}}],["origin",{"_index":71,"title":{},"content":{"1":{"position":[[885,8]]}},"keywords":{}}],["orm",{"_index":41,"title":{},"content":{"1":{"position":[[401,3]]}},"keywords":{}}],["otel",{"_index":158,"title":{},"content":{"2":{"position":[[1022,6]]}},"keywords":{}}],["other",{"_index":616,"title":{"33":{"position":[[0,7]]}},"content":{},"keywords":{}}],["otherwis",{"_index":609,"title":{},"content":{"32":{"position":[[262,9]]},"33":{"position":[[231,10]]},"65":{"position":[[59,9]]}},"keywords":{}}],["out",{"_index":327,"title":{"9":{"position":[[9,3]]}},"content":{"9":{"position":[[9,3]]},"26":{"position":[[152,3]]}},"keywords":{}}],["outsid",{"_index":334,"title":{"44":{"position":[[6,7]]},"65":{"position":[[0,7]]}},"content":{"9":{"position":[[142,7],[296,7]]},"44":{"position":[[6,7],[113,7]]},"45":{"position":[[160,7]]},"65":{"position":[[23,7]]}},"keywords":{}}],["over",{"_index":713,"title":{},"content":{"48":{"position":[[94,4]]}},"keywords":{}}],["overhead",{"_index":144,"title":{},"content":{"2":{"position":[[849,8]]}},"keywords":{}}],["overrid",{"_index":499,"title":{},"content":{"20":{"position":[[104,10],[285,8]]}},"keywords":{}}],["packag",{"_index":329,"title":{},"content":{"9":{"position":[[30,7]]},"14":{"position":[[133,7]]},"16":{"position":[[38,7],[66,7]]},"29":{"position":[[5,7]]},"31":{"position":[[61,7]]},"33":{"position":[[268,7]]}},"keywords":{}}],["paramet",{"_index":63,"title":{"24":{"position":[[13,10]]}},"content":{"1":{"position":[[763,10]]},"5":{"position":[[807,10]]},"6":{"position":[[386,9]]},"7":{"position":[[71,10],[1364,11]]},"11":{"position":[[90,11]]},"12":{"position":[[77,10]]},"14":{"position":[[511,10]]},"19":{"position":[[95,9],[827,10],[1107,10]]},"24":{"position":[[47,9]]},"25":{"position":[[186,9]]}},"keywords":{}}],["parent",{"_index":260,"title":{},"content":{"6":{"position":[[732,6]]},"20":{"position":[[263,6],[369,6],[481,6],[565,6]]},"57":{"position":[[359,6]]}},"keywords":{}}],["part",{"_index":686,"title":{},"content":{"44":{"position":[[42,4]]}},"keywords":{}}],["pass",{"_index":48,"title":{},"content":{"1":{"position":[[480,7],[738,7]]},"6":{"position":[[432,6],[703,7]]},"11":{"position":[[59,6]]},"12":{"position":[[58,6]]},"14":{"position":[[242,4]]},"32":{"position":[[178,4]]},"37":{"position":[[143,7]]},"41":{"position":[[89,7]]},"50":{"position":[[679,6]]},"55":{"position":[[227,4]]}},"keywords":{}}],["passport",{"_index":54,"title":{},"content":{"1":{"position":[[597,9]]}},"keywords":{}}],["path",{"_index":572,"title":{},"content":{"27":{"position":[[270,5],[370,5],[529,5]]}},"keywords":{}}],["peer",{"_index":436,"title":{},"content":{"16":{"position":[[155,4]]}},"keywords":{}}],["peopl",{"_index":118,"title":{},"content":{"2":{"position":[[544,6]]}},"keywords":{}}],["person",{"_index":131,"title":{},"content":{"2":{"position":[[672,8]]}},"keywords":{}}],["phase",{"_index":837,"title":{},"content":{"65":{"position":[[883,6]]}},"keywords":{}}],["place",{"_index":750,"title":{},"content":{"55":{"position":[[29,5]]},"58":{"position":[[120,5]]}},"keywords":{}}],["platform",{"_index":617,"title":{},"content":{"33":{"position":[[68,9],[171,8],[283,8]]}},"keywords":{}}],["pleas",{"_index":235,"title":{},"content":{"5":{"position":[[833,6]]},"9":{"position":[[510,6]]},"33":{"position":[[317,6]]},"45":{"position":[[206,6]]},"50":{"position":[[582,6]]},"55":{"position":[[783,6]]},"63":{"position":[[402,6]]},"68":{"position":[[401,6]]}},"keywords":{}}],["pleasant",{"_index":134,"title":{},"content":{"2":{"position":[[713,8]]}},"keywords":{}}],["plethora",{"_index":80,"title":{},"content":{"2":{"position":[[43,8]]}},"keywords":{}}],["point",{"_index":484,"title":{},"content":{"19":{"position":[[642,7]]},"64":{"position":[[216,5]]}},"keywords":{}}],["popul",{"_index":765,"title":{"58":{"position":[[0,8]]},"59":{"position":[[5,10]]}},"content":{},"keywords":{}}],["possibl",{"_index":135,"title":{},"content":{"2":{"position":[[725,9]]},"9":{"position":[[107,8]]},"17":{"position":[[110,8],[904,8]]},"23":{"position":[[6,8]]},"27":{"position":[[188,8],[261,8]]},"59":{"position":[[11,8]]},"63":{"position":[[441,8]]}},"keywords":{}}],["prefer",{"_index":587,"title":{},"content":{"29":{"position":[[72,9]]},"31":{"position":[[77,9]]},"68":{"position":[[57,10]]}},"keywords":{}}],["prepar",{"_index":834,"title":{},"content":{"65":{"position":[[488,7]]}},"keywords":{}}],["present",{"_index":826,"title":{},"content":{"64":{"position":[[272,7]]}},"keywords":{}}],["pretti",{"_index":673,"title":{},"content":{"42":{"position":[[8,6]]}},"keywords":{}}],["previou",{"_index":455,"title":{},"content":{"17":{"position":[[688,8]]},"50":{"position":[[24,8]]}},"keywords":{}}],["primit",{"_index":810,"title":{"62":{"position":[[3,9]]}},"content":{"62":{"position":[[40,9]]}},"keywords":{}}],["prior",{"_index":723,"title":{},"content":{"50":{"position":[[176,5]]}},"keywords":{}}],["privat",{"_index":696,"title":{},"content":{"44":{"position":[[631,7],[674,7]]},"60":{"position":[[1087,7]]},"65":{"position":[[326,7],[369,7]]}},"keywords":{}}],["probabl",{"_index":462,"title":{},"content":{"17":{"position":[[1021,8]]}},"keywords":{}}],["process",{"_index":377,"title":{},"content":{"14":{"position":[[558,7]]}},"keywords":{}}],["programmat",{"_index":325,"title":{},"content":{"8":{"position":[[31,12]]}},"keywords":{}}],["project",{"_index":367,"title":{},"content":{"13":{"position":[[99,7]]}},"keywords":{}}],["promis",{"_index":712,"title":{},"content":{"45":{"position":[[363,9]]}},"keywords":{}}],["promise<string>",{"_index":287,"title":{},"content":{"7":{"position":[[490,21],[565,21]]}},"keywords":{}}],["promise<void>",{"_index":299,"title":{},"content":{"7":{"position":[[935,20],[1018,20]]},"19":{"position":[[1417,19]]}},"keywords":{}}],["propag",{"_index":37,"title":{},"content":{"1":{"position":[[348,11]]}},"keywords":{}}],["proper",{"_index":522,"title":{},"content":{"23":{"position":[[72,6]]}},"keywords":{}}],["properti",{"_index":512,"title":{},"content":{"20":{"position":[[525,10],[616,10]]},"24":{"position":[[919,8]]},"55":{"position":[[269,8]]},"62":{"position":[[142,8]]}},"keywords":{}}],["protocol",{"_index":466,"title":{},"content":{"17":{"position":[[1173,10]]}},"keywords":{}}],["provid",{"_index":52,"title":{"26":{"position":[[15,9]]},"56":{"position":[[6,9]]},"57":{"position":[[12,10]]},"59":{"position":[[22,9]]},"60":{"position":[[14,10]]},"64":{"position":[[28,10]]}},"content":{"1":{"position":[[569,9],[725,9]]},"3":{"position":[[34,9]]},"5":{"position":[[540,9],[636,10]]},"6":{"position":[[66,10],[118,10],[290,9],[342,9],[371,9],[541,9],[578,9],[643,9],[885,9],[1059,9],[1174,9],[1327,9]]},"7":{"position":[[1255,9]]},"9":{"position":[[170,8]]},"14":{"position":[[141,8],[361,7],[991,8]]},"15":{"position":[[40,8],[277,10]]},"19":{"position":[[26,8],[1474,10]]},"21":{"position":[[112,8]]},"26":{"position":[[143,8],[274,10],[289,8]]},"36":{"position":[[85,8]]},"38":{"position":[[240,10]]},"42":{"position":[[61,8]]},"44":{"position":[[1257,10]]},"50":{"position":[[730,7]]},"54":{"position":[[341,10],[453,8],[626,10],[641,8]]},"55":{"position":[[596,10],[611,8]]},"57":{"position":[[6,9],[45,10],[257,9],[343,8]]},"58":{"position":[[8,8]]},"59":{"position":[[36,9],[61,8],[192,9],[521,8],[708,8],[856,9]]},"60":{"position":[[25,10],[50,9],[193,8],[298,8],[820,9],[973,7]]},"62":{"position":[[14,9],[77,8]]},"64":{"position":[[18,9]]},"65":{"position":[[101,8],[239,10],[565,8],[840,9]]},"68":{"position":[[219,10],[234,8]]}},"keywords":{}}],["provider[]opt",{"_index":258,"title":{},"content":{"6":{"position":[[605,18]]}},"keywords":{}}],["proxi",{"_index":7,"title":{"56":{"position":[[0,5]]},"57":{"position":[[6,5]]},"59":{"position":[[16,5]]},"60":{"position":[[8,5]]},"63":{"position":[[7,7]]},"64":{"position":[[22,5]]}},"content":{"3":{"position":[[28,5]]},"5":{"position":[[534,5],[630,5]]},"6":{"position":[[60,5],[112,5],[685,6],[879,5],[1321,5]]},"7":{"position":[[1249,5]]},"19":{"position":[[1468,5]]},"44":{"position":[[1251,5]]},"54":{"position":[[335,5]]},"57":{"position":[[251,5],[538,5]]},"58":{"position":[[266,5]]},"59":{"position":[[55,5],[186,5],[702,5]]},"60":{"position":[[36,5]]},"62":{"position":[[0,5],[100,5]]},"63":{"position":[[30,7],[67,5],[244,5]]},"64":{"position":[[12,5]]},"65":{"position":[[95,5],[233,5],[559,5],[834,5]]}},"keywords":{"0":{"position":[[64,5]]},"4":{"position":[[64,5]]},"8":{"position":[[64,5]]},"9":{"position":[[64,5]]},"10":{"position":[[64,5]]},"13":{"position":[[64,5]]},"14":{"position":[[64,5]]},"15":{"position":[[64,5]]},"16":{"position":[[64,5]]},"17":{"position":[[64,5]]},"18":{"position":[[64,5]]},"21":{"position":[[64,5]]},"22":{"position":[[64,5]]},"28":{"position":[[64,5]]},"35":{"position":[[64,5]]},"43":{"position":[[64,5]]},"44":{"position":[[64,5]]},"45":{"position":[[64,5]]},"46":{"position":[[64,5]]},"51":{"position":[[64,5]]},"54":{"position":[[64,5]]},"55":{"position":[[64,5]]},"56":{"position":[[64,5]]},"66":{"position":[[64,5]]}}}],["proxyprovid",{"_index":219,"title":{},"content":{"5":{"position":[[501,16]]}},"keywords":{}}],["purpos",{"_index":375,"title":{},"content":{"14":{"position":[[108,7]]}},"keywords":{}}],["purposeskeep",{"_index":18,"title":{},"content":{"1":{"position":[[112,15]]}},"keywords":{}}],["put",{"_index":302,"title":{},"content":{"7":{"position":[[1124,3]]}},"keywords":{}}],["qualiti",{"_index":675,"title":{},"content":{"42":{"position":[[75,7]]}},"keywords":{}}],["queri",{"_index":104,"title":{},"content":{"2":{"position":[[337,6]]},"30":{"position":[[113,7]]}},"keywords":{}}],["queue",{"_index":689,"title":{},"content":{"44":{"position":[[201,5]]}},"keywords":{}}],["quick",{"_index":517,"title":{"35":{"position":[[0,5]]}},"content":{"21":{"position":[[79,5]]}},"keywords":{}}],["quickli",{"_index":388,"title":{},"content":{"14":{"position":[[1028,7]]}},"keywords":{}}],["quot;<44c2d8ff",{"_index":405,"title":{},"content":{"14":{"position":[[1511,18]]}},"keywords":{}}],["quot;apply"",{"_index":815,"title":{},"content":{"63":{"position":[[164,17]]}},"keywords":{}}],["quot;polluting"",{"_index":561,"title":{},"content":{"26":{"position":[[478,21]]}},"keywords":{}}],["quot;request"",{"_index":50,"title":{},"content":{"1":{"position":[[504,19]]}},"keywords":{}}],["rare",{"_index":447,"title":{},"content":{"17":{"position":[[331,4]]}},"keywords":{}}],["re",{"_index":359,"title":{},"content":{"11":{"position":[[176,4]]},"20":{"position":[[497,2]]}},"keywords":{}}],["read",{"_index":676,"title":{},"content":{"42":{"position":[[104,4]]}},"keywords":{}}],["readonli",{"_index":394,"title":{},"content":{"14":{"position":[[1169,8],[1424,8]]},"24":{"position":[[163,8]]},"39":{"position":[[299,8]]},"40":{"position":[[324,8]]},"41":{"position":[[235,8]]},"44":{"position":[[639,8],[682,8]]},"58":{"position":[[297,8]]},"60":{"position":[[1095,8]]},"65":{"position":[[334,8],[377,8],[973,8]]}},"keywords":{}}],["realli",{"_index":677,"title":{},"content":{"42":{"position":[[138,6]]}},"keywords":{}}],["receiv",{"_index":376,"title":{},"content":{"14":{"position":[[428,8]]}},"keywords":{}}],["record",{"_index":92,"title":{},"content":{"2":{"position":[[195,7]]}},"keywords":{}}],["redirect",{"_index":763,"title":{},"content":{"57":{"position":[[550,9]]}},"keywords":{}}],["refer",{"_index":253,"title":{},"content":{"6":{"position":[[422,9]]},"27":{"position":[[99,11]]}},"keywords":{}}],["reflect",{"_index":513,"title":{},"content":{"20":{"position":[[548,9],[754,10]]}},"keywords":{}}],["reflected.reus",{"_index":515,"title":{},"content":{"20":{"position":[[635,15]]}},"keywords":{}}],["regardless",{"_index":817,"title":{},"content":{"63":{"position":[[279,10]]}},"keywords":{}}],["regist",{"_index":221,"title":{"38":{"position":[[0,8]]}},"content":{"5":{"position":[[565,10]]},"6":{"position":[[49,8]]},"7":{"position":[[1293,12]]},"38":{"position":[[0,8]]},"54":{"position":[[58,8],[326,8]]},"57":{"position":[[238,8]]},"60":{"position":[[92,10]]}},"keywords":{}}],["registerasync",{"_index":736,"title":{},"content":{"54":{"position":[[74,14]]}},"keywords":{}}],["registr",{"_index":714,"title":{},"content":{"48":{"position":[[123,12]]},"54":{"position":[[21,12]]},"57":{"position":[[298,13]]},"59":{"position":[[591,12]]}},"keywords":{}}],["regular",{"_index":757,"title":{},"content":{"57":{"position":[[31,7]]}},"keywords":{}}],["reli",{"_index":460,"title":{},"content":{"17":{"position":[[953,4]]},"44":{"position":[[63,6]]},"65":{"position":[[223,6]]}},"keywords":{}}],["rememb",{"_index":614,"title":{},"content":{"32":{"position":[[534,8]]}},"keywords":{}}],["renam",{"_index":734,"title":{},"content":{"54":{"position":[[45,7]]}},"keywords":{}}],["replac",{"_index":75,"title":{},"content":{"1":{"position":[[946,8]]},"59":{"position":[[813,7]]}},"keywords":{}}],["repositori",{"_index":98,"title":{},"content":{"2":{"position":[[278,10]]}},"keywords":{}}],["req",{"_index":285,"title":{},"content":{"7":{"position":[[460,5],[908,4]]},"11":{"position":[[162,4]]},"12":{"position":[[172,3]]},"14":{"position":[[852,5]]},"53":{"position":[[203,5]]},"60":{"position":[[426,5]]}},"keywords":{}}],["req.headers['x",{"_index":383,"title":{},"content":{"14":{"position":[[873,14]]}},"keywords":{}}],["req.params('tenant_id",{"_index":361,"title":{},"content":{"11":{"position":[[220,25]]},"12":{"position":[[251,25]]}},"keywords":{}}],["req.params['tenantid",{"_index":798,"title":{},"content":{"60":{"position":[[504,23]]}},"keywords":{}}],["request",{"_index":4,"title":{"14":{"position":[[0,7]]},"44":{"position":[[21,7]]},"65":{"position":[[12,8]]}},"content":{"1":{"position":[[70,7],[554,7],[710,7]]},"5":{"position":[[1092,7]]},"7":{"position":[[391,7],[466,8],[627,7],[652,7],[913,8],[1430,7]]},"11":{"position":[[26,7],[167,8]]},"14":{"position":[[0,7],[74,7],[186,7],[441,7],[698,7],[718,7],[858,8],[888,7]]},"15":{"position":[[186,7],[231,7],[262,7],[327,7]]},"17":{"position":[[87,8],[200,8],[642,8],[697,7],[715,7],[884,7]]},"19":{"position":[[285,7]]},"30":{"position":[[132,8]]},"38":{"position":[[88,7]]},"39":{"position":[[138,7],[415,7]]},"41":{"position":[[144,7]]},"44":{"position":[[21,7],[145,7]]},"45":{"position":[[192,8]]},"58":{"position":[[408,7]]},"59":{"position":[[366,8],[375,8],[841,7]]},"60":{"position":[[432,8],[740,7]]},"64":{"position":[[229,7]]},"65":{"position":[[50,8]]}},"keywords":{"0":{"position":[[16,7]]},"4":{"position":[[16,7]]},"8":{"position":[[16,7]]},"9":{"position":[[16,7]]},"10":{"position":[[16,7]]},"13":{"position":[[16,7]]},"14":{"position":[[16,7]]},"15":{"position":[[16,7]]},"16":{"position":[[16,7]]},"17":{"position":[[16,7]]},"18":{"position":[[16,7]]},"21":{"position":[[16,7]]},"22":{"position":[[16,7]]},"28":{"position":[[16,7]]},"35":{"position":[[16,7]]},"43":{"position":[[16,7]]},"44":{"position":[[16,7]]},"45":{"position":[[16,7]]},"46":{"position":[[16,7]]},"51":{"position":[[16,7]]},"54":{"position":[[16,7]]},"55":{"position":[[16,7]]},"56":{"position":[[16,7]]},"66":{"position":[[16,7]]}}}],["request'",{"_index":95,"title":{},"content":{"2":{"position":[[238,9]]}},"keywords":{}}],["request.connection.remoteaddress",{"_index":660,"title":{},"content":{"39":{"position":[[477,33]]}},"keywords":{}}],["request.user.id",{"_index":772,"title":{},"content":{"58":{"position":[[527,16]]},"59":{"position":[[424,16]]}},"keywords":{}}],["requestmak",{"_index":22,"title":{},"content":{"1":{"position":[[167,13]]}},"keywords":{}}],["requir",{"_index":180,"title":{},"content":{"3":{"position":[[220,8]]},"6":{"position":[[561,8]]},"15":{"position":[[397,8]]},"16":{"position":[[135,8]]},"17":{"position":[[1068,7]]},"34":{"position":[[75,8]]},"64":{"position":[[159,8]]}},"keywords":{}}],["resolut",{"_index":497,"title":{"64":{"position":[[8,10]]}},"content":{"19":{"position":[[1454,10]]},"64":{"position":[[177,10]]},"65":{"position":[[574,10]]}},"keywords":{}}],["resolv",{"_index":271,"title":{},"content":{"6":{"position":[[1254,8]]},"7":{"position":[[1241,7]]},"14":{"position":[[588,7]]},"31":{"position":[[26,9]]},"32":{"position":[[141,10]]},"60":{"position":[[219,8]]},"64":{"position":[[32,8]]},"65":{"position":[[858,8]]}},"keywords":{}}],["resolveproxyprovid",{"_index":303,"title":{},"content":{"7":{"position":[[1169,23]]},"19":{"position":[[1392,24]]},"64":{"position":[[314,21],[469,22]]},"65":{"position":[[691,21],[1041,22]]}},"keywords":{}}],["resourcesseamlessli",{"_index":36,"title":{},"content":{"1":{"position":[[328,19]]}},"keywords":{}}],["resp",{"_index":735,"title":{},"content":{"54":{"position":[[67,6],[100,6]]}},"keywords":{}}],["respect",{"_index":627,"title":{},"content":{"34":{"position":[[25,7]]},"50":{"position":[[651,7]]}},"keywords":{}}],["respons",{"_index":310,"title":{},"content":{"7":{"position":[[1560,8]]},"11":{"position":[[38,8],[181,9]]},"44":{"position":[[378,11]]}},"keywords":{}}],["rest",{"_index":586,"title":{"29":{"position":[[0,5]]}},"content":{"29":{"position":[[47,4]]},"55":{"position":[[917,4]]}},"keywords":{}}],["restrict",{"_index":34,"title":{},"content":{"1":{"position":[[309,8]]}},"keywords":{}}],["result",{"_index":399,"title":{},"content":{"14":{"position":[[1328,7]]},"24":{"position":[[933,6]]},"30":{"position":[[36,6]]},"60":{"position":[[756,6]]},"63":{"position":[[193,6]]}},"keywords":{}}],["retriev",{"_index":339,"title":{},"content":{"9":{"position":[[275,8]]},"14":{"position":[[683,10],[1036,8],[1339,10]]},"15":{"position":[[80,10]]},"19":{"position":[[209,8],[272,8]]},"23":{"position":[[120,10]]},"37":{"position":[[97,10]]},"41":{"position":[[26,8]]}},"keywords":{}}],["return",{"_index":270,"title":{},"content":{"6":{"position":[[1242,7]]},"7":{"position":[[780,7]]},"14":{"position":[[577,6]]},"24":{"position":[[758,7]]},"39":{"position":[[539,6]]},"40":{"position":[[385,6]]},"41":{"position":[[312,6]]},"45":{"position":[[354,6]]},"58":{"position":[[570,6]]},"60":{"position":[[594,6],[1150,6]]},"62":{"position":[[31,6],[226,7]]},"63":{"position":[[262,6]]},"65":{"position":[[115,6]]}},"keywords":{}}],["reus",{"_index":501,"title":{},"content":{"20":{"position":[[129,7],[653,5]]}},"keywords":{}}],["rile.proxy.t",{"_index":780,"title":{},"content":{"59":{"position":[[249,13]]}},"keywords":{}}],["role",{"_index":33,"title":{},"content":{"1":{"position":[[301,4]]},"57":{"position":[[218,5]]},"59":{"position":[[322,5]]}},"keywords":{}}],["rolemodul",{"_index":787,"title":{},"content":{"59":{"position":[[725,13]]}},"keywords":{}}],["roleservic",{"_index":783,"title":{},"content":{"59":{"position":[[384,12],[397,12],[673,11]]}},"keywords":{}}],["roleservice.getforid(request.user.id",{"_index":786,"title":{},"content":{"59":{"position":[[453,38]]}},"keywords":{}}],["root",{"_index":222,"title":{},"content":{"5":{"position":[[583,4]]},"54":{"position":[[16,4]]},"68":{"position":[[121,4]]}},"keywords":{}}],["rout",{"_index":278,"title":{},"content":{"7":{"position":[[262,5]]},"38":{"position":[[127,7]]},"48":{"position":[[53,7]]}},"keywords":{}}],["run",{"_index":140,"title":{},"content":{"2":{"position":[[804,3]]},"7":{"position":[[1928,4]]},"17":{"position":[[271,5],[492,5],[1095,3]]},"19":{"position":[[737,3],[881,3],[1011,3],[1144,3],[1255,3],[1357,4]]},"20":{"position":[[4,3],[306,3],[437,3]]},"50":{"position":[[172,3]]},"55":{"position":[[822,3]]}},"keywords":{}}],["run(callback",{"_index":485,"title":{},"content":{"19":{"position":[[650,13]]}},"keywords":{}}],["run(opt",{"_index":487,"title":{},"content":{"19":{"position":[[679,12]]}},"keywords":{}}],["runwith(stor",{"_index":489,"title":{},"content":{"19":{"position":[[838,14]]}},"keywords":{}}],["s",{"_index":468,"title":{},"content":{"19":{"position":[[88,1],[152,1],[198,3],[345,3],[410,2],[492,2],[853,2],[1135,3]]}},"keywords":{}}],["s[key",{"_index":473,"title":{},"content":{"19":{"position":[[202,6],[420,8],[502,8]]}},"keywords":{}}],["sadli",{"_index":610,"title":{},"content":{"32":{"position":[[308,7]]}},"keywords":{}}],["safe",{"_index":442,"title":{"23":{"position":[[5,4]]}},"content":{"17":{"position":[[60,4],[266,4],[433,4]]},"24":{"position":[[105,4]]}},"keywords":{}}],["safer",{"_index":318,"title":{},"content":{"7":{"position":[[1797,5]]},"32":{"position":[[477,5]]},"55":{"position":[[194,5]]}},"keywords":{}}],["safeti",{"_index":178,"title":{"22":{"position":[[5,6]]}},"content":{"3":{"position":[[181,6]]}},"keywords":{}}],["same",{"_index":93,"title":{},"content":{"2":{"position":[[217,4],[456,4]]},"5":{"position":[[893,4]]},"15":{"position":[[611,4],[649,4]]},"32":{"position":[[320,4]]},"40":{"position":[[75,4]]},"65":{"position":[[781,4]]}},"keywords":{}}],["saver",{"_index":309,"title":{},"content":{"7":{"position":[[1505,9]]}},"keywords":{}}],["savereq",{"_index":306,"title":{},"content":{"7":{"position":[[1376,9]]}},"keywords":{}}],["sayhello",{"_index":671,"title":{},"content":{"41":{"position":[[264,10]]}},"keywords":{}}],["scope",{"_index":5,"title":{},"content":{"1":{"position":[[562,6],[718,6]]},"15":{"position":[[270,6]]},"41":{"position":[[152,7]]},"59":{"position":[[849,6]]},"60":{"position":[[889,5]]}},"keywords":{"0":{"position":[[25,5]]},"4":{"position":[[25,5]]},"8":{"position":[[25,5]]},"9":{"position":[[25,5]]},"10":{"position":[[25,5]]},"13":{"position":[[25,5]]},"14":{"position":[[25,5]]},"15":{"position":[[25,5]]},"16":{"position":[[25,5]]},"17":{"position":[[25,5]]},"18":{"position":[[25,5]]},"21":{"position":[[25,5]]},"22":{"position":[[25,5]]},"28":{"position":[[25,5]]},"35":{"position":[[25,5]]},"43":{"position":[[25,5]]},"44":{"position":[[25,5]]},"45":{"position":[[25,5]]},"46":{"position":[[25,5]]},"51":{"position":[[25,5]]},"54":{"position":[[25,5]]},"55":{"position":[[25,5]]},"56":{"position":[[25,5]]},"66":{"position":[[25,5]]}}}],["seamlessli",{"_index":707,"title":{},"content":{"44":{"position":[[1051,11]]}},"keywords":{}}],["second",{"_index":357,"title":{},"content":{"11":{"position":[[73,6]]},"12":{"position":[[70,6]]}},"keywords":{}}],["secur",{"_index":424,"title":{"17":{"position":[[0,8]]}},"content":{"15":{"position":[[494,8]]},"17":{"position":[[0,8]]},"68":{"position":[[513,8]]}},"keywords":{}}],["see",{"_index":171,"title":{},"content":{"3":{"position":[[126,3]]},"5":{"position":[[160,3],[247,3],[352,3]]},"15":{"position":[[490,3]]},"27":{"position":[[707,3]]},"29":{"position":[[322,3]]},"34":{"position":[[217,4]]},"37":{"position":[[276,3]]},"50":{"position":[[280,3]]},"63":{"position":[[409,3]]}},"keywords":{}}],["self",{"_index":775,"title":{"59":{"position":[[0,4]]}},"content":{},"keywords":{}}],["separ",{"_index":778,"title":{},"content":{"59":{"position":[[102,8]]}},"keywords":{}}],["servic",{"_index":42,"title":{"18":{"position":[[0,7]]},"41":{"position":[[22,8]]}},"content":{"1":{"position":[[412,8]]},"37":{"position":[[116,7]]},"60":{"position":[[935,8]]}},"keywords":{}}],["service.interface.t",{"_index":527,"title":{},"content":{"23":{"position":[[297,20]]}},"keywords":{}}],["set",{"_index":242,"title":{"51":{"position":[[0,7]]}},"content":{"5":{"position":[[961,3],[1084,3]]},"7":{"position":[[1674,3],[1689,3]]},"15":{"position":[[409,3],[568,3]]},"17":{"position":[[830,3]]},"19":{"position":[[434,3],[516,3],[578,4]]},"20":{"position":[[83,9],[137,4]]},"23":{"position":[[134,7]]},"29":{"position":[[136,3]]},"32":{"position":[[118,3]]},"33":{"position":[[38,3]]},"36":{"position":[[103,7]]},"37":{"position":[[280,7]]},"40":{"position":[[122,3]]},"44":{"position":[[318,3],[557,3]]},"49":{"position":[[39,3]]},"50":{"position":[[521,11],[670,8]]},"64":{"position":[[310,3]]},"65":{"position":[[156,3],[716,3],[814,3]]}},"keywords":{}}],["set(key",{"_index":478,"title":{},"content":{"19":{"position":[[395,8]]}},"keywords":{}}],["setifundefined(key",{"_index":479,"title":{},"content":{"19":{"position":[[466,19]]}},"keywords":{}}],["setup",{"_index":296,"title":{"10":{"position":[[15,5]]}},"content":{"7":{"position":[[882,7],[956,7]]},"11":{"position":[[149,6]]},"12":{"position":[[136,6]]},"30":{"position":[[258,5]]},"44":{"position":[[1073,6]]},"64":{"position":[[56,5]]},"65":{"position":[[877,5],[1070,6]]}},"keywords":{}}],["sever",{"_index":519,"title":{},"content":{"21":{"position":[[121,7]]}},"keywords":{}}],["shallow",{"_index":509,"title":{},"content":{"20":{"position":[[461,7]]}},"keywords":{}}],["share",{"_index":346,"title":{},"content":{"9":{"position":[[459,6]]},"14":{"position":[[24,6]]},"15":{"position":[[178,7]]},"19":{"position":[[759,6],[1039,6],[1292,6]]},"38":{"position":[[101,6]]},"39":{"position":[[79,6]]},"40":{"position":[[80,6]]}},"keywords":{}}],["shorthand",{"_index":386,"title":{},"content":{"14":{"position":[[1002,9]]},"19":{"position":[[299,9]]}},"keywords":{}}],["simpl",{"_index":678,"title":{},"content":{"42":{"position":[[145,7]]}},"keywords":{}}],["singl",{"_index":418,"title":{},"content":{"15":{"position":[[224,6]]}},"keywords":{}}],["singleton",{"_index":791,"title":{},"content":{"59":{"position":[[896,10]]},"60":{"position":[[855,9]]}},"keywords":{}}],["slower",{"_index":141,"title":{},"content":{"2":{"position":[[808,7]]}},"keywords":{}}],["solut",{"_index":64,"title":{},"content":{"1":{"position":[[784,9]]}},"keywords":{}}],["solv",{"_index":88,"title":{},"content":{"2":{"position":[[128,5]]}},"keywords":{}}],["solvabl",{"_index":62,"title":{},"content":{"1":{"position":[[695,8]]}},"keywords":{}}],["someservic",{"_index":697,"title":{},"content":{"44":{"position":[[648,12],[661,12]]},"65":{"position":[[343,12],[356,12],[982,12],[995,13]]}},"keywords":{}}],["sometim",{"_index":137,"title":{},"content":{"2":{"position":[[767,9]]},"44":{"position":[[29,10]]},"48":{"position":[[0,10]]},"50":{"position":[[0,10]]}},"keywords":{}}],["somewher",{"_index":425,"title":{},"content":{"15":{"position":[[533,9]]},"58":{"position":[[105,10]]}},"keywords":{}}],["soon",{"_index":823,"title":{},"content":{"64":{"position":[[44,4]]}},"keywords":{}}],["space",{"_index":414,"title":{},"content":{"15":{"position":[[58,5]]},"26":{"position":[[516,6]]}},"keywords":{}}],["special",{"_index":631,"title":{},"content":{"34":{"position":[[157,7]]},"44":{"position":[[1203,7]]}},"keywords":{}}],["specif",{"_index":89,"title":{},"content":{"2":{"position":[[136,8]]},"60":{"position":[[233,8]]}},"keywords":{}}],["specifi",{"_index":521,"title":{},"content":{"23":{"position":[[18,7]]},"25":{"position":[[169,7]]}},"keywords":{}}],["start",{"_index":518,"title":{"35":{"position":[[6,5]]}},"content":{"21":{"position":[[85,5]]},"23":{"position":[[236,5]]}},"keywords":{}}],["static",{"_index":335,"title":{},"content":{"9":{"position":[[183,6]]}},"keywords":{}}],["still",{"_index":84,"title":{},"content":{"2":{"position":[[84,5],[514,5]]},"3":{"position":[[337,5]]},"25":{"position":[[213,5]]},"27":{"position":[[635,5]]},"54":{"position":[[359,5]]},"60":{"position":[[844,5]]}},"keywords":{}}],["stop",{"_index":575,"title":{},"content":{"27":{"position":[[350,4]]}},"keywords":{}}],["storag",{"_index":347,"title":{},"content":{"9":{"position":[[466,7]]},"14":{"position":[[31,8]]},"15":{"position":[[32,7],[654,7]]},"36":{"position":[[173,7]]},"44":{"position":[[81,7]]}},"keywords":{}}],["store",{"_index":307,"title":{},"content":{"7":{"position":[[1420,5],[1550,5]]},"14":{"position":[[627,6],[927,6]]},"15":{"position":[[68,7]]},"19":{"position":[[948,7],[1217,7]]},"23":{"position":[[229,6]]},"24":{"position":[[776,5]]},"27":{"position":[[43,5]]},"30":{"position":[[202,5]]},"37":{"position":[[45,5]]},"39":{"position":[[150,6]]},"57":{"position":[[593,6]]},"60":{"position":[[771,6]]}},"keywords":{}}],["strategi",{"_index":55,"title":{},"content":{"1":{"position":[[607,11]]}},"keywords":{}}],["string",{"_index":286,"title":{},"content":{"7":{"position":[[481,6],[556,6],[790,7],[858,6]]},"14":{"position":[[318,6],[604,6],[1211,7]]},"19":{"position":[[264,7]]},"23":{"position":[[375,7]]},"24":{"position":[[338,6]]},"25":{"position":[[227,6],[303,7]]},"27":{"position":[[430,7]]},"57":{"position":[[224,7]]},"59":{"position":[[328,7]]}},"keywords":{}}],["subsequ",{"_index":830,"title":{},"content":{"65":{"position":[[202,10]]}},"keywords":{}}],["subtre",{"_index":577,"title":{},"content":{"27":{"position":[[390,8]]}},"keywords":{}}],["such",{"_index":639,"title":{},"content":{"36":{"position":[[278,4]]},"44":{"position":[[247,4]]}},"keywords":{}}],["suppli",{"_index":231,"title":{},"content":{"5":{"position":[[759,6]]},"19":{"position":[[926,9],[1195,9]]}},"keywords":{}}],["support",{"_index":53,"title":{},"content":{"1":{"position":[[587,9]]},"29":{"position":[[37,9]]},"54":{"position":[[249,7]]},"63":{"position":[[12,7]]}},"keywords":{}}],["sure",{"_index":106,"title":{},"content":{"2":{"position":[[355,4]]},"6":{"position":[[900,4]]},"17":{"position":[[849,4]]}},"keywords":{}}],["symbol",{"_index":185,"title":{},"content":{"3":{"position":[[282,6]]},"24":{"position":[[656,6]]}},"keywords":{}}],["sync",{"_index":225,"title":{"52":{"position":[[0,5]]}},"content":{"5":{"position":[[619,4]]},"6":{"position":[[81,4]]}},"keywords":{}}],["synchron",{"_index":291,"title":{},"content":{"7":{"position":[[746,14]]}},"keywords":{}}],["t",{"_index":486,"title":{},"content":{"19":{"position":[[673,3],[677,1],[730,3],[734,2],[875,3],[879,1],[1249,3],[1253,1]]}},"keywords":{}}],["take",{"_index":198,"title":{},"content":{"5":{"position":[[31,5]]},"7":{"position":[[52,4],[642,5],[1344,5]]},"13":{"position":[[199,4]]},"19":{"position":[[790,5],[1070,5]]},"20":{"position":[[30,4]]}},"keywords":{}}],["taken",{"_index":453,"title":{},"content":{"17":{"position":[[564,5]]},"44":{"position":[[1224,5]]},"63":{"position":[[361,5]]}},"keywords":{}}],["talk",{"_index":124,"title":{},"content":{"2":{"position":[[601,4]]}},"keywords":{}}],["target",{"_index":262,"title":{},"content":{"6":{"position":[[840,6]]},"63":{"position":[[73,6]]}},"keywords":{}}],["techniqu",{"_index":351,"title":{},"content":{"9":{"position":[[584,9]]}},"keywords":{}}],["tediou",{"_index":552,"title":{},"content":{"25":{"position":[[81,8]]}},"keywords":{}}],["tenant",{"_index":24,"title":{},"content":{"1":{"position":[[193,6],[250,6]]},"2":{"position":[[408,6],[425,8]]},"60":{"position":[[242,6]]}},"keywords":{}}],["tenant_connect",{"_index":794,"title":{},"content":{"60":{"position":[[307,18],[642,17],[802,17]]}},"keywords":{}}],["tenantconnect",{"_index":806,"title":{},"content":{"60":{"position":[[1116,17]]}},"keywords":{}}],["tenantid",{"_index":94,"title":{},"content":{"2":{"position":[[222,8]]},"23":{"position":[[365,9]]},"24":{"position":[[307,8],[351,8],[665,10],[857,9]]},"25":{"position":[[293,9]]},"27":{"position":[[420,9],[535,8]]},"60":{"position":[[493,8]]}},"keywords":{}}],["termin",{"_index":562,"title":{"27":{"position":[[0,8]]}},"content":{"27":{"position":[[333,8]]}},"keywords":{}}],["terminal<",{"_index":578,"title":{},"content":{"27":{"position":[[444,13]]}},"keywords":{}}],["test",{"_index":356,"title":{},"content":{"9":{"position":[[708,5]]},"29":{"position":[[149,6]]},"30":{"position":[[346,6]]},"33":{"position":[[100,4]]}},"keywords":{}}],["thank",{"_index":612,"title":{},"content":{"32":{"position":[[505,7]]}},"keywords":{}}],["thar",{"_index":831,"title":{},"content":{"65":{"position":[[218,4]]}},"keywords":{}}],["that'",{"_index":574,"title":{"42":{"position":[[0,6]]}},"content":{"27":{"position":[[300,6]]}},"keywords":{}}],["there'",{"_index":621,"title":{},"content":{"33":{"position":[[195,7]]}},"keywords":{}}],["therefor",{"_index":597,"title":{},"content":{"30":{"position":[[274,10]]},"34":{"position":[[59,9]]},"37":{"position":[[210,9]]},"44":{"position":[[338,10]]}},"keywords":{}}],["thing",{"_index":582,"title":{},"content":{"27":{"position":[[662,6]]}},"keywords":{}}],["third",{"_index":358,"title":{},"content":{"11":{"position":[[84,5]]}},"keywords":{}}],["this.appservice.sayhello",{"_index":668,"title":{},"content":{"40":{"position":[[392,27]]}},"keywords":{}}],["this.cls.get",{"_index":545,"title":{},"content":{"24":{"position":[[876,15]]}},"keywords":{}}],["this.cls.get('ip",{"_index":672,"title":{},"content":{"41":{"position":[[292,19]]}},"keywords":{}}],["this.cls.get('tenantid",{"_index":536,"title":{},"content":{"24":{"position":[[362,25]]}},"keywords":{}}],["this.cls.get('us",{"_index":539,"title":{},"content":{"24":{"position":[[544,21]]}},"keywords":{}}],["this.cls.get('user.id",{"_index":538,"title":{},"content":{"24":{"position":[[442,24]]}},"keywords":{}}],["this.cls.get('user.nam",{"_index":549,"title":{},"content":{"24":{"position":[[973,26]]}},"keywords":{}}],["this.cls.resolveproxyprovid",{"_index":836,"title":{},"content":{"65":{"position":[[591,33]]}},"keywords":{}}],["this.cls.run(async",{"_index":702,"title":{},"content":{"44":{"position":[[851,18]]},"65":{"position":[[455,18]]}},"keywords":{}}],["this.cls.set('ip",{"_index":661,"title":{},"content":{"39":{"position":[[511,18]]}},"keywords":{}}],["this.cls.set('mod",{"_index":703,"title":{},"content":{"44":{"position":[[881,20]]}},"keywords":{}}],["this.cls.set('som",{"_index":835,"title":{},"content":{"65":{"position":[[508,18],[1091,18]]}},"keywords":{}}],["this.cls.set('user.author",{"_index":535,"title":{},"content":{"24":{"position":[[265,31]]}},"keywords":{}}],["this.connection.dogs.getal",{"_index":808,"title":{},"content":{"60":{"position":[[1157,30]]}},"keywords":{}}],["this.id",{"_index":784,"title":{},"content":{"59":{"position":[[414,7]]}},"keywords":{}}],["this.logger.log('hello",{"_index":403,"title":{},"content":{"14":{"position":[[1462,25]]}},"keywords":{}}],["this.rol",{"_index":785,"title":{},"content":{"59":{"position":[[441,9]]}},"keywords":{}}],["this.someservice.dotheth",{"_index":704,"title":{},"content":{"44":{"position":[[917,30],[1160,30]]},"65":{"position":[[631,30],[1164,30]]}},"keywords":{}}],["this.user.id",{"_index":771,"title":{},"content":{"58":{"position":[[512,12]]}},"keywords":{}}],["this.user.rol",{"_index":773,"title":{},"content":{"58":{"position":[[544,14]]}},"keywords":{}}],["those",{"_index":91,"title":{},"content":{"2":{"position":[[189,5]]},"16":{"position":[[236,5]]},"29":{"position":[[462,5]]},"45":{"position":[[342,6]]}},"keywords":{}}],["throughout",{"_index":20,"title":{},"content":{"1":{"position":[[146,10]]},"15":{"position":[[96,10],[339,10]]},"17":{"position":[[171,10]]}},"keywords":{}}],["time",{"_index":132,"title":{},"content":{"2":{"position":[[681,4]]},"5":{"position":[[898,4]]},"7":{"position":[[1838,4]]},"30":{"position":[[80,5]]},"64":{"position":[[429,5]]}},"keywords":{}}],["tip",{"_index":788,"title":{},"content":{"59":{"position":[[768,3]]}},"keywords":{}}],["token",{"_index":252,"title":{},"content":{"6":{"position":[[321,5],[1048,6],[1214,6]]},"60":{"position":[[981,5]]}},"keywords":{}}],["tool",{"_index":373,"title":{},"content":{"14":{"position":[[56,4]]}},"keywords":{}}],["top",{"_index":341,"title":{},"content":{"9":{"position":[[341,3]]},"20":{"position":[[515,3]]}},"keywords":{}}],["trace",{"_index":157,"title":{},"content":{"2":{"position":[[1000,7]]}},"keywords":{}}],["track",{"_index":14,"title":{},"content":{"1":{"position":[[57,8],[128,5]]},"14":{"position":[[65,8]]},"15":{"position":[[313,5]]}},"keywords":{}}],["transact",{"_index":38,"title":{},"content":{"1":{"position":[[364,11]]}},"keywords":{}}],["transpar",{"_index":555,"title":{},"content":{"26":{"position":[[14,11]]}},"keywords":{}}],["transport",{"_index":465,"title":{},"content":{"17":{"position":[[1163,9]]},"33":{"position":[[115,11],[392,10]]},"37":{"position":[[264,11]]}},"keywords":{}}],["trap",{"_index":816,"title":{},"content":{"63":{"position":[[182,5]]}},"keywords":{}}],["tri",{"_index":571,"title":{},"content":{"27":{"position":[[239,5]]},"33":{"position":[[259,3]]}},"keywords":{}}],["trigger",{"_index":496,"title":{},"content":{"19":{"position":[[1446,7]]},"30":{"position":[[60,10]]},"65":{"position":[[551,7]]}},"keywords":{}}],["true",{"_index":304,"title":{},"content":{"7":{"position":[[1210,5],[1403,5],[1681,4]]},"11":{"position":[[143,5]]},"12":{"position":[[130,5]]},"14":{"position":[[261,4],[815,5],[833,5]]},"24":{"position":[[297,6]]},"29":{"position":[[143,5]]},"32":{"position":[[197,4],[328,4]]},"38":{"position":[[198,5],[225,4]]},"47":{"position":[[63,5],[90,4]]},"49":{"position":[[169,5]]},"52":{"position":[[63,5],[90,5],[108,5]]},"53":{"position":[[68,5],[166,5],[184,5]]},"54":{"position":[[217,4]]},"55":{"position":[[405,4]]},"60":{"position":[[624,5]]},"65":{"position":[[824,5],[1064,5]]},"67":{"position":[[11,4],[87,4]]}},"keywords":{}}],["turn",{"_index":790,"title":{},"content":{"59":{"position":[[869,4]]}},"keywords":{}}],["type",{"_index":177,"title":{"22":{"position":[[0,4],[16,4]]},"23":{"position":[[0,4]]},"24":{"position":[[8,4]]},"27":{"position":[[9,5]]}},"content":{"3":{"position":[[176,4],[192,4],[408,6]]},"5":{"position":[[518,6]]},"6":{"position":[[831,4]]},"19":{"position":[[90,4],[120,4]]},"23":{"position":[[79,6],[100,4],[219,5]]},"24":{"position":[[42,4],[110,7],[238,4],[624,4],[945,4]]},"25":{"position":[[181,4],[234,7]]},"26":{"position":[[88,5],[511,4]]},"27":{"position":[[156,4],[342,4],[651,6]]}},"keywords":{}}],["typeof",{"_index":813,"title":{"63":{"position":[[0,6]]}},"content":{"63":{"position":[[217,6]]}},"keywords":{}}],["typescript",{"_index":181,"title":{"25":{"position":[[6,10]]}},"content":{"3":{"position":[[243,10]]},"27":{"position":[[125,10]]}},"keywords":{}}],["unavail",{"_index":615,"title":{},"content":{"32":{"position":[[567,11]]},"55":{"position":[[879,11]]}},"keywords":{}}],["undefin",{"_index":829,"title":{},"content":{"65":{"position":[[122,10]]}},"keywords":{}}],["under",{"_index":160,"title":{},"content":{"2":{"position":[[1069,5]]},"7":{"position":[[424,5],[1482,5],[1613,5]]},"14":{"position":[[934,5]]}},"keywords":{}}],["underli",{"_index":814,"title":{},"content":{"63":{"position":[[56,10]]}},"keywords":{}}],["uniqu",{"_index":764,"title":{},"content":{"57":{"position":[[577,6]]}},"keywords":{}}],["unlik",{"_index":751,"title":{},"content":{"55":{"position":[[92,6]]}},"keywords":{}}],["until",{"_index":456,"title":{},"content":{"17":{"position":[[705,5]]},"64":{"position":[[199,5]]}},"keywords":{}}],["up",{"_index":313,"title":{"51":{"position":[[8,2]]}},"content":{"7":{"position":[[1693,2]]},"15":{"position":[[413,2],[572,3]]},"17":{"position":[[834,2]]},"32":{"position":[[122,2]]},"33":{"position":[[42,2]]},"36":{"position":[[111,2]]},"37":{"position":[[288,2]]},"40":{"position":[[126,3]]},"44":{"position":[[322,2],[561,2]]},"65":{"position":[[160,2]]}},"keywords":{}}],["upgrad",{"_index":189,"title":{},"content":{"3":{"position":[[325,7]]},"43":{"position":[[31,9]]}},"keywords":{}}],["upon",{"_index":767,"title":{},"content":{"58":{"position":[[51,4]]}},"keywords":{}}],["us",{"_index":8,"title":{"1":{"position":[[0,3]]},"21":{"position":[[13,3]]},"24":{"position":[[0,5]]},"25":{"position":[[0,5]]},"26":{"position":[[0,5]]},"45":{"position":[[0,5]]},"46":{"position":[[0,5]]},"50":{"position":[[0,5]]},"55":{"position":[[0,5]]},"66":{"position":[[0,5]]}},"content":{"1":{"position":[[12,3],[704,5]]},"2":{"position":[[145,3],[700,3],[745,3],[953,3],[991,3],[1052,4],[1106,3]]},"3":{"position":[[351,3]]},"5":{"position":[[647,3],[696,3],[863,3]]},"6":{"position":[[41,4],[330,3],[459,4],[692,6],[866,4],[1069,4],[1308,4]]},"7":{"position":[[825,4],[1116,4],[1708,5]]},"9":{"position":[[267,4],[528,3],[573,5]]},"14":{"position":[[492,5],[535,4],[655,4],[1080,4]]},"16":{"position":[[46,5]]},"17":{"position":[[68,3],[257,4],[419,4],[621,5],[765,5],[924,3]]},"19":{"position":[[108,4],[583,6]]},"21":{"position":[[13,3]]},"23":{"position":[[185,5]]},"24":{"position":[[94,3],[824,3]]},"25":{"position":[[32,5]]},"27":{"position":[[325,3]]},"29":{"position":[[92,3],[221,5]]},"30":{"position":[[0,5],[302,3]]},"31":{"position":[[124,3]]},"32":{"position":[[395,5],[438,3],[468,4],[548,5]]},"33":{"position":[[0,3]]},"37":{"position":[[23,5],[195,5],[224,3]]},"42":{"position":[[126,3]]},"44":{"position":[[441,5],[986,3],[1245,5]]},"45":{"position":[[0,5],[49,4],[155,4],[319,4]]},"48":{"position":[[34,3]]},"50":{"position":[[131,3],[536,7],[622,5]]},"54":{"position":[[318,4],[372,3],[440,3]]},"55":{"position":[[0,5],[112,4],[219,3],[851,5]]},"57":{"position":[[267,3],[427,5]]},"59":{"position":[[555,3],[772,5]]},"60":{"position":[[103,5],[963,5]]},"64":{"position":[[136,3]]},"65":{"position":[[795,5]]},"67":{"position":[[0,3]]},"68":{"position":[[32,3],[433,4],[478,5]]}},"keywords":{}}],["usag",{"_index":645,"title":{"44":{"position":[[0,5]]}},"content":{"37":{"position":[[244,5]]},"44":{"position":[[0,5]]}},"keywords":{}}],["usecl",{"_index":693,"title":{},"content":{"44":{"position":[[451,7],[1063,9]]},"45":{"position":[[22,9],[287,9]]},"65":{"position":[[676,10],[747,7],[1031,9]]}},"keywords":{}}],["useclass",{"_index":254,"title":{},"content":{"6":{"position":[[442,8],[821,9]]},"55":{"position":[[637,9]]},"59":{"position":[[739,9]]},"68":{"position":[[254,9]]}},"keywords":{}}],["useenterwith",{"_index":312,"title":{},"content":{"7":{"position":[[1635,14]]},"17":{"position":[[794,12]]},"32":{"position":[[183,13]]}},"keywords":{}}],["useexist",{"_index":558,"title":{},"content":{"26":{"position":[[312,12]]}},"keywords":{}}],["usefactori",{"_index":234,"title":{},"content":{"5":{"position":[[796,10]]},"6":{"position":[[1081,11],[1093,11]]},"53":{"position":[[103,11]]},"60":{"position":[[408,11]]}},"keywords":{}}],["useguards(clsguard",{"_index":840,"title":{},"content":{"68":{"position":[[370,21]]}},"keywords":{}}],["useinterceptors(clsinterceptor",{"_index":753,"title":{},"content":{"55":{"position":[[744,33]]}},"keywords":{}}],["useinterceptors(useripinterceptor",{"_index":666,"title":{},"content":{"40":{"position":[[225,35]]}},"keywords":{}}],["user",{"_index":19,"title":{},"content":{"1":{"position":[[141,4]]},"2":{"position":[[248,4]]},"23":{"position":[[383,5]]},"24":{"position":[[470,4],[537,4],[678,6],[867,4]]},"25":{"position":[[311,5]]},"27":{"position":[[438,5],[546,4]]},"39":{"position":[[182,4]]},"57":{"position":[[199,4]]},"58":{"position":[[306,5],[312,5]]},"59":{"position":[[239,4]]}},"keywords":{}}],["user'",{"_index":669,"title":{},"content":{"41":{"position":[[39,6]]}},"keywords":{}}],["user.author",{"_index":543,"title":{},"content":{"24":{"position":[[699,17]]}},"keywords":{}}],["user.id",{"_index":542,"title":{},"content":{"24":{"position":[[687,9]]}},"keywords":{}}],["user.interceptor.t",{"_index":768,"title":{},"content":{"58":{"position":[[153,19]]}},"keywords":{}}],["user.proxy.t",{"_index":760,"title":{},"content":{"57":{"position":[[153,13]]}},"keywords":{}}],["userid",{"_index":537,"title":{},"content":{"24":{"position":[[391,6],[433,6]]}},"keywords":{}}],["userinterceptor",{"_index":769,"title":{},"content":{"58":{"position":[[200,15]]}},"keywords":{}}],["userip",{"_index":659,"title":{},"content":{"39":{"position":[[468,6],[530,8]]},"41":{"position":[[283,6],[330,6]]}},"keywords":{}}],["useripinterceptor",{"_index":653,"title":{},"content":{"39":{"position":[[232,17]]},"40":{"position":[[16,17]]}},"keywords":{}}],["users'",{"_index":651,"title":{},"content":{"39":{"position":[[110,7]]}},"keywords":{}}],["userwithrol",{"_index":781,"title":{},"content":{"59":{"position":[[295,12],[749,13]]}},"keywords":{}}],["usevalu",{"_index":748,"title":{},"content":{"54":{"position":[[668,9]]}},"keywords":{}}],["usual",{"_index":232,"title":{},"content":{"5":{"position":[[770,5],[821,6]]},"60":{"position":[[990,6]]}},"keywords":{}}],["uuid",{"_index":384,"title":{},"content":{"14":{"position":[[904,7]]}},"keywords":{}}],["v10",{"_index":604,"title":{},"content":{"31":{"position":[[6,4]]}},"keywords":{}}],["v2.x",{"_index":732,"title":{"54":{"position":[[0,4]]}},"content":{"54":{"position":[[0,4]]}},"keywords":{}}],["v3.x",{"_index":733,"title":{"54":{"position":[[7,4]]}},"content":{"54":{"position":[[7,4]]}},"keywords":{}}],["valu",{"_index":474,"title":{"62":{"position":[[13,7]]}},"content":{"19":{"position":[[220,5],[413,6],[440,5],[495,6],[522,5]]},"20":{"position":[[353,6]]},"23":{"position":[[142,7]]},"58":{"position":[[92,6],[479,6]]},"62":{"position":[[50,6]]},"63":{"position":[[297,5]]},"65":{"position":[[539,8],[1122,8]]}},"keywords":{}}],["variabl",{"_index":243,"title":{},"content":{"5":{"position":[[974,9],[999,9]]},"7":{"position":[[1139,9]]},"44":{"position":[[529,10]]}},"keywords":{}}],["variou",{"_index":464,"title":{},"content":{"17":{"position":[[1155,7]]}},"keywords":{}}],["version",{"_index":165,"title":{},"content":{"3":{"position":[[5,7],[148,7],[377,7]]},"29":{"position":[[207,10]]},"32":{"position":[[10,8]]},"43":{"position":[[56,7]]},"50":{"position":[[213,10]]}},"keywords":{}}],["via",{"_index":640,"title":{},"content":{"36":{"position":[[289,3]]}},"keywords":{}}],["void",{"_index":298,"title":{},"content":{"7":{"position":[[928,4],[1011,4]]},"19":{"position":[[429,4],[511,4],[965,5],[1006,4],[1139,4]]}},"keywords":{}}],["want",{"_index":153,"title":{},"content":{"2":{"position":[[942,4]]},"3":{"position":[[343,4]]},"27":{"position":[[35,4]]},"48":{"position":[[21,4]]}},"keywords":{}}],["way",{"_index":588,"title":{},"content":{"29":{"position":[[82,3]]},"31":{"position":[[87,3]]},"58":{"position":[[33,3]]},"63":{"position":[[123,3]]}},"keywords":{}}],["web",{"_index":685,"title":{"44":{"position":[[17,3]]},"65":{"position":[[8,3]]}},"content":{"44":{"position":[[17,3],[141,3]]},"45":{"position":[[188,3]]},"65":{"position":[[46,3]]}},"keywords":{}}],["websocket",{"_index":58,"title":{"34":{"position":[[0,11]]}},"content":{"1":{"position":[[637,9]]},"34":{"position":[[0,9]]}},"keywords":{}}],["websocketgateway",{"_index":630,"title":{},"content":{"34":{"position":[[139,17]]}},"keywords":{}}],["well",{"_index":162,"title":{},"content":{"2":{"position":[[1101,4]]}},"keywords":{}}],["whatev",{"_index":802,"title":{},"content":{"60":{"position":[[898,8]]}},"keywords":{}}],["whether",{"_index":216,"title":{},"content":{"5":{"position":[[396,7]]},"7":{"position":[[189,7],[355,7],[1216,7],[1409,7],[1539,7]]},"13":{"position":[[54,7]]},"17":{"position":[[31,7],[137,7]]},"19":{"position":[[1332,7]]}},"keywords":{}}],["whole",{"_index":21,"title":{},"content":{"1":{"position":[[161,5],[827,5]]},"15":{"position":[[354,5]]},"24":{"position":[[770,5]]}},"keywords":{}}],["within",{"_index":398,"title":{},"content":{"14":{"position":[[1307,6]]},"15":{"position":[[600,6]]},"19":{"position":[[1362,6]]},"20":{"position":[[403,6]]},"30":{"position":[[208,6]]}},"keywords":{}}],["without",{"_index":43,"title":{},"content":{"1":{"position":[[421,7]]},"2":{"position":[[471,7]]},"15":{"position":[[241,7]]},"19":{"position":[[1272,7]]},"20":{"position":[[676,7]]},"24":{"position":[[797,7]]},"26":{"position":[[35,7],[470,7]]},"37":{"position":[[124,7]]},"41":{"position":[[70,7],[114,7]]},"59":{"position":[[907,7]]}},"keywords":{}}],["won't",{"_index":579,"title":{},"content":{"27":{"position":[[555,5]]},"50":{"position":[[40,5],[114,5]]}},"keywords":{}}],["work",{"_index":411,"title":{"15":{"position":[[7,5]]}},"content":{"15":{"position":[[7,5],[385,5]]},"23":{"position":[[155,5]]},"29":{"position":[[280,4]]},"33":{"position":[[156,4],[433,5]]}},"keywords":{}}],["workaround",{"_index":821,"title":{},"content":{"63":{"position":[[450,12]]}},"keywords":{}}],["wrap",{"_index":316,"title":{},"content":{"7":{"position":[[1763,8]]},"20":{"position":[[414,7]]},"36":{"position":[[186,5]]},"38":{"position":[[71,5]]},"44":{"position":[[394,8],[783,4],[1034,8]]},"45":{"position":[[89,4]]},"55":{"position":[[149,4]]},"65":{"position":[[193,4]]}},"keywords":{}}],["you'll",{"_index":540,"title":{},"content":{"24":{"position":[[569,6]]},"27":{"position":[[628,6]]}},"keywords":{}}],["you'r",{"_index":683,"title":{},"content":{"43":{"position":[[24,6]]},"44":{"position":[[1238,6]]}},"keywords":{}}],["yourself",{"_index":729,"title":{},"content":{"50":{"position":[[743,8]]}},"keywords":{}}]],"pipeline":["stemmer"]} \ No newline at end of file +{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,551.905]],["content/0",[0,7.753,1,9.378,2,11.155,3,12.7,4,4.379,5,7.454,6,4.016]],["keywords/0",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/1",[15,559.759,16,461.548]],["content/1",[]],["keywords/1",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/2",[4,369.541]],["content/2",[0,2.02,4,1.352,6,3.031,8,1.321,9,0.55,11,0.857,14,0.533,17,1.206,18,1.283,19,4.254,20,3.922,21,12.623,22,2.368,23,4.09,24,0.676,25,2.02,26,2.896,27,2.896,28,3.922,29,9.585,30,8.26,31,3.627,32,5.462,33,4.212,34,3.445,35,1.741,36,1.683,37,3.445,38,3.922,39,3.922,40,4.212,41,3.445,42,3.922,43,7.832,44,2.688,45,3.922,46,3.922,47,2.709,48,3.131,49,3.445,50,2.896,51,3.922,52,3.445,53,3.922,54,1.303,55,3.731,56,12.623,57,3.922,58,5.684,59,7.325,60,6.701,61,5.095,62,3.798,63,2.776,64,3.991,65,3.922,66,3.204,67,5.684,68,2.975,69,3.204,70,3.445,71,3.922,72,4.254,73,3.922,74,3.922,75,1.87,76,1.683,77,3.922,78,2.419,79,2.553,80,2.553,81,3.445,82,2.709,83,5.165,84,2.975,85,5.165,86,2.896,87,3.922,88,3.131,89,2.896,90,1.942,91,1.393]],["keywords/2",[]],["title/3",[58,941.321]],["content/3",[6,1.957,8,1.417,11,0.376,19,3.187,32,3.187,44,3.017,54,1.679,59,6.403,60,6.526,62,3.632,63,2.655,66,4.591,68,4.263,70,5.435,72,3.187,75,2.95,76,2.655,80,4.027,92,2.771,93,3.817,94,6.188,95,9.271,96,8.144,97,8.209,98,4.569,99,5.435,100,1.85,101,6.188,102,9.765,103,6.188,104,9.117,105,8.144,106,6.188,107,6.188,108,5.435,109,5.435,110,5.435,111,4.274,112,5.442,113,6.188,114,9.271,115,6.188,116,2.655,117,3.321,118,6.188,119,5.435,120,3.321,121,3.321,122,4.94,123,8.144,124,2.845,125,2.409,126,2.747,127,5.435]],["keywords/3",[]],["title/4",[128,575.119]],["content/4",[8,0.646,9,1.826,10,1.527,11,0.61,13,1.19,18,1.993,31,3.87,36,2.962,44,3.271,59,4.769,61,4.259,64,4.259,69,3.419,75,3.292,76,2.962,80,4.494,125,3.913,126,3.065,128,5.395,129,6.905,130,6.905,131,6.943,132,6.065,133,6.065,134,6.543,135,8.025,136,5.512,137,6.905,138,5.263,139,8.025,140,5.512,141,6.065,142,6.065,143,3.175,144,6.905,145,5.512,146,5.099,147,5.512,148,4.769,149,4.053,150,4.794,151,6.905,152,5.512,153,6.905,154,3.175,155,5.099,156,4.769,157,4.259,158,6.065,159,5.512,160,5.512,161,6.065,162,6.201,163,6.905,164,6.905]],["keywords/4",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/5",[156,740.124]],["content/5",[1,8.683,62,6.903,78,7.253,102,8.683,156,8.122,165,11.76,166,10.329,167,5.607,168,6.903,169,11.76,170,8.122,171,11.76,172,11.76,173,11.76]],["keywords/5",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/6",[24,74.991,100,214.671,174,421.572]],["content/6",[1,8.275,2,9.844,18,2.221,24,1.17,93,6.912,100,3.35,125,4.362,136,8.946,174,8.189,175,11.207,176,4.503,177,9.844,178,7.74,179,3.646,180,11.207,181,8.946,182,11.207]],["keywords/6",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/7",[9,86.438,183,401.276,184,361.893,185,401.276]],["content/7",[4,1.619,7,1.568,8,0.874,9,1.05,11,0.567,14,0.638,17,1.443,18,0.931,19,2.418,24,0.975,44,2.436,54,2.281,55,2.914,72,2.418,84,2.159,100,2.791,120,5.012,131,3.242,138,3.324,143,3.443,148,3.242,150,3.57,159,5.977,176,1.886,181,3.748,183,3.056,184,4.395,185,4.873,186,3.467,187,4.124,188,3.467,189,2.325,190,8.203,191,4.695,192,4.695,193,4.695,194,4.124,195,4.124,196,4.695,197,4.124,198,2.418,199,3.748,200,4.695,201,3.242,202,3.748,203,3.748,204,5.977,205,5.171,206,3.856,207,3.056,208,3.748,209,1.668,210,1.291,211,4.124,212,2.418,213,4.395,214,3.443,215,5.529,216,4.124,217,4.695,218,2.756,219,4.124,220,5.482,221,4.124,222,4.695,223,6.577,224,4.695,225,4.124,226,4.695,227,2.519,228,4.695,229,4.695,230,3.242,231,4.124,232,3.748,233,4.124,234,4.124]],["keywords/7",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/8",[6,271.963,179,279.84]],["content/8",[]],["keywords/8",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/9",[235,1071.673]],["content/9",[6,3.475,8,0.568,9,0.851,11,0.555,14,1.242,17,1.866,18,1.811,19,3.126,23,3.005,24,1.147,36,2.604,44,2.973,50,4.482,62,3.563,63,4.715,64,3.744,67,5.331,68,2.791,78,3.744,79,3.95,90,3.005,92,1.814,93,7.542,100,1.814,117,3.257,121,3.257,125,2.363,126,2.694,139,4.845,154,5.053,157,3.744,162,3.744,179,3.576,198,3.126,208,4.845,210,1.67,236,2.519,237,5.331,238,6.07,239,3.402,240,8.115,241,6.07,242,3.563,243,6.07,244,3.95,245,6.07,246,3.402,247,2.791,248,3.557,249,4.192,250,6.07,251,4.482,252,4.482,253,4.845,254,4.845,255,4.482,256,5.331,257,5.331,258,2.694,259,8.026,260,3.95,261,3.402,262,6.07,263,3.744,264,5.331,265,4.192,266,2.439,267,2.894,268,5.331]],["keywords/9",[]],["title/10",[269,1071.673]],["content/10",[6,3.559,14,1.759,16,4.342,17,3.061,18,3.017,23,2.565,24,1.412,25,2.667,54,0.704,55,2.016,63,4.828,68,3.72,78,3.195,90,2.565,92,2.976,93,3.195,100,1.548,104,3.825,125,2.016,126,2.299,149,3.04,154,2.381,176,4.001,179,2.633,206,2.667,209,1.84,210,3.096,248,2.016,249,3.577,251,7.352,253,10.33,254,4.134,255,3.825,258,2.299,260,3.371,270,8.091,271,8.091,272,3.825,273,5.179,274,7.948,275,3.04,276,3.592,277,3.577,278,5.179,279,5.974,280,5.179,281,3.825,282,3.825,283,7.107,284,5.179,285,4.549,286,3.825,287,4.134,288,5.179,289,5.179,290,3.577,291,3.577,292,4.549,293,2.016,294,2.903,295,5.179,296,4.134,297,4.134]],["keywords/10",[]],["title/11",[6,194.963,54,83.816,198,317.516,266,247.721]],["content/11",[4,2.247,6,1.251,8,1.134,9,1.607,11,0.504,14,0.538,18,0.784,19,3.355,23,3.226,24,0.867,33,5.407,35,4.277,36,2.795,43,4.811,44,2.12,54,1.31,55,3.75,60,4.877,62,4.877,63,3.564,68,5.823,69,3.226,78,7.07,82,2.731,83,5.201,84,2.996,88,3.157,89,2.92,90,1.958,91,1.405,93,2.439,100,1.182,120,2.122,138,2.892,148,2.731,150,1.886,176,2.618,187,3.474,198,2.037,202,3.157,203,3.157,208,3.157,227,2.122,237,3.474,246,5.4,258,3.688,263,2.439,267,1.886,293,1.539,294,2.217,298,3.955,299,2.574,300,5.723,301,3.955,302,4.459,303,1.492,304,3.157,305,3.157,306,3.955,307,6.135,308,6.135,309,3.474,310,3.955,311,6.515,312,3.955,313,5.738,314,2.122,315,2.731,316,3.955,317,3.955,318,1.958,319,2.92,320,3.474,321,3.955,322,6.515,323,2.574,324,3.955,325,3.955,326,3.955,327,3.955,328,3.871,329,3.955,330,2.321,331,3.474,332,3.955,333,3.474,334,3.955,335,3.157,336,3.955,337,3.474,338,3.955,339,3.474,340,2.731,341,2.92,342,3.157,343,3.157,344,2.92,345,3.157,346,3.474,347,3.955]],["keywords/11",[]],["title/12",[348,496.019,349,573.316,350,630.858]],["content/12",[4,2.47,8,1.133,11,0.627,17,3.721,18,1.42,24,1.264,31,4.016,54,1.801,61,4.419,72,3.69,76,4.43,92,2.141,110,6.293,111,4.948,121,3.845,125,2.789,131,4.948,168,4.205,174,4.205,176,4.149,184,6.061,207,6.72,210,1.971,230,4.948,261,4.016,264,6.293,340,4.948,344,5.29,348,4.948,349,5.719,350,6.293,351,4.419,352,7.164,353,7.164,354,4.663,355,7.164,356,7.164,357,5.29,358,7.164,359,5.719,360,7.164,361,3.294,362,7.164,363,4.419,364,7.164,365,7.164,366,7.164,367,7.164,368,7.164,369,7.164,370,7.164,371,5.29]],["keywords/12",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/13",[372,660.98]],["content/13",[11,0.622,13,1.765,24,1.07,47,7.074,93,6.318,149,6.013,157,6.318,167,4.884,179,3.333,351,8.129,372,9.49,373,10.521,374,10.244,375,8.177,376,8.177,377,10.244,378,10.244,379,10.244,380,10.244,381,8.998,382,7.074]],["keywords/13",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/14",[11,43.591,93,442.977,227,385.435]],["content/14",[]],["keywords/14",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/15",[266,430.587]],["content/15",[9,1.774,11,0.584,23,4.765,54,2.22,55,3.746,63,4.129,100,2.876,108,8.453,202,10.102,227,5.164,236,3.994,246,5.394,266,5.085,276,4.272,303,3.631,323,6.263,328,3.866,383,8.453,384,9.623,385,8.453,386,8.453,387,8.453,388,7.682]],["keywords/15",[]],["title/16",[198,551.905]],["content/16",[8,0.91,11,0.59,23,4.813,54,2.258,55,3.784,63,4.171,227,5.217,236,4.035,246,5.449,267,6.075,276,4.315,303,3.668,313,6.714,314,5.217,323,6.327,328,3.906,361,4.47,383,8.539,385,8.539,386,8.539,387,8.539,388,7.76,389,9.721]],["keywords/16",[]],["title/17",[54,97.638,390,718.217,391,630.858]],["content/17",[]],["keywords/17",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/18",[92,184.281,252,455.261,330,361.893,392,541.551]],["content/18",[54,2.135,90,5.36,92,3.236,236,4.493,252,7.993,266,4.349,303,4.085,328,4.349,330,6.354,392,9.508,393,13.652,394,10.825,395,8.641,396,10.825,397,8.641,398,10.825,399,10.825]],["keywords/18",[]],["title/19",[400,630.858,401,402.551,402,630.858]],["content/19",[4,2.907,12,1.969,14,1.146,17,3.56,18,2.822,24,1.381,25,4.342,27,6.226,54,2.186,66,4.175,90,4.175,92,2.52,100,2.52,116,3.617,189,4.175,210,2.319,361,3.877,363,5.2,400,11.617,401,4.726,402,7.406,403,8.432,404,4.949,405,14.237,406,6.731,407,8.432,408,8.432,409,8.432]],["keywords/19",[]],["title/20",[9,120.576,36,368.988]],["content/20",[4,2.42,6,2.798,8,0.657,9,1.84,11,0.617,17,2.158,18,1.754,23,2.145,24,1.062,25,3.615,31,4.959,34,3.805,35,3.928,36,5.817,37,3.805,54,2.086,55,2.732,61,2.672,64,2.672,68,1.992,69,3.475,80,2.82,92,1.295,100,1.295,117,2.325,131,2.992,138,1.923,145,3.458,146,5.183,176,2.82,189,3.475,210,1.931,214,3.227,236,1.798,240,3.199,242,2.543,266,1.741,276,1.923,293,1.686,294,2.428,302,2.325,303,1.635,304,3.458,307,6.533,308,3.199,309,3.805,313,2.992,319,3.199,323,2.82,328,3.555,351,2.672,410,4.332,411,4.332,412,4.332,413,4.332,414,5.183,415,3.458,416,5.603,417,3.805,418,4.332,419,3.458,420,4.332,421,4.332,422,4.332,423,4.332,424,4.332,425,4.332,426,4.332,427,6.165,428,7.019,429,4.332,430,7.019,431,4.12,432,4.332,433,4.332,434,4.332,435,3.199,436,4.332,437,3.805,438,3.458,439,4.332,440,4.332,441,4.332,442,4.332,443,4.332,444,4.332,445,4.332,446,4.332]],["keywords/20",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/21",[91,305.472,258,381.791]],["content/21",[10,2.422,11,0.835,13,2.369,91,4.884,124,5.035,150,5.221,167,5.221,258,4.861,279,8.085,308,8.085,447,9.618,448,9.618,449,6.753,450,10.949,451,10.949,452,10.949,453,5.035]],["keywords/21",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/22",[25,369.878,116,308.138,454,342.456]],["content/22",[25,6.812,116,5.675,454,6.307,455,13.228,456,13.228]],["keywords/22",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/23",[168,629.041]],["content/23",[]],["keywords/23",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/24",[457,791.331]],["content/24",[0,4.23,6,2.597,8,0.769,24,1.187,44,2.673,54,1.117,84,5.229,98,6.065,100,2.455,102,6.065,117,4.408,128,4.408,143,3.777,154,3.777,168,4.821,239,7.311,266,3.3,302,4.408,303,5.313,328,3.3,346,7.215,351,5.066,371,6.065,382,5.673,401,4.604,457,6.065,458,4.821,459,6.557,460,6.557,461,9.989,462,7.215,463,7.402,464,5.066,465,7.215,466,8.214,467,7.215,468,7.215,469,7.215,470,8.214,471,8.214]],["keywords/24",[]],["title/25",[472,855.461]],["content/25",[9,1.309,11,0.567,24,1.296,48,7.456,49,8.204,50,9.163,54,1.27,69,4.625,80,6.079,85,7.456,92,2.792,100,2.792,176,3.753,198,6.39,201,6.451,227,5.013,263,5.761,267,4.454,314,5.013,371,6.897,435,6.897,461,8.204,462,8.204,473,8.204,474,9.34,475,7.456,476,6.897,477,7.456,478,9.34,479,9.34,480,8.204,481,8.204]],["keywords/25",[]],["title/26",[54,97.638,482,630.858,483,630.858]],["content/26",[6,3.673,8,1.087,11,0.705,24,1.213,168,6.819,239,6.511,265,8.023,294,6.511,303,4.383,351,7.165,359,9.273,459,9.273,460,9.273,472,9.273,484,11.616]],["keywords/26",[]],["title/27",[54,97.638,482,630.858,483,630.858]],["content/27",[6,2.553,8,1.052,11,0.682,24,1.459,44,2.627,84,3.713,92,2.413,125,3.143,143,3.713,150,3.85,162,4.98,176,3.244,239,6.299,242,4.74,244,5.255,276,3.584,291,5.577,294,4.526,303,3.047,314,4.333,328,4.515,333,7.092,342,6.446,343,6.446,463,5.255,464,4.98,472,6.446,475,6.446,480,7.092,481,7.092,485,8.075,486,6.446,487,7.092,488,7.092,489,7.092,490,7.092,491,5.962,492,8.075,493,8.075,494,5.962,495,8.075,496,8.075,497,8.075,498,7.092]],["keywords/27",[]],["title/28",[499,1071.673]],["content/28",[8,0.874,24,0.975,44,3.039,128,6.659,150,4.454,166,8.204,168,5.483,240,6.897,242,5.483,244,6.079,261,5.235,279,9.163,351,5.761,371,6.897,491,6.897,500,13.934,501,9.34,502,9.905,503,8.204,504,9.34,505,9.34,506,9.34,507,9.34,508,9.34,509,8.204,510,6.897,511,8.204,512,8.204,513,8.204,514,9.34]],["keywords/28",[]],["title/29",[515,855.461]],["content/29",[84,4.977,92,3.236,143,4.977,149,6.354,154,4.977,198,5.575,199,8.641,201,7.476,231,9.508,232,8.641,242,6.354,244,7.045,247,4.977,320,9.508,515,8.641,516,9.508,517,8.641,518,9.508,519,7.993,520,10.825,521,10.825]],["keywords/29",[]],["title/30",[522,686.53,523,686.53]],["content/30",[19,6.132,66,5.895,100,3.559,167,5.677,234,10.458,292,10.458,464,7.344,522,11.56,523,11.56,524,10.458,525,11.907]],["keywords/30",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/31",[155,791.331]],["content/31",[1,4.214,4,1.968,6,1.804,8,1.31,9,1.887,11,0.346,12,1.333,24,1.405,44,1.857,60,6.212,68,2.624,76,2.448,78,5.378,84,2.624,92,3.542,100,2.606,122,4.555,135,4.555,138,2.533,141,5.012,143,2.624,149,3.35,150,2.721,155,4.214,168,3.35,170,3.941,188,4.214,198,2.939,230,3.941,233,5.012,239,5.932,242,6.212,244,3.714,281,4.214,286,4.214,303,3.29,314,3.062,331,5.012,341,4.214,354,5.675,467,5.012,468,5.012,488,5.012,490,7.659,502,4.555,526,5.012,527,7.815,528,5.706,529,8.72,530,5.706,531,5.706,532,5.706,533,9.296,534,8.72,535,5.012,536,5.012,537,5.706,538,6.022,539,5.706,540,5.706,541,3.062,542,5.012,543,5.706]],["keywords/31",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/32",[8,57.701,11,37.42,44,200.61,150,293.977]],["content/32",[]],["keywords/32",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/33",[254,855.461]],["content/33",[54,2.32,179,3.444,209,3.759,210,2.911,236,4.393,247,4.867,248,4.12,266,4.253,303,3.994,328,5.946,414,7.816,541,5.68,544,5.933]],["keywords/33",[]],["title/34",[7,224.423]],["content/34",[17,2.9,54,2.311,55,4.862,179,3.069,209,3.35,210,2.595,247,4.337,248,3.672,257,8.285,260,6.139,266,3.79,303,3.559,323,6.139,328,5.626,414,6.965,416,7.53,541,5.062,544,5.287,545,12.49,546,9.433]],["keywords/34",[]],["title/35",[91,380.638]],["content/35",[]],["keywords/35",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/36",[183,697.496]],["content/36",[5,7.168,24,1.275,54,1.66,66,6.046,91,5.223,92,3.65,236,5.068,276,5.421,395,9.748,547,12.212]],["keywords/36",[]],["title/37",[91,305.472,258,381.791]],["content/37",[11,0.751,13,2.131,91,5.264,154,5.688,258,5.491,279,9.134,375,9.874,449,7.63,548,12.37]],["keywords/37",[]],["title/38",[91,305.472,116,368.988]],["content/38",[0,6.629,25,6.629,91,5.389,116,5.522,154,5.918,275,7.555]],["keywords/38",[]],["title/39",[24,89.8,266,345.558]],["content/39",[]],["keywords/39",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/40",[302,575.119]],["content/40",[54,2.329,179,3.522,209,3.845,210,2.978,236,4.493,247,4.977,248,4.214,266,4.349,303,4.085,328,5.485,541,5.809,544,6.067]],["keywords/40",[]],["title/41",[84,492.754]],["content/41",[11,0.705,24,1.213,126,5.157,143,5.341,186,8.578,266,5.732,291,8.023,305,9.273,330,6.819,458,6.819,549,6.819,550,10.204,551,10.204,552,11.616]],["keywords/41",[]],["title/42",[179,348.699]],["content/42",[6,2.842,44,2.925,54,2.309,84,4.133,100,2.686,179,3.935,209,3.192,210,2.472,236,3.73,239,5.038,246,6.778,247,4.133,248,3.499,266,3.611,303,4.564,318,4.45,328,3.611,519,6.637,541,4.824,544,5.038,553,8.988,554,8.988,555,8.988,556,8.988,557,8.988]],["keywords/42",[]],["title/43",[24,89.8,486,686.53]],["content/43",[0,3.556,13,1.19,18,1.369,24,1.238,44,3.271,54,2.027,60,4.053,66,3.419,84,3.175,92,3.005,100,2.064,116,2.962,121,3.706,143,3.175,154,3.175,159,5.512,174,4.053,176,2.774,186,5.099,189,3.419,195,8.831,212,3.556,220,5.901,230,4.769,236,2.866,239,3.87,261,3.87,266,5.561,276,3.065,291,4.769,299,4.494,303,4.473,361,3.175,463,4.494,464,4.259,465,6.065,486,8.025,510,5.099,518,6.065,519,5.099,536,6.065,558,8.831,559,6.905,560,6.905,561,6.065,562,6.905,563,6.905,564,6.905,565,6.905,566,6.905,567,6.905]],["keywords/43",[]],["title/44",[22,338.408,568,541.551,569,455.261]],["content/44",[]],["keywords/44",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/45",[4,247.66,22,262.872,527,530.337]],["content/45",[4,2.933,11,0.516,16,7.131,22,4.863,24,0.888,25,4.381,26,8.603,31,4.768,32,4.381,35,3.776,36,3.65,40,5.537,44,2.768,54,1.943,63,3.65,69,4.212,98,6.282,116,4.998,128,4.565,178,5.875,209,3.021,302,4.565,354,5.537,406,9.3,449,5.247,569,6.282,570,7.472,571,8.507,572,6.282,573,8.507,574,8.507,575,8.507,576,5.537,577,4.056,578,4.768]],["keywords/45",[]],["title/46",[22,262.872,23,355.618,24,74.991]],["content/46",[4,1.889,11,0.332,17,1.684,22,4.586,23,2.712,24,0.882,33,3.565,35,2.431,36,2.35,40,5.499,54,2.316,63,2.35,69,2.712,75,2.611,76,2.35,92,1.637,112,3.215,125,2.132,138,2.431,147,4.372,209,1.945,210,1.507,214,2.518,293,2.132,315,3.783,328,2.201,361,5.761,431,3.215,435,4.044,437,4.811,449,3.378,494,4.044,510,4.044,527,4.044,569,8.563,572,4.044,576,7.548,577,5.529,578,4.736,579,6.745,580,5.477,581,5.477,582,5.477,583,5.477,584,7.422,585,5.477,586,5.477,587,4.044,588,5.477,589,4.811,590,4.811,591,5.477,592,5.477,593,5.477,594,5.477,595,5.477,596,5.477,597,5.477]],["keywords/46",[]],["title/47",[24,64.375,179,200.61,598,455.261,599,492.155]],["content/47",[4,3.07,11,0.54,13,1.534,16,6.449,22,4.398,23,4.409,24,0.93,26,8.874,35,5.335,36,3.82,40,5.795,54,2.13,143,4.094,179,2.897,247,4.094,340,6.149,363,5.492,404,5.226,449,5.492,494,6.575,517,7.108,570,7.821,576,5.795,577,4.246,578,4.991,579,7.108,599,7.108,600,8.904,601,7.821,602,8.904,603,6.575]],["keywords/47",[]],["title/48",[18,142.355,24,74.991,25,369.878]],["content/48",[4,3.922,17,2.525,18,2.586,22,4.162,25,4.23,54,2.132,75,5.423,116,4.879,126,3.646,133,7.215,179,2.673,209,4.039,210,3.128,247,3.777,248,3.197,249,5.673,349,6.557,363,5.066,406,9.078,572,6.065,579,9.078,599,6.557,603,6.065,604,8.214,605,8.214,606,14.08,607,8.214,608,8.214,609,8.214,610,8.214]],["keywords/48",[]],["title/49",[22,314.782,611,755.435]],["content/49",[8,0.624,16,3.576,22,4.251,24,0.696,26,7.233,33,4.337,35,2.958,36,4.202,40,4.337,54,1.939,55,2.594,63,2.859,69,3.299,76,2.859,98,4.921,100,2.928,126,2.958,140,5.319,154,3.064,256,5.853,275,3.911,299,4.337,300,5.853,307,8.576,354,6.375,361,3.064,404,3.911,449,4.11,463,4.337,469,5.853,475,5.319,509,5.853,549,3.911,550,5.853,558,5.853,576,6.375,577,4.67,578,3.735,587,4.921,598,4.921,611,5.853,612,5.853,613,6.664,614,6.664,615,6.664,616,6.664,617,6.664,618,11.614,619,6.664,620,5.853,621,6.664,622,6.664,623,6.664,624,6.664,625,5.853,626,6.664,627,6.664,628,6.664,629,6.664]],["keywords/49",[]],["title/50",[11,52.199,13,148.185]],["content/50",[]],["keywords/50",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/51",[24,89.8,100,257.062]],["content/51",[8,0.859,9,1.547,10,2.031,11,0.371,12,1.427,15,3.976,18,1.82,23,3.025,24,0.959,36,2.621,54,1.248,75,2.913,76,2.621,89,4.511,100,2.744,111,4.219,132,5.366,135,4.876,145,7.329,146,4.511,147,7.329,157,3.768,167,2.913,190,5.366,218,3.586,258,4.076,276,4.076,282,4.511,318,3.025,348,4.219,363,3.768,388,4.876,401,3.424,415,4.876,453,4.222,458,3.586,463,3.976,477,4.876,515,4.876,516,5.366,577,2.913,601,5.366,630,3.976,631,6.109,632,6.109,633,6.109,634,7.329,635,5.976,636,4.876,637,6.109,638,6.109,639,4.876,640,6.109,641,6.109,642,5.366,643,6.109,644,5.366,645,5.366,646,6.109,647,6.109,648,4.876,649,6.109,650,6.109,651,6.109,652,6.109,653,6.109,654,6.109,655,8.065,656,5.366,657,3.586,658,5.366,659,5.366,660,6.109]],["keywords/51",[]],["title/52",[661,1071.673]],["content/52",[0,2.789,12,1.265,13,0.933,24,1.435,47,3.74,60,3.178,66,2.681,72,2.789,75,2.582,76,2.323,100,1.618,102,3.998,116,2.323,117,2.906,125,3.26,134,5.451,138,2.404,162,5.166,167,3.993,174,3.178,181,4.322,186,3.998,263,3.34,286,3.998,302,2.906,308,3.998,345,4.322,354,3.524,382,3.74,404,4.916,473,4.756,476,3.998,511,4.756,549,3.178,576,3.524,577,2.582,634,6.686,635,3.524,662,5.415,663,5.415,664,5.415,665,4.322,666,5.415,667,5.415,668,4.756,669,4.756,670,5.415,671,5.415,672,5.415,673,5.415,674,5.415,675,5.415,676,5.415,677,3.998,678,4.756,679,5.415,680,5.415,681,4.756,682,5.415,683,4.756,684,5.415,685,5.415,686,5.415,687,5.415,688,5.415,689,4.756,690,5.415,691,5.415,692,5.415,693,5.415,694,5.415,695,5.415,696,5.415,697,5.415,698,5.415,699,5.415,700,8.375,701,5.415,702,5.415,703,5.415,704,5.415,705,4.756,706,5.415,707,5.415,708,5.415,709,5.415,710,5.415,711,4.322,712,5.415,713,5.415,714,5.415,715,5.415,716,5.415,717,5.415,718,4.322,719,5.415]],["keywords/52",[]],["title/53",[720,1071.673]],["content/53",[0,3.804,14,1.004,16,3.964,18,1.464,22,4.507,24,0.771,55,2.875,66,3.657,91,2.624,124,4.853,140,5.896,149,4.336,154,4.853,167,5.032,174,6.195,345,5.896,348,7.289,372,4.556,401,4.14,404,4.336,464,8.286,494,5.454,503,6.488,522,8.425,523,8.425,524,6.488,549,4.336,568,6.488,569,5.454,589,6.488,598,5.454,630,4.807,657,4.336,665,5.896,705,9.27,721,7.386,722,10.554,723,7.386,724,7.386,725,7.386,726,7.386,727,6.488,728,7.386,729,7.386,730,7.386,731,7.386,732,7.386,733,7.386]],["keywords/53",[]],["title/54",[54,97.638,391,630.858,734,718.217]],["content/54",[]],["keywords/54",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/55",[14,73.422,18,107.049,22,197.675,124,248.332,415,431.124]],["content/55",[6,2.036,14,1.915,17,1.979,18,2.496,22,3.495,24,0.997,32,3.316,43,4.754,44,2.095,54,2.173,55,3.717,63,4.097,68,2.96,100,1.924,124,2.96,126,2.858,127,5.656,149,3.779,176,5.404,210,2.627,212,3.316,213,5.605,214,4.391,215,4.754,249,6.595,260,4.191,277,4.447,293,2.506,363,5.89,401,3.609,404,3.779,476,4.754,526,5.656,538,4.447,658,5.656,735,4.754,736,5.656,737,6.439,738,11.383,739,6.439,740,6.439,741,6.439,742,6.439,743,9.55,744,6.439,745,6.439]],["keywords/55",[]],["title/56",[6,194.963,68,283.486,124,283.486,746,541.551]],["content/56",[6,3.707,24,1.394,41,7.539,44,2.793,54,2.196,55,3.341,66,4.25,68,5.39,72,4.42,75,4.093,92,2.566,96,10.296,97,6.338,100,3.504,105,7.539,124,3.947,126,3.81,168,5.038,204,6.852,218,5.038,397,6.852,457,6.338,746,11.725,747,8.583,748,8.583,749,8.583,750,8.583,751,8.583,752,8.583]],["keywords/56",[]],["title/57",[68,248.332,82,372.998,124,248.332,205,372.998,206,278.142]],["content/57",[6,2.69,14,1.584,18,2.309,24,1.492,32,4.381,44,3.791,68,5.357,82,5.875,97,6.282,100,3.971,123,7.472,124,6.109,179,2.768,198,4.381,201,8.046,205,5.875,206,4.381,207,5.537,218,4.993,246,6.53,248,3.311,294,4.768,328,4.681,348,5.875,397,6.791,517,6.791,549,4.993,753,8.507,754,8.507,755,7.472,756,8.507]],["keywords/57",[]],["title/58",[454,410.082,757,559.759]],["content/58",[]],["keywords/58",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/59",[372,660.98]],["content/59",[13,2.218,372,7.939,373,10.274,376,10.274,454,6.137,757,8.377,758,8.377]],["keywords/59",[]],["title/60",[330,629.041]],["content/60",[17,3.149,18,2.03,54,2.306,66,6.526,91,3.638,179,3.333,236,4.251,248,3.987,274,8.177,454,4.884,759,7.564,760,8.579,761,8.177,762,8.998,763,8.998,764,10.244]],["keywords/60",[]],["title/61",[22,262.872,54,97.638,183,467.45]],["content/61",[8,1.2,22,3.595,24,1.025,54,2.058,55,3.823,59,6.783,112,5.765,117,5.271,184,5.765,275,7.528,276,4.36,453,6.962,760,8.348,765,10.238,766,7.252,767,7.665,768,8.627,769,8.627]],["keywords/61",[]],["title/62",[189,530.628]],["content/62",[7,2.403,17,2.965,22,2.389,35,2.897,36,2.8,54,2.334,92,1.951,134,4.248,162,4.026,203,5.21,210,2.653,212,3.361,213,3.831,214,4.435,220,5.662,272,4.819,293,3.755,361,4.435,431,3.831,453,5.276,577,3.112,578,3.658,590,5.733,657,5.662,760,4.248,766,4.819,770,5.21,771,4.508,772,11.475,773,6.527,774,6.527,775,6.527,776,6.527,777,6.527,778,6.527,779,5.21,780,6.527,781,6.527,782,6.527,783,4.819,784,4.819,785,6.527,786,6.527]],["keywords/62",[]],["title/63",[296,855.461]],["content/63",[22,3.962,24,1.13,91,3.845,125,4.214,128,5.809,143,4.977,179,3.522,227,5.809,258,4.805,307,7.993,598,7.993,603,7.993,757,7.045,787,11.992,788,10.825,789,10.825,790,13.652,791,10.825,792,10.825]],["keywords/63",[]],["title/64",[4,247.66,24,74.991,767,385.435]],["content/64",[4,4.197,8,1.285,9,1.272,11,0.834,24,1.434,44,2.952,72,4.673,92,3.638,120,4.869,126,4.028,150,4.326,183,5.906,184,5.326,185,5.906,189,4.493,204,7.243,258,4.028,447,7.97,458,5.326,549,5.326,551,7.97,767,6.532,793,9.074,794,9.074,795,9.074,796,7.97,797,9.074,798,9.074,799,9.074]],["keywords/64",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/65",[24,89.8,206,442.919]],["content/65",[4,3.433,7,2.085,8,1.053,9,1.396,11,0.604,17,1.592,24,1.175,32,4.167,33,3.371,35,3.592,54,2.098,63,2.222,92,3.364,111,3.577,120,2.78,138,2.299,152,4.134,157,3.195,176,5.432,184,3.04,185,3.371,199,4.134,205,5.588,206,5.796,210,2.226,212,2.667,213,5.844,214,3.72,215,7.352,227,5.343,248,2.016,261,2.903,265,3.577,275,3.04,276,2.299,293,4.381,315,3.577,319,3.825,328,2.081,340,3.577,382,3.577,414,5.974,416,7.948,417,7.107,603,3.825,767,2.78,800,5.179,801,5.179,802,4.549,803,5.179,804,8.091,805,5.179,806,5.179,807,4.549,808,5.179,809,5.179,810,4.549,811,4.549,812,5.179,813,5.179]],["keywords/65",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/66",[0,442.919,91,305.472]],["content/66",[0,4.732,4,1.58,5,4.31,6,2.322,11,0.446,13,0.789,16,3.941,17,1.409,18,2.555,19,2.36,24,0.959,35,2.034,43,6.785,54,2.267,55,3.577,72,2.36,80,2.982,83,7.335,88,3.658,89,3.383,91,5.145,92,2.195,116,1.966,124,3.376,128,2.459,138,4.079,146,3.383,162,2.826,176,1.841,179,2.389,188,3.383,209,3.264,247,2.107,248,2.858,251,6.785,265,5.071,266,1.841,267,2.185,268,4.025,314,2.459,318,2.269,357,3.383,404,2.689,448,4.025,449,2.826,464,2.826,527,3.383,549,2.689,630,2.982,657,4.31,681,4.025,683,4.025,711,3.658,727,4.025,810,4.025,814,4.582,815,4.025,816,4.582,817,4.582,818,4.582,819,4.582,820,4.582,821,4.582,822,4.582,823,5.862,824,4.582,825,4.582,826,4.582,827,4.582,828,4.582,829,4.582]],["keywords/66",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/67",[177,755.435,178,593.969]],["content/67",[]],["keywords/67",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/68",[830,1071.673]],["content/68",[4,4.423,5,5.765,8,1.2,11,0.778,17,3.019,18,1.947,44,3.196,76,4.214,120,5.271,131,6.783,138,4.36,139,10.238,150,4.683,167,4.683,176,3.946,194,8.627,197,8.627,282,7.252,357,9.471,427,8.627,538,6.783,645,8.627,823,7.84,831,9.821,832,9.821]],["keywords/68",[]],["title/69",[189,530.628]],["content/69",[8,0.901,11,0.584,15,6.263,24,1.477,31,5.394,44,3.131,69,4.765,75,4.588,121,5.164,150,4.588,154,4.425,167,4.588,170,6.646,183,6.263,189,6.266,201,6.646,218,5.649,240,7.106,266,3.866,267,4.588,276,4.272,381,8.453,502,7.682,833,9.623,834,7.106,835,9.623,836,12.656,837,8.453]],["keywords/69",[]],["title/70",[5,504.822,90,425.843]],["content/70",[5,5.483,8,0.874,9,1.309,11,0.567,18,1.851,27,6.897,54,2.204,61,5.761,90,4.625,120,5.013,179,3.039,209,3.318,210,2.569,236,3.876,239,5.235,247,4.295,248,3.636,266,3.753,302,5.013,303,4.682,305,7.456,328,4.986,458,5.483,541,5.013,544,5.235,838,7.456,839,8.204]],["keywords/70",[]],["title/71",[116,264.517,170,425.801,267,293.977,834,455.261]],["content/71",[4,3.898,8,0.762,9,1.585,11,0.788,17,3.475,54,2.127,61,5.023,69,4.032,76,3.494,79,5.3,116,3.494,170,5.624,209,2.892,210,2.24,214,3.744,267,3.883,293,3.17,313,5.624,318,4.032,341,6.013,361,5.198,431,4.78,577,3.883,834,6.013,840,8.144,841,8.144,842,8.144,843,7.153,844,7.153,845,7.153,846,7.153,847,7.153,848,7.153,849,9.93,850,8.144,851,8.144,852,7.153]],["keywords/71",[]],["title/72",[267,342.456,303,271.017,458,421.572]],["content/72",[8,0.866,11,0.561,17,2.843,44,3.01,54,2.094,61,5.705,76,3.968,150,4.41,162,5.705,209,3.285,210,2.544,214,4.253,239,5.184,247,4.253,267,4.41,293,3.6,303,3.49,431,5.429,438,7.384,458,5.429,489,8.125,519,6.83,838,9.841,839,8.125,843,8.125,853,9.25,854,8.125,855,9.25,856,9.25,857,9.25,858,9.25]],["keywords/72",[]],["title/73",[8,57.701,11,37.42,15,401.276,76,264.517]],["content/73",[4,3.042,8,0.826,9,1.237,10,1.951,11,0.725,17,2.712,31,4.944,54,2.264,75,5.694,125,3.434,161,7.749,209,3.133,210,2.427,214,4.056,218,5.178,276,3.916,293,3.434,361,4.056,431,5.178,438,7.042,834,6.514,838,10.807,849,10.49,859,8.822,860,8.822,861,8.822,862,8.822]],["keywords/73",[]],["title/74",[620,941.321]],["content/74",[12,2.342,18,1.988,24,1.047,25,5.164,100,2.997,116,4.302,126,4.452,136,8.005,148,6.926,157,6.185,167,4.782,174,5.886,207,6.527,283,8.808,318,4.965,340,6.926,578,5.621,669,8.808,863,10.028,864,10.028,865,10.028,866,10.028,867,10.028,868,10.028,869,8.808,870,8.808,871,10.028,872,10.028]],["keywords/74",[]],["title/75",[14,116.919,18,170.467]],["content/75",[]],["keywords/75",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/76",[14,97.638,18,142.355,210,197.555]],["content/76",[8,0.769,11,0.499,14,1.546,17,4.01,18,2.791,24,1.187,35,3.646,36,3.524,54,1.546,69,4.067,76,3.524,90,4.067,104,6.065,125,3.197,179,2.673,206,4.23,209,2.917,210,3.873,249,5.673,287,9.078,330,4.821,357,6.065,577,3.916,578,4.604,639,6.557,648,6.557,657,4.821,767,6.103,769,7.215,873,7.215,874,7.215,875,8.214,876,8.214,877,8.214,878,8.214,879,8.214]],["keywords/76",[]],["title/77",[198,442.919,880,755.435]],["content/77",[8,0.725,9,1.086,14,1.053,17,3.356,18,1.535,32,5.622,54,2.206,63,3.324,99,6.804,109,9.589,117,4.157,119,6.804,124,3.562,158,6.804,209,2.751,210,3.003,214,3.562,267,3.694,293,3.015,313,5.35,318,3.836,341,5.72,361,3.562,431,4.547,460,6.184,510,5.72,577,5.205,811,6.804,844,6.804,845,6.804,846,6.804,847,6.804,848,6.804,852,6.804,881,7.747,882,6.804,883,7.747,884,6.804,885,7.747,886,6.804,887,7.747,888,7.747]],["keywords/77",[]],["title/78",[14,83.816,18,122.203,880,541.551,889,616.544]],["content/78",[5,3.779,9,1.596,10,1.424,11,0.391,14,1.548,17,2.936,18,2.792,24,0.997,27,4.754,35,2.858,36,2.762,54,2.08,75,3.07,124,2.96,125,2.506,143,2.96,179,3.107,209,3.392,210,1.771,212,3.316,225,5.656,248,3.717,255,7.052,258,2.858,277,4.447,287,5.14,318,3.188,330,3.779,335,5.14,337,5.656,354,4.191,578,3.609,612,5.656,630,4.191,639,5.14,659,5.656,678,5.656,711,5.14,886,5.656,890,6.439,891,6.439,892,6.439,893,6.439,894,9.55,895,9.55,896,11.383,897,6.439,898,6.439,899,6.439,900,6.439,901,6.439,902,6.439,903,6.439,904,5.656]],["keywords/78",[]],["title/79",[14,97.638,18,142.355,290,496.019]],["content/79",[7,1.188,8,0.531,9,1.217,10,1.255,11,0.344,14,0.771,15,3.692,17,3.913,18,2.661,24,0.906,54,2.114,55,2.208,69,2.809,90,2.809,92,1.695,125,2.208,138,2.518,189,2.809,210,1.56,212,2.921,213,3.33,214,2.608,220,3.33,247,3.991,248,2.208,255,6.41,258,2.518,259,4.983,260,3.692,274,4.528,282,4.189,290,8.158,293,3.379,294,3.179,323,3.692,328,2.279,335,4.528,361,3.991,404,3.33,435,4.189,576,3.692,634,4.528,635,3.692,636,9.429,668,4.983,677,4.189,689,4.983,755,4.983,873,4.983,884,4.983,904,4.983,905,5.672,906,5.672,907,10.544,908,5.672,909,8.68,910,5.672,911,5.672,912,5.672,913,5.672,914,5.672,915,5.672,916,5.672,917,5.672,918,5.672,919,5.672]],["keywords/79",[]],["title/80",[296,855.461]],["content/80",[]],["keywords/80",[]],["title/81",[32,442.919,920,755.435]],["content/81",[14,1.856,18,2.706,32,5.575,76,4.644,92,3.236,100,3.236,112,6.354,138,6.061,160,8.641,176,4.349,290,9.429,293,5.314,920,9.508,921,11.992,922,10.825]],["keywords/81",[]],["title/82",[14,83.816,176,247.721,218,361.893,630,401.276]],["content/82",[14,1.639,17,2.186,18,2.389,22,3.759,32,3.662,44,2.314,54,2.133,55,3.998,100,2.125,112,4.174,121,3.816,138,3.157,154,3.27,176,6.044,218,4.174,260,4.628,261,3.986,285,6.246,290,7.093,291,7.093,293,4.692,297,5.676,318,3.521,401,3.986,463,4.628,464,4.386,561,6.246,735,5.251,736,6.246,767,3.816,870,6.246,921,6.246,923,7.111,924,7.111,925,7.111,926,7.111,927,7.111,928,7.111,929,7.111,930,7.111,931,7.111,932,7.111,933,7.111]],["keywords/82",[]],["title/83",[14,83.816,18,122.203,86,455.261,934,541.551]],["content/83",[6,2.739,9,1.214,11,0.526,14,1.177,18,1.717,24,0.904,44,2.818,52,7.608,54,1.957,68,3.983,82,8.146,84,3.983,86,6.396,100,2.589,122,6.914,126,3.845,138,3.845,149,5.084,160,6.914,176,3.48,198,6.074,227,4.648,236,3.595,246,6.611,263,5.342,266,3.48,294,4.855,297,6.914,304,6.914,419,6.914,823,6.914,934,7.608,935,8.661,936,8.661,937,8.661,938,8.661,939,8.661]],["keywords/83",[]],["title/84",[9,100.692,184,421.572,185,467.45]],["content/84",[4,1.748,7,1.666,8,1.041,9,0.711,11,0.483,14,1.512,17,3.019,18,2.205,24,0.529,32,4.097,33,5.178,44,1.649,54,2.288,55,3.097,72,2.611,76,2.175,85,4.047,86,3.743,120,4.27,150,2.417,152,7.839,176,3.197,184,2.976,185,3.299,188,3.743,205,6.782,206,2.611,209,2.826,210,2.188,211,6.988,212,2.611,213,4.67,214,4.515,215,8.213,216,6.988,219,4.453,220,6.529,221,4.453,223,6.988,227,5.27,293,1.973,294,2.841,302,2.72,344,3.743,431,2.976,491,3.743,807,4.453,940,4.453,941,5.069,942,5.069,943,7.956,944,7.956,945,5.069,946,5.069,947,5.069]],["keywords/84",[]],["title/85",[24,89.8,267,410.082]],["content/85",[6,1.804,8,0.534,11,0.529,18,1.728,19,2.939,24,1.237,54,2.28,60,3.35,72,2.939,84,4.009,92,2.606,100,1.706,112,3.35,120,3.062,121,4.68,125,2.221,179,2.837,209,3.097,210,2.399,236,4.392,242,5.118,244,3.714,246,3.198,248,3.394,261,3.198,265,3.941,267,6.086,276,2.533,277,3.941,281,4.214,299,3.714,302,3.062,303,3.993,314,4.68,328,2.293,342,4.555,343,4.555,359,4.555,457,4.214,458,3.35,498,5.012,533,5.012,538,3.941,541,4.68,544,4.887,854,7.659,869,5.012,874,5.012,882,5.012,948,5.706,949,5.706,950,5.012,951,5.706,952,5.706]],["keywords/85",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/86",[24,89.8,314,461.548]],["content/86",[]],["keywords/86",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/87",[302,575.119]],["content/87",[24,1.118,54,2.324,179,3.483,209,3.802,210,2.944,236,4.442,248,4.166,303,5.115,314,5.744,328,5.446,541,5.744,544,5.999]],["keywords/87",[]],["title/88",[84,492.754]],["content/88",[4,2.65,18,2.151,24,1.314,54,2.267,64,4.739,84,3.533,92,2.297,121,4.124,143,3.533,155,5.674,156,5.307,179,3.532,209,2.729,210,2.114,230,5.307,236,3.189,242,8.027,246,4.307,248,2.991,252,5.674,261,4.307,277,5.307,299,5.001,303,4.749,314,6.754,339,6.749,459,6.134,541,4.124,544,4.307,655,6.749,950,6.749,953,7.684,954,7.684,955,7.684]],["keywords/88",[]],["title/89",[13,148.185,758,559.759]],["content/89",[]],["keywords/89",[7,47.372,8,21.171,9,31.714,10,50.032,11,13.729,12,52.831,13,38.976,14,30.752]],["title/90",[372,660.98]],["content/90",[11,0.49,13,1.391,18,1.6,19,5.788,22,2.955,47,7.762,91,2.868,117,4.333,126,3.584,128,4.333,143,3.713,154,3.713,167,6.164,174,4.74,258,3.584,318,3.998,351,4.98,372,6.932,373,6.446,376,6.446,382,5.577,401,4.526,453,5.167,454,6.664,477,6.446,542,7.092,587,5.962,625,7.092,630,5.255,635,5.255,648,6.446,665,6.446,718,6.446,735,5.962,757,7.314,758,5.255,956,8.075,957,8.075,958,8.075,959,8.075,960,8.075]],["keywords/90",[]],["title/91",[189,530.628]],["content/91",[13,1.728,15,6.527,18,1.988,24,1.047,47,6.926,116,4.302,125,3.903,167,4.782,189,4.965,419,8.005,453,4.611,454,6.879,587,7.405,757,8.462,758,6.527,760,6.527,761,8.005,767,5.382,771,6.926,961,10.028,962,10.028,963,8.808,964,10.028,965,7.405,966,10.028]],["keywords/91",[]],["title/92",[91,305.472,330,504.822]],["content/92",[5,5.288,6,1.883,8,0.557,11,0.547,13,2.087,18,1.786,24,0.622,31,3.338,54,2.262,66,5.379,79,3.876,90,4.46,91,3.859,92,1.78,125,2.318,126,2.644,143,4.142,154,2.739,157,3.673,178,4.113,179,1.938,209,2.115,210,1.638,236,2.472,247,4.142,248,5.326,258,2.644,275,3.496,276,2.644,395,4.754,453,4.995,454,5.775,512,5.232,541,3.196,544,3.338,677,4.398,757,3.876,758,5.863,759,6.652,760,3.876,761,8.672,762,7.913,763,5.232,771,4.113,965,4.398,967,5.956,968,3.876]],["keywords/92",[]],["title/93",[24,89.8,968,559.759]],["content/93",[7,1.556,8,0.435,11,0.282,17,2.284,22,3.396,24,0.969,31,4.164,35,2.064,36,1.995,48,3.711,54,2.213,55,1.81,62,2.729,66,3.678,79,4.835,90,2.302,91,1.651,92,1.39,112,2.729,116,3.187,121,2.495,125,1.81,134,4.835,178,5.131,210,2.043,212,3.826,213,5.446,214,4.266,220,4.361,232,3.711,263,2.867,272,3.433,275,4.361,286,3.433,293,4.125,299,3.026,315,3.211,318,2.302,319,3.433,361,2.138,363,2.867,453,5.327,454,3.542,476,3.433,487,4.084,491,3.433,513,4.084,535,4.084,549,2.729,577,4.424,578,4.164,584,4.084,642,4.084,657,2.729,718,3.711,760,3.026,765,3.711,766,5.486,768,4.084,770,5.93,771,3.211,779,5.93,783,3.433,784,5.486,796,4.084,963,4.084,965,6.851,968,4.835,969,4.649,970,4.649,971,3.711,972,4.649,973,3.711,974,4.649,975,3.711,976,4.649,977,4.649,978,4.649,979,4.649]],["keywords/93",[]],["title/94",[24,74.991,206,369.878,453,330.236]],["content/94",[7,1.535,17,2.253,24,1.096,35,3.254,54,2.18,72,5.405,75,3.495,92,3.137,97,5.412,120,3.934,124,4.826,125,2.853,126,3.254,134,4.771,138,4.659,206,5.405,210,2.016,212,3.775,213,6.161,214,4.826,220,6.161,293,2.853,361,3.37,453,4.826,577,5.005,656,6.438,657,4.302,766,5.412,770,5.851,771,5.062,779,5.851,783,5.412,784,5.412,965,7.75,971,5.851,973,5.851,975,5.851,980,7.33,981,7.33,982,7.33,983,7.33,984,7.33]],["keywords/94",[]],["title/95",[6,227.114,276,318.83,453,330.236]],["content/95",[6,2.093,7,2.422,18,1.312,22,2.422,24,0.691,35,4.326,44,2.153,54,2.272,55,2.576,63,4.181,64,4.081,92,1.978,111,4.57,134,6.343,189,3.277,206,3.408,220,7.49,253,5.282,272,4.886,281,4.886,293,4.503,315,4.57,361,4.481,453,4.481,454,3.155,577,6.084,644,5.813,657,5.72,783,7.196,784,7.196,971,5.282,973,7.779,975,7.779,985,5.813,986,6.617,987,6.617,988,9.745,989,9.745,990,6.617]],["keywords/95",[]],["title/96",[16,461.548,759,635.064]],["content/96",[6,3.274,8,0.969,13,1.784,19,5.333,24,1.081,62,6.078,63,4.443,91,4.714,112,6.078,128,5.557,179,3.369,207,6.739,212,5.333,247,4.761,248,5.166,251,7.646,258,4.597,344,7.646,454,6.328,759,7.646,767,5.557,991,10.355]],["keywords/96",[]],["title/97",[16,461.548,968,559.759]],["content/97",[0,3.48,6,2.137,10,2.189,11,0.41,16,5.311,18,1.34,19,3.48,23,3.346,36,4.246,40,4.399,59,8.087,60,5.809,62,3.967,63,4.246,64,4.168,68,3.107,75,3.222,78,4.168,79,6.441,81,11.322,91,2.4,104,4.99,117,3.627,128,3.627,167,3.222,207,4.399,275,5.809,293,2.631,318,3.346,375,5.395,453,7.339,454,3.222,572,4.99,635,4.399,735,4.99,765,5.395,767,5.311,787,8.693,802,10.285,837,5.936,940,5.936,968,4.399,985,5.936,992,6.758,993,6.758,994,6.758,995,6.758,996,6.758]],["keywords/97",[]],["title/98",[156,740.124]],["content/98",[13,1.675,24,1.015,50,9.407,91,4.525,117,5.217,121,5.217,124,4.47,142,8.539,148,6.714,261,5.449,263,5.996,401,7.141,453,4.47,454,4.635,538,6.714,635,9.249,636,10.17,677,7.178,758,6.327,767,5.217,815,8.539,968,6.327,997,9.721,998,9.721,999,9.721]],["keywords/98",[]]],"invertedIndex":[["",{"_index":54,"title":{"11":{"position":[[11,1]]},"17":{"position":[[5,1]]},"26":{"position":[[16,2]]},"27":{"position":[[16,1]]},"54":{"position":[[5,1]]},"61":{"position":[[7,1]]}},"content":{"2":{"position":[[667,2],[724,2],[869,2],[1243,2]]},"3":{"position":[[115,1],[125,1],[767,3],[897,3]]},"7":{"position":[[629,1],[721,2],[734,1],[736,1],[738,1],[740,1],[742,3],[773,1],[775,2],[824,2],[854,3],[883,2],[892,1],[961,3],[965,1],[977,1],[979,1],[981,1],[983,1],[985,3],[989,2],[992,3],[1035,2],[1105,1],[1132,2],[1135,2],[1165,1],[1204,1],[1206,1]]},"10":{"position":[[1356,1]]},"11":{"position":[[487,1],[561,1],[930,1],[1012,1]]},"12":{"position":[[380,1],[392,1],[429,2],[500,1]]},"15":{"position":[[136,1],[199,1],[264,1],[287,3],[291,2],[294,2],[297,3]]},"16":{"position":[[123,1],[166,1],[178,1],[295,1],[318,3],[322,2],[325,2],[328,3]]},"18":{"position":[[164,1],[198,1],[212,2],[215,3]]},"19":{"position":[[315,2],[341,1],[390,2],[393,5],[410,1],[412,1],[469,2],[472,2]]},"20":{"position":[[247,1],[266,1],[806,1],[901,2],[912,1],[914,2],[1147,1],[1195,2],[1219,1],[1276,1],[1278,1],[1402,1],[1460,1],[1488,2],[1574,1],[1576,1]]},"24":{"position":[[165,1]]},"25":{"position":[[363,1]]},"33":{"position":[[34,1],[82,1],[115,2],[118,3],[122,2],[125,2],[128,3],[132,2],[158,2]]},"34":{"position":[[34,1],[143,2],[158,1],[249,2],[252,2],[255,3],[259,2],[262,2],[265,3],[269,2],[295,2]]},"36":{"position":[[114,3]]},"40":{"position":[[34,1],[82,1],[96,2],[99,3],[103,2],[106,2],[109,3],[113,2],[139,2]]},"42":{"position":[[141,1],[189,1],[204,2],[207,3],[211,2],[214,2],[217,3],[221,2],[269,1],[311,1],[370,1],[372,1]]},"43":{"position":[[392,1],[404,1],[443,2],[521,2],[536,2],[547,2],[574,1]]},"45":{"position":[[338,1],[364,1],[399,2],[402,1]]},"46":{"position":[[143,1],[209,2],[225,1],[227,2],[306,2],[362,1],[390,2],[442,1],[469,2],[497,1],[531,1],[544,1],[568,2],[631,2],[655,2],[665,1],[678,1],[687,1],[699,1],[719,2],[784,2],[857,1],[874,1],[876,1],[894,2],[973,1],[1002,1],[1004,1]]},"47":{"position":[[273,1],[294,1],[320,1],[355,2],[358,1],[360,1]]},"48":{"position":[[228,2],[287,1],[289,1],[339,2],[342,2],[370,2],[391,2]]},"49":{"position":[[421,1],[501,1],[548,1],[684,1],[689,1],[691,1]]},"51":{"position":[[680,4],[884,1]]},"55":{"position":[[64,3],[386,3],[452,2],[493,3],[531,1],[669,2],[684,1],[686,1],[724,2],[779,2],[793,1],[795,1]]},"56":{"position":[[336,1],[359,2],[362,2],[371,1],[373,2],[376,3],[397,2],[400,2]]},"60":{"position":[[30,1],[70,1],[72,2],[133,2],[178,2],[258,3],[262,3],[266,2],[269,3]]},"61":{"position":[[228,1],[236,1],[238,3],[242,2]]},"62":{"position":[[49,1],[112,2],[155,1],[157,2],[221,1],[285,1],[353,3],[367,1],[369,1],[427,1],[518,1],[520,2],[553,1],[555,2],[658,1],[663,1],[665,3],[669,1],[702,1],[746,1],[787,2],[790,3],[794,1],[796,1]]},"65":{"position":[[669,1],[763,1],[765,2],[854,1],[882,2],[953,1],[990,2],[993,2],[1041,1],[1088,1],[1111,1],[1135,1],[1137,1]]},"66":{"position":[[477,1],[479,3],[483,1],[540,2],[557,3],[561,1],[651,2],[695,1],[718,3],[722,1],[786,2],[804,2],[818,1],[841,3],[845,1],[946,2],[967,2],[981,1],[1004,3],[1008,1],[1087,2],[1107,3],[1111,1],[1161,2],[1188,3],[1192,1],[1266,2],[1286,1]]},"70":{"position":[[170,1],[218,1],[232,2],[235,3],[239,2],[297,2],[323,2]]},"71":{"position":[[280,1],[328,2],[410,1],[426,1],[478,1],[564,1],[566,1]]},"72":{"position":[[305,1],[360,2],[386,1],[423,1],[425,1]]},"73":{"position":[[215,1],[263,2],[277,1],[292,1],[328,1],[330,1],[339,1],[341,4],[346,1],[348,1]]},"76":{"position":[[192,1],[220,1]]},"77":{"position":[[225,1],[227,2],[300,2],[382,1],[398,1],[437,2],[507,1],[541,1],[574,1],[576,1]]},"78":{"position":[[287,1],[389,1],[391,1],[401,1],[430,1],[471,1],[473,1],[646,2],[744,3]]},"79":{"position":[[489,1],[506,1],[549,1],[617,2],[634,2],[697,3],[1036,1],[1125,1],[1127,2],[1139,1],[1179,1],[1181,1]]},"82":{"position":[[369,1],[407,2],[416,1],[425,2],[434,1],[436,2],[452,2],[455,2],[476,1]]},"83":{"position":[[292,1],[470,1],[502,2],[505,3]]},"84":{"position":[[296,1],[388,2],[401,1],[403,1],[405,1],[407,1],[409,3],[432,1],[459,2],[468,1],[470,2],[533,2],[647,3],[651,1],[653,1],[917,1],[985,1],[987,1],[989,1],[991,1],[993,3],[1026,1],[1063,2],[1066,2],[1088,1],[1127,1],[1129,1]]},"85":{"position":[[361,1],[396,1],[410,2],[413,3],[417,2],[420,2],[423,3],[427,2],[453,2],[538,1],[573,1],[588,1],[590,3],[594,1],[607,1],[609,1],[657,2],[660,2],[663,2],[666,3],[670,2],[696,2]]},"87":{"position":[[51,1],[80,1],[94,2],[97,3],[101,2],[104,2],[107,3],[111,2],[137,2]]},"88":{"position":[[169,1],[198,1],[213,1],[215,3],[219,1],[232,1],[234,1],[276,2],[279,2],[282,2],[285,3],[289,2],[315,2]]},"92":{"position":[[140,1],[152,1],[180,1],[205,1],[248,1],[277,1],[328,2],[331,3],[368,1],[413,1],[444,2],[588,2],[696,3],[700,3],[704,2],[707,3],[711,2],[756,2],[782,2]]},"93":{"position":[[658,1],[798,1],[800,2],[855,1],[898,2],[907,1],[920,1],[963,1],[970,1],[972,3],[1046,3],[1050,1],[1052,1],[1107,1],[1198,1],[1200,2],[1266,1],[1310,1],[1346,2],[1349,3],[1353,1],[1355,1]]},"94":{"position":[[321,1],[461,1],[463,2],[535,1],[548,1],[591,1],[598,1],[600,3],[674,1],[676,1]]},"95":{"position":[[372,2],[427,1],[440,1],[483,1],[490,1],[492,3],[566,1],[622,1],[692,2],[701,2],[710,1],[723,1],[766,1],[773,1],[775,3],[849,3],[853,1]]}},"keywords":{}}],["1.6.2",{"_index":732,"title":{},"content":{"53":{"position":[[543,6]]}},"keywords":{}}],["10",{"_index":483,"title":{"26":{"position":[[19,3]]},"27":{"position":[[18,3]]}},"content":{},"keywords":{}}],["2.0",{"_index":728,"title":{},"content":{"53":{"position":[[314,3]]}},"keywords":{}}],["22",{"_index":628,"title":{},"content":{"49":{"position":[[721,3]]}},"keywords":{}}],["3.0",{"_index":725,"title":{},"content":{"53":{"position":[[170,3]]}},"keywords":{}}],["4.0",{"_index":721,"title":{},"content":{"53":{"position":[[13,3]]}},"keywords":{}}],["4.4",{"_index":730,"title":{},"content":{"53":{"position":[[418,3]]}},"keywords":{}}],["4244",{"_index":443,"title":{},"content":{"20":{"position":[[1535,4]]}},"keywords":{}}],["49a6",{"_index":442,"title":{},"content":{"20":{"position":[[1530,4]]}},"keywords":{}}],["50",{"_index":471,"title":{},"content":{"24":{"position":[[488,5]]}},"keywords":{}}],["67",{"_index":465,"title":{},"content":{"24":{"position":[[337,3]]},"43":{"position":[[291,4]]}},"keywords":{}}],["75a2df11517a>",{"_index":445,"title":{},"content":{"20":{"position":[[1545,16]]}},"keywords":{}}],["8",{"_index":320,"title":{},"content":{"11":{"position":[[866,1]]},"29":{"position":[[223,3]]}},"keywords":{}}],["82",{"_index":933,"title":{},"content":{"82":{"position":[[667,3]]}},"keywords":{}}],["869f",{"_index":444,"title":{},"content":{"20":{"position":[[1540,4]]}},"keywords":{}}],["absolut",{"_index":365,"title":{},"content":{"12":{"position":[[551,10]]}},"keywords":{}}],["accept",{"_index":253,"title":{},"content":{"9":{"position":[[610,7]]},"10":{"position":[[99,7],[170,7],[270,6],[814,8],[1006,8],[1156,7]]},"95":{"position":[[69,7]]}},"keywords":{}}],["access",{"_index":76,"title":{"73":{"position":[[0,6]]}},"content":{"2":{"position":[[1283,6]]},"3":{"position":[[730,10]]},"4":{"position":[[635,6]]},"12":{"position":[[119,6],[445,6]]},"31":{"position":[[655,6]]},"46":{"position":[[897,9]]},"49":{"position":[[580,9]]},"51":{"position":[[320,6]]},"52":{"position":[[176,6]]},"68":{"position":[[238,8]]},"71":{"position":[[59,6]]},"72":{"position":[[62,6]]},"76":{"position":[[556,6]]},"81":{"position":[[129,6]]},"84":{"position":[[74,6]]}},"keywords":{}}],["accident",{"_index":680,"title":{},"content":{"52":{"position":[[393,12]]}},"keywords":{}}],["accord",{"_index":292,"title":{},"content":{"10":{"position":[[1206,9]]},"30":{"position":[[92,9]]}},"keywords":{}}],["accordingli",{"_index":751,"title":{},"content":{"56":{"position":[[308,12]]}},"keywords":{}}],["account",{"_index":535,"title":{},"content":{"31":{"position":[[575,8]]},"93":{"position":[[210,7]]}},"keywords":{}}],["accountservic",{"_index":965,"title":{},"content":{"91":{"position":[[276,14]]},"92":{"position":[[739,16]]},"93":{"position":[[766,15],[782,15],[1092,14]]},"94":{"position":[[429,15],[445,15]]}},"keywords":{}}],["achiev",{"_index":938,"title":{},"content":{"83":{"position":[[298,7]]}},"keywords":{}}],["activ",{"_index":81,"title":{},"content":{"2":{"position":[[1375,6]]},"97":{"position":[[151,6],[361,7],[734,6],[839,6]]}},"keywords":{}}],["actual",{"_index":648,"title":{},"content":{"51":{"position":[[570,6]]},"76":{"position":[[463,8]]},"90":{"position":[[124,6]]}},"keywords":{}}],["ad",{"_index":675,"title":{},"content":{"52":{"position":[[310,5]]}},"keywords":{}}],["adapt",{"_index":454,"title":{"22":{"position":[[18,7]]},"58":{"position":[[7,7]]}},"content":{"22":{"position":[[18,7]]},"59":{"position":[[51,7]]},"60":{"position":[[136,8]]},"90":{"position":[[98,8],[247,8],[319,8],[329,8]]},"91":{"position":[[82,7],[97,8],[149,8]]},"92":{"position":[[311,7],[546,8],[596,7],[633,7]]},"93":{"position":[[600,8],[1471,7]]},"95":{"position":[[280,8]]},"96":{"position":[[266,8],[315,7]]},"97":{"position":[[188,7]]},"98":{"position":[[367,7]]}},"keywords":{}}],["add",{"_index":512,"title":{},"content":{"28":{"position":[[348,3]]},"92":{"position":[[4,3]]}},"keywords":{}}],["addit",{"_index":93,"title":{"14":{"position":[[0,10]]}},"content":{"3":{"position":[[39,10]]},"6":{"position":[[26,8]]},"9":{"position":[[119,10],[210,10],[308,10],[971,10]]},"10":{"position":[[633,10]]},"11":{"position":[[1124,10]]},"13":{"position":[[144,10]]}},"keywords":{}}],["addition",{"_index":333,"title":{},"content":{"11":{"position":[[1511,12]]},"27":{"position":[[153,13]]}},"keywords":{}}],["address",{"_index":170,"title":{"71":{"position":[[10,7]]}},"content":{"5":{"position":[[114,7]]},"31":{"position":[[1126,9]]},"69":{"position":[[68,7]]},"71":{"position":[[123,7]]}},"keywords":{}}],["adjust",{"_index":750,"title":{},"content":{"56":{"position":[[301,6]]}},"keywords":{}}],["admin",{"_index":888,"title":{},"content":{"77":{"position":[[543,8]]}},"keywords":{}}],["advanc",{"_index":729,"title":{},"content":{"53":{"position":[[325,8]]}},"keywords":{}}],["advantag",{"_index":719,"title":{},"content":{"52":{"position":[[1126,10]]}},"keywords":{}}],["advis",{"_index":478,"title":{},"content":{"25":{"position":[[293,7]]}},"keywords":{}}],["affect",{"_index":755,"title":{},"content":{"57":{"position":[[171,6]]},"79":{"position":[[883,6]]}},"keywords":{}}],["again",{"_index":913,"title":{},"content":{"79":{"position":[[703,6]]}},"keywords":{}}],["aim",{"_index":352,"title":{},"content":{"12":{"position":[[38,4]]}},"keywords":{}}],["alia",{"_index":609,"title":{},"content":{"48":{"position":[[434,5]]}},"keywords":{}}],["align",{"_index":397,"title":{},"content":{"18":{"position":[[113,5]]},"56":{"position":[[93,6]]},"57":{"position":[[95,5]]}},"keywords":{}}],["allow",{"_index":140,"title":{},"content":{"4":{"position":[[167,6]]},"49":{"position":[[565,5]]},"53":{"position":[[431,8]]}},"keywords":{}}],["along",{"_index":835,"title":{},"content":{"69":{"position":[[155,6]]}},"keywords":{}}],["alreadi",{"_index":47,"title":{},"content":{"2":{"position":[[573,7]]},"13":{"position":[[246,7]]},"52":{"position":[[1049,7]]},"90":{"position":[[447,7],[482,7]]},"91":{"position":[[170,7]]}},"keywords":{}}],["altern",{"_index":494,"title":{},"content":{"27":{"position":[[417,14]]},"46":{"position":[[722,14]]},"47":{"position":[[1,14]]},"53":{"position":[[207,11]]}},"keywords":{}}],["alway",{"_index":870,"title":{},"content":{"74":{"position":[[296,6]]},"82":{"position":[[562,6]]}},"keywords":{}}],["amaz",{"_index":662,"title":{},"content":{"52":{"position":[[14,7]]}},"keywords":{}}],["andreialecu",{"_index":496,"title":{},"content":{"27":{"position":[[518,13]]}},"keywords":{}}],["anoth",{"_index":948,"title":{},"content":{"85":{"position":[[21,7]]}},"keywords":{}}],["anyth",{"_index":161,"title":{},"content":{"4":{"position":[[576,8]]},"73":{"position":[[101,9]]}},"keywords":{}}],["anyway",{"_index":756,"title":{},"content":{"57":{"position":[[299,7]]}},"keywords":{}}],["anywher",{"_index":427,"title":{},"content":{"20":{"position":[[1048,9],[1298,8]]},"68":{"position":[[247,8]]}},"keywords":{}}],["api",{"_index":0,"title":{"0":{"position":[[0,3]]},"66":{"position":[[7,3]]}},"content":{"0":{"position":[[0,3],[44,3]]},"2":{"position":[[50,3]]},"24":{"position":[[208,3]]},"38":{"position":[[43,3]]},"43":{"position":[[210,3]]},"52":{"position":[[928,3]]},"53":{"position":[[237,4]]},"66":{"position":[[7,3],[30,3],[297,3]]},"97":{"position":[[102,4]]}},"keywords":{}}],["apollo",{"_index":480,"title":{},"content":{"25":{"position":[[365,6]]},"27":{"position":[[302,6]]}},"keywords":{}}],["app",{"_index":159,"title":{},"content":{"4":{"position":[[550,4]]},"7":{"position":[[54,3],[251,5]]},"43":{"position":[[400,3]]}},"keywords":{}}],["app.controller.t",{"_index":855,"title":{},"content":{"72":{"position":[[210,17]]}},"keywords":{}}],["app.listen(3000",{"_index":566,"title":{},"content":{"43":{"position":[[556,17]]}},"keywords":{}}],["app.module.t",{"_index":544,"title":{},"content":{"33":{"position":[[1,13]]},"34":{"position":[[1,13]]},"40":{"position":[[1,13]]},"42":{"position":[[108,13]]},"70":{"position":[[137,13]]},"85":{"position":[[328,13],[505,13]]},"87":{"position":[[18,13]]},"88":{"position":[[136,13]]},"92":{"position":[[119,13]]}},"keywords":{}}],["app.service.t",{"_index":860,"title":{},"content":{"73":{"position":[[162,14]]}},"keywords":{}}],["app.us",{"_index":486,"title":{"43":{"position":[[6,8]]}},"content":{"27":{"position":[[84,12]]},"43":{"position":[[492,8],[632,10]]}},"keywords":{}}],["app_guard",{"_index":954,"title":{},"content":{"88":{"position":[[245,10]]}},"keywords":{}}],["app_interceptor",{"_index":854,"title":{},"content":{"72":{"position":[[192,16]]},"85":{"position":[[489,15],[620,16]]}},"keywords":{}}],["appar",{"_index":562,"title":{},"content":{"43":{"position":[[243,10]]}},"keywords":{}}],["appcontrol",{"_index":839,"title":{},"content":{"70":{"position":[[280,16]]},"72":{"position":[[291,13]]}},"keywords":{}}],["appli",{"_index":803,"title":{},"content":{"65":{"position":[[529,7]]}},"keywords":{}}],["applic",{"_index":148,"title":{},"content":{"4":{"position":[[360,12]]},"7":{"position":[[219,11]]},"11":{"position":[[274,10]]},"74":{"position":[[281,11]]},"98":{"position":[[116,12]]}},"keywords":{}}],["appmodul",{"_index":541,"title":{},"content":{"31":{"position":[[1051,9]]},"33":{"position":[[148,9]]},"34":{"position":[[285,9]]},"40":{"position":[[129,9]]},"42":{"position":[[237,9]]},"70":{"position":[[313,9]]},"85":{"position":[[443,9],[686,9]]},"87":{"position":[[127,9]]},"88":{"position":[[305,9]]},"92":{"position":[[772,9]]}},"keywords":{}}],["approach",{"_index":605,"title":{},"content":{"48":{"position":[[27,8]]}},"keywords":{}}],["appservic",{"_index":838,"title":{},"content":{"70":{"position":[[253,13]]},"72":{"position":[[336,11],[348,11]]},"73":{"position":[[8,11],[134,10],[204,10]]}},"keywords":{}}],["appspropag",{"_index":638,"title":{},"content":{"51":{"position":[[259,15]]}},"keywords":{}}],["argument",{"_index":315,"title":{},"content":{"11":{"position":[[731,8]]},"46":{"position":[[807,10]]},"65":{"position":[[595,9]]},"93":{"position":[[400,8]]},"95":{"position":[[128,9]]}},"keywords":{}}],["around",{"_index":645,"title":{},"content":{"51":{"position":[[469,6]]},"68":{"position":[[194,6]]}},"keywords":{}}],["array",{"_index":251,"title":{},"content":{"9":{"position":[[524,5]]},"10":{"position":[[1032,5],[1167,5],[1237,6]]},"66":{"position":[[1013,5],[1116,5],[1197,5]]},"96":{"position":[[114,5]]}},"keywords":{}}],["arrow",{"_index":812,"title":{},"content":{"65":{"position":[[1227,5]]}},"keywords":{}}],["assert(founduser.id",{"_index":777,"title":{},"content":{"62":{"position":[[333,19]]}},"keywords":{}}],["assign",{"_index":109,"title":{},"content":{"3":{"position":[[369,11]]},"77":{"position":[[78,6],[444,6]]}},"keywords":{}}],["assum",{"_index":381,"title":{},"content":{"13":{"position":[[228,7]]},"69":{"position":[[181,7]]}},"keywords":{}}],["assumpt",{"_index":789,"title":{},"content":{"63":{"position":[[83,10]]}},"keywords":{}}],["async",{"_index":7,"title":{"34":{"position":[[0,6]]}},"content":{"7":{"position":[[746,5],[1138,5]]},"62":{"position":[[132,5],[523,5],[671,5]]},"65":{"position":[[276,6],[327,5],[996,5]]},"79":{"position":[[424,5]]},"84":{"position":[[413,5],[1069,5]]},"93":{"position":[[803,5],[1203,5]]},"94":{"position":[[483,5]]},"95":{"position":[[375,5],[570,5],[695,5]]}},"keywords":{"0":{"position":[[0,5]]},"1":{"position":[[0,5]]},"4":{"position":[[0,5]]},"5":{"position":[[0,5]]},"6":{"position":[[0,5]]},"7":{"position":[[0,5]]},"8":{"position":[[0,5]]},"12":{"position":[[0,5]]},"13":{"position":[[0,5]]},"14":{"position":[[0,5]]},"17":{"position":[[0,5]]},"20":{"position":[[0,5]]},"21":{"position":[[0,5]]},"22":{"position":[[0,5]]},"23":{"position":[[0,5]]},"30":{"position":[[0,5]]},"31":{"position":[[0,5]]},"32":{"position":[[0,5]]},"35":{"position":[[0,5]]},"39":{"position":[[0,5]]},"44":{"position":[[0,5]]},"50":{"position":[[0,5]]},"54":{"position":[[0,5]]},"58":{"position":[[0,5]]},"64":{"position":[[0,5]]},"65":{"position":[[0,5]]},"66":{"position":[[0,5]]},"67":{"position":[[0,5]]},"75":{"position":[[0,5]]},"85":{"position":[[0,5]]},"86":{"position":[[0,5]]},"89":{"position":[[0,5]]}}}],["async_hook",{"_index":700,"title":{},"content":{"52":{"position":[[756,11],[1062,11]]}},"keywords":{}}],["asynchron",{"_index":317,"title":{},"content":{"11":{"position":[[762,15]]}},"keywords":{}}],["asynclocalstorag",{"_index":12,"title":{},"content":{"19":{"position":[[368,21]]},"31":{"position":[[39,17]]},"51":{"position":[[994,18]]},"52":{"position":[[496,17]]},"74":{"position":[[218,18]]}},"keywords":{"0":{"position":[[37,17]]},"1":{"position":[[37,17]]},"4":{"position":[[37,17]]},"5":{"position":[[37,17]]},"6":{"position":[[37,17]]},"7":{"position":[[37,17]]},"8":{"position":[[37,17]]},"12":{"position":[[37,17]]},"13":{"position":[[37,17]]},"14":{"position":[[37,17]]},"17":{"position":[[37,17]]},"20":{"position":[[37,17]]},"21":{"position":[[37,17]]},"22":{"position":[[37,17]]},"23":{"position":[[37,17]]},"30":{"position":[[37,17]]},"31":{"position":[[37,17]]},"32":{"position":[[37,17]]},"35":{"position":[[37,17]]},"39":{"position":[[37,17]]},"44":{"position":[[37,17]]},"50":{"position":[[37,17]]},"54":{"position":[[37,17]]},"58":{"position":[[37,17]]},"64":{"position":[[37,17]]},"65":{"position":[[37,17]]},"66":{"position":[[37,17]]},"67":{"position":[[37,17]]},"75":{"position":[[37,17]]},"85":{"position":[[37,17]]},"86":{"position":[[37,17]]},"89":{"position":[[37,17]]}}}],["asynclocalstorage#enterwith",{"_index":339,"title":{},"content":{"11":{"position":[[1902,27]]},"88":{"position":[[447,27]]}},"keywords":{}}],["asynclocalstorage#run",{"_index":343,"title":{},"content":{"11":{"position":[[1981,22]]},"27":{"position":[[485,21]]},"85":{"position":[[117,21]]}},"keywords":{}}],["attempt",{"_index":795,"title":{},"content":{"64":{"position":[[154,8]]}},"keywords":{}}],["augment",{"_index":599,"title":{"47":{"position":[[24,13]]}},"content":{"47":{"position":[[116,7]]},"48":{"position":[[44,10]]}},"keywords":{}}],["authent",{"_index":388,"title":{},"content":{"15":{"position":[[266,14]]},"16":{"position":[[297,14]]},"51":{"position":[[279,14]]}},"keywords":{}}],["author",{"_index":449,"title":{},"content":{"21":{"position":[[76,6]]},"37":{"position":[[38,6]]},"45":{"position":[[378,11]]},"46":{"position":[[511,11]]},"47":{"position":[[334,11]]},"49":{"position":[[473,11]]},"66":{"position":[[221,7]]}},"keywords":{}}],["author'",{"_index":173,"title":{},"content":{"5":{"position":[[190,8]]}},"keywords":{}}],["autogener",{"_index":422,"title":{},"content":{"20":{"position":[[755,13]]}},"keywords":{}}],["automat",{"_index":302,"title":{"40":{"position":[[0,14]]},"87":{"position":[[0,14]]}},"content":{"11":{"position":[[201,13],[366,13],[1222,13]]},"20":{"position":[[163,13]]},"24":{"position":[[236,9]]},"45":{"position":[[91,9]]},"52":{"position":[[296,13]]},"70":{"position":[[28,13]]},"84":{"position":[[743,14]]},"85":{"position":[[314,13]]}},"keywords":{}}],["avail",{"_index":258,"title":{"21":{"position":[[0,9]]},"37":{"position":[[0,9]]}},"content":{"9":{"position":[[740,10]]},"10":{"position":[[669,9]]},"11":{"position":[[414,9],[1652,9],[1782,9]]},"21":{"position":[[0,9]]},"37":{"position":[[68,9]]},"51":{"position":[[222,9],[481,9]]},"63":{"position":[[128,9]]},"64":{"position":[[328,9]]},"78":{"position":[[666,9]]},"79":{"position":[[664,9]]},"90":{"position":[[288,10]]},"92":{"position":[[497,9]]},"96":{"position":[[210,9]]}},"keywords":{}}],["avoid",{"_index":890,"title":{},"content":{"78":{"position":[[74,5]]}},"keywords":{}}],["await",{"_index":220,"title":{},"content":{"7":{"position":[[858,5],[924,5],[1167,5]]},"43":{"position":[[406,5],[550,5]]},"62":{"position":[[223,5],[287,5]]},"79":{"position":[[551,5]]},"84":{"position":[[434,5],[570,5],[610,5],[1090,5]]},"93":{"position":[[922,5],[976,5]]},"94":{"position":[[550,5],[604,5]]},"95":{"position":[[442,5],[496,5],[725,5],[779,5]]}},"keywords":{}}],["awar",{"_index":268,"title":{},"content":{"9":{"position":[[1019,5]]},"66":{"position":[[282,5]]}},"keywords":{}}],["awesom",{"_index":664,"title":{},"content":{"52":{"position":[[56,7]]}},"keywords":{}}],["background",{"_index":830,"title":{"68":{"position":[[0,11]]}},"content":{},"keywords":{}}],["base",{"_index":415,"title":{"55":{"position":[[8,4]]}},"content":{"20":{"position":[[325,5]]},"51":{"position":[[934,5]]}},"keywords":{}}],["basic",{"_index":175,"title":{},"content":{"6":{"position":[[42,5]]}},"keywords":{}}],["becom",{"_index":369,"title":{},"content":{"12":{"position":[[691,6]]}},"keywords":{}}],["befor",{"_index":331,"title":{},"content":{"11":{"position":[[1437,6]]},"31":{"position":[[972,6]]}},"keywords":{}}],["behavior",{"_index":97,"title":{},"content":{"3":{"position":[[147,8],[799,8],[871,8]]},"56":{"position":[[255,8]]},"57":{"position":[[118,8]]},"94":{"position":[[262,9]]}},"keywords":{}}],["below",{"_index":240,"title":{},"content":{"9":{"position":[[165,6],[251,6],[355,6]]},"20":{"position":[[660,5]]},"28":{"position":[[379,5]]},"69":{"position":[[1,5]]}},"keywords":{}}],["benefit",{"_index":688,"title":{},"content":{"52":{"position":[[580,9]]}},"keywords":{}}],["between",{"_index":818,"title":{},"content":{"66":{"position":[[314,7]]}},"keywords":{}}],["bind",{"_index":519,"title":{},"content":{"29":{"position":[[88,4]]},"42":{"position":[[60,4]]},"43":{"position":[[606,4]]},"72":{"position":[[157,4]]}},"keywords":{}}],["bodi",{"_index":219,"title":{},"content":{"7":{"position":[[814,4]]},"84":{"position":[[723,4]]}},"keywords":{}}],["boilerpl",{"_index":982,"title":{},"content":{"94":{"position":[[124,11]]}},"keywords":{}}],["boolean",{"_index":40,"title":{},"content":{"2":{"position":[[352,7],[1327,7]]},"45":{"position":[[390,8]]},"46":{"position":[[232,7],[523,7]]},"47":{"position":[[346,8]]},"49":{"position":[[485,8]]},"97":{"position":[[786,7]]}},"keywords":{}}],["bootstrap",{"_index":195,"title":{},"content":{"7":{"position":[[231,9]]},"43":{"position":[[344,9],[380,11]]}},"keywords":{}}],["both",{"_index":272,"title":{},"content":{"10":{"position":[[265,4]]},"62":{"position":[[160,4]]},"93":{"position":[[239,4]]},"95":{"position":[[5,4]]}},"keywords":{}}],["bound",{"_index":199,"title":{},"content":{"7":{"position":[[307,5]]},"29":{"position":[[43,5]]},"65":{"position":[[1281,6]]}},"keywords":{}}],["break",{"_index":348,"title":{"12":{"position":[[0,8]]}},"content":{"12":{"position":[[0,8]]},"51":{"position":[[407,8]]},"53":{"position":[[142,8],[249,8]]},"57":{"position":[[343,8]]}},"keywords":{}}],["bring",{"_index":722,"title":{},"content":{"53":{"position":[[17,6],[318,6]]}},"keywords":{}}],["built",{"_index":665,"title":{},"content":{"52":{"position":[[64,5]]},"53":{"position":[[61,5]]},"90":{"position":[[501,5]]}},"keywords":{}}],["call",{"_index":138,"title":{},"content":{"4":{"position":[[139,4],[455,7],[593,6]]},"7":{"position":[[106,6],[829,4]]},"11":{"position":[[1894,4],[1961,4]]},"20":{"position":[[1280,7]]},"31":{"position":[[742,5]]},"46":{"position":[[792,6]]},"52":{"position":[[932,6]]},"65":{"position":[[122,5]]},"66":{"position":[[580,6],[743,6],[866,6]]},"68":{"position":[[221,6]]},"79":{"position":[[730,6]]},"81":{"position":[[167,6],[200,6]]},"82":{"position":[[512,7]]},"83":{"position":[[375,4]]},"94":{"position":[[59,4],[87,4]]}},"keywords":{}}],["callback",{"_index":59,"title":{},"content":{"2":{"position":[[714,9],[748,8],[859,9],[892,8],[1266,8]]},"3":{"position":[[314,8],[652,8]]},"4":{"position":[[616,8]]},"61":{"position":[[245,9]]},"97":{"position":[[516,10],[544,8],[687,8]]}},"keywords":{}}],["callhandl",{"_index":846,"title":{},"content":{"71":{"position":[[374,13]]},"77":{"position":[[346,13]]}},"keywords":{}}],["can't",{"_index":503,"title":{},"content":{"28":{"position":[[134,5]]},"53":{"position":[[477,5]]}},"keywords":{}}],["care",{"_index":232,"title":{},"content":{"7":{"position":[[1224,4]]},"29":{"position":[[166,4]]},"93":{"position":[[1485,4]]}},"keywords":{}}],["case",{"_index":100,"title":{"6":{"position":[[17,5]]},"51":{"position":[[4,6]]}},"content":{"3":{"position":[[190,4]]},"6":{"position":[[17,5]]},"7":{"position":[[265,6],[490,5],[1246,4]]},"9":{"position":[[699,6]]},"10":{"position":[[357,4]]},"11":{"position":[[693,4]]},"15":{"position":[[4,4]]},"19":{"position":[[148,4]]},"20":{"position":[[473,4]]},"24":{"position":[[203,4]]},"25":{"position":[[90,4]]},"30":{"position":[[19,4]]},"31":{"position":[[336,6],[483,4]]},"42":{"position":[[9,5]]},"43":{"position":[[305,5]]},"49":{"position":[[121,5],[313,5]]},"51":{"position":[[17,5],[558,5]]},"52":{"position":[[151,5]]},"55":{"position":[[194,4]]},"56":{"position":[[125,6],[292,4]]},"57":{"position":[[187,6],[316,4],[516,5]]},"74":{"position":[[132,4]]},"81":{"position":[[210,4]]},"82":{"position":[[644,5]]},"83":{"position":[[141,6]]},"85":{"position":[[909,4]]}},"keywords":{}}],["caus",{"_index":467,"title":{},"content":{"24":{"position":[[391,5]]},"31":{"position":[[505,6]]}},"keywords":{}}],["caution",{"_index":230,"title":{},"content":{"7":{"position":[[1208,7]]},"12":{"position":[[502,7]]},"31":{"position":[[584,7]]},"43":{"position":[[578,7]]},"88":{"position":[[398,7]]}},"keywords":{}}],["caveat",{"_index":296,"title":{"63":{"position":[[0,8]]},"80":{"position":[[0,8]]}},"content":{"10":{"position":[[1455,7]]}},"keywords":{}}],["central",{"_index":672,"title":{},"content":{"52":{"position":[[260,7]]}},"keywords":{}}],["certain",{"_index":550,"title":{},"content":{"41":{"position":[[46,7]]},"49":{"position":[[384,7]]}},"keywords":{}}],["chain",{"_index":139,"title":{},"content":{"4":{"position":[[144,6],[625,5]]},"9":{"position":[[1060,5]]},"68":{"position":[[203,5],[285,5]]}},"keywords":{}}],["chang",{"_index":124,"title":{"55":{"position":[[0,7]]},"56":{"position":[[0,7]]},"57":{"position":[[0,7]]}},"content":{"3":{"position":[[831,7]]},"21":{"position":[[182,7]]},"53":{"position":[[151,9],[258,7]]},"55":{"position":[[53,7]]},"56":{"position":[[40,7]]},"57":{"position":[[70,7],[153,6],[352,6]]},"66":{"position":[[66,6],[307,6]]},"77":{"position":[[454,6]]},"78":{"position":[[897,8]]},"94":{"position":[[204,6],[249,8]]},"98":{"position":[[259,6]]}},"keywords":{}}],["chapter",{"_index":1,"title":{},"content":{"0":{"position":[[9,7]]},"5":{"position":[[20,7]]},"6":{"position":[[91,8]]},"31":{"position":[[1118,7]]}},"keywords":{}}],["charact",{"_index":321,"title":{},"content":{"11":{"position":[[868,11]]}},"keywords":{}}],["check",{"_index":41,"title":{},"content":{"2":{"position":[[360,5]]},"56":{"position":[[230,5]]}},"keywords":{}}],["choic",{"_index":505,"title":{},"content":{"28":{"position":[[185,7]]}},"keywords":{}}],["cl",{"_index":11,"title":{"14":{"position":[[11,3]]},"32":{"position":[[15,3]]},"50":{"position":[[7,3]]},"73":{"position":[[7,3]]}},"content":{"2":{"position":[[72,3],[172,3],[238,3],[385,3],[456,3],[538,3],[769,3],[910,3],[1049,3],[1179,3],[1302,3],[1382,3]]},"3":{"position":[[166,3]]},"4":{"position":[[381,3],[420,3]]},"7":{"position":[[77,3],[704,4],[1093,5]]},"9":{"position":[[925,3],[982,3]]},"11":{"position":[[1068,3],[1152,3],[1406,3]]},"12":{"position":[[130,3],[388,3]]},"13":{"position":[[114,3]]},"15":{"position":[[158,5]]},"16":{"position":[[145,5]]},"20":{"position":[[40,3],[641,3],[1178,4],[1316,3]]},"21":{"position":[[93,4],[139,3]]},"25":{"position":[[200,3]]},"26":{"position":[[110,3]]},"27":{"position":[[294,3],[565,3]]},"31":{"position":[[669,3]]},"37":{"position":[[55,4]]},"41":{"position":[[39,3]]},"45":{"position":[[227,3]]},"46":{"position":[[174,4]]},"47":{"position":[[268,4]]},"51":{"position":[[943,3]]},"64":{"position":[[66,3],[225,3],[301,3]]},"65":{"position":[[242,3],[701,4],[921,4]]},"66":{"position":[[596,3],[666,5]]},"68":{"position":[[140,3],[158,3]]},"69":{"position":[[293,3]]},"70":{"position":[[109,3]]},"71":{"position":[[88,3],[171,3],[311,4]]},"72":{"position":[[88,3]]},"73":{"position":[[59,3],[246,4]]},"76":{"position":[[599,3]]},"78":{"position":[[866,3]]},"79":{"position":[[790,3]]},"83":{"position":[[288,3]]},"84":{"position":[[371,4],[1014,5]]},"85":{"position":[[51,3],[875,3]]},"90":{"position":[[510,3]]},"92":{"position":[[54,4],[167,5]]},"93":{"position":[[1563,3]]},"97":{"position":[[812,3]]}},"keywords":{"0":{"position":[[32,3]]},"1":{"position":[[32,3]]},"4":{"position":[[32,3]]},"5":{"position":[[32,3]]},"6":{"position":[[32,3]]},"7":{"position":[[32,3]]},"8":{"position":[[32,3]]},"12":{"position":[[32,3]]},"13":{"position":[[32,3]]},"14":{"position":[[32,3]]},"17":{"position":[[32,3]]},"20":{"position":[[32,3]]},"21":{"position":[[32,3]]},"22":{"position":[[32,3]]},"23":{"position":[[32,3]]},"30":{"position":[[32,3]]},"31":{"position":[[32,3]]},"32":{"position":[[32,3]]},"35":{"position":[[32,3]]},"39":{"position":[[32,3]]},"44":{"position":[[32,3]]},"50":{"position":[[32,3]]},"54":{"position":[[32,3]]},"58":{"position":[[32,3]]},"64":{"position":[[32,3]]},"65":{"position":[[32,3]]},"66":{"position":[[32,3]]},"67":{"position":[[32,3]]},"75":{"position":[[32,3]]},"85":{"position":[[32,3]]},"86":{"position":[[32,3]]},"89":{"position":[[32,3]]}}}],["class",{"_index":210,"title":{"76":{"position":[[0,5]]}},"content":{"7":{"position":[[608,5]]},"9":{"position":[[623,5]]},"10":{"position":[[107,5],[367,5],[418,5],[849,5]]},"12":{"position":[[208,5]]},"19":{"position":[[258,5]]},"20":{"position":[[1132,5],[1386,5]]},"33":{"position":[[142,5]]},"34":{"position":[[279,5]]},"40":{"position":[[123,5]]},"42":{"position":[[231,5]]},"46":{"position":[[127,5]]},"48":{"position":[[172,5],[373,5]]},"55":{"position":[[350,6],[513,5]]},"62":{"position":[[31,5],[406,5]]},"65":{"position":[[503,5],[651,5]]},"70":{"position":[[307,5]]},"71":{"position":[[229,5]]},"72":{"position":[[285,5]]},"73":{"position":[[198,5]]},"76":{"position":[[40,5],[181,5],[428,5],[508,6]]},"77":{"position":[[3,5],[176,5]]},"78":{"position":[[268,5]]},"79":{"position":[[1018,5]]},"84":{"position":[[275,5],[896,5]]},"85":{"position":[[437,5],[680,5]]},"87":{"position":[[121,5]]},"88":{"position":[[299,5]]},"92":{"position":[[766,5]]},"93":{"position":[[640,5],[1086,5]]},"94":{"position":[[303,5]]}},"keywords":{}}],["claus",{"_index":676,"title":{},"content":{"52":{"position":[[324,6]]}},"keywords":{}}],["cli",{"_index":196,"title":{},"content":{"7":{"position":[[247,3]]}},"keywords":{}}],["client",{"_index":787,"title":{},"content":{"63":{"position":[[32,6],[117,6]]},"97":{"position":[[281,6],[409,6]]}},"keywords":{}}],["client'",{"_index":833,"title":{},"content":{"69":{"position":[[56,8]]}},"keywords":{}}],["close",{"_index":747,"title":{},"content":{"56":{"position":[[85,7]]}},"keywords":{}}],["cls.enter",{"_index":153,"title":{},"content":{"4":{"position":[[477,12]]}},"keywords":{}}],["cls.get",{"_index":164,"title":{},"content":{"4":{"position":[[681,10]]}},"keywords":{}}],["cls.get('us",{"_index":627,"title":{},"content":{"49":{"position":[[693,17]]}},"keywords":{}}],["cls.get('user.id",{"_index":624,"title":{},"content":{"49":{"position":[[608,19]]}},"keywords":{}}],["cls.get(cls_id",{"_index":38,"title":{},"content":{"2":{"position":[[316,16]]}},"keywords":{}}],["cls.run",{"_index":152,"title":{},"content":{"4":{"position":[[463,9]]},"65":{"position":[[112,9]]},"84":{"position":[[140,10],[183,9],[733,9]]}},"keywords":{}}],["cls.set",{"_index":163,"title":{},"content":{"4":{"position":[[667,9]]}},"keywords":{}}],["cls.set('auth",{"_index":387,"title":{},"content":{"15":{"position":[[248,15]]},"16":{"position":[[279,15]]}},"keywords":{}}],["cls.set('mod",{"_index":228,"title":{},"content":{"7":{"position":[[1107,15]]}},"keywords":{}}],["cls.set('som",{"_index":807,"title":{},"content":{"65":{"position":[[955,13]]},"84":{"position":[[1028,13]]}},"keywords":{}}],["cls.set('tenant_id",{"_index":385,"title":{},"content":{"15":{"position":[[201,20]]},"16":{"position":[[232,20]]}},"keywords":{}}],["cls/transact",{"_index":758,"title":{"89":{"position":[[8,17]]}},"content":{"59":{"position":[[33,17]]},"90":{"position":[[33,17]]},"91":{"position":[[64,17]]},"92":{"position":[[221,19],[293,17]]},"98":{"position":[[44,17]]}},"keywords":{}}],["cls_id",{"_index":309,"title":{},"content":{"11":{"position":[[434,6]]},"20":{"position":[[944,6]]}},"keywords":{}}],["cls_re",{"_index":337,"title":{},"content":{"11":{"position":[[1802,7]]},"78":{"position":[[161,7]]}},"keywords":{}}],["cls_req",{"_index":335,"title":{},"content":{"11":{"position":[[1672,7]]},"78":{"position":[[149,7]]},"79":{"position":[[374,9]]}},"keywords":{}}],["clscontextopt",{"_index":58,"title":{"3":{"position":[[0,18]]}},"content":{"2":{"position":[[695,18],[989,19]]}},"keywords":{}}],["clsguard",{"_index":242,"title":{},"content":{"9":{"position":[[237,9]]},"20":{"position":[[480,8]]},"27":{"position":[[406,9]]},"28":{"position":[[9,8]]},"29":{"position":[[97,8]]},"31":{"position":[[372,8],[818,8],[989,9]]},"85":{"position":[[103,8],[647,9]]},"88":{"position":[[78,8],[266,9],[429,8],[493,8]]}},"keywords":{}}],["clsinterceptor",{"_index":244,"title":{},"content":{"9":{"position":[[335,15]]},"27":{"position":[[448,15]]},"28":{"position":[[21,14]]},"29":{"position":[[109,14]]},"31":{"position":[[231,14]]},"85":{"position":[[69,15]]}},"keywords":{}}],["clsmiddlewar",{"_index":239,"title":{},"content":{"9":{"position":[[146,14]]},"24":{"position":[[101,13],[262,13],[438,13]]},"26":{"position":[[133,13]]},"27":{"position":[[36,13],[210,13]]},"31":{"position":[[213,13],[386,14],[771,13]]},"42":{"position":[[69,13]]},"43":{"position":[[505,15]]},"70":{"position":[[52,13]]},"72":{"position":[[109,13]]}},"keywords":{}}],["clsmiddlewareopt",{"_index":332,"title":{},"content":{"11":{"position":[[1490,20]]}},"keywords":{}}],["clsmodul",{"_index":5,"title":{"70":{"position":[[13,10]]}},"content":{"0":{"position":[[74,9]]},"36":{"position":[[55,10]]},"66":{"position":[[759,11],[882,11]]},"68":{"position":[[32,9]]},"70":{"position":[[14,9]]},"78":{"position":[[230,10]]},"92":{"position":[[107,10],[142,9]]}},"keywords":{}}],["clsmodule.forfeatur",{"_index":249,"title":{},"content":{"9":{"position":[[460,22]]},"10":{"position":[[5,22]]},"48":{"position":[[250,25]]},"55":{"position":[[318,22],[390,22]]},"76":{"position":[[264,22]]}},"keywords":{}}],["clsmodule.forfeature(us",{"_index":877,"title":{},"content":{"76":{"position":[[364,27]]}},"keywords":{}}],["clsmodule.forfeatureasync",{"_index":255,"title":{},"content":{"9":{"position":[[650,27]]},"10":{"position":[[135,27]]},"78":{"position":[[543,27],[618,27]]},"79":{"position":[[115,27],[274,27]]}},"keywords":{}}],["clsmodule.forroot",{"_index":236,"title":{},"content":{"9":{"position":[[5,19]]},"15":{"position":[[104,19]]},"16":{"position":[[90,19]]},"18":{"position":[[166,19]]},"20":{"position":[[774,19]]},"33":{"position":[[36,19]]},"36":{"position":[[67,19]]},"40":{"position":[[36,19]]},"42":{"position":[[143,19]]},"43":{"position":[[693,20]]},"60":{"position":[[1,19]]},"70":{"position":[[172,19]]},"83":{"position":[[438,19]]},"85":{"position":[[285,19],[363,19],[540,19]]},"87":{"position":[[53,19]]},"88":{"position":[[171,19]]},"92":{"position":[[384,19]]}},"keywords":{}}],["clsmodule.forrootasync",{"_index":257,"title":{},"content":{"9":{"position":[[707,24]]},"34":{"position":[[36,24]]}},"keywords":{}}],["clsmodule.regist",{"_index":399,"title":{},"content":{"18":{"position":[[143,20]]}},"keywords":{}}],["clsmoduleopt",{"_index":237,"title":{},"content":{"9":{"position":[[52,17]]},"11":{"position":[[94,16]]}},"keywords":{}}],["clsmoduleproxyclassprovideropt",{"_index":270,"title":{},"content":{"10":{"position":[[185,34],[761,34]]}},"keywords":{}}],["clsmoduleproxyfactoryprovideropt",{"_index":271,"title":{},"content":{"10":{"position":[[223,36],[951,36]]}},"keywords":{}}],["clsplugin",{"_index":820,"title":{},"content":{"66":{"position":[[467,9]]}},"keywords":{}}],["clspluginmodul",{"_index":828,"title":{},"content":{"66":{"position":[[1336,15]]}},"keywords":{}}],["clsplugintransact",{"_index":759,"title":{"96":{"position":[[0,22]]}},"content":{"60":{"position":[[36,24]]},"92":{"position":[[182,22],[419,24]]},"96":{"position":[[5,22]]}},"keywords":{}}],["clsservic",{"_index":4,"title":{"2":{"position":[[0,11]]},"45":{"position":[[10,11]]},"64":{"position":[[10,10]]}},"content":{"0":{"position":[[55,10]]},"2":{"position":[[16,10]]},"7":{"position":[[709,11]]},"11":{"position":[[893,11],[966,11]]},"12":{"position":[[661,10]]},"19":{"position":[[197,10]]},"20":{"position":[[980,10],[1183,11]]},"31":{"position":[[961,10]]},"45":{"position":[[54,10]]},"46":{"position":[[25,10]]},"47":{"position":[[201,10]]},"48":{"position":[[95,10],[327,11]]},"64":{"position":[[10,10],[250,10]]},"65":{"position":[[562,10],[706,11],[926,11]]},"66":{"position":[[672,11]]},"68":{"position":[[71,10],[299,11]]},"71":{"position":[[41,10],[316,11]]},"73":{"position":[[251,11]]},"84":{"position":[[376,11]]},"88":{"position":[[41,11]]}},"keywords":{}}],["clsservice#ent",{"_index":794,"title":{},"content":{"64":{"position":[[115,16]]}},"keywords":{}}],["clsservice#resolveproxyprovid",{"_index":939,"title":{},"content":{"83":{"position":[[380,34]]}},"keywords":{}}],["clsservice#run",{"_index":204,"title":{},"content":{"7":{"position":[[435,15],[837,16]]},"56":{"position":[[149,14]]},"64":{"position":[[97,14]]}},"keywords":{}}],["clsservice#setifundefin",{"_index":479,"title":{},"content":{"25":{"position":[[312,27]]}},"keywords":{}}],["clsservice<myclsstore>",{"_index":579,"title":{},"content":{"46":{"position":[[58,28],[179,29]]},"47":{"position":[[39,28]]},"48":{"position":[[199,28],[444,28]]}},"keywords":{}}],["clsservice<mystore>",{"_index":407,"title":{},"content":{"19":{"position":[[289,25]]}},"keywords":{}}],["clsservicemanag",{"_index":356,"title":{},"content":{"12":{"position":[[190,17]]}},"keywords":{}}],["clsservicemanager.getclsservic",{"_index":362,"title":{},"content":{"12":{"position":[[394,34]]}},"keywords":{}}],["clsstore",{"_index":26,"title":{},"content":{"2":{"position":[[137,9]]},"45":{"position":[[282,9],[329,8]]},"47":{"position":[[128,8],[285,8]]},"49":{"position":[[289,9],[412,8]]}},"keywords":{}}],["cls{middleware,guard,interceptor}opt",{"_index":298,"title":{},"content":{"11":{"position":[[12,40]]}},"keywords":{}}],["clunki",{"_index":654,"title":{},"content":{"51":{"position":[[828,6]]}},"keywords":{}}],["code",{"_index":72,"title":{},"content":{"2":{"position":[[1032,4],[1165,4],[1355,4]]},"3":{"position":[[760,5]]},"7":{"position":[[513,4]]},"12":{"position":[[681,4]]},"52":{"position":[[291,4]]},"56":{"position":[[392,4]]},"64":{"position":[[291,4]]},"66":{"position":[[1428,5]]},"84":{"position":[[216,4]]},"85":{"position":[[168,5]]},"94":{"position":[[136,4],[155,4]]}},"keywords":{}}],["combin",{"_index":552,"title":{},"content":{"41":{"position":[[140,11]]}},"keywords":{}}],["come",{"_index":655,"title":{},"content":{"51":{"position":[[839,4],[895,5]]},"88":{"position":[[502,5]]}},"keywords":{}}],["common",{"_index":132,"title":{},"content":{"4":{"position":[[51,6]]},"51":{"position":[[6,6]]}},"keywords":{}}],["commun",{"_index":959,"title":{},"content":{"90":{"position":[[429,9]]}},"keywords":{}}],["compar",{"_index":708,"title":{},"content":{"52":{"position":[[876,8]]}},"keywords":{}}],["compat",{"_index":168,"title":{"23":{"position":[[0,13]]}},"content":{"5":{"position":[[78,10]]},"12":{"position":[[49,10]]},"24":{"position":[[17,10]]},"26":{"position":[[41,10]]},"28":{"position":[[356,13]]},"31":{"position":[[1136,13]]},"56":{"position":[[267,10]]}},"keywords":{}}],["compil",{"_index":713,"title":{},"content":{"52":{"position":[[963,8]]}},"keywords":{}}],["complain",{"_index":614,"title":{},"content":{"49":{"position":[[144,8]]}},"keywords":{}}],["complex",{"_index":256,"title":{},"content":{"9":{"position":[[687,7]]},"49":{"position":[[72,8]]}},"keywords":{}}],["compon",{"_index":893,"title":{},"content":{"78":{"position":[[112,10]]}},"keywords":{}}],["concern",{"_index":171,"title":{},"content":{"5":{"position":[[126,8]]}},"keywords":{}}],["concurr",{"_index":528,"title":{},"content":{"31":{"position":[[76,10]]}},"keywords":{}}],["configur",{"_index":281,"title":{},"content":{"10":{"position":[[712,13]]},"31":{"position":[[404,10]]},"85":{"position":[[236,13]]},"95":{"position":[[165,9]]}},"keywords":{}}],["configure(consum",{"_index":555,"title":{},"content":{"42":{"position":[[271,19]]}},"keywords":{}}],["confirm",{"_index":514,"title":{},"content":{"28":{"position":[[424,9]]}},"keywords":{}}],["conjunct",{"_index":956,"title":{},"content":{"90":{"position":[[73,11]]}},"keywords":{}}],["connect",{"_index":636,"title":{},"content":{"51":{"position":[[211,10]]},"79":{"position":[[261,11],[538,10],[605,11],[1095,11]]},"98":{"position":[[101,10],[390,11]]}},"keywords":{}}],["consequ",{"_index":534,"title":{},"content":{"31":{"position":[[537,11],[631,10]]}},"keywords":{}}],["consid",{"_index":869,"title":{},"content":{"74":{"position":[[171,8]]},"85":{"position":[[183,10]]}},"keywords":{}}],["consider",{"_index":156,"title":{"5":{"position":[[0,14]]},"98":{"position":[[0,15]]}},"content":{"4":{"position":[[503,14]]},"5":{"position":[[0,14]]},"88":{"position":[[527,15]]}},"keywords":{}}],["console.log(`<${this.cls.getid()}>",{"_index":433,"title":{},"content":{"20":{"position":[[1221,40]]}},"keywords":{}}],["console.log(cls.getid",{"_index":364,"title":{},"content":{"12":{"position":[[474,25]]}},"keywords":{}}],["console.log(typeof",{"_index":743,"title":{},"content":{"55":{"position":[[688,18],[736,18]]}},"keywords":{}}],["const",{"_index":361,"title":{},"content":{"12":{"position":[[382,5]]},"16":{"position":[[168,5]]},"19":{"position":[[318,5]]},"43":{"position":[[394,5]]},"46":{"position":[[347,5],[429,5],[533,5],[851,5],[958,5]]},"49":{"position":[[678,5]]},"62":{"position":[[210,5],[269,5]]},"71":{"position":[[412,5],[465,5]]},"73":{"position":[[279,5]]},"77":{"position":[[384,5]]},"79":{"position":[[491,5],[532,5]]},"93":{"position":[[909,5]]},"94":{"position":[[537,5]]},"95":{"position":[[429,5],[712,5]]}},"keywords":{}}],["constant",{"_index":425,"title":{},"content":{"20":{"position":[[951,8]]}},"keywords":{}}],["constructor",{"_index":212,"title":{},"content":{"7":{"position":[[631,12]]},"43":{"position":[[763,12]]},"55":{"position":[[533,12]]},"62":{"position":[[429,12]]},"65":{"position":[[671,12]]},"78":{"position":[[315,12]]},"79":{"position":[[1038,12]]},"84":{"position":[[298,12]]},"93":{"position":[[660,12],[1109,12]]},"94":{"position":[[323,12]]},"96":{"position":[[28,11]]}},"keywords":{}}],["constructor(priv",{"_index":431,"title":{},"content":{"20":{"position":[[1149,19],[1404,19]]},"46":{"position":[[145,19]]},"62":{"position":[[51,19]]},"71":{"position":[[282,19]]},"72":{"position":[[307,19]]},"73":{"position":[[217,19]]},"77":{"position":[[259,19]]},"84":{"position":[[919,19]]}},"keywords":{}}],["consum",{"_index":192,"title":{},"content":{"7":{"position":[[189,9]]}},"keywords":{}}],["consumer.apply(clsmiddleware).forroutes('custom/rout",{"_index":557,"title":{},"content":{"42":{"position":[[313,56]]}},"keywords":{}}],["contain",{"_index":612,"title":{},"content":{"49":{"position":[[84,8]]},"78":{"position":[[598,10]]}},"keywords":{}}],["context",{"_index":8,"title":{"32":{"position":[[19,7]]},"73":{"position":[[11,7]]}},"content":{"2":{"position":[[76,8],[176,8],[242,7],[389,8],[460,8],[542,7],[773,8],[914,7],[1053,8],[1183,7],[1306,8],[1386,8]]},"3":{"position":[[170,7],[232,8],[271,7],[357,8],[441,8],[537,7],[607,7],[679,8],[714,7]]},"4":{"position":[[424,7]]},"7":{"position":[[128,7],[342,8],[534,7]]},"9":{"position":[[929,7]]},"11":{"position":[[1072,7],[1156,8],[1410,7],[1632,8],[1762,8],[1878,7],[2093,7]]},"12":{"position":[[134,7],[288,7],[324,7]]},"16":{"position":[[151,8]]},"20":{"position":[[967,8],[1320,7]]},"24":{"position":[[397,7]]},"26":{"position":[[114,7]]},"27":{"position":[[130,7],[245,7]]},"28":{"position":[[46,7]]},"31":{"position":[[119,7],[149,7],[310,8],[347,7],[512,7],[673,7],[837,8]]},"49":{"position":[[57,7]]},"51":{"position":[[547,7],[774,7]]},"61":{"position":[[153,8],[283,8]]},"64":{"position":[[70,7],[229,8],[305,8]]},"65":{"position":[[175,7],[246,7],[488,7],[1261,7]]},"68":{"position":[[144,8],[162,7]]},"69":{"position":[[297,8]]},"70":{"position":[[113,7]]},"71":{"position":[[175,8]]},"72":{"position":[[92,7]]},"73":{"position":[[63,7]]},"76":{"position":[[603,8]]},"77":{"position":[[85,7]]},"79":{"position":[[794,8]]},"84":{"position":[[36,7],[170,7],[485,7],[804,8]]},"85":{"position":[[55,7]]},"92":{"position":[[843,7]]},"93":{"position":[[1567,8]]},"96":{"position":[[234,8]]}},"keywords":{"0":{"position":[[7,7]]},"1":{"position":[[7,7]]},"4":{"position":[[7,7]]},"5":{"position":[[7,7]]},"6":{"position":[[7,7]]},"7":{"position":[[7,7]]},"8":{"position":[[7,7]]},"12":{"position":[[7,7]]},"13":{"position":[[7,7]]},"14":{"position":[[7,7]]},"17":{"position":[[7,7]]},"20":{"position":[[7,7]]},"21":{"position":[[7,7]]},"22":{"position":[[7,7]]},"23":{"position":[[7,7]]},"30":{"position":[[7,7]]},"31":{"position":[[7,7]]},"32":{"position":[[7,7]]},"35":{"position":[[7,7]]},"39":{"position":[[7,7]]},"44":{"position":[[7,7]]},"50":{"position":[[7,7]]},"54":{"position":[[7,7]]},"58":{"position":[[7,7]]},"64":{"position":[[7,7]]},"65":{"position":[[7,7]]},"66":{"position":[[7,7]]},"67":{"position":[[7,7]]},"75":{"position":[[7,7]]},"85":{"position":[[7,7]]},"86":{"position":[[7,7]]},"89":{"position":[[7,7]]}}}],["context,extract",{"_index":840,"title":{},"content":{"71":{"position":[[92,15]]}},"keywords":{}}],["context.switchtohttp().getrequest",{"_index":848,"title":{},"content":{"71":{"position":[[428,36]]},"77":{"position":[[400,36]]}},"keywords":{}}],["context.switchtohttp().getrequest<request>",{"_index":389,"title":{},"content":{"16":{"position":[[180,51]]}},"keywords":{}}],["continu",{"_index":129,"title":{},"content":{"4":{"position":[[13,12]]}},"keywords":{}}],["control",{"_index":458,"title":{"72":{"position":[[21,11]]}},"content":{"24":{"position":[[53,11]]},"41":{"position":[[87,7]]},"51":{"position":[[647,12]]},"64":{"position":[[208,7]]},"70":{"position":[[267,12]]},"72":{"position":[[42,11]]},"85":{"position":[[922,12]]}},"keywords":{}}],["controller/resolv",{"_index":950,"title":{},"content":{"85":{"position":[[718,19]]},"88":{"position":[[348,19]]}},"keywords":{}}],["conveni",{"_index":225,"title":{},"content":{"7":{"position":[[1007,11]]},"78":{"position":[[132,12]]}},"keywords":{}}],["convent",{"_index":398,"title":{},"content":{"18":{"position":[[128,11]]}},"keywords":{}}],["copi",{"_index":107,"title":{},"content":{"3":{"position":[[338,4]]}},"keywords":{}}],["core",{"_index":819,"title":{},"content":{"66":{"position":[[358,5]]}},"keywords":{}}],["correct",{"_index":972,"title":{},"content":{"93":{"position":[[541,7]]}},"keywords":{}}],["correctli",{"_index":487,"title":{},"content":{"27":{"position":[[109,9]]},"93":{"position":[[488,9]]}},"keywords":{}}],["correl",{"_index":412,"title":{},"content":{"20":{"position":[[82,13]]}},"keywords":{}}],["couldn't",{"_index":679,"title":{},"content":{"52":{"position":[[384,8]]}},"keywords":{}}],["cours",{"_index":853,"title":{},"content":{"72":{"position":[[135,7]]}},"keywords":{}}],["creat",{"_index":116,"title":{"22":{"position":[[0,8]]},"38":{"position":[[0,8]]},"71":{"position":[[0,6]]}},"content":{"3":{"position":[[553,8]]},"19":{"position":[[177,6]]},"22":{"position":[[0,8]]},"38":{"position":[[4,6]]},"43":{"position":[[446,6]]},"45":{"position":[[212,6],[247,8]]},"48":{"position":[[80,6],[126,8]]},"52":{"position":[[106,7]]},"66":{"position":[[244,6]]},"71":{"position":[[1,6]]},"74":{"position":[[180,8]]},"91":{"position":[[133,6]]},"93":{"position":[[173,6],[200,6]]}},"keywords":{}}],["createaccountforuser(id",{"_index":976,"title":{},"content":{"93":{"position":[[1209,24]]}},"keywords":{}}],["createus",{"_index":984,"title":{},"content":{"94":{"position":[[215,10]]}},"keywords":{}}],["createuser(nam",{"_index":783,"title":{},"content":{"62":{"position":[[677,16]]},"93":{"position":[[809,16]]},"94":{"position":[[489,16]]},"95":{"position":[[381,16],[576,16]]}},"keywords":{}}],["creation",{"_index":99,"title":{},"content":{"3":{"position":[[178,8]]},"77":{"position":[[57,9]]}},"keywords":{}}],["critic",{"_index":701,"title":{},"content":{"52":{"position":[[781,10]]}},"keywords":{}}],["cron",{"_index":190,"title":{},"content":{"7":{"position":[[173,4],[915,8],[1123,8]]},"51":{"position":[[642,4]]}},"keywords":{}}],["cron('45",{"_index":216,"title":{},"content":{"7":{"position":[[724,9]]},"84":{"position":[[391,9],[975,9]]}},"keywords":{}}],["cron('90",{"_index":224,"title":{},"content":{"7":{"position":[[967,9]]}},"keywords":{}}],["croncontrol",{"_index":211,"title":{},"content":{"7":{"position":[[614,14]]},"84":{"position":[[281,14],[902,14]]}},"keywords":{}}],["ctx",{"_index":324,"title":{},"content":{"11":{"position":[[978,4]]}},"keywords":{}}],["current",{"_index":79,"title":{},"content":{"2":{"position":[[1347,7]]},"9":{"position":[[595,9]]},"71":{"position":[[73,7]]},"92":{"position":[[913,7]]},"93":{"position":[[116,7],[359,7]]},"97":{"position":[[141,9],[853,7]]}},"keywords":{}}],["custom",{"_index":25,"title":{"22":{"position":[[11,6]]},"48":{"position":[[8,6]]}},"content":{"2":{"position":[[130,6]]},"10":{"position":[[306,6]]},"19":{"position":[[218,6]]},"20":{"position":[[371,6],[1090,6]]},"22":{"position":[[11,6]]},"38":{"position":[[13,6]]},"45":{"position":[[29,6]]},"48":{"position":[[137,6]]},"74":{"position":[[191,6]]}},"keywords":{}}],["cyclic",{"_index":613,"title":{},"content":{"49":{"position":[[93,6]]}},"keywords":{}}],["data",{"_index":134,"title":{},"content":{"4":{"position":[[91,4],[194,4]]},"52":{"position":[[417,4],[436,4]]},"62":{"position":[[740,5]]},"93":{"position":[[957,5],[1304,5]]},"94":{"position":[[585,5]]},"95":{"position":[[477,5],[760,5]]}},"keywords":{}}],["databas",{"_index":635,"title":{},"content":{"51":{"position":[[202,8],[362,8]]},"52":{"position":[[463,9]]},"79":{"position":[[252,8]]},"90":{"position":[[180,8]]},"97":{"position":[[230,8]]},"98":{"position":[[92,8],[166,10],[381,8]]}},"keywords":{}}],["databaseconnectionmodul",{"_index":908,"title":{},"content":{"79":{"position":[[338,27]]}},"keywords":{}}],["databaseconnectionservic",{"_index":909,"title":{},"content":{"79":{"position":[[384,27],[456,26]]}},"keywords":{}}],["date",{"_index":452,"title":{},"content":{"21":{"position":[[168,4]]}},"keywords":{}}],["db",{"_index":710,"title":{},"content":{"52":{"position":[[913,2]]}},"keywords":{}}],["dbservic",{"_index":910,"title":{},"content":{"79":{"position":[[445,10]]}},"keywords":{}}],["dbservice.gettenantconnection(tenantid",{"_index":912,"title":{},"content":{"79":{"position":[[557,40]]}},"keywords":{}}],["deal",{"_index":697,"title":{},"content":{"52":{"position":[[664,4]]}},"keywords":{}}],["debug",{"_index":821,"title":{},"content":{"66":{"position":[[530,9]]}},"keywords":{}}],["decid",{"_index":166,"title":{},"content":{"5":{"position":[[47,6]]},"28":{"position":[[252,6]]}},"keywords":{}}],["declar",{"_index":603,"title":{},"content":{"47":{"position":[[245,7]]},"48":{"position":[[59,12]]},"63":{"position":[[210,7]]},"65":{"position":[[75,13]]}},"keywords":{}}],["decor",{"_index":206,"title":{"57":{"position":[[51,10]]},"65":{"position":[[8,9]]},"94":{"position":[[24,10]]}},"content":{"7":{"position":[[472,10],[1019,9]]},"10":{"position":[[913,9]]},"57":{"position":[[586,10]]},"65":{"position":[[8,9],[32,9],[297,9],[619,9]]},"76":{"position":[[107,9]]},"84":{"position":[[694,9]]},"94":{"position":[[20,9],[186,10]]},"95":{"position":[[59,9]]}},"keywords":{}}],["deep",{"_index":615,"title":{},"content":{"49":{"position":[[184,5]]}},"keywords":{}}],["default",{"_index":68,"title":{"56":{"position":[[8,7]]},"57":{"position":[[8,7]]}},"content":{"2":{"position":[[943,7],[1212,7]]},"3":{"position":[[294,9],[791,7]]},"9":{"position":[[380,8]]},"10":{"position":[[469,8],[1429,8]]},"11":{"position":[[174,8],[339,8],[800,7],[1196,8],[1328,8],[1574,8],[1702,8],[1836,8]]},"20":{"position":[[287,8]]},"31":{"position":[[249,7]]},"55":{"position":[[5,7]]},"56":{"position":[[5,7],[247,7]]},"57":{"position":[[44,7],[110,7]]},"83":{"position":[[4,8]]},"97":{"position":[[383,7]]}},"keywords":{}}],["defin",{"_index":811,"title":{},"content":{"65":{"position":[[1166,6]]},"77":{"position":[[18,7]]}},"keywords":{}}],["definit",{"_index":926,"title":{},"content":{"82":{"position":[[356,11]]}},"keywords":{}}],["delay",{"_index":934,"title":{"83":{"position":[[0,7]]}},"content":{"83":{"position":[[192,7]]}},"keywords":{}}],["deleg",{"_index":922,"title":{},"content":{"81":{"position":[[119,9]]}},"keywords":{}}],["dep",{"_index":378,"title":{},"content":{"13":{"position":[[160,5]]}},"keywords":{}}],["depend",{"_index":207,"title":{},"content":{"7":{"position":[[518,7]]},"12":{"position":[[74,10],[605,10]]},"57":{"position":[[494,13]]},"74":{"position":[[260,12]]},"96":{"position":[[193,12]]},"97":{"position":[[171,9]]}},"keywords":{}}],["describ",{"_index":2,"title":{},"content":{"0":{"position":[[17,9]]},"6":{"position":[[62,9]]}},"keywords":{}}],["destroy",{"_index":825,"title":{},"content":{"66":{"position":[[897,9]]}},"keywords":{}}],["destructur",{"_index":592,"title":{},"content":{"46":{"position":[[837,13]]}},"keywords":{}}],["detail",{"_index":629,"title":{},"content":{"49":{"position":[[734,8]]}},"keywords":{}}],["details.som",{"_index":466,"title":{},"content":{"24":{"position":[[345,12]]}},"keywords":{}}],["develop",{"_index":181,"title":{},"content":{"6":{"position":[[167,9]]},"7":{"position":[[377,9]]},"52":{"position":[[373,10]]}},"keywords":{}}],["di",{"_index":350,"title":{"12":{"position":[[16,2]]}},"content":{"12":{"position":[[16,2]]}},"keywords":{}}],["differ",{"_index":791,"title":{},"content":{"63":{"position":[[171,9]]}},"keywords":{}}],["difficult",{"_index":367,"title":{},"content":{"12":{"position":[[639,9]]}},"keywords":{}}],["directli",{"_index":299,"title":{},"content":{"11":{"position":[[114,8]]},"43":{"position":[[328,8]]},"49":{"position":[[571,8]]},"85":{"position":[[702,8]]},"88":{"position":[[332,8]]},"93":{"position":[[1441,9]]}},"keywords":{}}],["discuss",{"_index":526,"title":{},"content":{"31":{"position":[[21,9]]},"55":{"position":[[173,11]]}},"keywords":{}}],["distinguish",{"_index":876,"title":{},"content":{"76":{"position":[[137,16]]}},"keywords":{}}],["doc",{"_index":967,"title":{},"content":{"92":{"position":[[641,4]]}},"keywords":{}}],["dogsservic",{"_index":915,"title":{},"content":{"79":{"position":[[1024,11]]}},"keywords":{}}],["don't",{"_index":517,"title":{},"content":{"29":{"position":[[20,5]]},"47":{"position":[[157,5]]},"57":{"position":[[213,5]]}},"keywords":{}}],["done",{"_index":151,"title":{},"content":{"4":{"position":[[447,4]]}},"keywords":{}}],["dot",{"_index":573,"title":{},"content":{"45":{"position":[[194,3]]}},"keywords":{}}],["dotheth",{"_index":580,"title":{},"content":{"46":{"position":[[212,12]]}},"keywords":{}}],["drop",{"_index":402,"title":{"19":{"position":[[18,8]]}},"content":{"19":{"position":[[49,7]]}},"keywords":{}}],["due",{"_index":475,"title":{},"content":{"25":{"position":[[143,3]]},"27":{"position":[[273,3]]},"49":{"position":[[217,3]]}},"keywords":{}}],["durat",{"_index":530,"title":{},"content":{"31":{"position":[[186,8]]}},"keywords":{}}],["dure",{"_index":194,"title":{},"content":{"7":{"position":[[208,6]]},"68":{"position":[[256,6]]}},"keywords":{}}],["dynam",{"_index":282,"title":{},"content":{"10":{"position":[[740,7]]},"51":{"position":[[187,7]]},"68":{"position":[[24,7]]},"79":{"position":[[210,11]]}},"keywords":{}}],["e.g",{"_index":264,"title":{},"content":{"9":{"position":[[904,5]]},"12":{"position":[[332,5]]}},"keywords":{}}],["each",{"_index":677,"title":{},"content":{"52":{"position":[[334,4]]},"79":{"position":[[740,4]]},"92":{"position":[[591,4]]},"98":{"position":[[347,4]]}},"keywords":{}}],["earli",{"_index":539,"title":{},"content":{"31":{"position":[[871,5]]}},"keywords":{}}],["easi",{"_index":144,"title":{},"content":{"4":{"position":[[305,4]]}},"keywords":{}}],["easier",{"_index":182,"title":{},"content":{"6":{"position":[[177,7]]}},"keywords":{}}],["easili",{"_index":875,"title":{},"content":{"76":{"position":[[130,6]]}},"keywords":{}}],["effect",{"_index":103,"title":{},"content":{"3":{"position":[[251,6]]}},"keywords":{}}],["effort",{"_index":684,"title":{},"content":{"52":{"position":[[487,7]]}},"keywords":{}}],["email",{"_index":785,"title":{},"content":{"62":{"position":[[760,6]]}},"keywords":{}}],["empti",{"_index":119,"title":{},"content":{"3":{"position":[[673,5]]},"77":{"position":[[46,5]]}},"keywords":{}}],["enabl",{"_index":630,"title":{"82":{"position":[[36,8]]}},"content":{"51":{"position":[[41,7]]},"53":{"position":[[50,6]]},"66":{"position":[[937,8]]},"78":{"position":[[870,7]]},"90":{"position":[[514,7]]}},"keywords":{}}],["encapsul",{"_index":643,"title":{},"content":{"51":{"position":[[416,13]]}},"keywords":{}}],["enforc",{"_index":581,"title":{},"content":{"46":{"position":[[253,8]]}},"keywords":{}}],["enhanc",{"_index":198,"title":{"11":{"position":[[13,8]]},"16":{"position":[[0,10]]},"77":{"position":[[15,9]]}},"content":{"7":{"position":[[285,9]]},"9":{"position":[[877,9]]},"11":{"position":[[1267,8]]},"25":{"position":[[52,8],[217,9]]},"29":{"position":[[49,10]]},"31":{"position":[[938,9]]},"57":{"position":[[136,10]]},"83":{"position":[[78,8],[354,8]]}},"keywords":{}}],["enough",{"_index":559,"title":{},"content":{"43":{"position":[[50,7]]}},"keywords":{}}],["ensur",{"_index":48,"title":{},"content":{"2":{"position":[[597,8]]},"25":{"position":[[167,6]]},"93":{"position":[[563,7]]}},"keywords":{}}],["enter",{"_index":70,"title":{},"content":{"2":{"position":[[959,8]]},"3":{"position":[[13,5]]}},"keywords":{}}],["enter(opt",{"_index":71,"title":{},"content":{"2":{"position":[[974,14]]}},"keywords":{}}],["enterwith",{"_index":533,"title":{},"content":{"31":{"position":[[438,11],[601,9],[732,9]]},"85":{"position":[[205,10]]}},"keywords":{}}],["enterwith(stor",{"_index":73,"title":{},"content":{"2":{"position":[[1121,16]]}},"keywords":{}}],["entir",{"_index":27,"title":{},"content":{"2":{"position":[[165,6]]},"19":{"position":[[57,9]]},"70":{"position":[[82,6]]},"78":{"position":[[786,8]]}},"keywords":{}}],["entri",{"_index":51,"title":{},"content":{"2":{"position":[[639,5]]}},"keywords":{}}],["error",{"_index":595,"title":{},"content":{"46":{"position":[[952,5]]}},"keywords":{}}],["etc",{"_index":822,"title":{},"content":{"66":{"position":[[645,5]]}},"keywords":{}}],["even",{"_index":572,"title":{},"content":{"45":{"position":[[162,4]]},"46":{"position":[[578,4]]},"48":{"position":[[5,4]]},"97":{"position":[[718,5]]}},"keywords":{}}],["everywher",{"_index":601,"title":{},"content":{"47":{"position":[[68,10]]},"51":{"position":[[232,10]]}},"keywords":{}}],["ex",{"_index":440,"title":{},"content":{"20":{"position":[[1506,4]]}},"keywords":{}}],["exampl",{"_index":189,"title":{"62":{"position":[[0,8]]},"69":{"position":[[0,8]]},"91":{"position":[[0,8]]}},"content":{"7":{"position":[[159,8]]},"19":{"position":[[248,8]]},"20":{"position":[[672,7],[1072,7]]},"43":{"position":[[197,8]]},"64":{"position":[[317,7]]},"69":{"position":[[13,7],[173,7]]},"79":{"position":[[162,7]]},"91":{"position":[[10,8]]},"95":{"position":[[196,7]]}},"keywords":{}}],["except",{"_index":874,"title":{},"content":{"76":{"position":[[66,9]]},"85":{"position":[[943,9]]}},"keywords":{}}],["execut",{"_index":203,"title":{},"content":{"7":{"position":[[420,9]]},"11":{"position":[[1049,8]]},"62":{"position":[[177,8]]}},"keywords":{}}],["executioncontext",{"_index":313,"title":{},"content":{"11":{"position":[[530,17],[673,16],[983,17]]},"16":{"position":[[32,16]]},"20":{"position":[[453,16]]},"71":{"position":[[350,17]]},"77":{"position":[[322,17]]}},"keywords":{}}],["exist",{"_index":102,"title":{},"content":{"3":{"position":[[223,8],[279,6],[476,8],[528,8],[598,8]]},"5":{"position":[[28,6]]},"24":{"position":[[358,8]]},"52":{"position":[[566,9]]}},"keywords":{}}],["exists)sequel",{"_index":960,"title":{},"content":{"90":{"position":[[455,16]]}},"keywords":{}}],["exit(callback",{"_index":74,"title":{},"content":{"2":{"position":[[1228,14]]}},"keywords":{}}],["experi",{"_index":704,"title":{},"content":{"52":{"position":[[826,11]]}},"keywords":{}}],["experiment",{"_index":814,"title":{},"content":{"66":{"position":[[43,12]]}},"keywords":{}}],["explicit",{"_index":501,"title":{},"content":{"28":{"position":[[93,8]]}},"keywords":{}}],["explicitli",{"_index":218,"title":{"82":{"position":[[25,10]]}},"content":{"7":{"position":[[785,10]]},"51":{"position":[[447,10]]},"56":{"position":[[179,10]]},"57":{"position":[[408,10]]},"69":{"position":[[133,10]]},"73":{"position":[[79,10]]},"82":{"position":[[295,10]]}},"keywords":{}}],["export",{"_index":209,"title":{},"content":{"7":{"position":[[601,6]]},"10":{"position":[[531,6]]},"33":{"position":[[135,6]]},"34":{"position":[[272,6]]},"40":{"position":[[116,6]]},"42":{"position":[[224,6]]},"45":{"position":[[293,6]]},"46":{"position":[[120,6]]},"48":{"position":[[165,6],[345,8]]},"66":{"position":[[450,6],[1256,9],[1269,9]]},"70":{"position":[[300,6]]},"71":{"position":[[222,6]]},"72":{"position":[[278,6]]},"73":{"position":[[191,6]]},"76":{"position":[[174,6]]},"77":{"position":[[169,6]]},"78":{"position":[[212,8],[261,6]]},"84":{"position":[[268,6],[889,6]]},"85":{"position":[[430,6],[673,6]]},"87":{"position":[[114,6]]},"88":{"position":[[292,6]]},"92":{"position":[[759,6]]}},"keywords":{}}],["expos",{"_index":357,"title":{},"content":{"12":{"position":[[219,7]]},"66":{"position":[[1360,7]]},"68":{"position":[[14,7],[48,7]]},"76":{"position":[[307,7]]}},"keywords":{}}],["express",{"_index":461,"title":{},"content":{"24":{"position":[[167,8],[367,7]]},"25":{"position":[[372,10]]}},"keywords":{}}],["extend",{"_index":406,"title":{},"content":{"19":{"position":[[281,7]]},"45":{"position":[[274,7],[321,7]]},"48":{"position":[[109,9],[191,7]]}},"keywords":{}}],["extent",{"_index":651,"title":{},"content":{"51":{"position":[[712,6]]}},"keywords":{}}],["extern",{"_index":711,"title":{},"content":{"52":{"position":[[919,8]]},"66":{"position":[[1022,8]]},"78":{"position":[[518,8]]}},"keywords":{}}],["extra",{"_index":683,"title":{},"content":{"52":{"position":[[481,5]]},"66":{"position":[[390,5]]}},"keywords":{}}],["extract",{"_index":925,"title":{},"content":{"82":{"position":[[203,9]]}},"keywords":{}}],["extraproviders?:provid",{"_index":280,"title":{},"content":{"10":{"position":[[589,26]]}},"keywords":{}}],["fact",{"_index":617,"title":{},"content":{"49":{"position":[[228,4]]}},"keywords":{}}],["factori",{"_index":290,"title":{"79":{"position":[[0,7]]}},"content":{"10":{"position":[[1134,7]]},"79":{"position":[[18,7],[43,7],[188,7],[714,7]]},"81":{"position":[[7,7],[219,7]]},"82":{"position":[[222,7],[258,7]]}},"keywords":{}}],["fail",{"_index":796,"title":{},"content":{"64":{"position":[[163,4]]},"93":{"position":[[278,5]]}},"keywords":{}}],["fairli",{"_index":685,"title":{},"content":{"52":{"position":[[523,6]]}},"keywords":{}}],["fallback",{"_index":421,"title":{},"content":{"20":{"position":[[740,8]]}},"keywords":{}}],["fals",{"_index":246,"title":{},"content":{"9":{"position":[[389,6]]},"11":{"position":[[183,6],[348,6],[1711,6],[1845,6]]},"15":{"position":[[281,5]]},"16":{"position":[[312,5]]},"42":{"position":[[50,5],[198,5]]},"57":{"position":[[56,6],[573,5]]},"83":{"position":[[341,5],[495,6]]},"85":{"position":[[582,5]]},"88":{"position":[[207,5]]}},"keywords":{}}],["familiar",{"_index":905,"title":{},"content":{"79":{"position":[[66,9]]}},"keywords":{}}],["fast",{"_index":712,"title":{},"content":{"52":{"position":[[951,5]]}},"keywords":{}}],["fastifi",{"_index":462,"title":{},"content":{"24":{"position":[[176,7]]},"25":{"position":[[393,9]]}},"keywords":{}}],["favorit",{"_index":374,"title":{},"content":{"13":{"position":[[57,8]]}},"keywords":{}}],["featur",{"_index":174,"title":{"6":{"position":[[0,8]]}},"content":{"6":{"position":[[0,8],[135,8]]},"12":{"position":[[537,7]]},"43":{"position":[[225,7]]},"52":{"position":[[73,9]]},"53":{"position":[[387,8],[573,9]]},"74":{"position":[[92,9]]},"90":{"position":[[420,8]]}},"keywords":{}}],["feel",{"_index":600,"title":{},"content":{"47":{"position":[[23,4]]}},"keywords":{}}],["filter",{"_index":952,"title":{},"content":{"85":{"position":[[953,9]]}},"keywords":{}}],["fine",{"_index":797,"title":{},"content":{"64":{"position":[[195,4]]}},"keywords":{}}],["finish",{"_index":936,"title":{},"content":{"83":{"position":[[118,9]]}},"keywords":{}}],["first",{"_index":64,"title":{},"content":{"2":{"position":[[824,5],[1104,5]]},"4":{"position":[[432,6]]},"9":{"position":[[1043,5]]},"20":{"position":[[505,5]]},"88":{"position":[[103,5]]},"95":{"position":[[122,5]]},"97":{"position":[[623,5]]}},"keywords":{}}],["follow",{"_index":19,"title":{},"content":{"2":{"position":[[40,9],[1022,9],[1155,9]]},"3":{"position":[[74,9]]},"7":{"position":[[503,9]]},"9":{"position":[[42,9]]},"11":{"position":[[62,9],[1534,9]]},"30":{"position":[[81,6]]},"66":{"position":[[429,9]]},"85":{"position":[[158,9]]},"90":{"position":[[264,9],[370,9]]},"96":{"position":[[73,9]]},"97":{"position":[[92,9]]}},"keywords":{}}],["forfeatur",{"_index":403,"title":{},"content":{"19":{"position":[[34,10]]}},"keywords":{}}],["forfeature(async",{"_index":269,"title":{"10":{"position":[[0,18]]}},"content":{},"keywords":{}}],["forroot",{"_index":395,"title":{},"content":{"18":{"position":[[81,7]]},"36":{"position":[[33,7]]},"92":{"position":[[85,7]]}},"keywords":{}}],["forroot(async",{"_index":235,"title":{"9":{"position":[[0,15]]}},"content":{},"keywords":{}}],["forrootasync",{"_index":396,"title":{},"content":{"18":{"position":[[96,13]]}},"keywords":{}}],["foundus",{"_index":775,"title":{},"content":{"62":{"position":[[275,9]]}},"keywords":{}}],["framework",{"_index":345,"title":{},"content":{"11":{"position":[[2060,10]]},"52":{"position":[[22,10]]},"53":{"position":[[105,11]]}},"keywords":{}}],["fulli",{"_index":625,"title":{},"content":{"49":{"position":[[649,5]]},"90":{"position":[[414,5]]}},"keywords":{}}],["function",{"_index":176,"title":{"82":{"position":[[0,8]]}},"content":{"6":{"position":[[48,13]]},"7":{"position":[[805,8]]},"10":{"position":[[1142,8],[1287,9],[1406,8]]},"11":{"position":[[597,8],[1035,8]]},"12":{"position":[[351,10],[362,8]]},"20":{"position":[[378,8],[419,8]]},"25":{"position":[[266,9]]},"27":{"position":[[365,12]]},"43":{"position":[[371,8]]},"55":{"position":[[230,8],[305,11],[422,9],[481,11],[782,10]]},"65":{"position":[[333,8],[410,8],[825,8],[892,8],[1199,9],[1212,10],[1233,10]]},"66":{"position":[[563,8]]},"68":{"position":[[212,8]]},"81":{"position":[[237,10]]},"82":{"position":[[42,10],[91,9],[230,8],[276,9],[331,8],[464,11],[578,9]]},"83":{"position":[[63,8]]},"84":{"position":[[714,8],[780,8]]}},"keywords":{}}],["function/callback",{"_index":137,"title":{},"content":{"4":{"position":[[121,17]]}},"keywords":{}}],["functionprovid",{"_index":742,"title":{},"content":{"55":{"position":[[651,17]]}},"keywords":{}}],["further",{"_index":283,"title":{},"content":{"10":{"position":[[806,7],[998,7]]},"74":{"position":[[54,7]]}},"keywords":{}}],["futur",{"_index":815,"title":{},"content":{"66":{"position":[[80,7]]},"98":{"position":[[273,7]]}},"keywords":{}}],["gateway",{"_index":516,"title":{},"content":{"29":{"position":[[11,8]]},"51":{"position":[[670,9]]}},"keywords":{}}],["gener",{"_index":307,"title":{},"content":{"11":{"position":[[380,8],[610,10],[845,8]]},"20":{"position":[[177,8],[300,9],[547,10]]},"49":{"position":[[250,8],[357,10],[520,8]]},"63":{"position":[[14,9]]}},"keywords":{}}],["generateid",{"_index":414,"title":{},"content":{"20":{"position":[[249,11],[821,11]]},"33":{"position":[[97,11]]},"34":{"position":[[173,11]]},"65":{"position":[[794,11],[1098,12]]}},"keywords":{}}],["generateid?:boolean",{"_index":306,"title":{},"content":{"11":{"position":[[319,19]]}},"keywords":{}}],["get",{"_index":489,"title":{},"content":{"27":{"position":[[253,4]]},"72":{"position":[[57,4]]}},"keywords":{}}],["get('/hello",{"_index":857,"title":{},"content":{"72":{"position":[[363,14]]}},"keywords":{}}],["get(key",{"_index":28,"title":{},"content":{"2":{"position":[[185,9]]}},"keywords":{}}],["getal",{"_index":918,"title":{},"content":{"79":{"position":[[1130,8]]}},"keywords":{}}],["getclsservic",{"_index":358,"title":{},"content":{"12":{"position":[[231,15]]}},"keywords":{}}],["getid",{"_index":34,"title":{},"content":{"2":{"position":[[258,8]]},"20":{"position":[[1019,5]]}},"keywords":{}}],["getuserbyid(id",{"_index":780,"title":{},"content":{"62":{"position":[[529,15]]}},"keywords":{}}],["global",{"_index":247,"title":{},"content":{"9":{"position":[[423,7]]},"29":{"position":[[34,8]]},"33":{"position":[[56,7]]},"34":{"position":[[61,7]]},"40":{"position":[[56,7]]},"42":{"position":[[163,7]]},"47":{"position":[[107,8]]},"48":{"position":[[507,6]]},"66":{"position":[[1329,6]]},"70":{"position":[[192,7]]},"72":{"position":[[178,8]]},"79":{"position":[[620,7],[688,8]]},"92":{"position":[[470,7],[836,6]]},"96":{"position":[[227,6]]}},"keywords":{}}],["global?:boolean",{"_index":245,"title":{},"content":{"9":{"position":[[362,17]]}},"keywords":{}}],["good",{"_index":871,"title":{},"content":{"74":{"position":[[305,4]]}},"keywords":{}}],["gql",{"_index":474,"title":{},"content":{"25":{"position":[[129,3]]}},"keywords":{}}],["grain",{"_index":798,"title":{},"content":{"64":{"position":[[200,7]]}},"keywords":{}}],["graphql",{"_index":472,"title":{"25":{"position":[[0,8]]}},"content":{"26":{"position":[[19,7]]},"27":{"position":[[23,8]]}},"keywords":{}}],["great",{"_index":696,"title":{},"content":{"52":{"position":[[658,5]]}},"keywords":{}}],["gt",{"_index":55,"title":{},"content":{"2":{"position":[[670,5],[727,5],[872,5],[1246,5]]},"7":{"position":[[886,5],[1099,5]]},"10":{"position":[[1124,5]]},"11":{"position":[[474,5],[548,5],[919,5],[1001,5]]},"15":{"position":[[193,5]]},"16":{"position":[[160,5]]},"20":{"position":[[867,5],[1492,4]]},"34":{"position":[[137,5],[210,5]]},"49":{"position":[[494,6]]},"53":{"position":[[412,5]]},"55":{"position":[[455,5],[672,5]]},"56":{"position":[[365,5]]},"61":{"position":[[230,5]]},"66":{"position":[[684,5],[807,5],[970,5]]},"79":{"position":[[483,5]]},"82":{"position":[[410,5],[428,5]]},"84":{"position":[[462,5],[1020,5]]},"93":{"position":[[901,5]]},"95":{"position":[[704,5]]}},"keywords":{}}],["guarante",{"_index":504,"title":{},"content":{"28":{"position":[[140,9]]}},"keywords":{}}],["guard",{"_index":314,"title":{"86":{"position":[[8,5]]}},"content":{"11":{"position":[[703,5]]},"16":{"position":[[6,5]]},"25":{"position":[[27,5]]},"27":{"position":[[584,7]]},"31":{"position":[[1086,5]]},"66":{"position":[[638,6]]},"85":{"position":[[832,7],[894,6]]},"87":{"position":[[73,6]]},"88":{"position":[[23,6],[109,5],[191,6]]}},"keywords":{}}],["guard?:clsguardopt",{"_index":241,"title":{},"content":{"9":{"position":[[172,22]]}},"keywords":{}}],["guid",{"_index":523,"title":{"30":{"position":[[10,5]]}},"content":{"30":{"position":[[10,5],[112,6]]},"53":{"position":[[132,5],[297,7]]}},"keywords":{}}],["handleconnect",{"_index":521,"title":{},"content":{"29":{"position":[[194,16]]}},"keywords":{}}],["handlecron",{"_index":943,"title":{},"content":{"84":{"position":[[419,12],[1075,12]]}},"keywords":{}}],["handlecronexample1",{"_index":217,"title":{},"content":{"7":{"position":[[752,20]]}},"keywords":{}}],["handlecronexample2",{"_index":229,"title":{},"content":{"7":{"position":[[1144,20]]}},"keywords":{}}],["handler",{"_index":200,"title":{},"content":{"7":{"position":[[320,7]]}},"keywords":{}}],["happen",{"_index":469,"title":{},"content":{"24":{"position":[[419,8]]},"49":{"position":[[8,7]]}},"keywords":{}}],["happi",{"_index":792,"title":{},"content":{"63":{"position":[[261,6]]}},"keywords":{}}],["harder",{"_index":370,"title":{},"content":{"12":{"position":[[698,6]]}},"keywords":{}}],["has(key",{"_index":39,"title":{},"content":{"2":{"position":[[333,8]]}},"keywords":{}}],["hasn't",{"_index":46,"title":{},"content":{"2":{"position":[[561,6]]}},"keywords":{}}],["have",{"_index":891,"title":{},"content":{"78":{"position":[[80,6]]}},"keywords":{}}],["header",{"_index":420,"title":{},"content":{"20":{"position":[[726,6]]}},"keywords":{}}],["held",{"_index":682,"title":{},"content":{"52":{"position":[[446,4]]}},"keywords":{}}],["hello",{"_index":438,"title":{},"content":{"20":{"position":[[1452,7]]},"72":{"position":[[378,7]]},"73":{"position":[[321,6]]}},"keywords":{}}],["hello"",{"_index":446,"title":{},"content":{"20":{"position":[[1562,11]]}},"keywords":{}}],["help",{"_index":165,"title":{},"content":{"5":{"position":[[38,4]]}},"keywords":{}}],["helper",{"_index":360,"title":{},"content":{"12":{"position":[[371,8]]}},"keywords":{}}],["here",{"_index":510,"title":{},"content":{"28":{"position":[[314,5]]},"43":{"position":[[487,4]]},"46":{"position":[[262,4]]},"77":{"position":[[254,4]]}},"keywords":{}}],["here'",{"_index":689,"title":{},"content":{"52":{"position":[[590,6]]},"79":{"position":[[152,6]]}},"keywords":{}}],["highlight",{"_index":720,"title":{"53":{"position":[[0,11]]}},"content":{},"keywords":{}}],["histori",{"_index":693,"title":{},"content":{"52":{"position":[[633,8]]}},"keywords":{}}],["hit",{"_index":537,"title":{},"content":{"31":{"position":[[723,4]]}},"keywords":{}}],["hold",{"_index":931,"title":{},"content":{"82":{"position":[[615,6]]}},"keywords":{}}],["hood",{"_index":717,"title":{},"content":{"52":{"position":[[1084,5]]}},"keywords":{}}],["hook",{"_index":89,"title":{},"content":{"2":{"position":[[1556,5]]},"11":{"position":[[1372,4]]},"51":{"position":[[947,7]]},"66":{"position":[[927,5]]}},"keywords":{}}],["http",{"_index":836,"title":{},"content":{"69":{"position":[[203,4],[261,4]]}},"keywords":{}}],["hypothet",{"_index":906,"title":{},"content":{"79":{"position":[[175,12]]}},"keywords":{}}],["i'v",{"_index":694,"title":{},"content":{"52":{"position":[[642,4]]}},"keywords":{}}],["id",{"_index":36,"title":{"20":{"position":[[8,2]]}},"content":{"2":{"position":[[296,2]]},"4":{"position":[[335,3]]},"9":{"position":[[1087,3]]},"11":{"position":[[399,3],[633,3]]},"20":{"position":[[8,2],[96,3],[194,3],[310,2],[611,2],[706,2],[896,4],[921,2],[1354,3]]},"45":{"position":[[366,3]]},"46":{"position":[[499,3]]},"47":{"position":[[322,3]]},"49":{"position":[[461,3],[686,2]]},"51":{"position":[[80,2]]},"62":{"position":[[660,2]]},"76":{"position":[[194,3]]},"78":{"position":[[289,3]]},"93":{"position":[[1320,3]]},"97":{"position":[[336,3],[451,4]]}},"keywords":{}}],["idea",{"_index":872,"title":{},"content":{"74":{"position":[[310,5]]}},"keywords":{}}],["ideal",{"_index":410,"title":{},"content":{"20":{"position":[[50,5]]}},"keywords":{}}],["idempot",{"_index":49,"title":{},"content":{"2":{"position":[[606,11]]},"25":{"position":[[230,11]]}},"keywords":{}}],["ident",{"_index":493,"title":{},"content":{"27":{"position":[[378,9]]}},"keywords":{}}],["idgener",{"_index":416,"title":{},"content":{"20":{"position":[[394,11],[839,12]]},"34":{"position":[[191,12]]},"65":{"position":[[544,13],[812,12],[1187,11]]}},"keywords":{}}],["idgenerator?:(ctx",{"_index":312,"title":{},"content":{"11":{"position":[[511,18]]}},"keywords":{}}],["idgenerator?:(req",{"_index":310,"title":{},"content":{"11":{"position":[[446,18]]}},"keywords":{}}],["idgeneratorservic",{"_index":545,"title":{},"content":{"34":{"position":[[83,20],[116,20]]}},"keywords":{}}],["idgeneratorservice.generate(req",{"_index":546,"title":{},"content":{"34":{"position":[[216,32]]}},"keywords":{}}],["ifnest",{"_index":746,"title":{"56":{"position":[[19,8]]}},"content":{"56":{"position":[[20,8],[202,8],[338,9]]}},"keywords":{}}],["ifnested?:'inherit",{"_index":94,"title":{},"content":{"3":{"position":[[95,19]]}},"keywords":{}}],["imper",{"_index":726,"title":{},"content":{"53":{"position":[[226,10]]}},"keywords":{}}],["implement",{"_index":318,"title":{},"content":{"11":{"position":[[808,14]]},"42":{"position":[[247,10]]},"51":{"position":[[919,14]]},"66":{"position":[[415,9]]},"71":{"position":[[253,10]]},"74":{"position":[[198,14]]},"77":{"position":[[198,10]]},"78":{"position":[[910,15]]},"82":{"position":[[129,9]]},"90":{"position":[[350,11]]},"93":{"position":[[578,14]]},"97":{"position":[[196,14]]}},"keywords":{}}],["implicitli",{"_index":980,"title":{},"content":{"94":{"position":[[92,11]]}},"keywords":{}}],["import",{"_index":248,"title":{},"content":{"9":{"position":[[453,6],[776,8]]},"10":{"position":[[509,8]]},"33":{"position":[[25,8]]},"34":{"position":[[25,8]]},"40":{"position":[[25,8]]},"42":{"position":[[132,8]]},"48":{"position":[[241,8]]},"57":{"position":[[481,6]]},"60":{"position":[[61,8]]},"65":{"position":[[1153,9]]},"66":{"position":[[1054,8],[1090,9]]},"70":{"position":[[161,8]]},"78":{"position":[[587,6],[698,7]]},"79":{"position":[[330,7]]},"85":{"position":[[352,8],[529,8]]},"87":{"position":[[42,8]]},"88":{"position":[[160,8]]},"92":{"position":[[133,6],[173,6],[241,6],[341,7],[359,8],[521,8]]},"96":{"position":[[96,8],[153,8]]}},"keywords":{}}],["imports?ani",{"_index":278,"title":{},"content":{"10":{"position":[[478,13]]}},"keywords":{}}],["includ",{"_index":477,"title":{},"content":{"25":{"position":[[247,8]]},"51":{"position":[[49,8]]},"90":{"position":[[490,8]]}},"keywords":{}}],["indic",{"_index":508,"title":{},"content":{"28":{"position":[[224,8]]}},"keywords":{}}],["infer",{"_index":569,"title":{"44":{"position":[[21,9]]}},"content":{"45":{"position":[[106,9]]},"46":{"position":[[326,8],[408,8],[485,8],[642,8]]},"53":{"position":[[355,10]]}},"keywords":{}}],["infinit",{"_index":616,"title":{},"content":{"49":{"position":[[199,9]]}},"keywords":{}}],["info",{"_index":157,"title":{},"content":{"4":{"position":[[527,5]]},"9":{"position":[[829,4]]},"13":{"position":[[118,4]]},"51":{"position":[[879,4]]},"65":{"position":[[201,4]]},"74":{"position":[[115,4]]},"92":{"position":[[655,4]]}},"keywords":{}}],["inform",{"_index":297,"title":{},"content":{"10":{"position":[[1472,12]]},"82":{"position":[[181,11]]},"83":{"position":[[258,11]]}},"keywords":{}}],["inherit",{"_index":105,"title":{},"content":{"3":{"position":[[286,7],[842,7]]},"56":{"position":[[65,8]]}},"keywords":{}}],["initi",{"_index":265,"title":{},"content":{"9":{"position":[[910,10]]},"26":{"position":[[95,10]]},"65":{"position":[[254,14]]},"66":{"position":[[600,11],[774,11]]},"85":{"position":[[38,8]]}},"keywords":{}}],["initialis",{"_index":325,"title":{},"content":{"11":{"position":[[1089,12]]}},"keywords":{}}],["initializeplugin",{"_index":87,"title":{},"content":{"2":{"position":[[1488,20]]}},"keywords":{}}],["initializeplugins?:boolean",{"_index":329,"title":{},"content":{"11":{"position":[[1301,26]]}},"keywords":{}}],["inject",{"_index":17,"title":{},"content":{"2":{"position":[[5,10]]},"7":{"position":[[587,13]]},"9":{"position":[[785,6]]},"10":{"position":[[313,9],[1041,9],[1230,6]]},"12":{"position":[[85,10],[314,9],[616,9]]},"19":{"position":[[11,9],[237,6]]},"20":{"position":[[1118,13],[1372,13]]},"34":{"position":[[75,7]]},"46":{"position":[[14,6]]},"48":{"position":[[408,6]]},"55":{"position":[[499,13]]},"60":{"position":[[185,9]]},"62":{"position":[[17,13],[392,13]]},"65":{"position":[[637,13]]},"66":{"position":[[1394,9]]},"68":{"position":[[60,10]]},"71":{"position":[[29,7],[208,13]]},"72":{"position":[[264,13]]},"73":{"position":[[177,13]]},"76":{"position":[[321,10],[409,8],[472,8]]},"77":{"position":[[155,13],[237,6]]},"78":{"position":[[24,6],[492,6]]},"79":{"position":[[366,7],[678,9],[918,8],[960,8],[1004,13]]},"82":{"position":[[21,9]]},"84":{"position":[[87,8],[254,13],[875,13]]},"93":{"position":[[626,13],[1072,13]]},"94":{"position":[[289,13]]}},"keywords":{}}],["inject('class",{"_index":740,"title":{},"content":{"55":{"position":[[546,14]]}},"keywords":{}}],["inject('funct",{"_index":741,"title":{},"content":{"55":{"position":[[608,17]]}},"keywords":{}}],["inject(cls_req",{"_index":895,"title":{},"content":{"78":{"position":[[328,16],[760,17]]}},"keywords":{}}],["inject(request",{"_index":902,"title":{},"content":{"78":{"position":[[803,16]]}},"keywords":{}}],["inject(tenant_connect",{"_index":916,"title":{},"content":{"79":{"position":[[1051,26]]}},"keywords":{}}],["inject:ani",{"_index":288,"title":{},"content":{"10":{"position":[[1016,12]]}},"keywords":{}}],["injectableproxi",{"_index":287,"title":{},"content":{"10":{"position":[[928,17]]},"76":{"position":[[88,18],[155,18]]},"78":{"position":[[242,18]]}},"keywords":{}}],["insid",{"_index":619,"title":{},"content":{"49":{"position":[[278,6]]}},"keywords":{}}],["instal",{"_index":372,"title":{"13":{"position":[[0,12]]},"59":{"position":[[0,13]]},"90":{"position":[[0,13]]}},"content":{"13":{"position":[[0,12],[13,7],[99,7],[254,10]]},"53":{"position":[[527,7]]},"59":{"position":[[17,7]]},"90":{"position":[[17,7],[216,7]]}},"keywords":{}}],["instanc",{"_index":767,"title":{"64":{"position":[[21,8]]}},"content":{"61":{"position":[[115,8],[172,8],[330,8]]},"64":{"position":[[21,8],[261,8]]},"65":{"position":[[509,8]]},"76":{"position":[[492,8],[576,8]]},"82":{"position":[[533,8]]},"91":{"position":[[228,8]]},"96":{"position":[[299,8]]},"97":{"position":[[288,9],[416,8]]},"98":{"position":[[336,10]]}},"keywords":{}}],["instanti",{"_index":300,"title":{},"content":{"11":{"position":[[128,13],[290,13]]},"49":{"position":[[163,13]]}},"keywords":{}}],["instead",{"_index":340,"title":{},"content":{"11":{"position":[[1930,7]]},"12":{"position":[[594,7]]},"47":{"position":[[99,7]]},"65":{"position":[[454,8]]},"74":{"position":[[163,7]]}},"keywords":{}}],["integr",{"_index":724,"title":{},"content":{"53":{"position":[[67,12]]}},"keywords":{}}],["intellisens",{"_index":588,"title":{},"content":{"46":{"position":[[587,12]]}},"keywords":{}}],["intend",{"_index":262,"title":{},"content":{"9":{"position":[[854,6]]}},"keywords":{}}],["interact",{"_index":831,"title":{},"content":{"68":{"position":[[119,11]]}},"keywords":{}}],["intercept(context",{"_index":845,"title":{},"content":{"71":{"position":[[331,18]]},"77":{"position":[[303,18]]}},"keywords":{}}],["interceptor",{"_index":267,"title":{"71":{"position":[[18,12]]},"72":{"position":[[6,11]]},"85":{"position":[[9,11]]}},"content":{"9":{"position":[[1002,13]]},"11":{"position":[[712,12]]},"16":{"position":[[15,12],[110,12]]},"25":{"position":[[10,11]]},"66":{"position":[[625,12]]},"69":{"position":[[82,11]]},"71":{"position":[[11,11]]},"72":{"position":[[166,11]]},"77":{"position":[[142,11]]},"85":{"position":[[9,11],[257,11],[383,12],[560,12],[809,12]]}},"keywords":{}}],["interceptor?:clsinterceptoropt",{"_index":243,"title":{},"content":{"9":{"position":[[258,34]]}},"keywords":{}}],["interest",{"_index":172,"title":{},"content":{"5":{"position":[[172,10]]}},"keywords":{}}],["interfac",{"_index":16,"title":{"1":{"position":[[8,9]]},"96":{"position":[[23,10]]},"97":{"position":[[16,10]]}},"content":{"10":{"position":[[796,9],[988,9]]},"45":{"position":[[36,9],[259,9],[300,9]]},"47":{"position":[[137,10],[275,9]]},"49":{"position":[[402,9]]},"53":{"position":[[458,11]]},"66":{"position":[[439,10],[457,9]]},"97":{"position":[[21,9],[51,9]]}},"keywords":{}}],["interfer",{"_index":563,"title":{},"content":{"43":{"position":[[254,10]]}},"keywords":{}}],["introduc",{"_index":705,"title":{},"content":{"52":{"position":[[842,10]]},"53":{"position":[[174,10],[271,11]]}},"keywords":{}}],["intuit",{"_index":127,"title":{},"content":{"3":{"position":[[885,10]]},"55":{"position":[[144,10]]}},"keywords":{}}],["invest",{"_index":695,"title":{},"content":{"52":{"position":[[647,8]]}},"keywords":{}}],["invok",{"_index":101,"title":{},"content":{"3":{"position":[[209,7]]}},"keywords":{}}],["io",{"_index":709,"title":{},"content":{"52":{"position":[[892,2]]}},"keywords":{}}],["ip",{"_index":834,"title":{"71":{"position":[[7,2]]}},"content":{"69":{"position":[[65,2]]},"71":{"position":[[120,2]]},"73":{"position":[[47,2]]}},"keywords":{}}],["ip.interceptor.t",{"_index":842,"title":{},"content":{"71":{"position":[[190,17]]}},"keywords":{}}],["isact",{"_index":77,"title":{},"content":{"2":{"position":[[1315,11]]}},"keywords":{}}],["isol",{"_index":644,"title":{},"content":{"51":{"position":[[434,9]]},"95":{"position":[[215,9]]}},"keywords":{}}],["isolationlevel",{"_index":988,"title":{},"content":{"95":{"position":[[341,15],[661,15]]}},"keywords":{}}],["issu",{"_index":463,"title":{},"content":{"24":{"position":[[191,7],[331,5]]},"27":{"position":[[283,5]]},"43":{"position":[[285,5]]},"49":{"position":[[715,5]]},"51":{"position":[[870,7]]},"82":{"position":[[661,5]]}},"keywords":{}}],["istransactionact",{"_index":996,"title":{},"content":{"97":{"position":[[763,22]]}},"keywords":{}}],["it'",{"_index":953,"title":{},"content":{"88":{"position":[[53,4]]}},"keywords":{}}],["itself",{"_index":921,"title":{},"content":{"81":{"position":[[87,6],[190,6]]},"82":{"position":[[239,7]]}},"keywords":{}}],["job",{"_index":191,"title":{},"content":{"7":{"position":[[178,4]]}},"keywords":{}}],["keep",{"_index":800,"title":{},"content":{"65":{"position":[[213,4]]}},"keywords":{}}],["kept",{"_index":451,"title":{},"content":{"21":{"position":[[157,4]]}},"keywords":{}}],["key",{"_index":33,"title":{},"content":{"2":{"position":[[253,4],[371,3]]},"11":{"position":[[441,4],[1680,4],[1810,3]]},"46":{"position":[[608,5]]},"49":{"position":[[597,4]]},"65":{"position":[[969,5]]},"84":{"position":[[512,5],[1042,5]]}},"keywords":{}}],["keyof",{"_index":29,"title":{},"content":{"2":{"position":[[195,5],[342,5],[407,5],[489,5]]}},"keywords":{}}],["know",{"_index":511,"title":{},"content":{"28":{"position":[[334,4]]},"52":{"position":[[554,4]]}},"keywords":{}}],["known",{"_index":346,"title":{},"content":{"11":{"position":[[2075,5]]},"24":{"position":[[185,5]]}},"keywords":{}}],["lack",{"_index":733,"title":{},"content":{"53":{"position":[[556,5]]}},"keywords":{}}],["languag",{"_index":714,"title":{},"content":{"52":{"position":[[972,9]]}},"keywords":{}}],["late",{"_index":560,"title":{},"content":{"43":{"position":[[102,4]]}},"keywords":{}}],["later",{"_index":419,"title":{},"content":{"20":{"position":[[649,5]]},"83":{"position":[[211,5]]},"91":{"position":[[106,6]]}},"keywords":{}}],["leak",{"_index":529,"title":{},"content":{"31":{"position":[[127,5],[305,4]]}},"keywords":{}}],["learn",{"_index":962,"title":{},"content":{"91":{"position":[[120,5]]}},"keywords":{}}],["less",{"_index":532,"title":{},"content":{"31":{"position":[[428,4]]}},"keywords":{}}],["level",{"_index":111,"title":{},"content":{"3":{"position":[[388,5]]},"12":{"position":[[345,5]]},"51":{"position":[[294,5]]},"65":{"position":[[66,5]]},"95":{"position":[[225,5]]}},"keywords":{}}],["librari",{"_index":167,"title":{},"content":{"5":{"position":[[67,7]]},"13":{"position":[[207,10]]},"21":{"position":[[197,8]]},"30":{"position":[[72,8]]},"51":{"position":[[33,7]]},"52":{"position":[[119,7],[1013,7]]},"53":{"position":[[91,9],[518,8]]},"68":{"position":[[6,7]]},"69":{"position":[[35,7]]},"74":{"position":[[46,7]]},"90":{"position":[[189,8],[274,9],[380,10]]},"91":{"position":[[40,7]]},"97":{"position":[[239,8]]}},"keywords":{}}],["life",{"_index":136,"title":{},"content":{"4":{"position":[[111,4]]},"6":{"position":[[157,4]]},"74":{"position":[[87,4]]}},"keywords":{}}],["lifecycl",{"_index":823,"title":{},"content":{"66":{"position":[[726,9],[849,9]]},"68":{"position":[[267,9]]},"83":{"position":[[238,9]]}},"keywords":{}}],["lifetim",{"_index":141,"title":{},"content":{"4":{"position":[[210,8]]},"31":{"position":[[892,8]]}},"keywords":{}}],["limit",{"_index":669,"title":{},"content":{"52":{"position":[[167,8]]},"74":{"position":[[237,8]]}},"keywords":{}}],["link",{"_index":737,"title":{},"content":{"55":{"position":[[155,5]]}},"keywords":{}}],["list",{"_index":279,"title":{},"content":{"10":{"position":[[501,4],[625,4]]},"21":{"position":[[31,5]]},"28":{"position":[[307,6],[389,6]]},"37":{"position":[[7,4]]}},"keywords":{}}],["local",{"_index":130,"title":{},"content":{"4":{"position":[[26,5]]}},"keywords":{}}],["log",{"_index":146,"title":{},"content":{"4":{"position":[[323,3]]},"20":{"position":[[119,8],[1497,4]]},"51":{"position":[[106,7]]},"66":{"position":[[518,7]]}},"keywords":{}}],["log(messag",{"_index":432,"title":{},"content":{"20":{"position":[[1198,12]]}},"keywords":{}}],["logger",{"_index":428,"title":{},"content":{"20":{"position":[[1097,7],[1433,7]]}},"keywords":{}}],["logic",{"_index":957,"title":{},"content":{"90":{"position":[[145,5]]}},"keywords":{}}],["longer",{"_index":932,"title":{},"content":{"82":{"position":[[633,6]]}},"keywords":{}}],["look",{"_index":873,"title":{},"content":{"76":{"position":[[17,4]]},"79":{"position":[[61,4]]}},"keywords":{}}],["lose",{"_index":347,"title":{},"content":{"11":{"position":[[2084,4]]}},"keywords":{}}],["loss",{"_index":468,"title":{},"content":{"24":{"position":[[405,5]]},"31":{"position":[[520,5]]}},"keywords":{}}],["lost",{"_index":490,"title":{},"content":{"27":{"position":[[258,4]]},"31":{"position":[[166,4],[362,5]]}},"keywords":{}}],["lot",{"_index":656,"title":{},"content":{"51":{"position":[[857,3]]},"94":{"position":[[117,3]]}},"keywords":{}}],["made",{"_index":678,"title":{},"content":{"52":{"position":[[352,4]]},"78":{"position":[[178,4]]}},"keywords":{}}],["main",{"_index":992,"title":{},"content":{"97":{"position":[[38,4]]}},"keywords":{}}],["main.t",{"_index":564,"title":{},"content":{"43":{"position":[[363,7]]}},"keywords":{}}],["maintain",{"_index":448,"title":{},"content":{"21":{"position":[[58,10]]},"66":{"position":[[198,10]]}},"keywords":{}}],["major",{"_index":525,"title":{},"content":{"30":{"position":[[50,5]]}},"keywords":{}}],["make",{"_index":125,"title":{},"content":{"3":{"position":[[862,4]]},"4":{"position":[[296,5],[376,4]]},"6":{"position":[[147,4]]},"9":{"position":[[407,4]]},"10":{"position":[[897,4]]},"12":{"position":[[631,4]]},"27":{"position":[[559,5]]},"46":{"position":[[90,4]]},"52":{"position":[[692,6],[796,6]]},"63":{"position":[[245,4]]},"73":{"position":[[123,6]]},"76":{"position":[[120,4]]},"78":{"position":[[649,4]]},"79":{"position":[[637,4]]},"85":{"position":[[869,5]]},"91":{"position":[[310,4]]},"92":{"position":[[489,4]]},"93":{"position":[[447,5]]},"94":{"position":[[145,5]]}},"keywords":{}}],["manag",{"_index":375,"title":{},"content":{"13":{"position":[[74,8]]},"37":{"position":[[23,7]]},"97":{"position":[[816,7]]}},"keywords":{}}],["mani",{"_index":686,"title":{},"content":{"52":{"position":[[542,4]]}},"keywords":{}}],["manipul",{"_index":20,"title":{},"content":{"2":{"position":[[57,10]]}},"keywords":{}}],["manner",{"_index":673,"title":{},"content":{"52":{"position":[[268,7]]}},"keywords":{}}],["manual",{"_index":84,"title":{"41":{"position":[[0,9]]},"88":{"position":[[0,9]]}},"content":{"2":{"position":[[1440,8],[1529,8]]},"7":{"position":[[577,9]]},"11":{"position":[[147,10],[309,9]]},"24":{"position":[[317,9],[452,8]]},"27":{"position":[[70,8]]},"29":{"position":[[124,8]]},"31":{"position":[[1030,8]]},"42":{"position":[[83,8]]},"43":{"position":[[478,8]]},"83":{"position":[[415,8]]},"85":{"position":[[456,8],[477,8]]},"88":{"position":[[87,8]]}},"keywords":{}}],["math.random",{"_index":319,"title":{},"content":{"11":{"position":[[828,13]]},"20":{"position":[[334,14]]},"65":{"position":[[1120,14]]},"93":{"position":[[1332,13]]}},"keywords":{}}],["mean",{"_index":538,"title":{},"content":{"31":{"position":[[753,6],[1004,5]]},"55":{"position":[[73,5]]},"68":{"position":[[95,5]]},"85":{"position":[[845,5]]},"98":{"position":[[134,5]]}},"keywords":{}}],["member",{"_index":731,"title":{},"content":{"53":{"position":[[447,7]]}},"keywords":{}}],["mercuriu",{"_index":481,"title":{},"content":{"25":{"position":[[383,9]]},"27":{"position":[[338,11]]}},"keywords":{}}],["messag",{"_index":434,"title":{},"content":{"20":{"position":[[1262,13]]}},"keywords":{}}],["metadata",{"_index":631,"title":{},"content":{"51":{"position":[[93,8]]}},"keywords":{}}],["method",{"_index":92,"title":{"18":{"position":[[18,6]]}},"content":{"3":{"position":[[19,7],[199,6]]},"9":{"position":[[25,6]]},"10":{"position":[[28,6],[87,6],[163,6]]},"12":{"position":[[247,6]]},"18":{"position":[[23,6]]},"19":{"position":[[80,6]]},"20":{"position":[[1012,6]]},"25":{"position":[[340,7]]},"27":{"position":[[355,6]]},"29":{"position":[[211,6]]},"31":{"position":[[277,7],[450,7],[498,6],[611,6]]},"36":{"position":[[41,6]]},"43":{"position":[[34,6],[354,7]]},"46":{"position":[[753,6]]},"56":{"position":[[164,6]]},"62":{"position":[[165,7]]},"64":{"position":[[40,7],[132,8]]},"65":{"position":[[59,6],[98,6],[133,6],[629,7]]},"66":{"position":[[736,6],[859,6]]},"79":{"position":[[143,7]]},"81":{"position":[[157,6]]},"85":{"position":[[139,6],[862,6]]},"88":{"position":[[475,7]]},"92":{"position":[[93,6]]},"93":{"position":[[522,6]]},"94":{"position":[[52,6],[226,6]]},"95":{"position":[[30,6]]}},"keywords":{}}],["middlewar",{"_index":266,"title":{"11":{"position":[[0,10]]},"15":{"position":[[0,11]]},"39":{"position":[[8,10]]}},"content":{"9":{"position":[[942,10]]},"15":{"position":[[12,10],[124,11]]},"18":{"position":[[186,11]]},"20":{"position":[[794,11]]},"24":{"position":[[375,11]]},"33":{"position":[[70,11]]},"34":{"position":[[146,11]]},"40":{"position":[[70,11]]},"41":{"position":[[113,10],[163,12]]},"42":{"position":[[177,11]]},"43":{"position":[[70,10],[148,11],[467,10],[615,10],[663,10]]},"66":{"position":[[612,12]]},"69":{"position":[[230,11]]},"70":{"position":[[206,11]]},"83":{"position":[[458,11]]}},"keywords":{}}],["middleware/guard/interceptor",{"_index":304,"title":{},"content":{"11":{"position":[[225,28]]},"20":{"position":[[205,29]]},"83":{"position":[[87,30]]}},"keywords":{}}],["middleware?:clsmiddlewareopt",{"_index":238,"title":{},"content":{"9":{"position":[[71,32]]}},"keywords":{}}],["middlewareconsum",{"_index":556,"title":{},"content":{"42":{"position":[[291,19]]}},"keywords":{}}],["migrat",{"_index":522,"title":{"30":{"position":[[0,9]]}},"content":{"30":{"position":[[0,9],[102,9]]},"53":{"position":[[122,9],[287,9]]}},"keywords":{}}],["mind",{"_index":801,"title":{},"content":{"65":{"position":[[221,5]]}},"keywords":{}}],["minor",{"_index":727,"title":{},"content":{"53":{"position":[[242,6]]},"66":{"position":[[322,5]]}},"keywords":{}}],["miss",{"_index":666,"title":{},"content":{"52":{"position":[[91,6]]}},"keywords":{}}],["mix",{"_index":681,"title":{},"content":{"52":{"position":[[406,3]]},"66":{"position":[[1316,5]]}},"keywords":{}}],["mock",{"_index":368,"title":{},"content":{"12":{"position":[[652,4]]}},"keywords":{}}],["modif",{"_index":114,"title":{},"content":{"3":{"position":[[459,13],[577,13]]}},"keywords":{}}],["modul",{"_index":179,"title":{"8":{"position":[[0,6]]},"42":{"position":[[7,7]]},"47":{"position":[[17,6]]}},"content":{"6":{"position":[[105,6]]},"9":{"position":[[416,6],[492,8],[587,7]]},"10":{"position":[[518,7],[748,7]]},"13":{"position":[[128,6]]},"33":{"position":[[15,9]]},"34":{"position":[[15,9]]},"40":{"position":[[15,9]]},"42":{"position":[[99,7],[122,9]]},"47":{"position":[[253,6]]},"48":{"position":[[231,9]]},"57":{"position":[[391,6]]},"60":{"position":[[75,6]]},"63":{"position":[[218,6]]},"66":{"position":[[373,6],[1031,7]]},"70":{"position":[[151,9]]},"76":{"position":[[355,7]]},"78":{"position":[[527,7],[609,7]]},"85":{"position":[[342,9],[519,9]]},"87":{"position":[[32,9]]},"88":{"position":[[127,7],[150,9]]},"92":{"position":[[349,9]]},"96":{"position":[[130,7]]}},"keywords":{}}],["more",{"_index":126,"title":{},"content":{"3":{"position":[[880,4]]},"4":{"position":[[522,4]]},"9":{"position":[[682,4]]},"10":{"position":[[1467,4]]},"41":{"position":[[82,4]]},"48":{"position":[[10,4]]},"49":{"position":[[729,4]]},"55":{"position":[[139,4]]},"56":{"position":[[80,4]]},"64":{"position":[[190,4]]},"74":{"position":[[71,4]]},"83":{"position":[[253,4]]},"90":{"position":[[409,4]]},"92":{"position":[[650,4]]},"94":{"position":[[160,4]]}},"keywords":{}}],["motiv",{"_index":661,"title":{"52":{"position":[[0,11]]}},"content":{},"keywords":{}}],["mount",{"_index":303,"title":{"72":{"position":[[0,5]]}},"content":{"11":{"position":[[215,5]]},"15":{"position":[[138,6]]},"16":{"position":[[125,6]]},"18":{"position":[[200,6]]},"20":{"position":[[808,6]]},"24":{"position":[[124,5],[246,8],[309,7],[428,5]]},"26":{"position":[[156,5]]},"27":{"position":[[62,7]]},"31":{"position":[[857,5],[1039,5]]},"33":{"position":[[84,6]]},"34":{"position":[[160,6]]},"40":{"position":[[84,6]]},"42":{"position":[[24,5],[191,6]]},"43":{"position":[[90,7],[319,5],[457,5]]},"70":{"position":[[42,5],[220,6]]},"72":{"position":[[4,8]]},"85":{"position":[[398,6],[468,5],[575,6]]},"87":{"position":[[5,6],[82,6]]},"88":{"position":[[72,5],[200,6],[323,5]]}},"keywords":{}}],["mount?:boolean",{"_index":301,"title":{},"content":{"11":{"position":[[159,14]]}},"keywords":{}}],["much",{"_index":864,"title":{},"content":{"74":{"position":[[16,4]]}},"keywords":{}}],["multi",{"_index":637,"title":{},"content":{"51":{"position":[[246,5]]}},"keywords":{}}],["multipl",{"_index":50,"title":{},"content":{"2":{"position":[[630,8]]},"9":{"position":[[868,8]]},"25":{"position":[[72,8],[105,8]]},"98":{"position":[[157,8],[311,8]]}},"keywords":{}}],["my.logger.t",{"_index":429,"title":{},"content":{"20":{"position":[[1105,12]]}},"keywords":{}}],["my.service.t",{"_index":436,"title":{},"content":{"20":{"position":[[1358,13]]}},"keywords":{}}],["myclsmodul",{"_index":608,"title":{},"content":{"48":{"position":[[379,11]]}},"keywords":{}}],["myclsservic",{"_index":606,"title":{},"content":{"48":{"position":[[178,12],[300,13],[354,15],[415,12]]}},"keywords":{}}],["myclsstor",{"_index":575,"title":{},"content":{"45":{"position":[[310,10]]}},"keywords":{}}],["mycontextservic",{"_index":405,"title":{},"content":{"19":{"position":[[264,16],[324,16],[423,17],[451,17]]}},"keywords":{}}],["mycontextservice(new",{"_index":408,"title":{},"content":{"19":{"position":[[347,20]]}},"keywords":{}}],["mylogg",{"_index":430,"title":{},"content":{"20":{"position":[[1138,8],[1441,10]]}},"keywords":{}}],["myplugin",{"_index":547,"title":{},"content":{"36":{"position":[[101,12]]}},"keywords":{}}],["myservic",{"_index":437,"title":{},"content":{"20":{"position":[[1392,9]]},"46":{"position":[[133,9]]}},"keywords":{}}],["name",{"_index":657,"title":{},"content":{"51":{"position":[[890,4]]},"53":{"position":[[424,6]]},"62":{"position":[[748,5],[754,5]]},"66":{"position":[[489,4],[543,5]]},"76":{"position":[[434,5]]},"93":{"position":[[965,4]]},"94":{"position":[[593,4]]},"95":{"position":[[485,4],[768,4]]}},"keywords":{}}],["namespac",{"_index":400,"title":{"19":{"position":[[0,9]]}},"content":{"19":{"position":[[1,9],[157,11],[186,10]]}},"keywords":{}}],["name}@email.com",{"_index":786,"title":{},"content":{"62":{"position":[[767,19]]}},"keywords":{}}],["nativ",{"_index":660,"title":{},"content":{"51":{"position":[[987,6]]}},"keywords":{}}],["necessari",{"_index":344,"title":{},"content":{"11":{"position":[[2040,10]]},"12":{"position":[[562,10]]},"84":{"position":[[14,9]]},"96":{"position":[[255,10]]}},"keywords":{}}],["need",{"_index":143,"title":{},"content":{"4":{"position":[[253,4]]},"7":{"position":[[95,4],[559,4]]},"24":{"position":[[297,5]]},"27":{"position":[[50,5]]},"29":{"position":[[179,6]]},"31":{"position":[[473,6]]},"41":{"position":[[69,4]]},"43":{"position":[[165,4]]},"47":{"position":[[163,4]]},"63":{"position":[[198,4]]},"78":{"position":[[484,4]]},"88":{"position":[[8,4]]},"90":{"position":[[208,4]]},"92":{"position":[[62,4],[481,4]]}},"keywords":{}}],["neglig",{"_index":707,"title":{},"content":{"52":{"position":[[865,10]]}},"keywords":{}}],["nest",{"_index":98,"title":{},"content":{"3":{"position":[[159,6]]},"24":{"position":[[33,4]]},"45":{"position":[[171,6]]},"49":{"position":[[590,6]]}},"keywords":{}}],["nest'",{"_index":359,"title":{},"content":{"12":{"position":[[307,6]]},"26":{"position":[[12,6]]},"85":{"position":[[802,6]]}},"keywords":{}}],["nestfactory.create(appmodul",{"_index":565,"title":{},"content":{"43":{"position":[[412,30]]}},"keywords":{}}],["nestinterceptor",{"_index":844,"title":{},"content":{"71":{"position":[[264,15]]},"77":{"position":[[209,15]]}},"keywords":{}}],["nestj",{"_index":13,"title":{"50":{"position":[[0,6]]},"89":{"position":[[0,7]]}},"content":{"4":{"position":[[154,7]]},"13":{"position":[[107,6]]},"21":{"position":[[86,6],[131,7]]},"37":{"position":[[48,6]]},"43":{"position":[[236,6]]},"47":{"position":[[260,7]]},"52":{"position":[[1,6]]},"59":{"position":[[25,7]]},"66":{"position":[[366,6]]},"90":{"position":[[25,7]]},"91":{"position":[[56,7]]},"92":{"position":[[47,6],[159,7],[212,8],[284,8]]},"96":{"position":[[123,6]]},"98":{"position":[[36,7]]}},"keywords":{"0":{"position":[[56,6]]},"1":{"position":[[56,6]]},"4":{"position":[[56,6]]},"5":{"position":[[56,6]]},"6":{"position":[[56,6]]},"7":{"position":[[56,6]]},"8":{"position":[[56,6]]},"12":{"position":[[56,6]]},"13":{"position":[[56,6]]},"14":{"position":[[56,6]]},"17":{"position":[[56,6]]},"20":{"position":[[56,6]]},"21":{"position":[[56,6]]},"22":{"position":[[56,6]]},"23":{"position":[[56,6]]},"30":{"position":[[56,6]]},"31":{"position":[[56,6]]},"32":{"position":[[56,6]]},"35":{"position":[[56,6]]},"39":{"position":[[56,6]]},"44":{"position":[[56,6]]},"50":{"position":[[56,6]]},"54":{"position":[[56,6]]},"58":{"position":[[56,6]]},"64":{"position":[[56,6]]},"65":{"position":[[56,6]]},"66":{"position":[[56,6]]},"67":{"position":[[56,6]]},"75":{"position":[[56,6]]},"85":{"position":[[56,6]]},"86":{"position":[[56,6]]},"89":{"position":[[56,6]]}}}],["nestjs'",{"_index":353,"title":{},"content":{"12":{"position":[[65,8]]}},"keywords":{}}],["nestjs/common",{"_index":380,"title":{},"content":{"13":{"position":[[192,14]]}},"keywords":{}}],["nestjs/cor",{"_index":379,"title":{},"content":{"13":{"position":[[175,12]]}},"keywords":{}}],["nestjs/graphql",{"_index":482,"title":{"26":{"position":[[0,15]]},"27":{"position":[[0,15]]}},"content":{},"keywords":{}}],["nestmodul",{"_index":554,"title":{},"content":{"42":{"position":[[258,10]]}},"keywords":{}}],["never",{"_index":978,"title":{},"content":{"93":{"position":[[1379,5]]}},"keywords":{}}],["new",{"_index":66,"title":{},"content":{"2":{"position":[[906,3],[1175,3]]},"3":{"position":[[564,3],[669,3]]},"19":{"position":[[343,3]]},"30":{"position":[[46,3]]},"36":{"position":[[96,4]]},"43":{"position":[[501,3]]},"52":{"position":[[530,3]]},"53":{"position":[[1,3]]},"56":{"position":[[243,3]]},"60":{"position":[[32,3],[145,3]]},"92":{"position":[[415,3],[555,3],[880,3]]},"93":{"position":[[83,3],[326,3]]}},"keywords":{}}],["next",{"_index":341,"title":{},"content":{"11":{"position":[[1954,6]]},"31":{"position":[[1113,4]]},"71":{"position":[[368,5]]},"77":{"position":[[340,5]]}},"keywords":{}}],["next.handl",{"_index":852,"title":{},"content":{"71":{"position":[[549,14]]},"77":{"position":[[559,14]]}},"keywords":{}}],["nice",{"_index":690,"title":{},"content":{"52":{"position":[[599,4]]}},"keywords":{}}],["node",{"_index":702,"title":{},"content":{"52":{"position":[[803,4]]}},"keywords":{}}],["node_modul",{"_index":788,"title":{},"content":{"63":{"position":[[42,13]]}},"keywords":{}}],["nodeconf",{"_index":692,"title":{},"content":{"52":{"position":[[614,8]]}},"keywords":{}}],["non",{"_index":837,"title":{},"content":{"69":{"position":[[257,3]]},"97":{"position":[[391,3]]}},"keywords":{}}],["nonexist",{"_index":594,"title":{},"content":{"46":{"position":[[909,11]]}},"keywords":{}}],["normal",{"_index":884,"title":{},"content":{"77":{"position":[[480,6]]},"79":{"position":[[11,6]]}},"keywords":{}}],["notat",{"_index":574,"title":{},"content":{"45":{"position":[[198,9]]}},"keywords":{}}],["note",{"_index":121,"title":{},"content":{"3":{"position":[[771,4]]},"9":{"position":[[841,5]]},"12":{"position":[[517,5]]},"43":{"position":[[593,5]]},"69":{"position":[[163,4]]},"82":{"position":[[480,4]]},"85":{"position":[[778,4],[790,5]]},"88":{"position":[[413,5]]},"93":{"position":[[1359,4]]},"98":{"position":[[8,4]]}},"keywords":{}}],["notexist",{"_index":596,"title":{},"content":{"46":{"position":[[964,8]]}},"keywords":{}}],["noth",{"_index":507,"title":{},"content":{"28":{"position":[[205,7]]}},"keywords":{}}],["notic",{"_index":513,"title":{},"content":{"28":{"position":[[370,7]]},"93":{"position":[[1364,6]]}},"keywords":{}}],["now",{"_index":363,"title":{},"content":{"12":{"position":[[436,3]]},"19":{"position":[[71,3]]},"47":{"position":[[149,3]]},"48":{"position":[[396,3]]},"51":{"position":[[476,4]]},"55":{"position":[[109,3],[263,3]]},"93":{"position":[[1,3]]}},"keywords":{}}],["npm",{"_index":373,"title":{},"content":{"13":{"position":[[34,3],[95,3]]},"59":{"position":[[13,3]]},"90":{"position":[[13,3]]}},"keywords":{}}],["npmyarnpnpm",{"_index":376,"title":{},"content":{"13":{"position":[[83,11]]},"59":{"position":[[1,11]]},"90":{"position":[[1,11]]}},"keywords":{}}],["number",{"_index":578,"title":{},"content":{"45":{"position":[[370,7]]},"46":{"position":[[422,6],[503,7]]},"47":{"position":[[326,7]]},"49":{"position":[[465,7]]},"62":{"position":[[545,7]]},"74":{"position":[[250,6]]},"76":{"position":[[198,7]]},"78":{"position":[[293,7]]},"93":{"position":[[1234,8],[1324,7]]}},"keywords":{}}],["object",{"_index":63,"title":{},"content":{"2":{"position":[[810,6],[1090,6]]},"3":{"position":[[58,6]]},"9":{"position":[[107,6],[198,6],[296,6]]},"10":{"position":[[1274,6],[1358,8],[1421,7],[1441,9]]},"11":{"position":[[658,6],[1618,6],[1748,6]]},"15":{"position":[[48,7]]},"16":{"position":[[49,6]]},"45":{"position":[[178,7]]},"46":{"position":[[830,6]]},"49":{"position":[[25,6]]},"55":{"position":[[120,9],[727,8]]},"65":{"position":[[446,7]]},"77":{"position":[[487,6]]},"95":{"position":[[108,6],[143,6]]},"96":{"position":[[57,6]]},"97":{"position":[[312,6],[609,6]]}},"keywords":{}}],["observable<any>",{"_index":847,"title":{},"content":{"71":{"position":[[388,21]]},"77":{"position":[[360,21]]}},"keywords":{}}],["offend",{"_index":470,"title":{},"content":{"24":{"position":[[473,9]]}},"keywords":{}}],["older",{"_index":485,"title":{},"content":{"27":{"position":[[5,5]]}},"keywords":{}}],["omit",{"_index":553,"title":{},"content":{"42":{"position":[[15,4]]}},"keywords":{}}],["on",{"_index":117,"title":{},"content":{"3":{"position":[[568,4]]},"9":{"position":[[1049,3]]},"20":{"position":[[769,4]]},"24":{"position":[[483,4]]},"52":{"position":[[98,4]]},"61":{"position":[[374,5]]},"77":{"position":[[117,3]]},"90":{"position":[[224,3]]},"97":{"position":[[727,3]]},"98":{"position":[[194,3]]}},"keywords":{}}],["onc",{"_index":160,"title":{},"content":{"4":{"position":[[555,4]]},"81":{"position":[[136,4]]},"83":{"position":[[248,4]]}},"keywords":{}}],["onclsinit",{"_index":88,"title":{},"content":{"2":{"position":[[1546,9]]},"11":{"position":[[1362,9]]},"66":{"position":[[654,11]]}},"keywords":{}}],["onmoduledestroy",{"_index":827,"title":{},"content":{"66":{"position":[[949,17]]}},"keywords":{}}],["onmoduleinit",{"_index":824,"title":{},"content":{"66":{"position":[[789,14]]}},"keywords":{}}],["oper",{"_index":476,"title":{},"content":{"25":{"position":[[183,9]]},"52":{"position":[[895,9]]},"55":{"position":[[95,8]]},"93":{"position":[[244,10]]}},"keywords":{}}],["option",{"_index":6,"title":{"8":{"position":[[7,7]]},"11":{"position":[[22,8]]},"56":{"position":[[28,7]]},"95":{"position":[[20,8]]}},"content":{"0":{"position":[[84,8]]},"2":{"position":[[782,10],[802,7],[1062,10],[1082,7]]},"3":{"position":[[50,7]]},"9":{"position":[[130,7],[221,7],[319,7]]},"10":{"position":[[283,8],[401,9],[492,8],[616,8]]},"11":{"position":[[588,8]]},"20":{"position":[[153,6],[275,8],[406,7]]},"24":{"position":[[130,6]]},"26":{"position":[[162,7]]},"27":{"position":[[224,8]]},"31":{"position":[[807,7]]},"42":{"position":[[30,6]]},"55":{"position":[[285,6]]},"56":{"position":[[29,6],[211,7]]},"57":{"position":[[563,6]]},"66":{"position":[[396,7],[1299,7]]},"83":{"position":[[363,7]]},"85":{"position":[[305,8]]},"92":{"position":[[616,8]]},"95":{"position":[[80,8]]},"96":{"position":[[49,7]]},"97":{"position":[[571,10]]}},"keywords":{}}],["order",{"_index":291,"title":{},"content":{"10":{"position":[[1193,5]]},"27":{"position":[[100,5]]},"41":{"position":[[104,5]]},"43":{"position":[[274,6]]},"82":{"position":[[4,5],[109,5]]}},"keywords":{}}],["origin",{"_index":658,"title":{},"content":{"51":{"position":[[910,8]]},"55":{"position":[[164,8]]}},"keywords":{}}],["otel",{"_index":716,"title":{},"content":{"52":{"position":[[1027,6]]}},"keywords":{}}],["other",{"_index":499,"title":{"28":{"position":[[0,7]]}},"content":{},"keywords":{}}],["otherservic",{"_index":804,"title":{},"content":{"65":{"position":[[735,13],[749,13]]}},"keywords":{}}],["otherwis",{"_index":491,"title":{},"content":{"27":{"position":[[263,9]]},"28":{"position":[[233,10]]},"84":{"position":[[60,9]]},"93":{"position":[[1506,9]]}},"keywords":{}}],["out",{"_index":349,"title":{"12":{"position":[[9,3]]}},"content":{"12":{"position":[[9,3]]},"48":{"position":[[153,3]]}},"keywords":{}}],["outsid",{"_index":184,"title":{"7":{"position":[[6,7]]},"84":{"position":[[0,7]]}},"content":{"7":{"position":[[6,7],[113,7]]},"12":{"position":[[142,7],[296,7]]},"61":{"position":[[256,7]]},"64":{"position":[[351,7]]},"65":{"position":[[160,7]]},"84":{"position":[[24,7]]}},"keywords":{}}],["over",{"_index":551,"title":{},"content":{"41":{"position":[[95,4]]},"64":{"position":[[216,4]]}},"keywords":{}}],["overhead",{"_index":706,"title":{},"content":{"52":{"position":[[853,8]]}},"keywords":{}}],["overrid",{"_index":96,"title":{},"content":{"3":{"position":[[127,10],[812,9]]},"56":{"position":[[53,8],[348,10]]}},"keywords":{}}],["packag",{"_index":351,"title":{},"content":{"12":{"position":[[30,7]]},"13":{"position":[[38,7],[66,7]]},"20":{"position":[[133,7]]},"24":{"position":[[6,7]]},"26":{"position":[[62,7]]},"28":{"position":[[271,7]]},"90":{"position":[[439,7]]}},"keywords":{}}],["page",{"_index":548,"title":{},"content":{"37":{"position":[[86,5]]}},"keywords":{}}],["paramet",{"_index":23,"title":{"46":{"position":[[13,10]]}},"content":{"2":{"position":[[97,9],[830,10],[1110,10]]},"9":{"position":[[807,10]]},"10":{"position":[[388,9]]},"11":{"position":[[72,10],[1544,11]]},"15":{"position":[[91,11]]},"16":{"position":[[78,10]]},"20":{"position":[[511,10]]},"46":{"position":[[48,9]]},"47":{"position":[[188,9]]},"51":{"position":[[787,10]]},"97":{"position":[[629,10]]}},"keywords":{}}],["parent",{"_index":104,"title":{},"content":{"3":{"position":[[264,6],[350,6],[434,6],[707,6]]},"10":{"position":[[733,6]]},"76":{"position":[[348,6]]},"97":{"position":[[748,6]]}},"keywords":{}}],["part",{"_index":187,"title":{},"content":{"7":{"position":[[42,4]]},"11":{"position":[[1394,4]]}},"keywords":{}}],["pass",{"_index":276,"title":{"95":{"position":[[0,7]]}},"content":{"10":{"position":[[434,6],[704,7]]},"15":{"position":[[60,6]]},"16":{"position":[[59,6]]},"20":{"position":[[242,4]]},"27":{"position":[[179,4]]},"36":{"position":[[18,4]]},"43":{"position":[[683,6]]},"51":{"position":[[458,7],[762,7]]},"61":{"position":[[189,6]]},"65":{"position":[[605,6]]},"69":{"position":[[144,7]]},"73":{"position":[[90,7]]},"85":{"position":[[227,4]]},"92":{"position":[[70,4]]}},"keywords":{}}],["passport",{"_index":649,"title":{},"content":{"51":{"position":[[620,9]]}},"keywords":{}}],["path",{"_index":618,"title":{},"content":{"49":{"position":[[272,5],[372,5],[533,5]]}},"keywords":{}}],["peer",{"_index":377,"title":{},"content":{"13":{"position":[[155,4]]}},"keywords":{}}],["peopl",{"_index":687,"title":{},"content":{"52":{"position":[[547,6]]}},"keywords":{}}],["per",{"_index":997,"title":{},"content":{"98":{"position":[[112,3]]}},"keywords":{}}],["person",{"_index":698,"title":{},"content":{"52":{"position":[[675,8]]}},"keywords":{}}],["phase",{"_index":947,"title":{},"content":{"84":{"position":[[867,6]]}},"keywords":{}}],["piec",{"_index":799,"title":{},"content":{"64":{"position":[[282,5]]}},"keywords":{}}],["place",{"_index":882,"title":{},"content":{"77":{"position":[[121,5]]},"85":{"position":[[29,5]]}},"keywords":{}}],["plan",{"_index":999,"title":{},"content":{"98":{"position":[[294,5]]}},"keywords":{}}],["platform",{"_index":500,"title":{},"content":{"28":{"position":[[69,9],[173,8],[286,8]]}},"keywords":{}}],["pleas",{"_index":261,"title":{},"content":{"9":{"position":[[834,6]]},"12":{"position":[[510,6]]},"28":{"position":[[320,6]]},"43":{"position":[[586,6]]},"65":{"position":[[206,6]]},"82":{"position":[[650,6]]},"85":{"position":[[783,6]]},"88":{"position":[[406,6]]},"98":{"position":[[1,6]]}},"keywords":{}}],["pleasant",{"_index":699,"title":{},"content":{"52":{"position":[[716,8]]}},"keywords":{}}],["plethora",{"_index":663,"title":{},"content":{"52":{"position":[[44,8]]}},"keywords":{}}],["plugin",{"_index":91,"title":{"21":{"position":[[10,7]]},"35":{"position":[[0,7]]},"37":{"position":[[10,8]]},"38":{"position":[[11,7]]},"66":{"position":[[0,6]]},"92":{"position":[[0,6]]}},"content":{"2":{"position":[[1576,8]]},"11":{"position":[[1381,7]]},"21":{"position":[[10,7],[41,7]]},"36":{"position":[[10,7],[87,8]]},"37":{"position":[[15,7],[78,7]]},"38":{"position":[[20,7],[36,6]]},"53":{"position":[[36,7]]},"60":{"position":[[21,8]]},"63":{"position":[[61,6]]},"66":{"position":[[0,6],[23,6],[167,7],[260,7],[340,6],[501,7],[1071,6],[1144,6],[1225,6],[1292,6],[1413,6]]},"90":{"position":[[57,6]]},"92":{"position":[[35,6],[404,8],[514,6]]},"93":{"position":[[22,6]]},"96":{"position":[[170,6],[351,7]]},"97":{"position":[[68,7]]},"98":{"position":[[62,6],[229,7]]}},"keywords":{}}],["plugin)us",{"_index":646,"title":{},"content":{"51":{"position":[[514,12]]}},"keywords":{}}],["point",{"_index":52,"title":{},"content":{"2":{"position":[[645,7]]},"83":{"position":[[217,5]]}},"keywords":{}}],["popul",{"_index":880,"title":{"77":{"position":[[0,8]]},"78":{"position":[[5,10]]}},"content":{},"keywords":{}}],["possibl",{"_index":354,"title":{},"content":{"12":{"position":[[107,8]]},"31":{"position":[[110,8],[904,8]]},"45":{"position":[[7,8]]},"49":{"position":[[190,8],[263,8]]},"52":{"position":[[728,9]]},"78":{"position":[[12,8]]}},"keywords":{}}],["pre",{"_index":723,"title":{},"content":{"53":{"position":[[57,3]]}},"keywords":{}}],["prefer",{"_index":459,"title":{},"content":{"24":{"position":[[73,9]]},"26":{"position":[[78,9]]},"88":{"position":[[58,10]]}},"keywords":{}}],["prepar",{"_index":944,"title":{},"content":{"84":{"position":[[473,7],[792,7]]}},"keywords":{}}],["present",{"_index":937,"title":{},"content":{"83":{"position":[[273,7]]}},"keywords":{}}],["pretti",{"_index":863,"title":{},"content":{"74":{"position":[[9,6]]}},"keywords":{}}],["previou",{"_index":536,"title":{},"content":{"31":{"position":[[688,8]]},"43":{"position":[[25,8]]}},"keywords":{}}],["primit",{"_index":920,"title":{"81":{"position":[[3,9]]}},"content":{"81":{"position":[[41,9]]}},"keywords":{}}],["prior",{"_index":561,"title":{},"content":{"43":{"position":[[177,5]]},"82":{"position":[[497,5]]}},"keywords":{}}],["prisma",{"_index":757,"title":{"58":{"position":[[0,6]]}},"content":{"59":{"position":[[59,6]]},"63":{"position":[[7,6]]},"90":{"position":[[300,6],[312,6]]},"91":{"position":[[33,6],[90,6]]},"92":{"position":[[319,8]]}},"keywords":{}}],["prisma.$transact",{"_index":768,"title":{},"content":{"61":{"position":[[203,21]]},"93":{"position":[[1421,19]]}},"keywords":{}}],["prisma/cli",{"_index":790,"title":{},"content":{"63":{"position":[[141,15],[225,16]]}},"keywords":{}}],["prismacli",{"_index":760,"title":{},"content":{"60":{"position":[[95,12],[208,12]]},"61":{"position":[[102,12],[317,12]]},"62":{"position":[[598,12]]},"91":{"position":[[215,12]]},"92":{"position":[[682,13]]},"93":{"position":[[1401,12]]}},"keywords":{}}],["prismainjectiontoken",{"_index":763,"title":{},"content":{"60":{"position":[[221,21]]},"92":{"position":[[660,21]]}},"keywords":{}}],["prismamodul",{"_index":761,"title":{},"content":{"60":{"position":[[120,12]]},"91":{"position":[[185,12]]},"92":{"position":[[370,13],[450,12],[530,15]]}},"keywords":{}}],["prismaservic",{"_index":764,"title":{},"content":{"60":{"position":[[243,14]]}},"keywords":{}}],["privat",{"_index":213,"title":{},"content":{"7":{"position":[[644,7],[687,7]]},"55":{"position":[[569,7],[634,7]]},"62":{"position":[[442,7]]},"65":{"position":[[684,7],[718,7],[1090,7]]},"79":{"position":[[1078,7]]},"84":{"position":[[311,7],[354,7]]},"93":{"position":[[673,7],[749,7],[1122,7]]},"94":{"position":[[336,7],[412,7]]}},"keywords":{}}],["probabl",{"_index":540,"title":{},"content":{"31":{"position":[[1021,8]]}},"keywords":{}}],["process",{"_index":418,"title":{},"content":{"20":{"position":[[558,7]]}},"keywords":{}}],["product",{"_index":816,"title":{},"content":{"66":{"position":[[117,11]]}},"keywords":{}}],["programmat",{"_index":3,"title":{},"content":{"0":{"position":[[31,12]]}},"keywords":{}}],["project",{"_index":169,"title":{},"content":{"5":{"position":[[99,7]]}},"keywords":{}}],["promis",{"_index":802,"title":{},"content":{"65":{"position":[[363,9]]},"97":{"position":[[483,7],[527,7],[670,7]]}},"keywords":{}}],["promise<account>",{"_index":977,"title":{},"content":{"93":{"position":[[1243,22]]}},"keywords":{}}],["promise<string>",{"_index":311,"title":{},"content":{"11":{"position":[[489,21],[563,21]]}},"keywords":{}}],["promise<user>",{"_index":973,"title":{},"content":{"93":{"position":[[835,19]]},"94":{"position":[[515,19]]},"95":{"position":[[407,19],[602,19]]}},"keywords":{}}],["promise<void>",{"_index":83,"title":{},"content":{"2":{"position":[[1420,19],[1509,19]]},"11":{"position":[[932,20],[1014,20]]},"66":{"position":[[697,20],[820,20],[983,20]]}},"keywords":{}}],["propag",{"_index":642,"title":{},"content":{"51":{"position":[[350,11]]},"93":{"position":[[1545,10]]}},"keywords":{}}],["proper",{"_index":571,"title":{},"content":{"45":{"position":[[73,6]]}},"keywords":{}}],["properli",{"_index":813,"title":{},"content":{"65":{"position":[[1272,8]]}},"keywords":{}}],["properti",{"_index":112,"title":{},"content":{"3":{"position":[[394,10],[485,10]]},"46":{"position":[[921,8]]},"61":{"position":[[8,8]]},"81":{"position":[[143,8]]},"82":{"position":[[319,8]]},"85":{"position":[[269,8]]},"93":{"position":[[470,8]]},"96":{"position":[[83,11]]}},"keywords":{}}],["protocol",{"_index":543,"title":{},"content":{"31":{"position":[[1173,10]]}},"keywords":{}}],["provid",{"_index":18,"title":{"48":{"position":[[15,9]]},"55":{"position":[[27,10]]},"75":{"position":[[6,9]]},"76":{"position":[[12,10]]},"78":{"position":[[22,9]]},"79":{"position":[[14,10]]},"83":{"position":[[28,10]]}},"content":{"2":{"position":[[27,8],[1477,10]]},"4":{"position":[[40,8],[277,10]]},"6":{"position":[[112,8]]},"7":{"position":[[1270,10]]},"9":{"position":[[539,9],[635,10]]},"10":{"position":[[67,10],[119,10],[344,9],[373,9],[542,9],[579,9],[644,9],[887,9],[1062,9],[1176,9],[1329,9],[1385,8]]},"11":{"position":[[1250,9]]},"12":{"position":[[170,8]]},"19":{"position":[[113,10],[225,8],[399,10],[414,8]]},"20":{"position":[[141,8],[361,7],[991,8]]},"43":{"position":[[734,7]]},"48":{"position":[[144,8],[276,10],[291,8]]},"51":{"position":[[592,9],[749,9]]},"53":{"position":[[191,9]]},"55":{"position":[[39,9],[216,8],[341,8],[413,8]]},"57":{"position":[[229,9],[449,9]]},"60":{"position":[[111,8]]},"66":{"position":[[1125,9],[1151,9],[1164,11],[1176,11],[1206,9],[1232,8],[1368,9]]},"68":{"position":[[86,8]]},"70":{"position":[[242,10]]},"74":{"position":[[62,8]]},"76":{"position":[[7,9],[46,10],[246,9],[332,8]]},"77":{"position":[[9,8]]},"78":{"position":[[37,9],[62,8],[194,9],[501,8],[689,8],[838,9]]},"79":{"position":[[26,10],[51,9],[196,8],[302,8],[825,9],[979,7]]},"81":{"position":[[15,9],[78,8]]},"82":{"position":[[347,8],[371,8],[553,8]]},"83":{"position":[[19,9]]},"84":{"position":[[102,8],[242,10],[550,8],[824,9]]},"85":{"position":[[596,10],[611,8]]},"88":{"position":[[221,10],[236,8]]},"90":{"position":[[112,7]]},"91":{"position":[[204,8]]},"92":{"position":[[714,10],[820,8]]},"95":{"position":[[264,8]]},"97":{"position":[[79,8]]}},"keywords":{}}],["provide?:ani",{"_index":273,"title":{},"content":{"10":{"position":[[293,12]]}},"keywords":{}}],["proxi",{"_index":14,"title":{"55":{"position":[[21,5]]},"75":{"position":[[0,5]]},"76":{"position":[[6,5]]},"78":{"position":[[16,5]]},"79":{"position":[[8,5]]},"82":{"position":[[9,7]]},"83":{"position":[[22,5]]}},"content":{"2":{"position":[[1471,5]]},"7":{"position":[[1264,5]]},"9":{"position":[[533,5],[629,5]]},"10":{"position":[[61,5],[113,5],[686,6],[881,5],[1323,5],[1379,5]]},"11":{"position":[[1244,5]]},"19":{"position":[[107,5]]},"53":{"position":[[185,5]]},"55":{"position":[[33,5],[210,5],[357,7],[432,7],[561,7],[626,7]]},"57":{"position":[[223,5],[443,5]]},"76":{"position":[[240,5],[530,5]]},"77":{"position":[[248,5]]},"78":{"position":[[56,5],[188,5],[683,5]]},"79":{"position":[[37,5]]},"81":{"position":[[1,5],[101,5]]},"82":{"position":[[31,7],[68,5],[547,5]]},"83":{"position":[[13,5]]},"84":{"position":[[96,5],[236,5],[544,5],[818,5]]}},"keywords":{"0":{"position":[[64,5]]},"1":{"position":[[64,5]]},"4":{"position":[[64,5]]},"5":{"position":[[64,5]]},"6":{"position":[[64,5]]},"7":{"position":[[64,5]]},"8":{"position":[[64,5]]},"12":{"position":[[64,5]]},"13":{"position":[[64,5]]},"14":{"position":[[64,5]]},"17":{"position":[[64,5]]},"20":{"position":[[64,5]]},"21":{"position":[[64,5]]},"22":{"position":[[64,5]]},"23":{"position":[[64,5]]},"30":{"position":[[64,5]]},"31":{"position":[[64,5]]},"32":{"position":[[64,5]]},"35":{"position":[[64,5]]},"39":{"position":[[64,5]]},"44":{"position":[[64,5]]},"50":{"position":[[64,5]]},"54":{"position":[[64,5]]},"58":{"position":[[64,5]]},"64":{"position":[[64,5]]},"65":{"position":[[64,5]]},"66":{"position":[[64,5]]},"67":{"position":[[64,5]]},"75":{"position":[[64,5]]},"85":{"position":[[64,5]]},"86":{"position":[[64,5]]},"89":{"position":[[64,5]]}}}],["proxyproviders?:typ",{"_index":250,"title":{},"content":{"9":{"position":[[501,22]]}},"keywords":{}}],["publish",{"_index":450,"title":{},"content":{"21":{"position":[[111,9]]}},"keywords":{}}],["purpos",{"_index":413,"title":{},"content":{"20":{"position":[[108,7]]}},"keywords":{}}],["purposeskeep",{"_index":632,"title":{},"content":{"51":{"position":[[114,15]]}},"keywords":{}}],["put",{"_index":326,"title":{},"content":{"11":{"position":[[1120,3]]}},"keywords":{}}],["qualiti",{"_index":865,"title":{},"content":{"74":{"position":[[76,7]]}},"keywords":{}}],["queri",{"_index":473,"title":{},"content":{"25":{"position":[[114,7]]},"52":{"position":[[339,6]]}},"keywords":{}}],["queue",{"_index":193,"title":{},"content":{"7":{"position":[[201,6]]}},"keywords":{}}],["quick",{"_index":177,"title":{"67":{"position":[[0,5]]}},"content":{"6":{"position":[[79,5]]}},"keywords":{}}],["quickli",{"_index":426,"title":{},"content":{"20":{"position":[[1028,7]]}},"keywords":{}}],["quot;<44c2d8ff",{"_index":441,"title":{},"content":{"20":{"position":[[1511,18]]}},"keywords":{}}],["quot;apply"",{"_index":923,"title":{},"content":{"82":{"position":[[143,17]]}},"keywords":{}}],["quot;official"",{"_index":817,"title":{},"content":{"66":{"position":[[146,20]]}},"keywords":{}}],["quot;polluting"",{"_index":610,"title":{},"content":{"48":{"position":[[481,21]]}},"keywords":{}}],["quot;request"",{"_index":647,"title":{},"content":{"51":{"position":[[527,19]]}},"keywords":{}}],["rare",{"_index":531,"title":{},"content":{"31":{"position":[[331,4]]}},"keywords":{}}],["raw",{"_index":979,"title":{},"content":{"93":{"position":[[1397,3]]}},"keywords":{}}],["re",{"_index":108,"title":{},"content":{"3":{"position":[[366,2]]},"15":{"position":[[178,4]]}},"keywords":{}}],["read",{"_index":866,"title":{},"content":{"74":{"position":[[105,4]]}},"keywords":{}}],["readabl",{"_index":983,"title":{},"content":{"94":{"position":[[165,9]]}},"keywords":{}}],["readonli",{"_index":214,"title":{},"content":{"7":{"position":[[652,8],[695,8]]},"20":{"position":[[1169,8],[1424,8]]},"46":{"position":[[165,8]]},"55":{"position":[[577,8],[642,8]]},"62":{"position":[[71,8],[450,8]]},"65":{"position":[[692,8],[726,8]]},"71":{"position":[[302,8]]},"72":{"position":[[327,8]]},"73":{"position":[[237,8]]},"77":{"position":[[279,8]]},"79":{"position":[[1086,8]]},"84":{"position":[[319,8],[362,8],[939,8]]},"93":{"position":[[681,8],[757,8],[1130,8]]},"94":{"position":[[344,8],[420,8]]}},"keywords":{}}],["real",{"_index":748,"title":{},"content":{"56":{"position":[[110,4]]}},"keywords":{}}],["realli",{"_index":867,"title":{},"content":{"74":{"position":[[140,6]]}},"keywords":{}}],["receiv",{"_index":417,"title":{},"content":{"20":{"position":[[428,8]]},"65":{"position":[[428,7],[471,7]]}},"keywords":{}}],["record",{"_index":670,"title":{},"content":{"52":{"position":[[197,7]]}},"keywords":{}}],["redirect",{"_index":878,"title":{},"content":{"76":{"position":[[542,9]]}},"keywords":{}}],["refer",{"_index":275,"title":{},"content":{"10":{"position":[[424,9]]},"38":{"position":[[47,10]]},"49":{"position":[[100,11]]},"61":{"position":[[74,6],[295,6]]},"65":{"position":[[573,9]]},"92":{"position":[[933,10]]},"93":{"position":[[136,10],[379,10]]},"97":{"position":[[124,9],[369,6]]}},"keywords":{}}],["reflect",{"_index":113,"title":{},"content":{"3":{"position":[[417,9]]}},"keywords":{}}],["reflected.overrid",{"_index":118,"title":{},"content":{"3":{"position":[[623,18]]}},"keywords":{}}],["reflected.reus",{"_index":115,"title":{},"content":{"3":{"position":[[504,15]]}},"keywords":{}}],["regardless",{"_index":930,"title":{},"content":{"82":{"position":[[588,10]]}},"keywords":{}}],["regist",{"_index":90,"title":{"70":{"position":[[0,8]]}},"content":{"2":{"position":[[1565,10]]},"9":{"position":[[564,10]]},"10":{"position":[[50,8]]},"11":{"position":[[1288,12]]},"18":{"position":[[47,8]]},"19":{"position":[[98,8]]},"70":{"position":[[1,8]]},"76":{"position":[[227,8]]},"79":{"position":[[94,10]]},"92":{"position":[[8,8],[792,9]]},"93":{"position":[[29,11]]}},"keywords":{}}],["registerasync",{"_index":394,"title":{},"content":{"18":{"position":[[63,14]]}},"keywords":{}}],["registr",{"_index":330,"title":{"18":{"position":[[5,12]]},"60":{"position":[[0,13]]},"92":{"position":[[7,13]]}},"content":{"11":{"position":[[1418,12]]},"18":{"position":[[10,12]]},"41":{"position":[[124,12]]},"76":{"position":[[287,13]]},"78":{"position":[[571,12]]}},"keywords":{}}],["regular",{"_index":769,"title":{},"content":{"61":{"position":[[309,7]]},"76":{"position":[[32,7]]}},"keywords":{}}],["relat",{"_index":829,"title":{},"content":{"66":{"position":[[1420,7]]}},"keywords":{}}],["reli",{"_index":188,"title":{},"content":{"7":{"position":[[63,6]]},"31":{"position":[[953,4]]},"66":{"position":[[103,4]]},"84":{"position":[[226,6]]}},"keywords":{}}],["rememb",{"_index":497,"title":{},"content":{"27":{"position":[[536,8]]}},"keywords":{}}],["renam",{"_index":392,"title":{"18":{"position":[[25,8]]}},"content":{"18":{"position":[[34,7]]}},"keywords":{}}],["replac",{"_index":659,"title":{},"content":{"51":{"position":[[971,8]]},"78":{"position":[[795,7]]}},"keywords":{}}],["repositori",{"_index":674,"title":{},"content":{"52":{"position":[[280,10]]}},"keywords":{}}],["req",{"_index":323,"title":{},"content":{"11":{"position":[[905,4]]},"15":{"position":[[164,4]]},"16":{"position":[[174,3]]},"20":{"position":[[852,5]]},"34":{"position":[[204,5]]},"79":{"position":[[430,5]]}},"keywords":{}}],["req.headers['x",{"_index":423,"title":{},"content":{"20":{"position":[[873,14]]}},"keywords":{}}],["req.params('tenant_id",{"_index":386,"title":{},"content":{"15":{"position":[[222,25]]},"16":{"position":[[253,25]]}},"keywords":{}}],["req.params['tenantid",{"_index":911,"title":{},"content":{"79":{"position":[[508,23]]}},"keywords":{}}],["request",{"_index":9,"title":{"7":{"position":[[21,7]]},"20":{"position":[[0,7]]},"84":{"position":[[12,8]]}},"content":{"2":{"position":[[288,7]]},"4":{"position":[[186,7],[231,7],[262,7],[327,7]]},"7":{"position":[[21,7],[145,7]]},"9":{"position":[[1079,7]]},"11":{"position":[[391,7],[465,8],[625,7],[650,7],[910,8],[1610,7]]},"15":{"position":[[27,7],[169,8]]},"20":{"position":[[0,7],[74,7],[186,7],[441,7],[698,7],[718,7],[858,8],[888,7]]},"25":{"position":[[133,8]]},"31":{"position":[[87,8],[200,8],[642,8],[697,7],[715,7],[884,7]]},"51":{"position":[[72,7],[577,7],[734,7]]},"64":{"position":[[366,7]]},"65":{"position":[[192,8],[391,8],[438,7]]},"70":{"position":[[89,7]]},"71":{"position":[[140,7],[418,7]]},"73":{"position":[[145,7]]},"77":{"position":[[390,7]]},"78":{"position":[[345,8],[354,8],[823,7]]},"79":{"position":[[436,8],[745,7]]},"83":{"position":[[230,7]]},"84":{"position":[[51,8]]}},"keywords":{"0":{"position":[[16,7]]},"1":{"position":[[16,7]]},"4":{"position":[[16,7]]},"5":{"position":[[16,7]]},"6":{"position":[[16,7]]},"7":{"position":[[16,7]]},"8":{"position":[[16,7]]},"12":{"position":[[16,7]]},"13":{"position":[[16,7]]},"14":{"position":[[16,7]]},"17":{"position":[[16,7]]},"20":{"position":[[16,7]]},"21":{"position":[[16,7]]},"22":{"position":[[16,7]]},"23":{"position":[[16,7]]},"30":{"position":[[16,7]]},"31":{"position":[[16,7]]},"32":{"position":[[16,7]]},"35":{"position":[[16,7]]},"39":{"position":[[16,7]]},"44":{"position":[[16,7]]},"50":{"position":[[16,7]]},"54":{"position":[[16,7]]},"58":{"position":[[16,7]]},"64":{"position":[[16,7]]},"65":{"position":[[16,7]]},"66":{"position":[[16,7]]},"67":{"position":[[16,7]]},"75":{"position":[[16,7]]},"85":{"position":[[16,7]]},"86":{"position":[[16,7]]},"89":{"position":[[16,7]]}}}],["request'",{"_index":671,"title":{},"content":{"52":{"position":[[240,9]]}},"keywords":{}}],["request.connection.remoteaddress",{"_index":850,"title":{},"content":{"71":{"position":[[480,33]]}},"keywords":{}}],["request.user.id",{"_index":886,"title":{},"content":{"77":{"position":[[509,16]]},"78":{"position":[[403,16]]}},"keywords":{}}],["requestmak",{"_index":633,"title":{},"content":{"51":{"position":[[169,13]]}},"keywords":{}}],["requir",{"_index":149,"title":{},"content":{"4":{"position":[[397,8]]},"10":{"position":[[562,8]]},"13":{"position":[[135,8]]},"29":{"position":[[76,8]]},"31":{"position":[[1068,7]]},"53":{"position":[[378,8]]},"55":{"position":[[267,8]]},"83":{"position":[[160,8]]}},"keywords":{}}],["resolut",{"_index":86,"title":{"83":{"position":[[8,10]]}},"content":{"2":{"position":[[1457,10]]},"83":{"position":[[178,10]]},"84":{"position":[[559,10]]}},"keywords":{}}],["resolv",{"_index":294,"title":{},"content":{"10":{"position":[[1256,8]]},"11":{"position":[[1236,7]]},"20":{"position":[[588,7]]},"26":{"position":[[27,9]]},"27":{"position":[[142,10]]},"57":{"position":[[435,7]]},"79":{"position":[[222,8]]},"83":{"position":[[33,8]]},"84":{"position":[[842,8]]}},"keywords":{}}],["resolveproxyprovid",{"_index":82,"title":{"57":{"position":[[19,21]]}},"content":{"2":{"position":[[1395,24]]},"11":{"position":[[1444,21]]},"57":{"position":[[541,21]]},"83":{"position":[[316,21],[472,22]]}},"keywords":{}}],["resolveproxyproviders?:boolean",{"_index":327,"title":{},"content":{"11":{"position":[[1165,30]]}},"keywords":{}}],["resourcesseamlessli",{"_index":641,"title":{},"content":{"51":{"position":[[330,19]]}},"keywords":{}}],["resp",{"_index":393,"title":{},"content":{"18":{"position":[[56,6],[89,6]]}},"keywords":{}}],["respect",{"_index":518,"title":{},"content":{"29":{"position":[[26,7]]},"43":{"position":[[655,7]]}},"keywords":{}}],["respons",{"_index":202,"title":{},"content":{"7":{"position":[[391,11]]},"11":{"position":[[1739,8]]},"15":{"position":[[39,8],[183,9]]}},"keywords":{}}],["rest",{"_index":457,"title":{"24":{"position":[[0,5]]}},"content":{"24":{"position":[[48,4]]},"56":{"position":[[380,4]]},"85":{"position":[[917,4]]}},"keywords":{}}],["restrict",{"_index":640,"title":{},"content":{"51":{"position":[[311,8]]}},"keywords":{}}],["result",{"_index":435,"title":{},"content":{"20":{"position":[[1328,7]]},"25":{"position":[[37,6]]},"46":{"position":[[935,6]]},"79":{"position":[[761,6]]}},"keywords":{}}],["retriev",{"_index":31,"title":{},"content":{"2":{"position":[[212,8],[275,8]]},"4":{"position":[[80,10]]},"12":{"position":[[275,8]]},"20":{"position":[[683,10],[1036,8],[1339,10]]},"45":{"position":[[121,10]]},"69":{"position":[[98,10]]},"73":{"position":[[27,8]]},"92":{"position":[[900,8]]},"93":{"position":[[103,8],[346,8]]}},"keywords":{}}],["return",{"_index":293,"title":{},"content":{"10":{"position":[[1244,7]]},"11":{"position":[[778,7]]},"20":{"position":[[577,6]]},"46":{"position":[[760,7]]},"55":{"position":[[113,6]]},"62":{"position":[[611,6],[704,6]]},"65":{"position":[[354,6],[856,6],[1043,6],[1113,6]]},"71":{"position":[[542,6]]},"72":{"position":[[388,6]]},"73":{"position":[[314,6]]},"77":{"position":[[552,6]]},"79":{"position":[[598,6],[1141,6]]},"81":{"position":[[32,6],[227,7]]},"82":{"position":[[266,7],[418,6],[569,8]]},"84":{"position":[[116,6]]},"93":{"position":[[529,7],[857,6],[1033,6],[1268,6]]},"94":{"position":[[661,6]]},"95":{"position":[[553,6],[624,6],[836,6]]},"97":{"position":[[794,7]]}},"keywords":{}}],["reus",{"_index":95,"title":{},"content":{"3":{"position":[[117,7],[522,5]]}},"keywords":{}}],["role",{"_index":639,"title":{},"content":{"51":{"position":[[303,4]]},"76":{"position":[[206,5]]},"78":{"position":[[301,5]]}},"keywords":{}}],["rolemodul",{"_index":900,"title":{},"content":{"78":{"position":[[706,13]]}},"keywords":{}}],["roleservic",{"_index":896,"title":{},"content":{"78":{"position":[[363,12],[376,12],[654,11]]}},"keywords":{}}],["roleservice.getforid(request.user.id",{"_index":899,"title":{},"content":{"78":{"position":[[432,38]]}},"keywords":{}}],["root",{"_index":252,"title":{"18":{"position":[[0,4]]}},"content":{"9":{"position":[[582,4]]},"18":{"position":[[5,4]]},"88":{"position":[[122,4]]}},"keywords":{}}],["rout",{"_index":305,"title":{},"content":{"11":{"position":[[263,5]]},"41":{"position":[[54,7]]},"70":{"position":[[128,7]]}},"keywords":{}}],["run",{"_index":60,"title":{},"content":{"2":{"position":[[740,3],[884,3],[1014,3],[1147,3],[1258,3],[1360,4]]},"3":{"position":[[5,3],[306,3],[644,3]]},"11":{"position":[[1354,3],[1431,5],[2106,4]]},"31":{"position":[[271,5],[492,5],[1095,3]]},"43":{"position":[[173,3]]},"52":{"position":[[808,3]]},"85":{"position":[[822,3]]},"97":{"position":[[535,4],[678,4]]}},"keywords":{}}],["run(callback",{"_index":53,"title":{},"content":{"2":{"position":[[653,13]]}},"keywords":{}}],["run(opt",{"_index":57,"title":{},"content":{"2":{"position":[[682,12]]}},"keywords":{}}],["runtransact",{"_index":773,"title":{},"content":{"62":{"position":[[138,16]]}},"keywords":{}}],["runwith(stor",{"_index":65,"title":{},"content":{"2":{"position":[[841,14]]}},"keywords":{}}],["s",{"_index":21,"title":{},"content":{"2":{"position":[[90,1],[155,1],[201,3],[348,3],[413,2],[495,2],[856,2],[1138,3]]}},"keywords":{}}],["s[key",{"_index":30,"title":{},"content":{"2":{"position":[[205,6],[423,8],[505,8]]}},"keywords":{}}],["sadli",{"_index":492,"title":{},"content":{"27":{"position":[[309,7]]}},"keywords":{}}],["safe",{"_index":527,"title":{"45":{"position":[[5,4]]}},"content":{"31":{"position":[[60,4],[266,4],[433,4]]},"46":{"position":[[106,4]]},"66":{"position":[[178,4]]}},"keywords":{}}],["safer",{"_index":342,"title":{},"content":{"11":{"position":[[1975,5]]},"27":{"position":[[479,5]]},"85":{"position":[[194,5]]}},"keywords":{}}],["safeti",{"_index":568,"title":{"44":{"position":[[5,6]]}},"content":{"53":{"position":[[339,6]]}},"keywords":{}}],["same",{"_index":162,"title":{},"content":{"4":{"position":[[611,4],[649,4]]},"9":{"position":[[894,4]]},"27":{"position":[[321,4]]},"52":{"position":[[219,4],[458,4]]},"62":{"position":[[193,4]]},"66":{"position":[[216,4]]},"72":{"position":[[76,4]]}},"keywords":{}}],["save",{"_index":981,"title":{},"content":{"94":{"position":[[109,5]]}},"keywords":{}}],["savereq?:boolean",{"_index":334,"title":{},"content":{"11":{"position":[[1557,16]]}},"keywords":{}}],["saveres?:boolean",{"_index":336,"title":{},"content":{"11":{"position":[[1685,16]]}},"keywords":{}}],["sayhello",{"_index":861,"title":{},"content":{"73":{"position":[[266,10]]}},"keywords":{}}],["scope",{"_index":10,"title":{},"content":{"4":{"position":[[270,6]]},"21":{"position":[[143,5]]},"51":{"position":[[585,6],[742,6]]},"73":{"position":[[153,7]]},"78":{"position":[[831,6]]},"79":{"position":[[894,5]]},"97":{"position":[[755,7],[861,6]]}},"keywords":{"0":{"position":[[25,5]]},"1":{"position":[[25,5]]},"4":{"position":[[25,5]]},"5":{"position":[[25,5]]},"6":{"position":[[25,5]]},"7":{"position":[[25,5]]},"8":{"position":[[25,5]]},"12":{"position":[[25,5]]},"13":{"position":[[25,5]]},"14":{"position":[[25,5]]},"17":{"position":[[25,5]]},"20":{"position":[[25,5]]},"21":{"position":[[25,5]]},"22":{"position":[[25,5]]},"23":{"position":[[25,5]]},"30":{"position":[[25,5]]},"31":{"position":[[25,5]]},"32":{"position":[[25,5]]},"35":{"position":[[25,5]]},"39":{"position":[[25,5]]},"44":{"position":[[25,5]]},"50":{"position":[[25,5]]},"54":{"position":[[25,5]]},"58":{"position":[[25,5]]},"64":{"position":[[25,5]]},"65":{"position":[[25,5]]},"66":{"position":[[25,5]]},"67":{"position":[[25,5]]},"75":{"position":[[25,5]]},"85":{"position":[[25,5]]},"86":{"position":[[25,5]]},"89":{"position":[[25,5]]}}}],["seamlessli",{"_index":226,"title":{},"content":{"7":{"position":[[1064,11]]}},"keywords":{}}],["second",{"_index":383,"title":{},"content":{"15":{"position":[[74,6]]},"16":{"position":[[71,6]]}},"keywords":{}}],["section",{"_index":447,"title":{},"content":{"21":{"position":[[23,7]]},"64":{"position":[[374,8]]}},"keywords":{}}],["secur",{"_index":155,"title":{"31":{"position":[[0,8]]}},"content":{"4":{"position":[[494,8]]},"31":{"position":[[0,8]]},"88":{"position":[[518,8]]}},"keywords":{}}],["see",{"_index":154,"title":{},"content":{"4":{"position":[[490,3]]},"9":{"position":[[161,3],[247,3],[351,3]]},"10":{"position":[[1451,3]]},"24":{"position":[[327,3]]},"29":{"position":[[218,4]]},"37":{"position":[[60,3]]},"38":{"position":[[28,3]]},"43":{"position":[[281,3]]},"49":{"position":[[711,3]]},"53":{"position":[[117,4],[283,3]]},"69":{"position":[[278,3]]},"82":{"position":[[657,3]]},"90":{"position":[[307,4]]},"92":{"position":[[625,3]]}},"keywords":{}}],["self",{"_index":889,"title":{"78":{"position":[[0,4]]}},"content":{},"keywords":{}}],["separ",{"_index":892,"title":{},"content":{"78":{"position":[[103,8]]}},"keywords":{}}],["serializ",{"_index":989,"title":{},"content":{"95":{"position":[[357,14],[677,14]]}},"keywords":{}}],["servic",{"_index":15,"title":{"1":{"position":[[0,7]]},"73":{"position":[[22,8]]}},"content":{"51":{"position":[[390,8]]},"69":{"position":[[117,7]]},"79":{"position":[[941,8]]},"91":{"position":[[251,8]]}},"keywords":{}}],["set",{"_index":44,"title":{"32":{"position":[[0,7]]}},"content":{"2":{"position":[[437,3],[519,3],[581,4]]},"3":{"position":[[84,9],[138,4]]},"4":{"position":[[409,3],[568,3]]},"7":{"position":[[331,3],[570,3]]},"9":{"position":[[962,3],[1071,3]]},"11":{"position":[[1852,3],[1867,3]]},"24":{"position":[[137,3]]},"27":{"position":[[119,3]]},"28":{"position":[[39,3]]},"31":{"position":[[830,3]]},"42":{"position":[[40,3]]},"43":{"position":[[524,11],[674,8]]},"45":{"position":[[135,7]]},"55":{"position":[[298,3]]},"56":{"position":[[190,7]]},"57":{"position":[[284,3],[533,3]]},"64":{"position":[[51,7]]},"68":{"position":[[104,7]]},"69":{"position":[[282,7]]},"72":{"position":[[123,3]]},"82":{"position":[[306,3]]},"83":{"position":[[312,3]]},"84":{"position":[[159,3]]},"95":{"position":[[207,3]]}},"keywords":{}}],["set(key",{"_index":42,"title":{},"content":{"2":{"position":[[398,8]]}},"keywords":{}}],["setifundefined(key",{"_index":45,"title":{},"content":{"2":{"position":[[469,19]]}},"keywords":{}}],["setup",{"_index":227,"title":{"14":{"position":[[15,5]]}},"content":{"7":{"position":[[1086,6]]},"11":{"position":[[1477,7]]},"15":{"position":[[151,6]]},"16":{"position":[[138,6]]},"25":{"position":[[260,5]]},"63":{"position":[[181,6]]},"65":{"position":[[404,5],[885,6],[1177,5]]},"83":{"position":[[57,5]]},"84":{"position":[[774,5],[861,5],[1007,6]]}},"keywords":{}}],["setup?:(cl",{"_index":322,"title":{},"content":{"11":{"position":[[880,12],[953,12]]}},"keywords":{}}],["sever",{"_index":180,"title":{},"content":{"6":{"position":[[121,7]]}},"keywords":{}}],["shallow",{"_index":106,"title":{},"content":{"3":{"position":[[330,7]]}},"keywords":{}}],["share",{"_index":61,"title":{},"content":{"2":{"position":[[762,6],[1042,6],[1295,6]]},"4":{"position":[[178,7]]},"12":{"position":[[459,6]]},"20":{"position":[[24,6]]},"70":{"position":[[102,6]]},"71":{"position":[[81,6]]},"72":{"position":[[81,6]]}},"keywords":{}}],["shorthand",{"_index":37,"title":{},"content":{"2":{"position":[[302,9]]},"20":{"position":[[1002,9]]}},"keywords":{}}],["shutdown",{"_index":826,"title":{},"content":{"66":{"position":[[918,8]]}},"keywords":{}}],["simpl",{"_index":868,"title":{},"content":{"74":{"position":[[147,7]]}},"keywords":{}}],["singl",{"_index":142,"title":{},"content":{"4":{"position":[[224,6]]},"98":{"position":[[85,6]]}},"keywords":{}}],["singleton",{"_index":904,"title":{},"content":{"78":{"position":[[878,10]]},"79":{"position":[[860,9]]}},"keywords":{}}],["slower",{"_index":703,"title":{},"content":{"52":{"position":[[812,7]]}},"keywords":{}}],["solut",{"_index":653,"title":{},"content":{"51":{"position":[[808,9]]}},"keywords":{}}],["solv",{"_index":667,"title":{},"content":{"52":{"position":[[130,5]]}},"keywords":{}}],["solvabl",{"_index":652,"title":{},"content":{"51":{"position":[[719,8]]}},"keywords":{}}],["some_funct",{"_index":927,"title":{},"content":{"82":{"position":[[380,14]]}},"keywords":{}}],["someclass",{"_index":738,"title":{},"content":{"55":{"position":[[375,10],[586,10],[597,10]]}},"keywords":{}}],["somefunct",{"_index":739,"title":{},"content":{"55":{"position":[[461,13]]}},"keywords":{}}],["someservic",{"_index":215,"title":{},"content":{"7":{"position":[[661,12],[674,12]]},"55":{"position":[[519,11]]},"65":{"position":[[657,11],[841,12],[908,12]]},"84":{"position":[[328,12],[341,12],[948,12],[961,13]]}},"keywords":{}}],["someth",{"_index":928,"title":{},"content":{"82":{"position":[[442,9]]}},"keywords":{}}],["sometim",{"_index":186,"title":{},"content":{"7":{"position":[[29,10]]},"41":{"position":[[1,10]]},"43":{"position":[[1,10]]},"52":{"position":[[771,9]]}},"keywords":{}}],["somewher",{"_index":158,"title":{},"content":{"4":{"position":[[533,9]]},"77":{"position":[[106,10]]}},"keywords":{}}],["soon",{"_index":935,"title":{},"content":{"83":{"position":[[45,4]]}},"keywords":{}}],["space",{"_index":133,"title":{},"content":{"4":{"position":[[58,5]]},"48":{"position":[[519,6]]}},"keywords":{}}],["special",{"_index":231,"title":{},"content":{"7":{"position":[[1216,7]]},"29":{"position":[[158,7]]}},"keywords":{}}],["specif",{"_index":668,"title":{},"content":{"52":{"position":[[138,8]]},"79":{"position":[[236,8]]}},"keywords":{}}],["specifi",{"_index":570,"title":{},"content":{"45":{"position":[[19,7]]},"47":{"position":[[171,7]]}},"keywords":{}}],["start",{"_index":178,"title":{"67":{"position":[[6,5]]}},"content":{"6":{"position":[[85,5]]},"45":{"position":[[238,5]]},"92":{"position":[[872,5]]},"93":{"position":[[75,5],[318,5]]}},"keywords":{}}],["startcontextualworkflow(valu",{"_index":808,"title":{},"content":{"65":{"position":[[1002,30]]}},"keywords":{}}],["static",{"_index":355,"title":{},"content":{"12":{"position":[[183,6]]}},"keywords":{}}],["still",{"_index":404,"title":{},"content":{"19":{"position":[[131,5]]},"47":{"position":[[215,5]]},"49":{"position":[[639,5]]},"52":{"position":[[85,5],[517,5]]},"53":{"position":[[495,5]]},"55":{"position":[[242,5]]},"66":{"position":[[37,5]]},"79":{"position":[[849,5]]}},"keywords":{}}],["stop",{"_index":621,"title":{},"content":{"49":{"position":[[352,4]]}},"keywords":{}}],["storag",{"_index":131,"title":{},"content":{"4":{"position":[[32,7],[654,7]]},"7":{"position":[[81,7]]},"12":{"position":[[466,7]]},"20":{"position":[[31,8]]},"68":{"position":[[175,7]]}},"keywords":{}}],["store",{"_index":69,"title":{},"content":{"2":{"position":[[951,7],[1220,7]]},"4":{"position":[[68,7]]},"11":{"position":[[1600,5],[1729,5]]},"20":{"position":[[627,6],[927,6]]},"25":{"position":[[204,5]]},"45":{"position":[[231,6]]},"46":{"position":[[778,5]]},"49":{"position":[[44,5]]},"69":{"position":[[46,5]]},"71":{"position":[[152,6]]},"76":{"position":[[585,6]]},"79":{"position":[[776,6]]}},"keywords":{}}],["strategi",{"_index":650,"title":{},"content":{"51":{"position":[[630,11]]}},"keywords":{}}],["string",{"_index":35,"title":{},"content":{"2":{"position":[[267,7]]},"11":{"position":[[480,6],[554,6],[788,7],[856,6]]},"20":{"position":[[318,6],[604,6],[1211,7]]},"45":{"position":[[350,7]]},"46":{"position":[[340,6]]},"47":{"position":[[229,6],[306,7]]},"49":{"position":[[433,7]]},"62":{"position":[[694,7]]},"65":{"position":[[945,7],[1033,7]]},"66":{"position":[[549,7]]},"76":{"position":[[212,7]]},"78":{"position":[[307,7]]},"93":{"position":[[826,8]]},"94":{"position":[[506,8]]},"95":{"position":[[398,8],[593,8]]}},"keywords":{}}],["subject",{"_index":998,"title":{},"content":{"98":{"position":[[248,7]]}},"keywords":{}}],["subsequ",{"_index":941,"title":{},"content":{"84":{"position":[[205,10]]}},"keywords":{}}],["subtre",{"_index":622,"title":{},"content":{"49":{"position":[[392,8]]}},"keywords":{}}],["succe",{"_index":969,"title":{},"content":{"93":{"position":[[267,7]]}},"keywords":{}}],["such",{"_index":197,"title":{},"content":{"7":{"position":[[260,4]]},"68":{"position":[[280,4]]}},"keywords":{}}],["suppli",{"_index":67,"title":{},"content":{"2":{"position":[[929,9],[1198,9]]},"9":{"position":[[759,6]]}},"keywords":{}}],["support",{"_index":401,"title":{"19":{"position":[[10,7]]}},"content":{"19":{"position":[[21,7]]},"24":{"position":[[38,9]]},"51":{"position":[[610,9]]},"53":{"position":[[24,7]]},"55":{"position":[[248,10]]},"82":{"position":[[13,7]]},"90":{"position":[[534,8]]},"98":{"position":[[74,8],[303,7]]}},"keywords":{}}],["suppos",{"_index":963,"title":{},"content":{"91":{"position":[[159,7]]},"93":{"position":[[148,7]]}},"keywords":{}}],["sure",{"_index":286,"title":{},"content":{"10":{"position":[[902,4]]},"31":{"position":[[849,4]]},"52":{"position":[[357,4]]},"93":{"position":[[453,4]]}},"keywords":{}}],["symbol",{"_index":589,"title":{},"content":{"46":{"position":[[658,6]]},"53":{"position":[[440,6]]}},"keywords":{}}],["sync",{"_index":254,"title":{"33":{"position":[[0,5]]}},"content":{"9":{"position":[[618,4]]},"10":{"position":[[82,4]]}},"keywords":{}}],["synchron",{"_index":316,"title":{},"content":{"11":{"position":[[744,14]]}},"keywords":{}}],["t",{"_index":56,"title":{},"content":{"2":{"position":[[676,3],[680,1],[733,3],[737,2],[878,3],[882,1],[1252,3],[1256,1]]}},"keywords":{}}],["take",{"_index":62,"title":{},"content":{"2":{"position":[[793,5],[1073,5]]},"3":{"position":[[31,4]]},"5":{"position":[[199,4]]},"9":{"position":[[32,5]]},"11":{"position":[[53,4],[640,5],[1524,5]]},"93":{"position":[[1479,5]]},"96":{"position":[[40,5]]},"97":{"position":[[582,5]]}},"keywords":{}}],["taken",{"_index":233,"title":{},"content":{"7":{"position":[[1237,5]]},"31":{"position":[[564,5]]}},"keywords":{}}],["talk",{"_index":691,"title":{},"content":{"52":{"position":[[604,4]]}},"keywords":{}}],["target",{"_index":285,"title":{},"content":{"10":{"position":[[842,6]]},"82":{"position":[[74,6]]}},"keywords":{}}],["techniqu",{"_index":366,"title":{},"content":{"12":{"position":[[584,9]]}},"keywords":{}}],["tediou",{"_index":602,"title":{},"content":{"47":{"position":[[82,8]]}},"keywords":{}}],["tenant",{"_index":634,"title":{},"content":{"51":{"position":[[195,6],[252,6]]},"52":{"position":[[410,6],[427,8]]},"79":{"position":[[245,6]]}},"keywords":{}}],["tenant_connect",{"_index":907,"title":{},"content":{"79":{"position":[[311,18],[646,17],[807,17]]}},"keywords":{}}],["tenantconnect",{"_index":917,"title":{},"content":{"79":{"position":[[1107,17]]}},"keywords":{}}],["tenantid",{"_index":576,"title":{},"content":{"45":{"position":[[340,9]]},"46":{"position":[[309,8],[353,8],[667,10],[859,9]]},"47":{"position":[[296,9]]},"49":{"position":[[423,9],[539,8]]},"52":{"position":[[224,8]]},"79":{"position":[[497,8]]}},"keywords":{}}],["termin",{"_index":611,"title":{"49":{"position":[[0,8]]}},"content":{"49":{"position":[[335,8]]}},"keywords":{}}],["terminal<",{"_index":623,"title":{},"content":{"49":{"position":[[447,13]]}},"keywords":{}}],["test",{"_index":371,"title":{},"content":{"12":{"position":[[708,5]]},"24":{"position":[[151,6]]},"25":{"position":[[349,6]]},"28":{"position":[[102,4]]}},"keywords":{}}],["thank",{"_index":495,"title":{},"content":{"27":{"position":[[507,7]]}},"keywords":{}}],["thar",{"_index":942,"title":{},"content":{"84":{"position":[[221,4]]}},"keywords":{}}],["that'",{"_index":620,"title":{"74":{"position":[[0,6]]}},"content":{"49":{"position":[[302,6]]}},"keywords":{}}],["there'",{"_index":506,"title":{},"content":{"28":{"position":[[197,7]]}},"keywords":{}}],["therefor",{"_index":201,"title":{},"content":{"7":{"position":[[351,10]]},"25":{"position":[[276,10]]},"29":{"position":[[60,9]]},"57":{"position":[[267,9],[463,9]]},"69":{"position":[[212,9]]}},"keywords":{}}],["thing",{"_index":626,"title":{},"content":{"49":{"position":[[666,6]]}},"keywords":{}}],["third",{"_index":384,"title":{},"content":{"15":{"position":[[85,5]]}},"keywords":{}}],["this.accountservice.createaccountforuser(user.id",{"_index":975,"title":{},"content":{"93":{"position":[[982,50]]},"94":{"position":[[610,50]]},"95":{"position":[[502,50],[785,50]]}},"keywords":{}}],["this.appservice.sayhello",{"_index":858,"title":{},"content":{"72":{"position":[[395,27]]}},"keywords":{}}],["this.cls.get",{"_index":593,"title":{},"content":{"46":{"position":[[878,15]]}},"keywords":{}}],["this.cls.get('ip",{"_index":862,"title":{},"content":{"73":{"position":[[294,19]]}},"keywords":{}}],["this.cls.get('tenantid",{"_index":583,"title":{},"content":{"46":{"position":[[364,25]]}},"keywords":{}}],["this.cls.get('us",{"_index":586,"title":{},"content":{"46":{"position":[[546,21]]}},"keywords":{}}],["this.cls.get('user.id",{"_index":585,"title":{},"content":{"46":{"position":[[444,24]]}},"keywords":{}}],["this.cls.get('user.nam",{"_index":597,"title":{},"content":{"46":{"position":[[975,26]]}},"keywords":{}}],["this.cls.resolveproxyprovid",{"_index":946,"title":{},"content":{"84":{"position":[[576,33]]}},"keywords":{}}],["this.cls.run",{"_index":752,"title":{},"content":{"56":{"position":[[322,13]]}},"keywords":{}}],["this.cls.run(async",{"_index":221,"title":{},"content":{"7":{"position":[[864,18]]},"84":{"position":[[440,18]]}},"keywords":{}}],["this.cls.set('ip",{"_index":851,"title":{},"content":{"71":{"position":[[514,18]]}},"keywords":{}}],["this.cls.set('mod",{"_index":222,"title":{},"content":{"7":{"position":[[894,20]]}},"keywords":{}}],["this.cls.set('som",{"_index":945,"title":{},"content":{"84":{"position":[[493,18]]}},"keywords":{}}],["this.cls.set('user.author",{"_index":582,"title":{},"content":{"46":{"position":[[267,31]]}},"keywords":{}}],["this.connection.dogs.getal",{"_index":919,"title":{},"content":{"79":{"position":[[1148,30]]}},"keywords":{}}],["this.functionprovid",{"_index":745,"title":{},"content":{"55":{"position":[[755,23]]}},"keywords":{}}],["this.generateid",{"_index":806,"title":{},"content":{"65":{"position":[[863,18]]}},"keywords":{}}],["this.id",{"_index":897,"title":{},"content":{"78":{"position":[[393,7]]}},"keywords":{}}],["this.logger.log('hello",{"_index":439,"title":{},"content":{"20":{"position":[[1462,25]]}},"keywords":{}}],["this.otherservice.dosomething(valu",{"_index":809,"title":{},"content":{"65":{"position":[[1050,37]]}},"keywords":{}}],["this.rol",{"_index":898,"title":{},"content":{"78":{"position":[[420,9]]}},"keywords":{}}],["this.someclass",{"_index":744,"title":{},"content":{"55":{"position":[[707,16]]}},"keywords":{}}],["this.someservice.dotheth",{"_index":223,"title":{},"content":{"7":{"position":[[930,30],[1173,30]]},"84":{"position":[[616,30],[1096,30]]}},"keywords":{}}],["this.txhost.tx.user.cr",{"_index":784,"title":{},"content":{"62":{"position":[[711,28]]},"93":{"position":[[928,28],[1275,28]]},"94":{"position":[[556,28]]},"95":{"position":[[448,28],[731,28]]}},"keywords":{}}],["this.txhost.tx.user.finduniqu",{"_index":782,"title":{},"content":{"62":{"position":[[618,32]]}},"keywords":{}}],["this.txhost.withtransact",{"_index":990,"title":{},"content":{"95":{"position":[[631,29]]}},"keywords":{}}],["this.txhost.withtransaction(async",{"_index":974,"title":{},"content":{"93":{"position":[[864,33]]}},"keywords":{}}],["this.user.id",{"_index":885,"title":{},"content":{"77":{"position":[[494,12]]}},"keywords":{}}],["this.user.rol",{"_index":887,"title":{},"content":{"77":{"position":[[526,14]]}},"keywords":{}}],["this.userrepository.createuser('john",{"_index":774,"title":{},"content":{"62":{"position":[[229,39]]}},"keywords":{}}],["this.userrepository.getuserbyid(r1.id",{"_index":776,"title":{},"content":{"62":{"position":[[293,39]]}},"keywords":{}}],["those",{"_index":382,"title":{},"content":{"13":{"position":[[236,5]]},"24":{"position":[[467,5]]},"52":{"position":[[191,5]]},"65":{"position":[[342,6]]},"90":{"position":[[231,5]]}},"keywords":{}}],["throughout",{"_index":135,"title":{},"content":{"4":{"position":[[96,10],[339,10]]},"31":{"position":[[171,10]]},"51":{"position":[[148,10]]}},"keywords":{}}],["time",{"_index":263,"title":{},"content":{"9":{"position":[[899,4]]},"11":{"position":[[2016,4]]},"25":{"position":[[81,5]]},"52":{"position":[[684,4]]},"83":{"position":[[431,5]]},"93":{"position":[[165,4]]},"98":{"position":[[26,5]]}},"keywords":{}}],["timeout",{"_index":986,"title":{},"content":{"95":{"position":[[238,8]]}},"keywords":{}}],["tip",{"_index":901,"title":{},"content":{"78":{"position":[[750,3]]}},"keywords":{}}],["todo",{"_index":455,"title":{},"content":{"22":{"position":[[26,5]]}},"keywords":{}}],["token",{"_index":274,"title":{},"content":{"10":{"position":[[323,5],[1051,6],[1216,6]]},"60":{"position":[[195,5]]},"79":{"position":[[987,5]]}},"keywords":{}}],["tool",{"_index":411,"title":{},"content":{"20":{"position":[[56,4]]}},"keywords":{}}],["top",{"_index":110,"title":{},"content":{"3":{"position":[[384,3]]},"12":{"position":[[341,3]]}},"keywords":{}}],["trace",{"_index":715,"title":{},"content":{"52":{"position":[[1005,7]]}},"keywords":{}}],["track",{"_index":145,"title":{},"content":{"4":{"position":[[313,5]]},"20":{"position":[[65,8]]},"51":{"position":[[59,8],[130,5]]}},"keywords":{}}],["transact",{"_index":453,"title":{"94":{"position":[[10,13]]},"95":{"position":[[8,11]]}},"content":{"21":{"position":[[206,13]]},"51":{"position":[[371,11],[500,13]]},"61":{"position":[[88,13],[139,13],[269,13],[360,13]]},"62":{"position":[[115,16],[198,11],[584,13]]},"90":{"position":[[131,13],[522,11]]},"91":{"position":[[315,14]]},"92":{"position":[[21,13],[884,11],[921,11]]},"93":{"position":[[87,11],[124,11],[330,11],[367,11],[1520,11]]},"94":{"position":[[5,14],[466,16]]},"95":{"position":[[45,13],[179,12]]},"97":{"position":[[112,11],[158,12],[269,11],[300,11],[324,11],[346,11],[395,13],[439,11],[558,12],[706,11],[824,11]]},"98":{"position":[[215,13]]}},"keywords":{}}],["transactional<transactionaladapterprisma>",{"_index":987,"title":{},"content":{"95":{"position":[[290,50]]}},"keywords":{}}],["transactionaladapt",{"_index":991,"title":{},"content":{"96":{"position":[[275,20]]}},"keywords":{}}],["transactionaladapterprisma",{"_index":762,"title":{},"content":{"60":{"position":[[149,28]]},"92":{"position":[[250,26],[559,28]]}},"keywords":{}}],["transactionhost",{"_index":968,"title":{"93":{"position":[[10,16]]},"97":{"position":[[0,15]]}},"content":{"92":{"position":[[804,15]]},"93":{"position":[[56,15],[299,15]]},"97":{"position":[[5,15]]},"98":{"position":[[320,15]]}},"keywords":{}}],["transactionhost<adapter>",{"_index":970,"title":{},"content":{"93":{"position":[[416,30]]}},"keywords":{}}],["transactionhost<transactionaladapterprisma>",{"_index":766,"title":{},"content":{"61":{"position":[[24,49]]},"62":{"position":[[467,50]]},"93":{"position":[[698,50],[1147,50]]},"94":{"position":[[361,50]]}},"keywords":{}}],["transactionopt",{"_index":985,"title":{},"content":{"95":{"position":[[89,18]]},"97":{"position":[[590,18]]}},"keywords":{}}],["transpar",{"_index":604,"title":{},"content":{"48":{"position":[[15,11]]}},"keywords":{}}],["transport",{"_index":502,"title":{},"content":{"28":{"position":[[117,11],[396,10]]},"31":{"position":[[1163,9]]},"69":{"position":[[266,11]]}},"keywords":{}}],["trap",{"_index":924,"title":{},"content":{"82":{"position":[[161,5]]}},"keywords":{}}],["tri",{"_index":509,"title":{},"content":{"28":{"position":[[262,3]]},"49":{"position":[[241,5]]}},"keywords":{}}],["trigger",{"_index":85,"title":{},"content":{"2":{"position":[[1449,7],[1538,7]]},"25":{"position":[[61,10]]},"84":{"position":[[536,7]]}},"keywords":{}}],["true",{"_index":328,"title":{},"content":{"11":{"position":[[1205,5],[1337,5],[1583,5],[1859,4]]},"15":{"position":[[145,5]]},"16":{"position":[[132,5]]},"18":{"position":[[207,4]]},"20":{"position":[[261,4],[815,5],[833,5]]},"24":{"position":[[144,5]]},"27":{"position":[[198,4],[329,4]]},"33":{"position":[[64,5],[91,5],[109,5]]},"34":{"position":[[69,5],[167,5],[185,5]]},"40":{"position":[[64,5],[91,4]]},"42":{"position":[[171,5]]},"46":{"position":[[299,6]]},"57":{"position":[[81,4],[294,4]]},"65":{"position":[[806,5]]},"70":{"position":[[200,5],[227,4]]},"79":{"position":[[628,5]]},"85":{"position":[[405,4]]},"87":{"position":[[12,4],[89,4]]}},"keywords":{}}],["turn",{"_index":903,"title":{},"content":{"78":{"position":[[851,4]]}},"keywords":{}}],["two",{"_index":964,"title":{},"content":{"91":{"position":[[241,3]]}},"keywords":{}}],["tx",{"_index":765,"title":{},"content":{"61":{"position":[[5,2],[225,2]]},"93":{"position":[[467,2]]},"97":{"position":[[108,3]]}},"keywords":{}}],["txhost",{"_index":779,"title":{},"content":{"62":{"position":[[459,7]]},"93":{"position":[[690,7],[1139,7]]},"94":{"position":[[353,7]]}},"keywords":{}}],["txhost.tx",{"_index":781,"title":{},"content":{"62":{"position":[[558,9]]}},"keywords":{}}],["type",{"_index":22,"title":{"44":{"position":[[0,4],[16,4]]},"45":{"position":[[0,4]]},"46":{"position":[[8,4]]},"49":{"position":[[9,5]]},"55":{"position":[[13,4]]},"61":{"position":[[0,6]]}},"content":{"2":{"position":[[92,4],[122,4]]},"45":{"position":[[80,6],[101,4],[221,5]]},"46":{"position":[[43,4],[111,7],[240,4],[626,4],[947,4]]},"47":{"position":[[183,4],[236,7]]},"48":{"position":[[89,5],[514,4]]},"49":{"position":[[158,4],[344,4],[655,6]]},"53":{"position":[[334,4],[350,4],[566,6]]},"55":{"position":[[280,4],[475,5]]},"61":{"position":[[347,5]]},"62":{"position":[[571,5]]},"63":{"position":[[103,5]]},"82":{"position":[[314,4],[458,5]]},"90":{"position":[[155,5]]},"93":{"position":[[395,4],[482,5],[549,5]]},"95":{"position":[[251,4]]}},"keywords":{}}],["type?:'funct",{"_index":295,"title":{},"content":{"10":{"position":[[1339,16]]}},"keywords":{}}],["typeof",{"_index":736,"title":{},"content":{"55":{"position":[[88,6]]},"82":{"position":[[520,6]]}},"keywords":{}}],["typeorm",{"_index":958,"title":{},"content":{"90":{"position":[[392,7]]}},"keywords":{}}],["typescript",{"_index":598,"title":{"47":{"position":[[6,10]]}},"content":{"49":{"position":[[127,10]]},"53":{"position":[[401,10]]},"63":{"position":[[250,10]]}},"keywords":{}}],["ultim",{"_index":793,"title":{},"content":{"64":{"position":[[78,10]]}},"keywords":{}}],["unavail",{"_index":498,"title":{},"content":{"27":{"position":[[569,11]]},"85":{"position":[[879,11]]}},"keywords":{}}],["undefin",{"_index":940,"title":{},"content":{"84":{"position":[[123,10]]},"97":{"position":[[429,9]]}},"keywords":{}}],["under",{"_index":308,"title":{},"content":{"11":{"position":[[424,5],[1662,5],[1792,5]]},"20":{"position":[[934,5]]},"21":{"position":[[121,5]]},"52":{"position":[[1074,5]]}},"keywords":{}}],["underli",{"_index":735,"title":{},"content":{"55":{"position":[[13,10]]},"82":{"position":[[57,10]]},"90":{"position":[[169,10]]},"97":{"position":[[219,10]]}},"keywords":{}}],["undocu",{"_index":753,"title":{},"content":{"57":{"position":[[16,12]]}},"keywords":{}}],["uniqu",{"_index":879,"title":{},"content":{"76":{"position":[[569,6]]}},"keywords":{}}],["unlik",{"_index":949,"title":{},"content":{"85":{"position":[[92,6]]}},"keywords":{}}],["until",{"_index":122,"title":{},"content":{"3":{"position":[[777,5]]},"31":{"position":[[705,5]]},"83":{"position":[[200,5]]}},"keywords":{}}],["up",{"_index":150,"title":{"32":{"position":[[8,2]]}},"content":{"4":{"position":[[413,2],[572,3]]},"7":{"position":[[335,2],[574,2]]},"11":{"position":[[1871,2]]},"21":{"position":[[162,2]]},"27":{"position":[[123,2]]},"28":{"position":[[43,2]]},"31":{"position":[[834,2]]},"64":{"position":[[59,2]]},"68":{"position":[[112,2]]},"69":{"position":[[290,2]]},"72":{"position":[[127,3]]},"84":{"position":[[163,2]]}},"keywords":{}}],["upgrad",{"_index":524,"title":{},"content":{"30":{"position":[[31,9]]},"53":{"position":[[483,7]]}},"keywords":{}}],["upon",{"_index":881,"title":{},"content":{"77":{"position":[[52,4]]}},"keywords":{}}],["us",{"_index":24,"title":{"6":{"position":[[13,3]]},"39":{"position":[[0,5]]},"43":{"position":[[0,5]]},"46":{"position":[[0,5]]},"47":{"position":[[0,5]]},"48":{"position":[[0,5]]},"51":{"position":[[0,3]]},"64":{"position":[[0,5]]},"65":{"position":[[0,5]]},"85":{"position":[[0,5]]},"86":{"position":[[0,5]]},"93":{"position":[[0,5]]},"94":{"position":[[0,5]]}},"content":{"2":{"position":[[110,4],[586,6]]},"6":{"position":[[13,3]]},"7":{"position":[[454,5],[999,3],[1258,5]]},"9":{"position":[[646,3],[695,3],[864,3]]},"10":{"position":[[42,4],[332,3],[461,4],[693,6],[868,4],[1072,4],[1310,4]]},"11":{"position":[[823,4],[1112,4],[1886,5]]},"12":{"position":[[267,4],[528,3],[573,5]]},"13":{"position":[[46,5]]},"19":{"position":[[90,4],[144,3],[212,3]]},"20":{"position":[[492,5],[535,4],[655,4],[1080,4]]},"24":{"position":[[93,3],[226,5]]},"25":{"position":[[1,5],[304,3]]},"26":{"position":[[125,3]]},"27":{"position":[[396,5],[440,3],[470,4],[550,5]]},"28":{"position":[[1,3]]},"31":{"position":[[68,3],[257,4],[419,4],[621,5],[765,5],[924,3]]},"36":{"position":[[4,3]]},"41":{"position":[[35,3]]},"43":{"position":[[132,3],[539,7],[626,5]]},"45":{"position":[[186,5]]},"46":{"position":[[95,3],[826,3]]},"47":{"position":[[33,5]]},"49":{"position":[[327,3]]},"51":{"position":[[13,3],[728,5]]},"52":{"position":[[147,3],[703,3],[749,3],[957,3],[996,3],[1057,4],[1111,3]]},"53":{"position":[[509,3]]},"55":{"position":[[190,3],[202,5]]},"56":{"position":[[121,3],[140,4],[288,3]]},"57":{"position":[[183,3],[219,3],[254,3],[369,4]]},"61":{"position":[[129,4]]},"63":{"position":[[206,3]]},"64":{"position":[[0,5],[89,3],[246,3]]},"65":{"position":[[0,5],[49,4],[155,4],[319,4]]},"66":{"position":[[129,5],[509,4],[1385,4]]},"69":{"position":[[24,5],[197,5],[226,3]]},"74":{"position":[[128,3]]},"76":{"position":[[256,3],[418,5]]},"78":{"position":[[535,3],[754,5]]},"79":{"position":[[105,5],[969,5]]},"83":{"position":[[137,3]]},"84":{"position":[[766,3]]},"85":{"position":[[0,5],[112,4],[219,3],[851,5]]},"87":{"position":[[1,3]]},"88":{"position":[[33,3],[438,4],[483,5]]},"91":{"position":[[25,3]]},"92":{"position":[[864,4]]},"93":{"position":[[48,3],[291,3],[1385,4]]},"94":{"position":[[37,4],[176,5]]},"95":{"position":[[157,4]]},"96":{"position":[[338,4]]},"98":{"position":[[190,3]]}},"keywords":{}}],["usag",{"_index":183,"title":{"7":{"position":[[0,5]]},"36":{"position":[[0,6]]},"61":{"position":[[9,6]]}},"content":{"7":{"position":[[0,5]]},"64":{"position":[[345,5]]},"69":{"position":[[246,5]]}},"keywords":{}}],["usecl",{"_index":205,"title":{"57":{"position":[[44,6]]}},"content":{"7":{"position":[[464,7],[1076,9]]},"57":{"position":[[378,7]]},"65":{"position":[[22,9],[287,9]]},"84":{"position":[[662,10],[684,9],[997,9]]}},"keywords":{}}],["useclass",{"_index":277,"title":{},"content":{"10":{"position":[[444,8]]},"55":{"position":[[365,9]]},"78":{"position":[[720,9]]},"85":{"position":[[637,9]]},"88":{"position":[[256,9]]}},"keywords":{}}],["useclass:typ",{"_index":284,"title":{},"content":{"10":{"position":[[824,13]]}},"keywords":{}}],["usecls<[string]>",{"_index":805,"title":{},"content":{"65":{"position":[[768,25]]}},"keywords":{}}],["useenterwith",{"_index":488,"title":{},"content":{"27":{"position":[[184,13]]},"31":{"position":[[794,12]]}},"keywords":{}}],["useenterwith?:boolean",{"_index":338,"title":{},"content":{"11":{"position":[[1814,21]]}},"keywords":{}}],["useexist",{"_index":607,"title":{},"content":{"48":{"position":[[314,12]]}},"keywords":{}}],["usefactori",{"_index":260,"title":{},"content":{"9":{"position":[[796,10]]},"10":{"position":[[1084,11]]},"34":{"position":[[104,11]]},"55":{"position":[[440,11]]},"79":{"position":[[412,11]]},"82":{"position":[[395,11]]}},"keywords":{}}],["usefactory:(...arg",{"_index":289,"title":{},"content":{"10":{"position":[[1096,20]]}},"keywords":{}}],["useguards(clsguard",{"_index":955,"title":{},"content":{"88":{"position":[[374,21]]}},"keywords":{}}],["useinterceptors(clsinterceptor",{"_index":951,"title":{},"content":{"85":{"position":[[744,33]]}},"keywords":{}}],["useinterceptors(useripinterceptor",{"_index":856,"title":{},"content":{"72":{"position":[[228,35]]}},"keywords":{}}],["user",{"_index":577,"title":{},"content":{"45":{"position":[[358,5]]},"46":{"position":[[472,4],[539,4],[680,6],[869,4]]},"47":{"position":[[314,5]]},"49":{"position":[[441,5],[550,4]]},"51":{"position":[[143,4]]},"52":{"position":[[250,4]]},"62":{"position":[[216,4]]},"71":{"position":[[185,4]]},"76":{"position":[[187,4]]},"77":{"position":[[288,5],[294,5]]},"93":{"position":[[183,5],[915,4],[1040,5]]},"94":{"position":[[543,4],[668,5]]},"95":{"position":[[435,4],[560,5],[718,4],[843,5]]}},"keywords":{}}],["user'",{"_index":859,"title":{},"content":{"73":{"position":[[40,6]]}},"keywords":{}}],["user.author",{"_index":591,"title":{},"content":{"46":{"position":[[701,17]]}},"keywords":{}}],["user.id",{"_index":590,"title":{},"content":{"46":{"position":[[689,9]]},"62":{"position":[[357,9]]}},"keywords":{}}],["user.repository.t",{"_index":778,"title":{},"content":{"62":{"position":[[373,18]]}},"keywords":{}}],["user.service.t",{"_index":770,"title":{},"content":{"62":{"position":[[1,15]]},"93":{"position":[[610,15],[1056,15]]},"94":{"position":[[273,15]]}},"keywords":{}}],["userid",{"_index":584,"title":{},"content":{"46":{"position":[[393,6],[435,6]]},"93":{"position":[[1312,7]]}},"keywords":{}}],["userinterceptor",{"_index":883,"title":{},"content":{"77":{"position":[[182,15]]}},"keywords":{}}],["userip",{"_index":849,"title":{},"content":{"71":{"position":[[471,6],[533,8]]},"73":{"position":[[285,6],[332,6]]}},"keywords":{}}],["useripinterceptor",{"_index":843,"title":{},"content":{"71":{"position":[[235,17]]},"72":{"position":[[17,17]]}},"keywords":{}}],["userrepositori",{"_index":772,"title":{},"content":{"62":{"position":[[80,15],[96,15],[412,14]]}},"keywords":{}}],["users'",{"_index":841,"title":{},"content":{"71":{"position":[[112,7]]}},"keywords":{}}],["userservic",{"_index":771,"title":{},"content":{"62":{"position":[[37,11]]},"91":{"position":[[260,11]]},"92":{"position":[[725,13]]},"93":{"position":[[646,11]]},"94":{"position":[[309,11]]}},"keywords":{}}],["userwithrol",{"_index":894,"title":{},"content":{"78":{"position":[[274,12],[730,13]]}},"keywords":{}}],["usevalu",{"_index":409,"title":{},"content":{"19":{"position":[[441,9]]}},"keywords":{}}],["usual",{"_index":259,"title":{},"content":{"9":{"position":[[770,5],[821,6]]},"79":{"position":[[996,6]]}},"keywords":{}}],["uuid",{"_index":424,"title":{},"content":{"20":{"position":[[904,7]]}},"keywords":{}}],["v10",{"_index":484,"title":{},"content":{"26":{"position":[[7,4]]}},"keywords":{}}],["v2.x",{"_index":390,"title":{"17":{"position":[[0,4]]}},"content":{},"keywords":{}}],["v3",{"_index":754,"title":{},"content":{"57":{"position":[[32,3]]}},"keywords":{}}],["v3.x",{"_index":391,"title":{"17":{"position":[[7,4]]},"54":{"position":[[0,4]]}},"content":{},"keywords":{}}],["v4",{"_index":123,"title":{},"content":{"3":{"position":[[783,3],[856,2]]},"57":{"position":[[89,2]]}},"keywords":{}}],["v4.0",{"_index":929,"title":{},"content":{"82":{"position":[[506,5]]}},"keywords":{}}],["v4.x",{"_index":734,"title":{"54":{"position":[[7,4]]}},"content":{},"keywords":{}}],["valu",{"_index":32,"title":{"81":{"position":[[13,7]]}},"content":{"2":{"position":[[223,5],[416,6],[443,5],[498,6],[525,5]]},"3":{"position":[[691,6]]},"45":{"position":[[143,7]]},"55":{"position":[[24,5]]},"57":{"position":[[6,5]]},"65":{"position":[[938,6],[981,8]]},"77":{"position":[[93,6],[461,6]]},"81":{"position":[[51,6]]},"82":{"position":[[606,5]]},"84":{"position":[[524,8],[1054,8]]}},"keywords":{}}],["variabl",{"_index":208,"title":{},"content":{"7":{"position":[[542,10]]},"9":{"position":[[986,9]]},"11":{"position":[[1135,9]]}},"keywords":{}}],["variou",{"_index":542,"title":{},"content":{"31":{"position":[[1155,7]]},"90":{"position":[[90,7]]}},"keywords":{}}],["version",{"_index":464,"title":{},"content":{"24":{"position":[[212,10]]},"27":{"position":[[11,8]]},"30":{"position":[[56,7]]},"43":{"position":[[214,10]]},"53":{"position":[[5,7],[162,7],[306,7],[535,7]]},"66":{"position":[[328,9]]},"82":{"position":[[488,8]]}},"keywords":{}}],["via",{"_index":832,"title":{},"content":{"68":{"position":[[291,3]]}},"keywords":{}}],["void",{"_index":43,"title":{},"content":{"2":{"position":[[432,4],[514,4],[968,5],[1009,4],[1142,4]]},"11":{"position":[[925,4],[1007,4]]},"55":{"position":[[678,5]]},"66":{"position":[[690,4],[813,4],[976,4]]}},"keywords":{}}],["want",{"_index":549,"title":{},"content":{"41":{"position":[[22,4]]},"49":{"position":[[36,4]]},"52":{"position":[[946,4]]},"53":{"position":[[501,4]]},"57":{"position":[[427,4]]},"64":{"position":[[175,4]]},"66":{"position":[[236,4]]},"93":{"position":[[192,4]]}},"keywords":{}}],["warn",{"_index":810,"title":{},"content":{"65":{"position":[[1139,7]]},"66":{"position":[[11,7]]}},"keywords":{}}],["way",{"_index":460,"title":{},"content":{"24":{"position":[[83,3]]},"26":{"position":[[88,3]]},"77":{"position":[[34,3]]}},"keywords":{}}],["we'd",{"_index":966,"title":{},"content":{"91":{"position":[[297,4]]}},"keywords":{}}],["we'll",{"_index":961,"title":{},"content":{"91":{"position":[[19,5]]}},"keywords":{}}],["web",{"_index":185,"title":{"7":{"position":[[17,3]]},"84":{"position":[[8,3]]}},"content":{"7":{"position":[[17,3],[141,3]]},"64":{"position":[[362,3]]},"65":{"position":[[188,3]]},"84":{"position":[[47,3]]}},"keywords":{}}],["websocket",{"_index":515,"title":{"29":{"position":[[0,11]]}},"content":{"29":{"position":[[1,9]]},"51":{"position":[[660,9]]}},"keywords":{}}],["websocketgateway",{"_index":520,"title":{},"content":{"29":{"position":[[140,17]]}},"keywords":{}}],["well",{"_index":718,"title":{},"content":{"52":{"position":[[1106,4]]},"90":{"position":[[240,5]]},"93":{"position":[[230,4]]}},"keywords":{}}],["whatev",{"_index":914,"title":{},"content":{"79":{"position":[[903,8]]}},"keywords":{}}],["whether",{"_index":78,"title":{},"content":{"2":{"position":[[1335,7]]},"5":{"position":[[54,7]]},"9":{"position":[[396,7]]},"10":{"position":[[1367,7]]},"11":{"position":[[190,7],[355,7],[1211,7],[1343,7],[1589,7],[1718,7]]},"31":{"position":[[31,7],[137,7]]},"97":{"position":[[802,7]]}},"keywords":{}}],["whole",{"_index":147,"title":{},"content":{"4":{"position":[[354,5]]},"46":{"position":[[772,5]]},"51":{"position":[[163,5],[851,5]]}},"keywords":{}}],["within",{"_index":80,"title":{},"content":{"2":{"position":[[1365,6]]},"3":{"position":[[741,6]]},"4":{"position":[[600,6]]},"20":{"position":[[1307,6]]},"25":{"position":[[210,6]]},"66":{"position":[[587,6]]}},"keywords":{}}],["without",{"_index":75,"title":{},"content":{"2":{"position":[[1275,7]]},"3":{"position":[[545,7]]},"4":{"position":[[241,7]]},"46":{"position":[[799,7]]},"48":{"position":[[36,7],[473,7]]},"51":{"position":[[399,7]]},"52":{"position":[[473,7]]},"56":{"position":[[171,7]]},"69":{"position":[[125,7]]},"73":{"position":[[71,7],[115,7]]},"78":{"position":[[889,7]]},"94":{"position":[[241,7]]},"97":{"position":[[696,7]]}},"keywords":{}}],["withouttransaction(callback",{"_index":995,"title":{},"content":{"97":{"position":[[640,29]]}},"keywords":{}}],["withtransact",{"_index":971,"title":{},"content":{"93":{"position":[[506,15]]},"94":{"position":[[71,15]]},"95":{"position":[[14,15]]}},"keywords":{}}],["withtransaction(callback",{"_index":993,"title":{},"content":{"97":{"position":[[456,26]]}},"keywords":{}}],["withtransaction(opt",{"_index":994,"title":{},"content":{"97":{"position":[[491,24]]}},"keywords":{}}],["won't",{"_index":558,"title":{},"content":{"43":{"position":[[41,5],[115,5]]},"49":{"position":[[559,5]]}},"keywords":{}}],["work",{"_index":128,"title":{"4":{"position":[[7,5]]}},"content":{"4":{"position":[[7,5],[385,5]]},"24":{"position":[[285,4]]},"28":{"position":[[158,4],[437,5]]},"45":{"position":[[156,5]]},"63":{"position":[[68,5]]},"66":{"position":[[1081,5]]},"90":{"position":[[64,5]]},"96":{"position":[[180,5]]},"97":{"position":[[43,7]]}},"keywords":{}}],["world",{"_index":749,"title":{},"content":{"56":{"position":[[115,5]]}},"keywords":{}}],["wrap",{"_index":120,"title":{},"content":{"3":{"position":[[752,7]]},"7":{"position":[[407,8],[796,4],[1047,8]]},"11":{"position":[[1941,8]]},"64":{"position":[[273,4]]},"65":{"position":[[89,4]]},"68":{"position":[[188,5]]},"70":{"position":[[72,5]]},"84":{"position":[[196,4],[704,5]]},"85":{"position":[[149,4]]},"94":{"position":[[45,4]]}},"keywords":{}}],["written",{"_index":456,"title":{},"content":{"22":{"position":[[38,8]]}},"keywords":{}}],["you'll",{"_index":587,"title":{},"content":{"46":{"position":[[571,6]]},"49":{"position":[[632,6]]},"90":{"position":[[201,6]]},"91":{"position":[[113,6]]}},"keywords":{}}],["you'r",{"_index":234,"title":{},"content":{"7":{"position":[[1251,6]]},"30":{"position":[[24,6]]}},"keywords":{}}],["yourself",{"_index":567,"title":{},"content":{"43":{"position":[[747,8]]}},"keywords":{}}]],"pipeline":["stemmer"]} \ No newline at end of file diff --git a/migration-guide.html b/migration-guide.html old mode 100755 new mode 100644 index 71dd3a1..e523bbe --- a/migration-guide.html +++ b/migration-guide.html @@ -1,16 +1,14 @@ - + - -Migration guide | NestJS CLS - - + +Migration guide | NestJS CLS + + -
-
Skip to main content

Migration guide

In case you're upgrading to a new major version of this library, follow the according migration guide.

- - +
Skip to main content

Migration guide

+

In case you're upgrading to a new major version of this library, follow the according migration guide.

\ No newline at end of file diff --git a/migration-guide/v2x-v3x.html b/migration-guide/v2x-v3x.html old mode 100755 new mode 100644 index 96e99cc..9412bd6 --- a/migration-guide/v2x-v3x.html +++ b/migration-guide/v2x-v3x.html @@ -1,17 +1,22 @@ - + - -v2.x → v3.x | NestJS CLS - - + +v2.x → v3.x | NestJS CLS + + -
-
Skip to main content

v2.xv3.x

  • The root registration method was renamed from register (resp. registerAsync) to forRoot (resp. forRootAsync) to align with the convention.

    - ClsModule.register({
    + ClsModule.forRoot({
    middleware: { mount: true },
    }),
  • Namespace injection support with forFeature was dropped entirely, and now that method is used to register Proxy Providers. If you still have a use case for namespaces, you can create a namespaced ClsService and use a custom provider to inject it.
    -Example:

    class MyContextService extends ClsService<MyStore> {}
    const myContextService = new MyContextService(new AsyncLocalStorage());

    // [...]
    providers: [
    {
    provide: MyContextService,
    useValue: myContextService,
    },
    ];
- - +
Skip to main content

v2.xv3.x

+

Root registration method renamed

+
    +
  • The root registration method was renamed from register (resp. registerAsync) to forRoot (resp. forRootAsync) to align with the convention.
  • +
+
- ClsModule.register({
+ ClsModule.forRoot({
middleware: { mount: true },
}),
+

Namespace support dropped

+

Namespace injection support with forFeature was dropped entirely, and now that method is used to register Proxy Providers. If you still have a use case for namespaces, you can create a namespaced ClsService and use a custom provider to inject it.
+Example:

+
class MyContextService extends ClsService<MyStore> {}
const myContextService = new MyContextService(new AsyncLocalStorage());

// [...]
providers: [
{
provide: MyContextService,
useValue: myContextService,
},
];
\ No newline at end of file diff --git a/migration-guide/v3x-v4x.html b/migration-guide/v3x-v4x.html new file mode 100644 index 0000000..f187b7f --- /dev/null +++ b/migration-guide/v3x-v4x.html @@ -0,0 +1,26 @@ + + + + + +v3.x → v4.x | NestJS CLS + + + + +
Skip to main content

v3.xv4.x

+

The v4 major version should be largely backwards compatible with v3. However, breaking changes were introduced in some less-used APIs that should be mentioned.

+

Changed base type of Proxy Providers

+

The default underlying value of Proxy Providers was changed to {}. This means that the typeof operator will now return 'object', which is more intuitive. (Link to original discussion)

+

The use-case of using a Proxy Provider as a function is still supported, but now requires the type option to be set to 'function'.

+
ClsModule.forFeature({
provide: 'class-proxy',
useClass: SomeClass,
});
ClsModule.forFeature({
provide: 'function-proxy',
useFactory: () => someFunction,
type: 'function',
});
+
@Injectable()
class SomeService {
constructor(
@Inject('class-proxy')
private readonly someClass: SomeClass,
@Inject('function-proxy')
private readonly functionProvider: () => void,
) {
console.log(typeof this.someClass); // 'object'
console.log(typeof this.functionProvider); // 'function'
}
}
+

Changed default of ifNested option

+

The default of the ifNested option was changed from override to inherit, which more closely aligns with most real-world use-cases.

+

If you used the ClsService#run method without explicitly setting the ifNested option, you should check if the new default behavior is compatible with your use-case and adjust accordingly.

+
this.cls.run(
{ ifNested: 'override' },
() => {
// ... rest of the code
},
);
+

Changed default of resolveProxyProviders in UseCls decorator

+

This value was undocumented in v3, but the default was false. It was changed to true in v4 to align with the default behavior of other enhancers.

+

This change should not affect most use-cases, because you either don't use Proxy Providers at all, or you use them and therefore had to set it to true anyway. The only case where this might be a breaking change is if you used the @UseCls in a module where you explicitly did not want to resolve Proxy Providers and therefore did not import their dependencies. In that case, you should set the resolveProxyProviders option to false in the decorator.

+ + \ No newline at end of file diff --git a/plugins.html b/plugins.html new file mode 100644 index 0000000..a622d48 --- /dev/null +++ b/plugins.html @@ -0,0 +1,23 @@ + + + + + +Plugins | NestJS CLS + + + + +
Skip to main content

Plugins

+Since v4.0 +

Plugins are a way to enable pre-built integrations with other libraries and frameworks. They are a convenient way to enable many real-world use-cases without having to write much boilerplate code.

+

Plugins can hook into the lifecycle of the ClsModule and the CLS context setup of the Cls- initializers. They can also provide their own Proxy- and regular providers to be used in the application.

+

Usage

+

To use a plugin, pass it to the forRoot method of the ClsModule:

+
ClsModule.forRoot({
plugins: [new MyPlugin()],
});
+

Available plugins

+

For a list of plugins managed by the author of nestjs-cls, see the Available Plugins page.

+

Creating a plugin

+

To create a custom plugin, see the Plugin API reference.

+ + \ No newline at end of file diff --git a/plugins/available-plugins.html b/plugins/available-plugins.html new file mode 100644 index 0000000..2f87669 --- /dev/null +++ b/plugins/available-plugins.html @@ -0,0 +1,17 @@ + + + + + +Available Plugins | NestJS CLS + + + + +
Skip to main content

Available Plugins

+

This section lists all plugins that are maintained by the author of nestjs-cls. They are all published under the @nestjs-cls scope and are kept up to date with any changes to the library.

+
+ + \ No newline at end of file diff --git a/plugins/available-plugins/transactional.html b/plugins/available-plugins/transactional.html new file mode 100644 index 0000000..9f2c3ce --- /dev/null +++ b/plugins/available-plugins/transactional.html @@ -0,0 +1,86 @@ + + + + + +@nestjs-cls/transactional | NestJS CLS + + + + +
Skip to main content

@nestjs-cls/transactional

+

The Transactional plugin for nestjs-cls provides a generic interface that can be used to wrap any function call in +a CLS-enabled transaction by storing the transaction reference in the CLS context.

+

The transaction reference can be then retrieved in any other service and refer to the same transaction without having to pass it around.

+

Installation

+
npm install @nestjs-cls/transactional
+

The plugin works in conjunction with various adapters that provide the actual transactional logic and types for the underlying database library, so you'll need to install one of those as well.

+

Adapters for the following libraries are available:

+ +

Adapters will not be implemented for the following libraries:

+ +

Example

+

For this example, we'll use the prisma library and the @nestjs-cls/transactional-adapter-prisma adapter. Later, you'll learn how to create your own adapter.

+

Suppose we already have a PrismaModule which provides a PrismaClient instance and two other services UserService and AccountService which we'd like to make transactional.

+

Plugin registration

+

To add register the transactional plugin with nestjs-cls, we need to pass it to the forRoot method of the ClsModule:

+
app.module.ts
import { ClsModule } from 'nestjs-cls';
import { ClsPluginTransactional } from '@nestjs-cls/transactional';
import { TransactionalAdapterPrisma } from '@nestjs-cls/transactional-adapter-prisma';
// ... other imports

@Module({
imports: [
PrismaModule,
ClsModule.forRoot({
plugins: [
new ClsPluginTransactional({
// if PrismaModule is not global, we need to make it available to the plugin
imports: [PrismaModule],
adapter: new TransactionalAdapterPrisma({
// each adapter has its own options, see the adapter docs for more info
prismaInjectionToken: PrismaClient,
}),
}),
],
}),
],
providers: [UserService, AccountService],
})
export class AppModule {}
+

This registers a TransactionHost provider in the global context which can be used to start a new transaction and retrieve the current transaction reference.

+

Using the TransactionHost

+

Now that we have the plugin registered, we can use the TransactionHost to start a new transaction and retrieve the current transaction reference.

+

Suppose that any time we create an User, we want to create an Account for them as well and both operations must either succeed or fail. We can use the TransactionHost to start a new transaction and retrieve the current transaction reference.

+

The type argument on the TransactionHost<Adapter> makes sure that the tx property is typed correctly and the withTransaction method returns the correct type. This is ensured by the implementation of the adapter:

+
user.service.ts
@Injectable()
class UserService {
constructor(
private readonly txHost: TransactionHost<TransactionalAdapterPrisma>,
private readonly accountService: AccountService,
) {}

async createUser(name: string): Promise<User> {
return this.txHost.withTransaction(async () => {
const user = await this.txHost.tx.user.create({ data: { name } });
await this.accountService.createAccountForUser(user.id);
return user;
});
}
}
+
user.service.ts
@Injectable()
class AccountService {
constructor(
private readonly txHost: TransactionHost<TransactionalAdapterPrisma>,
) {}

async createAccountForUser(id: number): Promise<Account> {
return this.txHost.tx.user.create({
data: { userId: id, number: Math.random() },
});
}
}
+
note

Notice that we never used either raw PrismaClient or the prisma.$transaction directly. This is because the adapter takes care of that for us, otherwise the transaction would not be propagated in the CLS context.

+

Using the Transactional decorator

+

The @Transactional decorator can be used to wrap a method call in the withTransaction call implicitly. This saves a lot of boilerplate code and makes the code more readable.

+

Using the decorator, we can change the createUser method like so without changing the behavior:

+
user.service.ts
@Injectable()
class UserService {
constructor(
private readonly txHost: TransactionHost<TransactionalAdapterPrisma>,
private readonly accountService: AccountService,
) {}

@Transactional()
async createUser(name: string): Promise<User> {
const user = await this.txHost.tx.user.create({ data: { name } });
await this.accountService.createAccountForUser(user.id);
return user;
}
}
+

Passing transaction options

+

The both the withTransaction method and the Transactional decorator accepts an optional TransactionOptions object as the first argument. This object can be used to configure the transaction, for example to set the isolation level or the timeout. The type is also provided by the adapter.

+
@Transactional<TransactionalAdapterPrisma>({ isolationLevel: 'Serializable' })
async createUser(name: string): Promise<User> {
const user = await this.txHost.tx.user.create({ data: { name } });
await this.accountService.createAccountForUser(user.id);
return user;
}
+
async createUser(name: string): Promise<User> {
return this.txHost.withTransaction({ isolationLevel: 'Serializable' }, async () => {
const user = await this.txHost.tx.user.create({ data: { name } });
await this.accountService.createAccountForUser(user.id);
return user;
});
}
+

ClsPluginTransactional Interface

+

The ClsPluginTransactional constructor takes an options object with the following properties:

+
    +
  • +

    imports: any[]
    +An array of NestJS modules that should be imported for the plugin to work. If the dependencies are available in the global context, this is not necessary.

    +
  • +
  • +

    adapter: TransactionalAdapter
    +An instance of the adapter that should be used for the plugin.

    +
  • +
+

TransactionHost Interface

+

The TransactionHost interface is the main working interface of the plugin. It provides the following API:

+
    +
  • +

    tx: Transaction
    +Reference to the currently active transaction. Depending on the adapter implementation for the underlying database library, this can be either a transaction client instance, a transaction object or a transaction ID. If no transaction is active, refers to the default non-transactional client instance (or undefined transaction ID).

    +
  • +
  • +

    withTransaction(callback): Promise
    +withTransaction(options, callback): Promise
    +Runs the callback in a transaction. Optionally takes a TransactionOptions object as the first parameter.

    +
  • +
  • +

    withOutTransaction(callback): Promise
    +Runs the callback without a transaction (even if one is active in the parent scope).

    +
  • +
  • +

    isTransactionActive(): boolean
    +Returns whether a CLS-managed transaction is active in the current scope.

    +
  • +
+

Considerations

+

Please note that at this time, the @nestjs-cls/transactional plugin only supports a single database connection per application. This means that if you have multiple databases, you can only use one of them with the transactional plugin.

+

This is a subject to change in the future, as there are plans to support multiple TransactionHost instances, each with their own adapter and a database connection.

+ + \ No newline at end of file diff --git a/plugins/available-plugins/transactional/creating-custom-adapter.html b/plugins/available-plugins/transactional/creating-custom-adapter.html new file mode 100644 index 0000000..84e07ca --- /dev/null +++ b/plugins/available-plugins/transactional/creating-custom-adapter.html @@ -0,0 +1,14 @@ + + + + + +Creating a custom adapter | NestJS CLS + + + + + + + \ No newline at end of file diff --git a/plugins/available-plugins/transactional/prisma-adapter.html b/plugins/available-plugins/transactional/prisma-adapter.html new file mode 100644 index 0000000..80dca44 --- /dev/null +++ b/plugins/available-plugins/transactional/prisma-adapter.html @@ -0,0 +1,25 @@ + + + + + +Prisma adapter | NestJS CLS + + + + +
Skip to main content

Prisma adapter

+

Installation

+
npm install @nestjs-cls/transactional-adapter-prisma
+

Registration

+
ClsModule.forRoot({
plugins: [
new ClsPluginTransactional({
imports: [
// module in which the PrismaClient is provided
PrismaModule
],
adapter: new TransactionalAdapterPrisma({
// the injection token of the PrismaClient
prismaInjectionToken: PrismaService,
}),
}),
],
}),
+

Typing & usage

+

The tx property on the TransactionHost<TransactionalAdapterPrisma> refers to the transactional PrismaClient instance when used in a transactional context. It is the instance that is passed to the prisma.$transaction(( tx ) => { ... }) callback.

+

Outside of a transactional context, it refers to the regular PrismaClient instance (but is typed as the transactional one).

+

Example

+
user.service.ts
@Injectable()
class UserService {
constructor(private readonly userRepository: UserRepository) {}

@Transactional()
async runTransaction() {
// both methods are executed in the same transaction
const user = await this.userRepository.createUser('John');
const foundUser = await this.userRepository.getUserById(r1.id);
assert(foundUser.id === user.id);
}
}
+
user.repository.ts
@Injectable()
class UserRepository {
constructor(
private readonly txHost: TransactionHost<TransactionalAdapterPrisma>,
) {}

async getUserById(id: number) {
// txHost.tx is typed as the transactional PrismaClient
return this.txHost.tx.user.findUnique({ where: { id } });
}

async createUser(name: string) {
return this.txHost.tx.user.create({
data: { name: name, email: `${name}@email.com` },
});
}
}
+

Caveats

+

Since Prisma generates its own client to node_modules, this plugin works with the assumption that the types for the client are available as @prisma/client. If you have a different setup, you might need to use declare module '@prisma/client' to make typescript happy.

+ + \ No newline at end of file diff --git a/plugins/plugin-api.html b/plugins/plugin-api.html new file mode 100644 index 0000000..4abcfdd --- /dev/null +++ b/plugins/plugin-api.html @@ -0,0 +1,17 @@ + + + + + +Plugin API | NestJS CLS + + + + +
Skip to main content

Plugin API

+
warning

The Plugin API is still experimental and might change in the future, you should not rely on it in production.

Using any of the "official" plugins is safe since they are maintained by the same author. If you want to create your own plugin, you should be aware that the API might change between minor versions.

+

A plugin is, in its core, a NestJS module with some extra options and should implement the following interface:

+
export interface ClsPlugin {
/**
* The name of the plugin, used for logging and debugging
*/
name: string;

/**
* Function that is called within a Cls initializer (middleware, interceptor, guard, etc.)
*/
onClsInit?: (cls: ClsService) => void | Promise<void>;

/**
* A lifecycle method called when the `ClsModule` is initialized
*/
onModuleInit?: () => void | Promise<void>;

/**
* A lifecycle method called when the `ClsModule` is destroyed (only when shutdown hooks are enabled)
*/
onModuleDestroy?: () => void | Promise<void>;

/**
* An array of external modules that should be imported for the plugin to work.
*/
imports?: any[];

/**
* An array of providers that the plugin provides.
*/
providers?: Provider[];

/**
* An array of providers that the plugin provides that should be exported.
*/
exports?: any[];
}
+

The plugin options are then mixed into a global ClsPluginModule and the exposed providers can be used for injection by other plugin-related code.

+ + \ No newline at end of file diff --git a/search-doc-1697660838110.json b/search-doc-1697660838110.json deleted file mode 100755 index 7ddbd48..0000000 --- a/search-doc-1697660838110.json +++ /dev/null @@ -1 +0,0 @@ -[{"title":"NestJS CLS","type":0,"sectionRef":"#","url":"/nestjs-cls/","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Use cases​","type":1,"pageTitle":"NestJS CLS","url":"/nestjs-cls/#use-cases","content":"Some common use cases that this library enables include: Tracking the Request ID and other metadata for logging purposesKeeping track of the user throughout the whole requestMaking the dynamic Tenant database connection available everywhere in multi-tenant appsPropagating the authentication level or role to restrict access to resourcesSeamlessly propagating the transaction object of your favourite ORM across services without breaking encapsulation and isolation by explicitly passing it around.Using "request" context in cases where actual REQUEST-scoped providers are not supported (passport strategies, cron controllers, websocket gateways, ...) Most of these are to some extent solvable using REQUEST-scoped providers or passing the context as a parameter, but these solutions are often clunky and come with a whole lot of other issues. info * The name comes from the original implementation based on cls-hooked, which was since replaced by the native AsyncLocalStorage. "},{"title":"Motivation​","type":1,"pageTitle":"NestJS CLS","url":"/nestjs-cls/#motivation","content":"NestJS is an amazing framework, but in the plethora of awesome built-in features, I still missed one. I created this library to solve a specific use case, which was limiting access to only those records which had the same TenantId as the request's user in a central manner. The repository code automatically added a WHERE clause to each query, which made sure that other developers couldn't accidentally mix tenant data (all tenants' data were held in the same database) without extra effort. AsyncLocalStorage is still fairly new and not many people know of its existence and benefits. Here's a nice talk from NodeConf about the history. I've invested a great deal of my personal time in making the use of it as pleasant as possible. While the use of async_hooks is sometimes criticized for making Node run slower, in my experience, the introduced overhead is negligible compared to any IO operation (like a DB or external API call). If you want fast, use a compiled language. Also, if you use some tracing library (like otel), it most likely already uses async_hooks under the hood, so you might as well use it to your advantage. "},{"title":"Highlights​","type":1,"pageTitle":"NestJS CLS","url":"/nestjs-cls/#highlights","content":"New: Version 3.0 introduces Proxy Providers as an alternative to the imperative API. (Minor breaking changes were introduced, see Migration guide). Version 2.0 brings advanced type safety and type inference. However, it requires features from typescript >= 4.4 - Namely allowing symbol members in interfaces. If you can't upgrade but still want to use this library, install version 1.6.2, which lacks the typing features. "},{"title":"Module Options","type":0,"sectionRef":"#","url":"/nestjs-cls/api/module-options","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"forRoot(Async)​","type":1,"pageTitle":"Module Options","url":"/nestjs-cls/api/module-options#forrootasync","content":"The ClsModule.forRoot() method takes the following ClsModuleOptions: middleware?: ClsMiddlewareOptions An object with additional options for the ClsMiddleware, see below. guard?: ClsGuardOptions An object with additional options for the ClsGuard, see below. interceptor?: ClsInterceptorOptions An object with additional options for the ClsInterceptor, see below. global?: boolean (default false) Whether to make the module global, so you do not have to import ClsModule.forFeature() in other modules. proxyProviders?: Type[] Array of Proxy Providers that should be registered in the root module. Currently only accepts sync class Proxy providers, use ClsModule.forFeatureAsync() for more complex use-cases. ClsModule.forRootAsync() is also available. You can supply the usual imports, inject and useFactory parameters as usual. info Please note: If you intend to use multiple enhancers at the same time (e.g. initialize the CLS context in a middleware and then set some CLS variables additional CLS variables in an interceptor), be aware that the only the first one in the chain will set the Request ID. "},{"title":"forFeature(Async)​","type":1,"pageTitle":"Module Options","url":"/nestjs-cls/api/module-options#forfeatureasync","content":"The ClsModule.forFeature() method can be used to register a Proxy Providers. The Sync method only accepts Class Proxy providers. The ClsModule.forFeatureAsync() method accepts either ClsModuleProxyClassProviderOptions or ClsModuleProxyFactoryProviderOptions that both accept these options: provide?: any Custom injection token to use for the provider. In case of a class provider, this parameter is optional, as the class reference passed to useClass will be used by default. imports? any[] Optional list of imported modules that export the providers which are required for the provider. extraProviders?: Provider[]Optional list of additional providers that should be available to the Proxy. Useful for passing configuration from a parent dynamic module. The ClsModuleProxyClassProviderOptions interface further accepts: useClass: Type The target class that will be used by this Proxy Provider. Make sure it is decorated with @InjectableProxy. The ClsModuleProxyFactoryProviderOptions interface further accepts: inject: any[] An array of injection tokens for providers used in the useFactory. useFactory: (...args: any[]) => any Factory function that accepts an array of providers in the order of the according tokens in the inject array. Returns (or resolves with) an object (or a function) that will be used by this Proxy Provider. "},{"title":"Middleware & Enhancer options​","type":1,"pageTitle":"Module Options","url":"/nestjs-cls/api/module-options#middleware--enhancer-options","content":"All of the Cls{Middleware,Guard,Interceptor}Options take the following parameters (either in ClsModuleOptions or directly when instantiating them manually): mount?: boolean (default false) Whether to automatically mount the middleware/guard/interceptor to every route (not applicable when instantiating them manually) generateId?: boolean (default false) Whether to automatically generate a request ID. It will be available under the CLS_ID key. idGenerator?: (req: Request) => string | Promise<string> idGenerator?: (ctx: ExecutionContext) => string | Promise<string> An optional function for generating the request ID. It takes the Request object (or the ExecutionContext in case of a Guard or Interceptor) as an argument and (synchronously or asynchronously) returns a string. The default implementation uses Math.random() to generate a string of 8 characters. setup?: (cls: ClsService, req: Request) => void | Promise<void>; setup?: (cls: ClsService, ctx: ExecutionContext) => void | Promise<void>; Function that executes after the CLS context had been initialised. It can be used to put additional variables in the CLS context. resolveProxyProviders?: boolean (default true) Whether to automatically resolve Proxy Providers in the enhancer (if any are registered). The ClsMiddlewareOptions additionally takes the following parameters: saveReq?: boolean (default true) Whether to store the Request object to the context. It will be available under the CLS_REQ key. saveRes?: boolean (default false) Whether to store the Response object to the context. It will be available under the CLS_RES key useEnterWith?: boolean (default false) Set to true to set up the context using a call to AsyncLocalStorage#enterWith instead of wrapping the next() call with the safer AsyncLocalStorage#run. Most of the time this should not be necessary, but some frameworks are known to lose the context with run. "},{"title":"API","type":0,"sectionRef":"#","url":"/nestjs-cls/api","content":"API This chapter describes the programmatic API of the ClsService and the ClsModule options.","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Breaking out of DI","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases/breakin-out-of-di","content":"Breaking out of DI While this package aims to be compatible with NestJS's Dependency Injection, it is also possible to access the CLS context outside of it. For that, it provides the static ClsServiceManager class that exposes the getClsService() method which can be used to retrieve the context outside of Nest's injection context (e.g. in top-level functions) function helper() { const cls = ClsServiceManager.getClsService(); // you now have access to the shared storage console.log(cls.getId()); } caution Please note: Only use this feature where absolutely necessary. Using this technique instead of dependency injection will make it difficult to mock the ClsService and your code will become harder to test.","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Additional CLS Setup","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases/additional-cls-setup","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Middleware​","type":1,"pageTitle":"Additional CLS Setup","url":"/nestjs-cls/features-and-use-cases/additional-cls-setup#middleware","content":"In case of middleware the Request and Response objects are passed as the second and third parameters. ClsModule.forRoot({ middleware: { mount: true, setup: (cls, req: Request, res: Response) => { cls.set('TENANT_ID', req.params('tenant_id')); cls.set('AUTH', { authenticated: false }); }, }, }); "},{"title":"Enhancers​","type":1,"pageTitle":"Additional CLS Setup","url":"/nestjs-cls/features-and-use-cases/additional-cls-setup#enhancers","content":"In a guard or interceptor, the ExecutionContext object is passed as a second parameter. ClsModule.forRoot({ interceptor: { mount: true, setup: (cls, context) => { const req = context.switchToHttp().getRequest<Request>(); cls.set('TENANT_ID', req.params('tenant_id')); cls.set('AUTH', { authenticated: false }); }, }, }); "},{"title":"Considerations","type":0,"sectionRef":"#","url":"/nestjs-cls/considerations","content":"Considerations This chapter exists to help you decide whether this library is compatible with your project and to address any concerns that you may have. You might be also interested in the Author's take","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Request ID","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases/request-id","content":"Request ID Because of a shared storage, CLS is an ideal tool for tracking request (correlation) IDs for the purpose of logging. This package provides an option to automatically generate request IDs in the middleware/guard/interceptor, if you pass { generateId: true } to its options. By default, the generated ID is a string based on Math.random(), but you can provide a custom function in the idGenerator option. This function receives the Request (or ExecutionContext in case a ClsGuard is used) as the first parameter, which can be used in the generation process and should return (or resolve with) a string ID that will be stored in the CLS for later use. Below is an example of retrieving the request ID from the request header with a fallback to an autogenerated one. ClsModule.forRoot({ middleware: { mount: true, generateId: true, idGenerator: (req: Request) => req.headers['X-Request-Id'] ?? uuid(); } }) The ID is stored under the CLS_ID constant in the context. The ClsService provides a shorthand method getId to quickly retrieve it anywhere. It can be for example used in a custom logger: my.logger.ts @Injectable() class MyLogger { constructor(private readonly cls: ClsService) {} log(message: string) { console.log(`<${this.cls.getId()}> ${message}`); } } Calling this from anywhere within a CLS context results in retrieving the ID: my.service.ts @Injectable() class MyService { constructor(private readonly logger: MyLogger); hello() { this.logger.log('Hello'); // -> logs for ex.: "<44c2d8ff-49a6-4244-869f-75a2df11517a> Hello" } } ","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"How it works","type":0,"sectionRef":"#","url":"/nestjs-cls/introduction/how-it-works","content":"How it works Continuation-local storage provides a common space for storing and retrieving data throughout the life of a function/callback call chain. In NestJS, this allows for sharing request data across the lifetime of a single request - without the need for request-scoped providers. It also makes it easy to track and log request ids throughout the whole application. To make CLS work, it is required to set up the CLS context first. This is done by calling cls.run() (or cls.enter(), see Security considerations for more info) somewhere in the app. Once that is set up, anything that is called within the same callback chain has access to the same storage with cls.set() and cls.get().","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Installation","type":0,"sectionRef":"#","url":"/nestjs-cls/introduction/installation","content":"Installation Install as any other NPM package using your favorite package manager. npmyarnpnpm npm install nestjs-cls info This module requires additional peer deps, like the @nestjs/core and @nestjs/common libraries, but it is assumed those are already installed.","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Security","type":0,"sectionRef":"#","url":"/nestjs-cls/considerations/security","content":"Security It is often discussed whether AsyncLocalStorage is safe to use for concurrent requests (because of a possible context leak) and whether the context could be lost throughout the duration of a request. The ClsMiddleware and ClsInterceptor by default uses the safe run() method, which it should not leak context, but in some rare cases, the context can be lost. The ClsGuard (and ClsMiddleware, if configured so) uses the less safe enterWith() method, which might be needed in case the run() method causes context loss. This has a consequence that should be taken into account: caution When the enterWith method is used, any consequent requests get access to the CLS context of the previous request until the request hits the enterWith call. That means, when using ClsMiddleware with the useEnterWith option, or ClsGuard to set up context, be sure to mount them as early in the request lifetime as possible and do not use any other enhancers that rely on ClsService before them. For ClsGuard, that means you should probably manually mount it in AppModule if you require any other guard to run after it. The next chapter addresses compatibility with various transport protocols.","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Service Interface","type":0,"sectionRef":"#","url":"/nestjs-cls/api/service-interface","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"ClsService​","type":1,"pageTitle":"Service Interface","url":"/nestjs-cls/api/service-interface#clsservice","content":"The injectable ClsService provides the following API to manipulate the cls context: The S type parameter is used as the type of custom ClsStore. get(): S Get the entire CLS context. get(key?: keyof S): S[key] Retrieve a value from the CLS context by key. getId(): string; Retrieve the request ID (a shorthand for cls.get(CLS_ID)) has(key: keyof S): boolean Check if a key is in the CLS context. set(key: keyof S, value: S[key]): void Set a value on the CLS context. setIfUndefined(key: keyof S, value: S[key]): void Set a value on the CLS context only if it hasn't been already set. Useful for ensuring idempotence if you have multiple entry points. run(callback: () => T): T run(options: ClsContextOptions, callback: () => T): T; Run the callback in a shared CLS context. Optionally takes an options object as the first parameter. runWith(store: S, callback: () => T): T Run the callback in a new CLS context (while supplying the default store). enter(): void; enter(options: ClsContextOptions): void Run any following code in a shared CLS context. Optionally takes an options object as the first parameter. enterWith(store: S): void Run any following code in a new CLS context (while supplying the default store). exit(callback: () => T): T Run the callback without access to a shared CLS context. isActive(): boolean Whether the current code runs within an active CLS context. resolveProxyProviders(): Promise<void> Manually trigger resolution of Proxy Providers. "},{"title":"ClsContextOptions​","type":1,"pageTitle":"Service Interface","url":"/nestjs-cls/api/service-interface#clscontextoptions","content":"The run and enter methods can take an additional options object with the following settings: ifNested?: 'override' | 'inherit' | 'reuse' Sets the behavior of nested CLS context creation in case the method is invoked in an existing context. It has no effect if no parent context exist. override (default) - Run the callback with an new empty context. No values from the parent context will be accessible within the wrapped code.inherit - Run the callback with a shallow copy of the parent context. Re-assignments of top-level properties will not be reflected in the parent context. However, modifications of existing properties will be reflected.reuse - Reuse existing context without creating a new one. All modifications to the existing context will be reflected. "},{"title":"Features and use cases","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases","content":"Features and use cases In addition to the basic functionality described in the Quick start chapter, this module provides several other features to make your life as a developer easier.","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Type safety and type inference","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Type-safe ClsService​","type":1,"pageTitle":"Type safety and type inference","url":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference#type-safe-clsservice","content":"It is possible to specify a custom interface for the ClsService and get proper typing and automatic type inference when retrieving or setting values. This works even for nested objects using a dot notation. To create a typed CLS Store, start by creating an interface that extends ClsStore. my-cls-service.interface.ts export interface MyClsStore extends ClsStore { tenantId: string; user: { id: number; authorized: boolean; }; } "},{"title":"Using a type parameter​","type":1,"pageTitle":"Type safety and type inference","url":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference#using-a-type-parameter","content":"Then you can inject the ClsService with a type parameter ClsService<MyClsStore> to make use of the safe typing. export class MyService { constructor(private readonly cls: ClsService<MyClsStore>) {} doTheThing() { // a boolean type will be enforced here this.cls.set('user.authorized', true); // tenantId will be inferred as a string const tenantId = this.cls.get('tenantId'); // userId will be inferred as a number const userId = this.cls.get('user.id'); // user will be inferred as { id: number, authorized: boolean } const user = this.cls.get('user'); // you'll even get intellisense for the keys, because the type // will be inferred as: // symbol | 'tenantId˙ | 'user' | 'user.id' | 'user.authorized' // alternatively, since the `get` method returns the whole store // when called without arguments, you can use object destructuring const { tenantId, user } = this.cls.get(); // accessing a nonexistent property will result in a type error const notExist = this.cls.get('user.name'); } } "},{"title":"Using Typescript module augmentation​","type":1,"pageTitle":"Type safety and type inference","url":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference#using-typescript-module-augmentation","content":"Alternatively, if you feel like using ClsService<MyClsStore> everywhere is tedious, you can instead globally augment the ClsStore interface. Now you don't need to specify the type parameter on ClsService to still get the string typing. declare module 'nestjs-cls' { interface ClsStore { tenantId: string; user: { id: number; authorized: boolean; }; } } "},{"title":"Using a custom provider​","type":1,"pageTitle":"Type safety and type inference","url":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference#using-a-custom-provider","content":"For even more transparent approach without augmenting the declaration, you can create a typed ClsService by extending it and creating a custom provider out of it: export class MyClsService extends ClsService<MyClsStore> {} @Module({ imports: [ClsModule.forFeature()], providers: [ { provide: MyClsService, useExisting: ClsService, }, ], exports: [MyClsService], }) class MyClsModule {} Now you can inject MyClsService as an alias for ClsService<MyClsStore> without "polluting" the global type space. "},{"title":"Terminal Type​","type":1,"pageTitle":"Type safety and type inference","url":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference#terminal-type","content":"It can happen, that the object you want to store in the context is too complex, or contains cyclic references. In that case, typescript might complain that type instantiation is too deep, possibly infinite. That is due to the fact that it tries to generate all possible paths inside the ClsStore. If that's the case, you can use the Terminal type to stop generating the paths for a certain subtree: interface ClsStore { tenantId: string; user: Terminal<{ id: number; authorized: boolean; }>; } This will only generate the paths tenantId | user and won't allow directly accessing nested keys (like cls.get('user.id'), but you'll still get fully typing for things like const { id } = cls.get('user')). See issue #22 for more details. "},{"title":"Compatibility","type":0,"sectionRef":"#","url":"/nestjs-cls/considerations/compatibility","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"REST​","type":1,"pageTitle":"Compatibility","url":"/nestjs-cls/considerations/compatibility#rest","content":"This package is compatible with Nest-supported REST controllers and the preferred way is to use the ClsMiddleware with the mount option set to true. Tested with: ✔ Express✔ Fastify Known issues: In case API versioning is used, the automatic mounting of the ClsMiddleware does not work and it needs to be mounted manually. See issue #67 for details.Some existing Express middlewares may cause context loss, if that happens, mount the ClsMiddleware manually after those offending ones (#50) "},{"title":"GraphQL​","type":1,"pageTitle":"Compatibility","url":"/nestjs-cls/considerations/compatibility#graphql","content":"Using an interceptor or a guard may result in that enhancer triggering multiple times in case there are multiple queries in the GQL request. Due to this, you should ensure that any operation on the CLS store within enhancers is idempotent. This includes the setup function. Therefore, it is advised to use the ClsService#setIfUndefined() method. Tested with: ✔ Apollo (Express)✔ Mercurius (Fastify) "},{"title":"@nestjs/graphql >= 10​","type":1,"pageTitle":"Compatibility","url":"/nestjs-cls/considerations/compatibility#nestjsgraphql--10","content":"Since v10, Nest's GraphQL resolvers are compatible with this package and the preferred way to initialize the CLS context is use the ClsMiddleware with the mount option. "},{"title":"@nestjs/graphql < 10​","type":1,"pageTitle":"Compatibility","url":"/nestjs-cls/considerations/compatibility#nestjsgraphql--10-1","content":"For older versions of graphql, the ClsMiddleware needs to be mounted manually with app.use(...) in order to correctly set up the context for resolvers. Additionally, you have to pass useEnterWith: true to the ClsMiddleware options, because the context gets lost otherwise due to an issue with CLS and Apollo (sadly, the same is true for Mercurius). This method is functionally identical to just using the ClsGuard. Alternatively, you can use the ClsInterceptor, which uses the safer AsyncLocalStorage#run (thanks to andreialecu), but remember that using it makes CLS unavailable in Guards. "},{"title":"Others​","type":1,"pageTitle":"Compatibility","url":"/nestjs-cls/considerations/compatibility#others","content":"Use the ClsGuard or ClsInterceptor to set up context with any other platform. There are no explicit test for other transports, so I can't guarantee it will work with your platform of choice, but there's nothing that would indicate otherwise. If you decide to try this package with a platform that is not listed here, please let me know so I can add the compatibility notice. Below are listed transports with which it is confirmed to work: "},{"title":"Websockets​","type":1,"pageTitle":"Compatibility","url":"/nestjs-cls/considerations/compatibility#websockets","content":"Websocket Gateways don't respect globally bound enhancers, therefore it is required to bind the ClsGuard or ClsInterceptor manually on the WebsocketGateway. Special care is also needed for the handleConnection method (See #8) "},{"title":"Quick Start","type":0,"sectionRef":"#","url":"/nestjs-cls/introduction/quick-start","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Background​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#background","content":"This library exposes a dynamic ClsModule which exposes the injectable ClsService and provides means to setting up and interacting with the CLS context. The CLS context is a storage that wraps around a chain of function calls. It can be accessed anywhere during the lifecycle of such chain via the ClsService. "},{"title":"Example​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#example","content":"Below is an example of using this library to store the client's IP address in an interceptor and retrieving it in a service without explicitly passing it along. note This example assumes you are using HTTP and therefore can use middleware. For usage with non-HTTP transports, see Setting up CLS context. "},{"title":"Register the ClsModule​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#register-the-clsmodule","content":"Register the ClsModule and automatically mount the ClsMiddleware which wraps the entire request in a shared CLS context on all routes. app.module.ts @Module({ imports: [ ClsModule.forRoot({ global: true, middleware: { mount: true }, }), ], providers: [AppService], controllers: [AppController], }) export class AppModule {} "},{"title":"Create IP-address interceptor​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#create-ip-address-interceptor","content":"Create an interceptor that injects the ClsService to get access to the current shared CLS context,extract the users's IP address from the request and stores it into the CLS context, user-ip.interceptor.ts @Injectable() export class UserIpInterceptor implements NestInterceptor { constructor(private readonly cls: ClsService) {} intercept(context: ExecutionContext, next: CallHandler): Observable<any> { const request = context.switchToHttp().getRequest(); const userIp = request.connection.remoteAddress; this.cls.set('ip', userIp); return next.handle(); } } "},{"title":"Mount interceptor to controller​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#mount-interceptor-to-controller","content":"By mounting the UserIpInterceptor on the controller, it gets access to the same shared CLS context that the ClsMiddleware set up. Of course, we could also bind the interceptor globally with APP_INTERCEPTOR. app.controller.ts @UseInterceptors(UserIpInterceptor) @Injectable() export class AppController { constructor(private readonly appService: AppService) {} @Get('/hello') hello() { return this.appService.sayHello(); } } "},{"title":"Access CLS context in service​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#access-cls-context-in-service","content":"In the AppService, we can retrieve the user's IP from the CLS context without explicitly passing in anything, and without making the AppService request-scoped! app.service.ts @Injectable() export class AppService { constructor(private readonly cls: ClsService) {} sayHello() { const userIp = this.cls.get('ip'); return 'Hello ' + userIp + '!'; } } "},{"title":"That's it​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#thats-it","content":"This is pretty much all there is to it. This library further provides more quality-of-life features, so read on! info If your use-case is really simple, you can instead consider creating a custom implementation with AsyncLocalStorage. Limiting the number of dependencies in your application is always a good idea! "},{"title":"Migration guide","type":0,"sectionRef":"#","url":"/nestjs-cls/migration-guide","content":"Migration guide In case you're upgrading to a new major version of this library, follow the according migration guide.","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Usage outside of web request","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases/usage-outside-of-web-request","content":"Usage outside of web request Sometimes, a part of the app that relies on the CLS storage might need to be called outside of the context of a web request - for example, in a Cron job, while consuming a Queue or during the application bootstrap. In such cases, there are no enhancers that can be bound to the handler to set up the context. Therefore, you as the the developer are responsible for wrapping the execution with ClsService#run, or using the @UseCls decorator. In any case, if any following code depends on some context variables, these need to be set up manually. @Injectable() export class CronController { constructor( private readonly someService: SomeService, private readonly cls: ClsService, ); @Cron('45 * * * * *') async handleCronExample1() { // either explicitly wrap the function body with // a call to `ClsService#run` ... await this.cls.run(async () => { this.cls.set('mode', 'cron'); await this.someService.doTheThing(); }); } @Cron('90 * * * * *') // ... or use the convenience decorator which // does the wrapping for you seamlessly. @UseCls({ setup: (cls) => { cls.set('mode', 'cron'); }, }) async handleCronExample2() { await this.someService.doTheThing(); } } caution Special care must be taken in case you're using Proxy Providers.","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Using a Decorator","type":0,"sectionRef":"#","url":"/nestjs-cls/setting-up-cls-context/using-a-decurator","content":"Using a Decorator The @UseCls() decorator can be used at a method level to declaratively wrap the method with a cls.run() call. This method should only be used outside of the context of a web request. info Please keep in mind, that since the CLS context initialization can be async, the @UseCls() decorator can only be used on async function (those that return a Promise).","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Using a Middleware","type":0,"sectionRef":"#","url":"/nestjs-cls/setting-up-cls-context/using-a-middleware","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Automatically​","type":1,"pageTitle":"Using a Middleware","url":"/nestjs-cls/setting-up-cls-context/using-a-middleware#automatically","content":"app.module.ts @Module({ imports: [ ClsModule.forRoot({ global: true, middleware: { mount: true }, }), ], // ... }) export class AppModule {} "},{"title":"Manually​","type":1,"pageTitle":"Using a Middleware","url":"/nestjs-cls/setting-up-cls-context/using-a-middleware#manually","content":"Sometimes, you might want to only use CLS on certain routes, or you need to have more control over the order of middleware registration in combination with other middlewares. "},{"title":"In the module​","type":1,"pageTitle":"Using a Middleware","url":"/nestjs-cls/setting-up-cls-context/using-a-middleware#in-the-module","content":"In that case, omit the mount option or set it to false and bind the ClsMiddleware manually in the module: app.module.ts @Module({ imports: [ ClsModule.forRoot({ global: true, middleware: { mount: false }, }), ], // ... }) export class AppModule implements NestModule { configure(consumer: MiddlewareConsumer) { consumer.apply(ClsMiddleware).forRoutes('custom/route'); } } "},{"title":"Using app.use​","type":1,"pageTitle":"Using a Middleware","url":"/nestjs-cls/setting-up-cls-context/using-a-middleware#using-appuse","content":"Sometimes, however, the previous method won't be enough, because the middleware could be mounted too late and you won't be able to use it in other middlewares that need to run prior to that - for example, the API versioning feature of NestJS apparently interferes with the order, see issue #67. In that case, you can mount it directly in the bootstrap method: main.ts function bootstrap() { const app = await NestFactory.create(AppModule); // create and mount the middleware manually here app.use( new ClsMiddleware({ /* ...settings */ }).use, ); await app.listen(3000); } caution Please note: If you bind the middleware using app.use(), it will not respect middleware settings passed to ClsModule.forRoot(), so you will have to provide them yourself in the constructor. "},{"title":"Setting up the CLS context","type":0,"sectionRef":"#","url":"/nestjs-cls/setting-up-cls-context","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Sync​","type":1,"pageTitle":"Setting up the CLS context","url":"/nestjs-cls/setting-up-cls-context#sync","content":"app.module.ts @Module({ imports: [ ClsModule.forRoot({ global: true, middleware: { mount: true, generateId: true, }, }), ], // ... }) export class AppModule {} "},{"title":"Async​","type":1,"pageTitle":"Setting up the CLS context","url":"/nestjs-cls/setting-up-cls-context#async","content":"app.module.ts @Module({ imports: [ ClsModule.forRootAsync({ global: true, inject: [IdGeneratorService] useFactory: (idGeneratorService) => ({ middleware: { mount: true, generateId: true, idGenerator: (req) => idGeneratorService.generate(req) }, }) }), ], // ... }) export class AppModule {} "},{"title":"v2.x → v3.x","type":0,"sectionRef":"#","url":"/nestjs-cls/migration-guide/v2x-v3x","content":"v2.x → v3.x The root registration method was renamed from register (resp. registerAsync) to forRoot (resp. forRootAsync) to align with the convention. - ClsModule.register({ + ClsModule.forRoot({ middleware: { mount: true }, }), Namespace injection support with forFeature was dropped entirely, and now that method is used to register Proxy Providers. If you still have a use case for namespaces, you can create a namespaced ClsService and use a custom provider to inject it. Example: class MyContextService extends ClsService<MyStore> {} const myContextService = new MyContextService(new AsyncLocalStorage()); // [...] providers: [ { provide: MyContextService, useValue: myContextService, }, ]; ","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Using an Interceptor","type":0,"sectionRef":"#","url":"/nestjs-cls/setting-up-cls-context/using-an-interceptor","content":"Using an Interceptor Another place to initiate the CLS context is an ClsInterceptor, which, unlike the ClsGuard uses AsyncLocalStorage#run method to wrap the following code, which is considered safer than enterWith. To use it, pass its configuration to the interceptor property to the ClsModule.forRoot() options: Automatically app.module.ts @Module({ imports: [ ClsModule.forRoot({ interceptor: { mount: true }, }), ], // ... }) export class AppModule {} Manually Or mount it manually as APP_INTERCEPTOR app.module.ts @Module({ imports: [ ClsModule.forRoot({ interceptor: { mount: false } }), ] providers: [ { provide: APP_INTERCEPTOR, useClass: ClsGuard, }, ], // ... }) export class AppModule {} or directly on the Controller/Resolver with: @UseInterceptors(ClsInterceptor); note Please note: Since Nest's Interceptors run after Guards, that means using this method makes CLS unavailable in Guards (and in case of REST Controllers, also in Exception Filters).","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Proxy Providers","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases/proxy-providers","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Class Proxy Providers​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#class-proxy-providers","content":"These providers look like your regular class providers, with the exception that is the @InjectableProxy() decorator to make them easily distinguishable. user.proxy.ts @InjectableProxy() export class User { id: number; role: string; } To register the proxy provider, use the ClsModule.forFeature() registration, which exposes it an injectable provider in the parent module. ClsModule.forFeature(User); It can be then injected using the class name. However, what will be actually injected is not the instance of the class, but rather the Proxy which redirects all access to an unique instance stored in the CLS context. "},{"title":"Populate in an enhancer​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#populate-in-an-enhancer","content":"A Class provider defined in this way will be empty upon creation, so we must assign context values to it somewhere. One place to do it is an interceptor user.interceptor.ts @Injectable() export class UserInterceptor implements NestInterceptor { // we can inject the proxy here constructor(private readonly user: User) {} intercept(context: ExecutionContext, next: CallHandler): Observable<any> { const request = context.switchToHttp().getRequest(); // and assign or change values as it was a normal object this.user.id = request.user.id; this.user.role = 'admin'; return next.handle(); } } "},{"title":"Self-populating Proxy Provider​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#self-populating-proxy-provider","content":"It is also possible to inject other providers into the Proxy Provider to avoid having to do this in a separate component. For the convenience, the CLS_REQ and CLS_RES are also made into Proxy Providers and are exported from the ClsModule. user-with-rile.proxy.ts @InjectableProxy() export class UserWithRole { id: number; role: string; constructor( @Inject(CLS_REQ) request: Request, roleService: RoleService, ) { this.id = request.user.id; this.role = roleService.getForId(request.user.id); } } If you need to inject a provider from an external module, use the ClsModule.forFeatureAsync() registration to import the containing module. ClsModule.forFeatureAsync({ // make RoleService available to the Proxy provider import: [RoleModule], useClass: UserWithRole, }); tip Using @Inject(CLS_REQ), you can entirely replace @Inject(REQUEST) in REQUEST-SCOPED providers to turn them into CLS-enabled singletons without changing the implementation. "},{"title":"Factory Proxy Providers​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#factory-proxy-providers","content":"Like your normal factory providers, Proxy factory providers look familiar. They can be only registered using the ClsModule.forFeatureAsync() method. Here's an example of a hypothetical factory provider that dynamically resolves to a specific tenant database connection: ClsModule.forFeatureAsync({ provide: TENANT_CONNECTION, import: [DatabaseConnectionModule], inject: [CLS_REQ, DatabaseConnectionService], useFactory: async (req: Request, dbService: DatabaseConnectionService) => { const tenantId = req.params['tenantId']; const connection = await dbService.getTenantConnection(tenantId); return connection; }, global: true, // make the TENANT_CONNECTION available for injection globally }); Again, the factory will be called on each request and the result will be stored in the CLS context. The TENANT_CONNECTION provider, however, will still be a singleton and will not affect the scope of whatever it is injected into. In the service, it can be injected using the provide token as usual: dogs.service.ts @Injectable() class DogsService { constructor( @Inject(TENANT_CONNECTION) private readonly connection: TenantConnection, ) {} getAll() { return this.connection.dogs.getAll(); } } "},{"title":"Caveats​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#caveats","content":""},{"title":"No primitive values​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#no-primitive-values","content":"Proxy Factory providers cannot return a primitive value. This is because the provider itself is the Proxy and it only delegates access once a property or a method is called on it (or if it itself is called in case the factory returns a function). "},{"title":"typeof Proxies is always function​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#typeof-proxies-is-always-function","content":"In order to support injecting proxies of functions, the underlying proxy target is an empty function, too. It must be this way in order to be able to implement the "apply" trap. As a result of this, calling typeof on an instance of a Proxy will always return function, regardless of the value it holds. This is fine for most applications, but must be taken into consideration in some cases - please see Issue #82 for more info and possible workarounds. "},{"title":"Delayed resolution of Proxy Providers​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#delayed-resolution-of-proxy-providers","content":"By default, proxy providers are resolved as soon as the setup function in an enhancer (middleware/guard/interceptor) finishes. For some use cases, it might be required that the resolution is delayed until some later point in the request lifecycle once more information is present in the CLS . To achieve that, set resolveProxyProviders to false in the enhancer options and call ClsService#resolveProxyProviders() manually at any time. ClsModule.forRoot({ middleware: { resolveProxyProviders: false, }, }); "},{"title":"Outside web request​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#outside-web-request","content":"This is also necessary outside the context of web request, otherwise all access to an injected Proxy Provider will return undefined. With cls.run()​ If you set up the context with cls.run() to wrap any subsequent code thar relies on Proxy Providers. cron.controller.ts @Injectable() export class CronController { constructor( private readonly someService: SomeService, private readonly cls: ClsService, ); @Cron('45 * * * * *') async handleCron() { await this.cls.run(async () => { // prepare the context this.cls.set('some-key', 'some-value'); // trigger Proxy Provider resolution await this.cls.resolveProxyProviders(); await this.someService.doTheThing(); }); } } With @UseCls()​ The resolveProxyProviders is set to false by default on the @UseCls decorator. To achieve the same behavior using it, you must set it to true. The Proxy Providers will be resolved after the setup phase. cron.controller.ts @Injectable() export class CronController { constructor(private readonly someService: SomeService); @Cron('45 * * * * *') @UseCls({ resolveProxyProviders: true, setup: (cls) => { this.cls.set('some-key', 'some-value'); }, }) async handleCron() { await this.someService.doTheThing(); } } "},{"title":"Using a Guard","type":0,"sectionRef":"#","url":"/nestjs-cls/setting-up-cls-context/using-a-guard","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Automatically​","type":1,"pageTitle":"Using a Guard","url":"/nestjs-cls/setting-up-cls-context/using-a-guard#automatically","content":"Use mount: true app.module.ts @Module({ imports: [ ClsModule.forRoot({ guard: { mount: true }, }), ], // ... }) export class AppModule {} "},{"title":"Manually​","type":1,"pageTitle":"Using a Guard","url":"/nestjs-cls/setting-up-cls-context/using-a-guard#manually","content":"If you need any other guards to use the ClsService, it's preferable to mount ClsGuard manually as the first guard in the root module: app.module.ts @Module({ imports: [ ClsModule.forRoot({ guard: { mount: false } }), ] providers: [ { provide: APP_GUARD, useClass: ClsGuard, }, ], // ... }) export class AppModule {} or mount it directly on the Controller/Resolver with @UseGuards(ClsGuard); caution Please note: since the ClsGuard uses the AsyncLocalStorage#enterWith method, using the ClsGuard comes with some security considerations! "}] \ No newline at end of file diff --git a/search-doc-1705944535620.json b/search-doc-1705944535620.json new file mode 100644 index 0000000..bae50b6 --- /dev/null +++ b/search-doc-1705944535620.json @@ -0,0 +1 @@ +{"searchDocs":[{"title":"API","type":0,"sectionRef":"#","url":"/nestjs-cls/api","content":"API This chapter describes the programmatic API of the ClsService and the ClsModule options.","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Service Interface","type":0,"sectionRef":"#","url":"/nestjs-cls/api/service-interface","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"ClsService​","type":1,"pageTitle":"Service Interface","url":"/nestjs-cls/api/service-interface#clsservice","content":" The injectable ClsService provides the following API to manipulate the cls context: The S type parameter is used as the type of custom ClsStore. get(): S Get the entire CLS context. get(key?: keyof S): S[key] Retrieve a value from the CLS context by key. getId(): string; Retrieve the request ID (a shorthand for cls.get(CLS_ID)) has(key: keyof S): boolean Check if a key is in the CLS context. set(key: keyof S, value: S[key]): void Set a value on the CLS context. setIfUndefined(key: keyof S, value: S[key]): void Set a value on the CLS context only if it hasn't been already set. Useful for ensuring idempotence if you have multiple entry points. run(callback: () => T): T run(options: ClsContextOptions, callback: () => T): T; Run the callback in a shared CLS context. Optionally takes an options object as the first parameter. runWith(store: S, callback: () => T): T Run the callback in a new CLS context (while supplying the default store). enter(): void; enter(options: ClsContextOptions): void Run any following code in a shared CLS context. Optionally takes an options object as the first parameter. enterWith(store: S): void Run any following code in a new CLS context (while supplying the default store). exit(callback: () => T): T Run the callback without access to a shared CLS context. isActive(): boolean Whether the current code runs within an active CLS context. resolveProxyProviders(): Promise<void> Manually trigger resolution of Proxy Providers. initializePlugins(): Promise<void> Manually trigger onClsInit hooks of registered plugins. ","version":"Next","tagName":"h2"},{"title":"ClsContextOptions​","type":1,"pageTitle":"Service Interface","url":"/nestjs-cls/api/service-interface#clscontextoptions","content":" The run and enter methods can take an additional options object with the following settings: ifNested?:'inherit' | 'reuse' | 'override' Sets the behavior of nested CLS context creation in case the method is invoked in an existing context. It has no effect if no parent context exist. inherit (default) - Run the callback with a shallow copy of the parent context. Re-assignments of top-level properties will not be reflected in the parent context. However, modifications of existing properties will be reflected.reuse - Reuse existing context without creating a new one. All modifications to the existing context will be reflected.override - Run the callback with an new empty context. No values from the parent context will be accessible within the wrapped code. ::: Note Until v4, the default behavior was override. This was changed to inherit since v4 to make the behavior more intuitive. ::: ","version":"Next","tagName":"h2"},{"title":"How it works","type":0,"sectionRef":"#","url":"/nestjs-cls/introduction/how-it-works","content":"How it works Continuation-local storage provides a common space for storing and retrieving data throughout the life of a function/callback call chain. In NestJS, this allows for sharing request data across the lifetime of a single request - without the need for request-scoped providers. It also makes it easy to track and log request ids throughout the whole application. To make CLS work, it is required to set up the CLS context first. This is done by calling cls.run() (or cls.enter(), see Security considerations for more info) somewhere in the app. Once that is set up, anything that is called within the same callback chain has access to the same storage with cls.set() and cls.get().","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Considerations","type":0,"sectionRef":"#","url":"/nestjs-cls/considerations","content":"Considerations This chapter exists to help you decide whether this library is compatible with your project and to address any concerns that you may have. You might be also interested in the Author's take","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Features and use cases","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases","content":"Features and use cases In addition to the basic functionality described in the Quick start chapter, this module provides several other features to make your life as a developer easier.","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Usage outside of web request","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases/usage-outside-of-web-request","content":"Usage outside of web request Sometimes, a part of the app that relies on the CLS storage might need to be called outside of the context of a web request - for example, in a Cron job, while consuming a Queue, during the application bootstrap or in CLI apps. In such cases, there are no enhancers that can be bound to the handler to set up the context. Therefore, you as the the developer are responsible for wrapping the execution with ClsService#run, or using the @UseCls decorator. In any case, if any following code depends on some context variables, these need to be set up manually. @Injectable() export class CronController { constructor( private readonly someService: SomeService, private readonly cls: ClsService, ); @Cron('45 * * * * *') async handleCronExample1() { // either explicitly wrap the function body with // a call to `ClsService#run` ... await this.cls.run(async () => { this.cls.set('mode', 'cron'); await this.someService.doTheThing(); }); } @Cron('90 * * * * *') // ... or use the convenience decorator which // does the wrapping for you seamlessly. @UseCls({ setup: (cls) => { cls.set('mode', 'cron'); }, }) async handleCronExample2() { await this.someService.doTheThing(); } } caution Special care must be taken in case you're using Proxy Providers.","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Module Options","type":0,"sectionRef":"#","url":"/nestjs-cls/api/module-options","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"forRoot(Async)​","type":1,"pageTitle":"Module Options","url":"/nestjs-cls/api/module-options#forrootasync","content":" The ClsModule.forRoot() method takes the following ClsModuleOptions: middleware?:ClsMiddlewareOptions An object with additional options for the ClsMiddleware, see below. guard?:ClsGuardOptions An object with additional options for the ClsGuard, see below. interceptor?:ClsInterceptorOptions An object with additional options for the ClsInterceptor, see below. global?:boolean** (default false) Whether to make the module global, so you do not have to import ClsModule.forFeature() in other modules. proxyProviders?:Type[] Array of Proxy Providers that should be registered in the root module. Currently only accepts sync class Proxy providers, use ClsModule.forFeatureAsync() for more complex use-cases. ClsModule.forRootAsync() is also available. You can supply the usual imports, inject and useFactory parameters as usual. info Please note: If you intend to use multiple enhancers at the same time (e.g. initialize the CLS context in a middleware and then set some additional CLS variables in an interceptor), be aware that the only the first one in the chain will set the Request ID. ","version":"Next","tagName":"h2"},{"title":"forFeature(Async)​","type":1,"pageTitle":"Module Options","url":"/nestjs-cls/api/module-options#forfeatureasync","content":" The ClsModule.forFeature() method can be used to register a Proxy Providers. The Sync method only accepts Class Proxy providers. The ClsModule.forFeatureAsync() method accepts either ClsModuleProxyClassProviderOptions or ClsModuleProxyFactoryProviderOptions that both accept these options: provide?:any Custom injection token to use for the provider. In case of a class provider, this parameter is optional, as the class reference passed to useClass will be used by default. imports?any[] Optional list of imported modules that export the providers which are required for the provider. extraProviders?:Provider[] Optional list of additional providers that should be available to the Proxy. Useful for passing configuration from a parent dynamic module. The ClsModuleProxyClassProviderOptions interface further accepts: useClass:Type The target class that will be used by this Proxy Provider. Make sure it is decorated with @InjectableProxy. The ClsModuleProxyFactoryProviderOptions interface further accepts: inject:any[] An array of injection tokens for providers used in the useFactory. useFactory:(...args: any[]) => any Factory function that accepts an array of providers in the order of the according tokens in the inject array. Returns (or resolves with) an object (or a function) that will be used by this Proxy Provider. type?:'function' | 'object' Whether the Proxy Provider should be a function or an object. Defaults to 'object'. See Caveats for more information. ","version":"Next","tagName":"h2"},{"title":"Middleware & Enhancer options​","type":1,"pageTitle":"Module Options","url":"/nestjs-cls/api/module-options#middleware--enhancer-options","content":" All of the Cls{Middleware,Guard,Interceptor}Options take the following parameters (either in ClsModuleOptions or directly when instantiating them manually): mount?:boolean (default false) Whether to automatically mount the middleware/guard/interceptor to every route (not applicable when instantiating them manually) generateId?:boolean (default false) Whether to automatically generate a request ID. It will be available under the CLS_ID key. idGenerator?:(req: Request) => string | Promise<string> idGenerator?:(ctx: ExecutionContext) => string | Promise<string> An optional function for generating the request ID. It takes the Request object (or the ExecutionContext in case of a Guard or Interceptor) as an argument and (synchronously or asynchronously) returns a string. The default implementation uses Math.random() to generate a string of 8 characters. setup?:(cls: ClsService, req: Request) => void | Promise<void>; setup?:(cls: ClsService, ctx: ExecutionContext) => void | Promise<void>; Function that executes after the CLS context had been initialised. It can be used to put additional variables in the CLS context. resolveProxyProviders?:boolean (default true) Whether to automatically resolve Proxy Providers in the enhancer (if any are registered). initializePlugins?:boolean (default true) Whether to run the onClsInit hook for plugins as a part of the CLS context registration (runs before resolveProxyProviders just after setup). The ClsMiddlewareOptions additionally takes the following parameters: saveReq?:boolean (default true) Whether to store the Request object to the context. It will be available under the CLS_REQ key. saveRes?:boolean (default false) Whether to store the Response object to the context. It will be available under the CLS_RES key useEnterWith?:boolean (default false) Set to true to set up the context using a call to AsyncLocalStorage#enterWith instead of wrapping the next() call with the safer AsyncLocalStorage#run. Most of the time this should not be necessary, but some frameworks are known to lose the context with run. ","version":"Next","tagName":"h2"},{"title":"Breaking out of DI","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases/breaking-out-of-di","content":"Breaking out of DI While this package aims to be compatible with NestJS's Dependency Injection, it is also possible to access the CLS context outside of it. For that, it provides the static ClsServiceManager class that exposes the getClsService() method which can be used to retrieve the context outside of Nest's injection context (e.g. in top-level functions) function helper() { const cls = ClsServiceManager.getClsService(); // you now have access to the shared storage console.log(cls.getId()); } caution Please note: Only use this feature where absolutely necessary. Using this technique instead of dependency injection will make it difficult to mock the ClsService and your code will become harder to test.","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Installation","type":0,"sectionRef":"#","url":"/nestjs-cls/introduction/installation","content":"Installation Install as any other NPM package using your favorite package manager. npmyarnpnpm npm install nestjs-cls info This module requires additional peer deps, like the @nestjs/core and @nestjs/common libraries, but it is assumed those are already installed.","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Additional CLS Setup","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases/additional-cls-setup","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Middleware​","type":1,"pageTitle":"Additional CLS Setup","url":"/nestjs-cls/features-and-use-cases/additional-cls-setup#middleware","content":" In case of middleware the Request and Response objects are passed as the second and third parameters. ClsModule.forRoot({ middleware: { mount: true, setup: (cls, req: Request, res: Response) => { cls.set('TENANT_ID', req.params('tenant_id')); cls.set('AUTH', { authenticated: false }); }, }, }); ","version":"Next","tagName":"h2"},{"title":"Enhancers​","type":1,"pageTitle":"Additional CLS Setup","url":"/nestjs-cls/features-and-use-cases/additional-cls-setup#enhancers","content":" In a guard or interceptor, the ExecutionContext object is passed as a second parameter. ClsModule.forRoot({ interceptor: { mount: true, setup: (cls, context) => { const req = context.switchToHttp().getRequest<Request>(); cls.set('TENANT_ID', req.params('tenant_id')); cls.set('AUTH', { authenticated: false }); }, }, }); ","version":"Next","tagName":"h2"},{"title":"v2.x → v3.x","type":0,"sectionRef":"#","url":"/nestjs-cls/migration-guide/v2x-v3x","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Root registration method renamed​","type":1,"pageTitle":"v2.x → v3.x","url":"/nestjs-cls/migration-guide/v2x-v3x#root-registration-method-renamed","content":" The root registration method was renamed from register (resp. registerAsync) to forRoot (resp. forRootAsync) to align with the convention. - ClsModule.register({ + ClsModule.forRoot({ middleware: { mount: true }, }), ","version":"Next","tagName":"h2"},{"title":"Namespace support dropped​","type":1,"pageTitle":"v2.x → v3.x","url":"/nestjs-cls/migration-guide/v2x-v3x#namespace-support-dropped","content":" Namespace injection support with forFeature was dropped entirely, and now that method is used to register Proxy Providers. If you still have a use case for namespaces, you can create a namespaced ClsService and use a custom provider to inject it. Example: class MyContextService extends ClsService<MyStore> {} const myContextService = new MyContextService(new AsyncLocalStorage()); // [...] providers: [ { provide: MyContextService, useValue: myContextService, }, ]; ","version":"Next","tagName":"h2"},{"title":"Request ID","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases/request-id","content":"Request ID Because of a shared storage, CLS is an ideal tool for tracking request (correlation) IDs for the purpose of logging. This package provides an option to automatically generate request IDs in the middleware/guard/interceptor, if you pass { generateId: true } to its options. By default, the generated ID is a string based on Math.random(), but you can provide a custom function in the idGenerator option. This function receives the Request (or ExecutionContext in case a ClsGuard is used) as the first parameter, which can be used in the generation process and should return (or resolve with) a string ID that will be stored in the CLS for later use. Below is an example of retrieving the request ID from the request header with a fallback to an autogenerated one. ClsModule.forRoot({ middleware: { mount: true, generateId: true, idGenerator: (req: Request) => req.headers['X-Request-Id'] ?? uuid(); } }) The ID is stored under the CLS_ID constant in the context. The ClsService provides a shorthand method getId to quickly retrieve it anywhere. It can be for example used in a custom logger: my.logger.ts @Injectable() class MyLogger { constructor(private readonly cls: ClsService) {} log(message: string) { console.log(`<${this.cls.getId()}> ${message}`); } } Calling this from anywhere within a CLS context results in retrieving the ID: my.service.ts @Injectable() class MyService { constructor(private readonly logger: MyLogger); hello() { this.logger.log('Hello'); // -> logs for ex.: "<44c2d8ff-49a6-4244-869f-75a2df11517a> Hello" } } ","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Available Plugins","type":0,"sectionRef":"#","url":"/nestjs-cls/plugins/available-plugins","content":"Available Plugins This section lists all plugins that are maintained by the author of nestjs-cls. They are all published under the @nestjs-cls scope and are kept up to date with any changes to the library. Transactional","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Creating a custom adapter","type":0,"sectionRef":"#","url":"/nestjs-cls/plugins/available-plugins/transactional/creating-custom-adapter","content":"Creating a custom adapter TODO: To be written.","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Compatibility","type":0,"sectionRef":"#","url":"/nestjs-cls/considerations/compatibility","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"REST​","type":1,"pageTitle":"Compatibility","url":"/nestjs-cls/considerations/compatibility#rest","content":" This package is compatible with Nest-supported REST controllers and the preferred way is to use the ClsMiddleware with the mount option set to true. Tested with: ✔ Express✔ Fastify Known issues: In case API versioning is used, the automatic mounting of the ClsMiddleware does not work and it needs to be mounted manually. See issue #67 for details.Some existing Express middlewares may cause context loss, if that happens, mount the ClsMiddleware manually after those offending ones (#50) ","version":"Next","tagName":"h2"},{"title":"GraphQL​","type":1,"pageTitle":"Compatibility","url":"/nestjs-cls/considerations/compatibility#graphql","content":" Using an interceptor or a guard may result in that enhancer triggering multiple times in case there are multiple queries in the GQL request. Due to this, you should ensure that any operation on the CLS store within enhancers is idempotent. This includes the setup function. Therefore, it is advised to use the ClsService#setIfUndefined() method. Tested with: ✔ Apollo (Express)✔ Mercurius (Fastify) ","version":"Next","tagName":"h2"},{"title":"@nestjs/graphql >= 10​","type":1,"pageTitle":"Compatibility","url":"/nestjs-cls/considerations/compatibility#nestjsgraphql--10","content":" Since v10, Nest's GraphQL resolvers are compatible with this package and the preferred way to initialize the CLS context is use the ClsMiddleware with the mount option. ","version":"Next","tagName":"h3"},{"title":"@nestjs/graphql < 10​","type":1,"pageTitle":"Compatibility","url":"/nestjs-cls/considerations/compatibility#nestjsgraphql--10-1","content":" For older versions of graphql, the ClsMiddleware needs to be mounted manually with app.use(...) in order to correctly set up the context for resolvers. Additionally, you have to pass useEnterWith: true to the ClsMiddleware options, because the context gets lost otherwise due to an issue with CLS and Apollo (sadly, the same is true for Mercurius). This method is functionally identical to just using the ClsGuard. Alternatively, you can use the ClsInterceptor, which uses the safer AsyncLocalStorage#run (thanks to andreialecu), but remember that using it makes CLS unavailable in Guards. ","version":"Next","tagName":"h3"},{"title":"Others​","type":1,"pageTitle":"Compatibility","url":"/nestjs-cls/considerations/compatibility#others","content":" Use the ClsGuard or ClsInterceptor to set up context with any other platform. There are no explicit test for other transports, so I can't guarantee it will work with your platform of choice, but there's nothing that would indicate otherwise. If you decide to try this package with a platform that is not listed here, please let me know so I can add the compatibility notice. Below are listed transports with which it is confirmed to work: ","version":"Next","tagName":"h2"},{"title":"Websockets​","type":1,"pageTitle":"Compatibility","url":"/nestjs-cls/considerations/compatibility#websockets","content":" Websocket Gateways don't respect globally bound enhancers, therefore it is required to bind the ClsGuard or ClsInterceptor manually on the WebsocketGateway. Special care is also needed for the handleConnection method (See #8) ","version":"Next","tagName":"h3"},{"title":"Migration guide","type":0,"sectionRef":"#","url":"/nestjs-cls/migration-guide","content":"Migration guide In case you're upgrading to a new major version of this library, follow the according migration guide.","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Security","type":0,"sectionRef":"#","url":"/nestjs-cls/considerations/security","content":"Security It is often discussed whether AsyncLocalStorage is safe to use for concurrent requests (because of a possible context leak) and whether the context could be lost throughout the duration of a request. The ClsMiddleware and ClsInterceptor by default uses the safe run() method, which it should not leak context, but in some rare cases, the context can be lost. The ClsGuard (and ClsMiddleware, if configured so) uses the less safe enterWith() method, which might be needed in case the run() method causes context loss. This has a consequence that should be taken into account: caution When the enterWith method is used, any consequent requests get access to the CLS context of the previous request until the request hits the enterWith call. That means, when using ClsMiddleware with the useEnterWith option, or ClsGuard to set up context, be sure to mount them as early in the request lifetime as possible and do not use any other enhancers that rely on ClsService before them. For ClsGuard, that means you should probably manually mount it in AppModule if you require any other guard to run after it. The next chapter addresses compatibility with various transport protocols.","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Setting up the CLS context","type":0,"sectionRef":"#","url":"/nestjs-cls/setting-up-cls-context","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Sync​","type":1,"pageTitle":"Setting up the CLS context","url":"/nestjs-cls/setting-up-cls-context#sync","content":" app.module.ts @Module({ imports: [ ClsModule.forRoot({ global: true, middleware: { mount: true, generateId: true, }, }), ], // ... }) export class AppModule {} ","version":"Next","tagName":"h2"},{"title":"Async​","type":1,"pageTitle":"Setting up the CLS context","url":"/nestjs-cls/setting-up-cls-context#async","content":" app.module.ts @Module({ imports: [ ClsModule.forRootAsync({ global: true, inject: [IdGeneratorService] useFactory: (idGeneratorService) => ({ middleware: { mount: true, generateId: true, idGenerator: (req) => idGeneratorService.generate(req) }, }) }), ], // ... }) export class AppModule {} ","version":"Next","tagName":"h2"},{"title":"Plugins","type":0,"sectionRef":"#","url":"/nestjs-cls/plugins","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Usage​","type":1,"pageTitle":"Plugins","url":"/nestjs-cls/plugins#usage","content":" To use a plugin, pass it to the forRoot method of the ClsModule: ClsModule.forRoot({ plugins: [new MyPlugin()], }); ","version":"Next","tagName":"h2"},{"title":"Available plugins​","type":1,"pageTitle":"Plugins","url":"/nestjs-cls/plugins#available-plugins","content":" For a list of plugins managed by the author of nestjs-cls, see the Available Plugins page. ","version":"Next","tagName":"h2"},{"title":"Creating a plugin​","type":1,"pageTitle":"Plugins","url":"/nestjs-cls/plugins#creating-a-plugin","content":" To create a custom plugin, see the Plugin API reference. ","version":"Next","tagName":"h2"},{"title":"Using a Middleware","type":0,"sectionRef":"#","url":"/nestjs-cls/setting-up-cls-context/using-a-middleware","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Automatically​","type":1,"pageTitle":"Using a Middleware","url":"/nestjs-cls/setting-up-cls-context/using-a-middleware#automatically","content":" app.module.ts @Module({ imports: [ ClsModule.forRoot({ global: true, middleware: { mount: true }, }), ], // ... }) export class AppModule {} ","version":"Next","tagName":"h2"},{"title":"Manually​","type":1,"pageTitle":"Using a Middleware","url":"/nestjs-cls/setting-up-cls-context/using-a-middleware#manually","content":" Sometimes, you might want to only use CLS on certain routes, or you need to have more control over the order of middleware registration in combination with other middlewares. ","version":"Next","tagName":"h2"},{"title":"In the module​","type":1,"pageTitle":"Using a Middleware","url":"/nestjs-cls/setting-up-cls-context/using-a-middleware#in-the-module","content":" In that case, omit the mount option or set it to false and bind the ClsMiddleware manually in the module: app.module.ts @Module({ imports: [ ClsModule.forRoot({ global: true, middleware: { mount: false }, }), ], // ... }) export class AppModule implements NestModule { configure(consumer: MiddlewareConsumer) { consumer.apply(ClsMiddleware).forRoutes('custom/route'); } } ","version":"Next","tagName":"h3"},{"title":"Using app.use​","type":1,"pageTitle":"Using a Middleware","url":"/nestjs-cls/setting-up-cls-context/using-a-middleware#using-appuse","content":" Sometimes, however, the previous method won't be enough, because the middleware could be mounted too late and you won't be able to use it in other middlewares that need to run prior to that - for example, the API versioning feature of NestJS apparently interferes with the order, see issue #67. In that case, you can mount it directly in the bootstrap method: main.ts function bootstrap() { const app = await NestFactory.create(AppModule); // create and mount the middleware manually here app.use( new ClsMiddleware({ /* ...settings */ }).use, ); await app.listen(3000); } caution Please note: If you bind the middleware using app.use(), it will not respect middleware settings passed to ClsModule.forRoot(), so you will have to provide them yourself in the constructor. ","version":"Next","tagName":"h3"},{"title":"Type safety and type inference","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Type-safe ClsService​","type":1,"pageTitle":"Type safety and type inference","url":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference#type-safe-clsservice","content":" It is possible to specify a custom interface for the ClsService and get proper typing and automatic type inference when retrieving or setting values. This works even for nested objects using a dot notation. To create a typed CLS Store, start by creating an interface that extends ClsStore. export interface MyClsStore extends ClsStore { tenantId: string; user: { id: number; authorized: boolean; }; } ","version":"Next","tagName":"h2"},{"title":"Using a type parameter​","type":1,"pageTitle":"Type safety and type inference","url":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference#using-a-type-parameter","content":" Then you can inject the ClsService with a type parameter ClsService<MyClsStore> to make use of the safe typing. export class MyService { constructor(private readonly cls: ClsService<MyClsStore>) {} doTheThing() { // a boolean type will be enforced here this.cls.set('user.authorized', true); // tenantId will be inferred as a string const tenantId = this.cls.get('tenantId'); // userId will be inferred as a number const userId = this.cls.get('user.id'); // user will be inferred as { id: number, authorized: boolean } const user = this.cls.get('user'); // you'll even get intellisense for the keys, because the type // will be inferred as: // symbol | 'tenantId˙ | 'user' | 'user.id' | 'user.authorized' // alternatively, since the `get` method returns the whole store // when called without arguments, you can use object destructuring const { tenantId, user } = this.cls.get(); // accessing a nonexistent property will result in a type error const notExist = this.cls.get('user.name'); } } ","version":"Next","tagName":"h3"},{"title":"Using Typescript module augmentation​","type":1,"pageTitle":"Type safety and type inference","url":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference#using-typescript-module-augmentation","content":" Alternatively, if you feel like using ClsService<MyClsStore> everywhere is tedious, you can instead globally augment the ClsStore interface. Now you don't need to specify the type parameter on ClsService to still get the string typing. declare module 'nestjs-cls' { interface ClsStore { tenantId: string; user: { id: number; authorized: boolean; }; } } ","version":"Next","tagName":"h3"},{"title":"Using a custom provider​","type":1,"pageTitle":"Type safety and type inference","url":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference#using-a-custom-provider","content":" For even more transparent approach without augmenting the declaration, you can create a typed ClsService by extending it and creating a custom provider out of it: export class MyClsService extends ClsService<MyClsStore> {} @Module({ imports: [ClsModule.forFeature()], providers: [ { provide: MyClsService, useExisting: ClsService, }, ], exports: [MyClsService], }) class MyClsModule {} Now you can inject MyClsService as an alias for ClsService<MyClsStore> without "polluting" the global type space. ","version":"Next","tagName":"h3"},{"title":"Terminal Type​","type":1,"pageTitle":"Type safety and type inference","url":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference#terminal-type","content":" It can happen, that the object you want to store in the context is too complex, or contains cyclic references. In that case, typescript might complain that type instantiation is too deep, possibly infinite. That is due to the fact that it tries to generate all possible paths inside the ClsStore. If that's the case, you can use the Terminal type to stop generating the paths for a certain subtree: interface ClsStore { tenantId: string; user: Terminal<{ id: number; authorized: boolean; }>; } This will only generate the paths tenantId | user and won't allow directly accessing nested keys (like cls.get('user.id'), but you'll still get fully typing for things like const { id } = cls.get('user')). See issue #22 for more details. ","version":"Next","tagName":"h2"},{"title":"NestJS CLS","type":0,"sectionRef":"#","url":"/nestjs-cls/","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Use cases​","type":1,"pageTitle":"NestJS CLS","url":"/nestjs-cls/#use-cases","content":" Some common use cases that this library enables include: Tracking the Request ID and other metadata for logging purposesKeeping track of the user throughout the whole requestMaking the dynamic Tenant database connection available everywhere in multi-tenant appsPropagating the authentication level or role to restrict access to resourcesSeamlessly propagating database transaction across services without breaking encapsulation and isolation by explicitly passing it around (Now available with the Transactional plugin)Using "request" context in cases where actual REQUEST-scoped providers are not supported (passport strategies, cron controllers, websocket gateways, ...) Most of these are to some extent solvable using REQUEST-scoped providers or passing the context as a parameter, but these solutions are often clunky and come with a whole lot of other issues. info * The name comes from the original implementation based on cls-hooked, which was since replaced by the native AsyncLocalStorage. ","version":"Next","tagName":"h2"},{"title":"Motivation​","type":1,"pageTitle":"NestJS CLS","url":"/nestjs-cls/#motivation","content":" NestJS is an amazing framework, but in the plethora of awesome built-in features, I still missed one. I created this library to solve a specific use case, which was limiting access to only those records which had the same TenantId as the request's user in a central manner. The repository code automatically added a WHERE clause to each query, which made sure that other developers couldn't accidentally mix tenant data (all tenants' data were held in the same database) without extra effort. AsyncLocalStorage is still fairly new and not many people know of its existence and benefits. Here's a nice talk from NodeConf about the history. I've invested a great deal of my personal time in making the use of it as pleasant as possible. While the use of async_hooks is sometimes criticized for making Node run slower, in my experience, the introduced overhead is negligible compared to any IO operation (like a DB or external API call). If you want fast, use a compiled language. Also, if you use some tracing library (like otel), it most likely already uses async_hooks under the hood, so you might as well use it to your advantage. ","version":"Next","tagName":"h2"},{"title":"Highlights​","type":1,"pageTitle":"NestJS CLS","url":"/nestjs-cls/#highlights","content":" New Version 4.0 brings support for Plugins which enable pre-built integrations with other libraries and frameworks. (See Migration guide for breaking changes). Version 3.0 introduces Proxy Providers as an alternative to the imperative API. (Minor breaking changes were introduced, see Migration guide). Version 2.0 brings advanced type safety and type inference. However, it requires features from typescript >= 4.4 - Namely allowing symbol members in interfaces. If you can't upgrade but still want to use this library, install version 1.6.2, which lacks the typing features. ","version":"Next","tagName":"h2"},{"title":"v3.x → v4.x","type":0,"sectionRef":"#","url":"/nestjs-cls/migration-guide/v3x-v4x","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Changed base type of Proxy Providers​","type":1,"pageTitle":"v3.x → v4.x","url":"/nestjs-cls/migration-guide/v3x-v4x#changed-base-type-of-proxy-providers","content":" The default underlying value of Proxy Providers was changed to {}. This means that the typeof operator will now return 'object', which is more intuitive. (Link to original discussion) The use-case of using a Proxy Provider as a function is still supported, but now requires the type option to be set to 'function'. ClsModule.forFeature({ provide: 'class-proxy', useClass: SomeClass, }); ClsModule.forFeature({ provide: 'function-proxy', useFactory: () => someFunction, type: 'function', }); @Injectable() class SomeService { constructor( @Inject('class-proxy') private readonly someClass: SomeClass, @Inject('function-proxy') private readonly functionProvider: () => void, ) { console.log(typeof this.someClass); // 'object' console.log(typeof this.functionProvider); // 'function' } } ","version":"Next","tagName":"h2"},{"title":"Changed default of ifNested option​","type":1,"pageTitle":"v3.x → v4.x","url":"/nestjs-cls/migration-guide/v3x-v4x#changed-default-of-ifnested-option","content":" The default of the ifNested option was changed from override to inherit, which more closely aligns with most real-world use-cases. If you used the ClsService#run method without explicitly setting the ifNested option, you should check if the new default behavior is compatible with your use-case and adjust accordingly. this.cls.run( { ifNested: 'override' }, () => { // ... rest of the code }, ); ","version":"Next","tagName":"h2"},{"title":"Changed default of resolveProxyProviders in UseCls decorator​","type":1,"pageTitle":"v3.x → v4.x","url":"/nestjs-cls/migration-guide/v3x-v4x#changed-default-of-resolveproxyproviders-in-usecls-decorator","content":" This value was undocumented in v3, but the default was false. It was changed to true in v4 to align with the default behavior of other enhancers. This change should not affect most use-cases, because you either don't use Proxy Providers at all, or you use them and therefore had to set it to true anyway. The only case where this might be a breaking change is if you used the @UseCls in a module where you explicitly did not want to resolve Proxy Providers and therefore did not import their dependencies. In that case, you should set the resolveProxyProviders option to false in the decorator. ","version":"Next","tagName":"h2"},{"title":"Prisma adapter","type":0,"sectionRef":"#","url":"/nestjs-cls/plugins/available-plugins/transactional/prisma-adapter","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Installation​","type":1,"pageTitle":"Prisma adapter","url":"/nestjs-cls/plugins/available-plugins/transactional/prisma-adapter#installation","content":" npmyarnpnpm npm install @nestjs-cls/transactional-adapter-prisma ","version":"Next","tagName":"h2"},{"title":"Registration​","type":1,"pageTitle":"Prisma adapter","url":"/nestjs-cls/plugins/available-plugins/transactional/prisma-adapter#registration","content":" ClsModule.forRoot({ plugins: [ new ClsPluginTransactional({ imports: [ // module in which the PrismaClient is provided PrismaModule ], adapter: new TransactionalAdapterPrisma({ // the injection token of the PrismaClient prismaInjectionToken: PrismaService, }), }), ], }), ","version":"Next","tagName":"h2"},{"title":"Typing & usage​","type":1,"pageTitle":"Prisma adapter","url":"/nestjs-cls/plugins/available-plugins/transactional/prisma-adapter#typing--usage","content":" The tx property on the TransactionHost<TransactionalAdapterPrisma> refers to the transactional PrismaClient instance when used in a transactional context. It is the instance that is passed to the prisma.$transaction(( tx ) => { ... }) callback. Outside of a transactional context, it refers to the regular PrismaClient instance (but is typed as the transactional one). ","version":"Next","tagName":"h2"},{"title":"Example​","type":1,"pageTitle":"Prisma adapter","url":"/nestjs-cls/plugins/available-plugins/transactional/prisma-adapter#example","content":" user.service.ts @Injectable() class UserService { constructor(private readonly userRepository: UserRepository) {} @Transactional() async runTransaction() { // both methods are executed in the same transaction const user = await this.userRepository.createUser('John'); const foundUser = await this.userRepository.getUserById(r1.id); assert(foundUser.id === user.id); } } user.repository.ts @Injectable() class UserRepository { constructor( private readonly txHost: TransactionHost<TransactionalAdapterPrisma>, ) {} async getUserById(id: number) { // txHost.tx is typed as the transactional PrismaClient return this.txHost.tx.user.findUnique({ where: { id } }); } async createUser(name: string) { return this.txHost.tx.user.create({ data: { name: name, email: `${name}@email.com` }, }); } } ","version":"Next","tagName":"h2"},{"title":"Caveats​","type":1,"pageTitle":"Prisma adapter","url":"/nestjs-cls/plugins/available-plugins/transactional/prisma-adapter#caveats","content":" Since Prisma generates its own client to node_modules, this plugin works with the assumption that the types for the client are available as @prisma/client. If you have a different setup, you might need to use declare module '@prisma/client' to make typescript happy. ","version":"Next","tagName":"h2"},{"title":"Using the ClsService Instance","type":0,"sectionRef":"#","url":"/nestjs-cls/setting-up-cls-context/using_cls_run","content":"Using the ClsService Instance All other methods of setting up the CLS context ultimately use the ClsService#run or ClsService#enter methods. If all other attempts fail or you want to have a more fine-grained control over the CLS context, you can use ClsService instance to wrap any piece of code in a CLS context. An example is available in the Usage outside of web request section.","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Using a Decorator","type":0,"sectionRef":"#","url":"/nestjs-cls/setting-up-cls-context/using-a-decorator","content":"Using a Decorator The @UseCls() decorator can be used at a method level to declaratively wrap the method with a cls.run() call. This method should only be used outside of the context of a web request. info Please keep in mind, that since the CLS context initialization can be async, the @UseCls() decorator can only be used on async function (those that return a Promise). Since there is no request, the setup function will not receive a Request object. Instead, it will receive the this context of the class instance (this also applies to the idGenerator), the ClsService reference and all the arguments passed to the decorated method. @Injectable() class SomeService { constructor( private readonly cls: ClsService, private readonly otherService: OtherService, ) {} @UseCls<[string]>({ generateId: true, idGenerator: function (this: SomeService) { return this.generateId(); }, setup: function (this: SomeService, cls: ClsService, value: string) { cls.set('some-key', 'some-value'); }, }) async startContextualWorkflow(value: string) { return this.otherService.doSomething(value); } private generateId() { return Math.random(); } } warning It is important to define the setup and idGenerator functions as functions, not arrow functions, so that the this context is properly bound.","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Plugin API","type":0,"sectionRef":"#","url":"/nestjs-cls/plugins/plugin-api","content":"Plugin API warning The Plugin API is still experimental and might change in the future, you should not rely on it in production. Using any of the "official" plugins is safe since they are maintained by the same author. If you want to create your own plugin, you should be aware that the API might change between minor versions. A plugin is, in its core, a NestJS module with some extra options and should implement the following interface: export interface ClsPlugin { /** * The name of the plugin, used for logging and debugging */ name: string; /** * Function that is called within a Cls initializer (middleware, interceptor, guard, etc.) */ onClsInit?: (cls: ClsService) => void | Promise<void>; /** * A lifecycle method called when the `ClsModule` is initialized */ onModuleInit?: () => void | Promise<void>; /** * A lifecycle method called when the `ClsModule` is destroyed (only when shutdown hooks are enabled) */ onModuleDestroy?: () => void | Promise<void>; /** * An array of external modules that should be imported for the plugin to work. */ imports?: any[]; /** * An array of providers that the plugin provides. */ providers?: Provider[]; /** * An array of providers that the plugin provides that should be exported. */ exports?: any[]; } The plugin options are then mixed into a global ClsPluginModule and the exposed providers can be used for injection by other plugin-related code.","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Quick Start","type":0,"sectionRef":"#","url":"/nestjs-cls/introduction/quick-start","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Background​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#background","content":" This library exposes a dynamic ClsModule which exposes the injectable ClsService and provides means to setting up and interacting with the CLS context. The CLS context is a storage that wraps around a chain of function calls. It can be accessed anywhere during the lifecycle of such chain via the ClsService. ","version":"Next","tagName":"h2"},{"title":"Example​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#example","content":" Below is an example of using this library to store the client's IP address in an interceptor and retrieving it in a service without explicitly passing it along. note This example assumes you are using HTTP and therefore can use middleware. For usage with non-HTTP transports, see Setting up CLS context. ","version":"Next","tagName":"h2"},{"title":"Register the ClsModule​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#register-the-clsmodule","content":" Register the ClsModule and automatically mount the ClsMiddleware which wraps the entire request in a shared CLS context on all routes. app.module.ts @Module({ imports: [ ClsModule.forRoot({ global: true, middleware: { mount: true }, }), ], providers: [AppService], controllers: [AppController], }) export class AppModule {} ","version":"Next","tagName":"h3"},{"title":"Create IP-address interceptor​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#create-ip-address-interceptor","content":" Create an interceptor that injects the ClsService to get access to the current shared CLS context,extract the users's IP address from the request and stores it into the CLS context, user-ip.interceptor.ts @Injectable() export class UserIpInterceptor implements NestInterceptor { constructor(private readonly cls: ClsService) {} intercept(context: ExecutionContext, next: CallHandler): Observable<any> { const request = context.switchToHttp().getRequest(); const userIp = request.connection.remoteAddress; this.cls.set('ip', userIp); return next.handle(); } } ","version":"Next","tagName":"h3"},{"title":"Mount interceptor to controller​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#mount-interceptor-to-controller","content":" By mounting the UserIpInterceptor on the controller, it gets access to the same shared CLS context that the ClsMiddleware set up. Of course, we could also bind the interceptor globally with APP_INTERCEPTOR. app.controller.ts @UseInterceptors(UserIpInterceptor) @Injectable() export class AppController { constructor(private readonly appService: AppService) {} @Get('/hello') hello() { return this.appService.sayHello(); } } ","version":"Next","tagName":"h3"},{"title":"Access CLS context in service​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#access-cls-context-in-service","content":" In the AppService, we can retrieve the user's IP from the CLS context without explicitly passing in anything, and without making the AppService request-scoped! app.service.ts @Injectable() export class AppService { constructor(private readonly cls: ClsService) {} sayHello() { const userIp = this.cls.get('ip'); return 'Hello ' + userIp + '!'; } } ","version":"Next","tagName":"h3"},{"title":"That's it​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#thats-it","content":" This is pretty much all there is to it. This library further provides more quality-of-life features, so read on! info If your use-case is really simple, you can instead consider creating a custom implementation with AsyncLocalStorage. Limiting the number of dependencies in your application is always a good idea! ","version":"Next","tagName":"h3"},{"title":"Proxy Providers","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases/proxy-providers","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Class Proxy Providers​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#class-proxy-providers","content":" These providers look like your regular class providers, with the exception that is the @InjectableProxy() decorator to make them easily distinguishable. @InjectableProxy() export class User { id: number; role: string; } To register the proxy provider, use the ClsModule.forFeature() registration, which exposes it an injectable provider in the parent module. ClsModule.forFeature(User); It can be then injected using the class name. However, what will be actually injected is not the instance of the class, but rather the Proxy which redirects all access to an unique instance stored in the CLS context. ","version":"Next","tagName":"h2"},{"title":"Populate in an enhancer​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#populate-in-an-enhancer","content":" A Class provider defined in this way will be empty upon creation, so we must assign context values to it somewhere. One place to do it is an interceptor @Injectable() export class UserInterceptor implements NestInterceptor { // we can inject the proxy here constructor(private readonly user: User) {} intercept(context: ExecutionContext, next: CallHandler): Observable<any> { const request = context.switchToHttp().getRequest(); // and assign or change values as it was a normal object this.user.id = request.user.id; this.user.role = 'admin'; return next.handle(); } } ","version":"Next","tagName":"h3"},{"title":"Self-populating Proxy Provider​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#self-populating-proxy-provider","content":" It is also possible to inject other providers into the Proxy Provider to avoid having to do this in a separate component. For the convenience, the CLS_REQ and CLS_RES are also made into Proxy Providers and are exported from the ClsModule. @InjectableProxy() export class UserWithRole { id: number; role: string; constructor( @Inject(CLS_REQ) request: Request, roleService: RoleService, ) { this.id = request.user.id; this.role = roleService.getForId(request.user.id); } } If you need to inject a provider from an external module, use the ClsModule.forFeatureAsync() registration to import the containing module. ClsModule.forFeatureAsync({ // make RoleService available to the Proxy provider import: [RoleModule], useClass: UserWithRole, }); tip Using @Inject(CLS_REQ), you can entirely replace @Inject(REQUEST) in REQUEST-SCOPED providers to turn them into CLS-enabled singletons without changing the implementation. ","version":"Next","tagName":"h3"},{"title":"Factory Proxy Providers​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#factory-proxy-providers","content":" Like your normal factory providers, Proxy factory providers look familiar. They can be only registered using the ClsModule.forFeatureAsync() method. Here's an example of a hypothetical factory provider that dynamically resolves to a specific tenant database connection: ClsModule.forFeatureAsync({ provide: TENANT_CONNECTION, import: [DatabaseConnectionModule], inject: [CLS_REQ, DatabaseConnectionService], useFactory: async (req: Request, dbService: DatabaseConnectionService) => { const tenantId = req.params['tenantId']; const connection = await dbService.getTenantConnection(tenantId); return connection; }, global: true, // make the TENANT_CONNECTION available for injection globally }); Again, the factory will be called on each request and the result will be stored in the CLS context. The TENANT_CONNECTION provider, however, will still be a singleton and will not affect the scope of whatever it is injected into. In the service, it can be injected using the provide token as usual: @Injectable() class DogsService { constructor( @Inject(TENANT_CONNECTION) private readonly connection: TenantConnection, ) {} getAll() { return this.connection.dogs.getAll(); } } ","version":"Next","tagName":"h2"},{"title":"Caveats​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#caveats","content":" ","version":"Next","tagName":"h2"},{"title":"No primitive values​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#no-primitive-values","content":" Proxy Factory providers cannot return a primitive value. This is because the provider itself is the Proxy and it only delegates access once a property or a method is called on it (or if it itself is called in case the factory returns a function). ","version":"Next","tagName":"h3"},{"title":"function Proxies must be explicitly enabled​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#function-proxies-must-be-explicitly-enabled","content":" In order to support injecting proxies of functions, the underlying proxy target must be a function, too, in order to be able to implement the "apply" trap. However, this information cannot be extracted from the factory function itself, so if your factory returns a function, you must explicitly set the type property to function in the provider definition. { provide: SOME_FUNCTION, useFactory: () => { return () => { // do something }; }, type: 'function', } note In versions prior to v4.0, calling typeof on an instance of a Proxy provider always returned function, regardless of the value it holds. This is no longer the case. Please see Issue #82 ","version":"Next","tagName":"h3"},{"title":"Delayed resolution of Proxy Providers​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#delayed-resolution-of-proxy-providers","content":" By default, proxy providers are resolved as soon as the setup function in an enhancer (middleware/guard/interceptor) finishes. For some use cases, it might be required that the resolution is delayed until some later point in the request lifecycle once more information is present in the CLS . To achieve that, set resolveProxyProviders to false in the enhancer options and call ClsService#resolveProxyProviders() manually at any time. ClsModule.forRoot({ middleware: { resolveProxyProviders: false, }, }); ","version":"Next","tagName":"h2"},{"title":"Outside web request​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#outside-web-request","content":" This is also necessary outside the context of web request, otherwise all access to an injected Proxy Provider will return undefined. With cls.run()​ If you set up the context with cls.run() to wrap any subsequent code thar relies on Proxy Providers. @Injectable() export class CronController { constructor( private readonly someService: SomeService, private readonly cls: ClsService, ); @Cron('45 * * * * *') async handleCron() { await this.cls.run(async () => { // prepare the context this.cls.set('some-key', 'some-value'); // trigger Proxy Provider resolution await this.cls.resolveProxyProviders(); await this.someService.doTheThing(); }); } } With @UseCls()​ Since the @UseCls() decorator wraps the function body with cls.run() automatically, you can use the setup function to prepare the context. The Proxy Providers will be resolved after the setup phase. @Injectable() export class CronController { constructor(private readonly someService: SomeService); @Cron('45 * * * * *') @UseCls({ setup: (cls) => { cls.set('some-key', 'some-value'); }, }) async handleCron() { await this.someService.doTheThing(); } } ","version":"Next","tagName":"h3"},{"title":"Using an Interceptor","type":0,"sectionRef":"#","url":"/nestjs-cls/setting-up-cls-context/using-an-interceptor","content":"Using an Interceptor Another place to initiate the CLS context is an ClsInterceptor, which, unlike the ClsGuard uses AsyncLocalStorage#run method to wrap the following code, which is considered safer than enterWith. To use it, pass its configuration to the interceptor property to the ClsModule.forRoot() options: Automatically app.module.ts @Module({ imports: [ ClsModule.forRoot({ interceptor: { mount: true }, }), ], // ... }) export class AppModule {} Manually Or mount it manually as APP_INTERCEPTOR app.module.ts @Module({ imports: [ ClsModule.forRoot({ interceptor: { mount: false } }), ] providers: [ { provide: APP_INTERCEPTOR, useClass: ClsGuard, }, ], // ... }) export class AppModule {} or directly on the Controller/Resolver with: @UseInterceptors(ClsInterceptor); note Please note: Since Nest's Interceptors run after Guards, that means using this method makes CLS unavailable in Guards (and in case of REST Controllers, also in Exception Filters).","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Using a Guard","type":0,"sectionRef":"#","url":"/nestjs-cls/setting-up-cls-context/using-a-guard","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Automatically​","type":1,"pageTitle":"Using a Guard","url":"/nestjs-cls/setting-up-cls-context/using-a-guard#automatically","content":" Use mount: true app.module.ts @Module({ imports: [ ClsModule.forRoot({ guard: { mount: true }, }), ], // ... }) export class AppModule {} ","version":"Next","tagName":"h2"},{"title":"Manually​","type":1,"pageTitle":"Using a Guard","url":"/nestjs-cls/setting-up-cls-context/using-a-guard#manually","content":" If you need any other guards to use the ClsService, it's preferable to mount ClsGuard manually as the first guard in the root module: app.module.ts @Module({ imports: [ ClsModule.forRoot({ guard: { mount: false } }), ] providers: [ { provide: APP_GUARD, useClass: ClsGuard, }, ], // ... }) export class AppModule {} or mount it directly on the Controller/Resolver with @UseGuards(ClsGuard); caution Please note: since the ClsGuard uses the AsyncLocalStorage#enterWith method, using the ClsGuard comes with some security considerations! ","version":"Next","tagName":"h2"},{"title":"@nestjs-cls/transactional","type":0,"sectionRef":"#","url":"/nestjs-cls/plugins/available-plugins/transactional","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Installation​","type":1,"pageTitle":"@nestjs-cls/transactional","url":"/nestjs-cls/plugins/available-plugins/transactional#installation","content":" npmyarnpnpm npm install @nestjs-cls/transactional The plugin works in conjunction with various adapters that provide the actual transactional logic and types for the underlying database library, so you'll need to install one of those as well. Adapters for the following libraries are available: Prisma (see prisma-adapter) Adapters will not be implemented for the following libraries: TypeORM (since a more fully-featured community package already exists)Sequelize (since it already includes a built-in CLS-enabled transaction support) ","version":"Next","tagName":"h2"},{"title":"Example​","type":1,"pageTitle":"@nestjs-cls/transactional","url":"/nestjs-cls/plugins/available-plugins/transactional#example","content":" For this example, we'll use the prisma library and the @nestjs-cls/transactional-adapter-prisma adapter. Later, you'll learn how to create your own adapter. Suppose we already have a PrismaModule which provides a PrismaClient instance and two other services UserService and AccountService which we'd like to make transactional. ","version":"Next","tagName":"h2"},{"title":"Plugin registration​","type":1,"pageTitle":"@nestjs-cls/transactional","url":"/nestjs-cls/plugins/available-plugins/transactional#plugin-registration","content":" To add register the transactional plugin with nestjs-cls, we need to pass it to the forRoot method of the ClsModule: app.module.ts import { ClsModule } from 'nestjs-cls'; import { ClsPluginTransactional } from '@nestjs-cls/transactional'; import { TransactionalAdapterPrisma } from '@nestjs-cls/transactional-adapter-prisma'; // ... other imports @Module({ imports: [ PrismaModule, ClsModule.forRoot({ plugins: [ new ClsPluginTransactional({ // if PrismaModule is not global, we need to make it available to the plugin imports: [PrismaModule], adapter: new TransactionalAdapterPrisma({ // each adapter has its own options, see the adapter docs for more info prismaInjectionToken: PrismaClient, }), }), ], }), ], providers: [UserService, AccountService], }) export class AppModule {} This registers a TransactionHost provider in the global context which can be used to start a new transaction and retrieve the current transaction reference. ","version":"Next","tagName":"h3"},{"title":"Using the TransactionHost​","type":1,"pageTitle":"@nestjs-cls/transactional","url":"/nestjs-cls/plugins/available-plugins/transactional#using-the-transactionhost","content":" Now that we have the plugin registered, we can use the TransactionHost to start a new transaction and retrieve the current transaction reference. Suppose that any time we create an User, we want to create an Account for them as well and both operations must either succeed or fail. We can use the TransactionHost to start a new transaction and retrieve the current transaction reference. The type argument on the TransactionHost<Adapter> makes sure that the tx property is typed correctly and the withTransaction method returns the correct type. This is ensured by the implementation of the adapter: user.service.ts @Injectable() class UserService { constructor( private readonly txHost: TransactionHost<TransactionalAdapterPrisma>, private readonly accountService: AccountService, ) {} async createUser(name: string): Promise<User> { return this.txHost.withTransaction(async () => { const user = await this.txHost.tx.user.create({ data: { name } }); await this.accountService.createAccountForUser(user.id); return user; }); } } user.service.ts @Injectable() class AccountService { constructor( private readonly txHost: TransactionHost<TransactionalAdapterPrisma>, ) {} async createAccountForUser(id: number): Promise<Account> { return this.txHost.tx.user.create({ data: { userId: id, number: Math.random() }, }); } } note Notice that we never used either raw PrismaClient or the prisma.$transaction directly. This is because the adapter takes care of that for us, otherwise the transaction would not be propagated in the CLS context. ","version":"Next","tagName":"h3"},{"title":"Using the Transactional decorator​","type":1,"pageTitle":"@nestjs-cls/transactional","url":"/nestjs-cls/plugins/available-plugins/transactional#using-the-transactional-decorator","content":" The @Transactional decorator can be used to wrap a method call in the withTransaction call implicitly. This saves a lot of boilerplate code and makes the code more readable. Using the decorator, we can change the createUser method like so without changing the behavior: user.service.ts @Injectable() class UserService { constructor( private readonly txHost: TransactionHost<TransactionalAdapterPrisma>, private readonly accountService: AccountService, ) {} @Transactional() async createUser(name: string): Promise<User> { const user = await this.txHost.tx.user.create({ data: { name } }); await this.accountService.createAccountForUser(user.id); return user; } } ","version":"Next","tagName":"h3"},{"title":"Passing transaction options​","type":1,"pageTitle":"@nestjs-cls/transactional","url":"/nestjs-cls/plugins/available-plugins/transactional#passing-transaction-options","content":" The both the withTransaction method and the Transactional decorator accepts an optional TransactionOptions object as the first argument. This object can be used to configure the transaction, for example to set the isolation level or the timeout. The type is also provided by the adapter. @Transactional<TransactionalAdapterPrisma>({ isolationLevel: 'Serializable' }) async createUser(name: string): Promise<User> { const user = await this.txHost.tx.user.create({ data: { name } }); await this.accountService.createAccountForUser(user.id); return user; } async createUser(name: string): Promise<User> { return this.txHost.withTransaction({ isolationLevel: 'Serializable' }, async () => { const user = await this.txHost.tx.user.create({ data: { name } }); await this.accountService.createAccountForUser(user.id); return user; }); } ","version":"Next","tagName":"h3"},{"title":"ClsPluginTransactional Interface​","type":1,"pageTitle":"@nestjs-cls/transactional","url":"/nestjs-cls/plugins/available-plugins/transactional#clsplugintransactional-interface","content":" The ClsPluginTransactional constructor takes an options object with the following properties: imports: any[] An array of NestJS modules that should be imported for the plugin to work. If the dependencies are available in the global context, this is not necessary. adapter: TransactionalAdapter An instance of the adapter that should be used for the plugin. ","version":"Next","tagName":"h2"},{"title":"TransactionHost Interface​","type":1,"pageTitle":"@nestjs-cls/transactional","url":"/nestjs-cls/plugins/available-plugins/transactional#transactionhost-interface","content":" The TransactionHost interface is the main working interface of the plugin. It provides the following API: tx: Transaction Reference to the currently active transaction. Depending on the adapter implementation for the underlying database library, this can be either a transaction client instance, a transaction object or a transaction ID. If no transaction is active, refers to the default non-transactional client instance (or undefined transaction ID). withTransaction(callback): Promise withTransaction(options, callback): Promise Runs the callback in a transaction. Optionally takes a TransactionOptions object as the first parameter. withOutTransaction(callback): Promise Runs the callback without a transaction (even if one is active in the parent scope). isTransactionActive(): boolean Returns whether a CLS-managed transaction is active in the current scope. ","version":"Next","tagName":"h2"},{"title":"Considerations​","type":1,"pageTitle":"@nestjs-cls/transactional","url":"/nestjs-cls/plugins/available-plugins/transactional#considerations","content":" Please note that at this time, the @nestjs-cls/transactional plugin only supports a single database connection per application. This means that if you have multiple databases, you can only use one of them with the transactional plugin. This is a subject to change in the future, as there are plans to support multiple TransactionHost instances, each with their own adapter and a database connection. ","version":"Next","tagName":"h2"}],"options":{"indexBaseUrl":true,"id":"default"}} \ No newline at end of file diff --git a/search-doc.json b/search-doc.json old mode 100755 new mode 100644 index 7ddbd48..bae50b6 --- a/search-doc.json +++ b/search-doc.json @@ -1 +1 @@ -[{"title":"NestJS CLS","type":0,"sectionRef":"#","url":"/nestjs-cls/","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Use cases​","type":1,"pageTitle":"NestJS CLS","url":"/nestjs-cls/#use-cases","content":"Some common use cases that this library enables include: Tracking the Request ID and other metadata for logging purposesKeeping track of the user throughout the whole requestMaking the dynamic Tenant database connection available everywhere in multi-tenant appsPropagating the authentication level or role to restrict access to resourcesSeamlessly propagating the transaction object of your favourite ORM across services without breaking encapsulation and isolation by explicitly passing it around.Using "request" context in cases where actual REQUEST-scoped providers are not supported (passport strategies, cron controllers, websocket gateways, ...) Most of these are to some extent solvable using REQUEST-scoped providers or passing the context as a parameter, but these solutions are often clunky and come with a whole lot of other issues. info * The name comes from the original implementation based on cls-hooked, which was since replaced by the native AsyncLocalStorage. "},{"title":"Motivation​","type":1,"pageTitle":"NestJS CLS","url":"/nestjs-cls/#motivation","content":"NestJS is an amazing framework, but in the plethora of awesome built-in features, I still missed one. I created this library to solve a specific use case, which was limiting access to only those records which had the same TenantId as the request's user in a central manner. The repository code automatically added a WHERE clause to each query, which made sure that other developers couldn't accidentally mix tenant data (all tenants' data were held in the same database) without extra effort. AsyncLocalStorage is still fairly new and not many people know of its existence and benefits. Here's a nice talk from NodeConf about the history. I've invested a great deal of my personal time in making the use of it as pleasant as possible. While the use of async_hooks is sometimes criticized for making Node run slower, in my experience, the introduced overhead is negligible compared to any IO operation (like a DB or external API call). If you want fast, use a compiled language. Also, if you use some tracing library (like otel), it most likely already uses async_hooks under the hood, so you might as well use it to your advantage. "},{"title":"Highlights​","type":1,"pageTitle":"NestJS CLS","url":"/nestjs-cls/#highlights","content":"New: Version 3.0 introduces Proxy Providers as an alternative to the imperative API. (Minor breaking changes were introduced, see Migration guide). Version 2.0 brings advanced type safety and type inference. However, it requires features from typescript >= 4.4 - Namely allowing symbol members in interfaces. If you can't upgrade but still want to use this library, install version 1.6.2, which lacks the typing features. "},{"title":"Module Options","type":0,"sectionRef":"#","url":"/nestjs-cls/api/module-options","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"forRoot(Async)​","type":1,"pageTitle":"Module Options","url":"/nestjs-cls/api/module-options#forrootasync","content":"The ClsModule.forRoot() method takes the following ClsModuleOptions: middleware?: ClsMiddlewareOptions An object with additional options for the ClsMiddleware, see below. guard?: ClsGuardOptions An object with additional options for the ClsGuard, see below. interceptor?: ClsInterceptorOptions An object with additional options for the ClsInterceptor, see below. global?: boolean (default false) Whether to make the module global, so you do not have to import ClsModule.forFeature() in other modules. proxyProviders?: Type[] Array of Proxy Providers that should be registered in the root module. Currently only accepts sync class Proxy providers, use ClsModule.forFeatureAsync() for more complex use-cases. ClsModule.forRootAsync() is also available. You can supply the usual imports, inject and useFactory parameters as usual. info Please note: If you intend to use multiple enhancers at the same time (e.g. initialize the CLS context in a middleware and then set some CLS variables additional CLS variables in an interceptor), be aware that the only the first one in the chain will set the Request ID. "},{"title":"forFeature(Async)​","type":1,"pageTitle":"Module Options","url":"/nestjs-cls/api/module-options#forfeatureasync","content":"The ClsModule.forFeature() method can be used to register a Proxy Providers. The Sync method only accepts Class Proxy providers. The ClsModule.forFeatureAsync() method accepts either ClsModuleProxyClassProviderOptions or ClsModuleProxyFactoryProviderOptions that both accept these options: provide?: any Custom injection token to use for the provider. In case of a class provider, this parameter is optional, as the class reference passed to useClass will be used by default. imports? any[] Optional list of imported modules that export the providers which are required for the provider. extraProviders?: Provider[]Optional list of additional providers that should be available to the Proxy. Useful for passing configuration from a parent dynamic module. The ClsModuleProxyClassProviderOptions interface further accepts: useClass: Type The target class that will be used by this Proxy Provider. Make sure it is decorated with @InjectableProxy. The ClsModuleProxyFactoryProviderOptions interface further accepts: inject: any[] An array of injection tokens for providers used in the useFactory. useFactory: (...args: any[]) => any Factory function that accepts an array of providers in the order of the according tokens in the inject array. Returns (or resolves with) an object (or a function) that will be used by this Proxy Provider. "},{"title":"Middleware & Enhancer options​","type":1,"pageTitle":"Module Options","url":"/nestjs-cls/api/module-options#middleware--enhancer-options","content":"All of the Cls{Middleware,Guard,Interceptor}Options take the following parameters (either in ClsModuleOptions or directly when instantiating them manually): mount?: boolean (default false) Whether to automatically mount the middleware/guard/interceptor to every route (not applicable when instantiating them manually) generateId?: boolean (default false) Whether to automatically generate a request ID. It will be available under the CLS_ID key. idGenerator?: (req: Request) => string | Promise<string> idGenerator?: (ctx: ExecutionContext) => string | Promise<string> An optional function for generating the request ID. It takes the Request object (or the ExecutionContext in case of a Guard or Interceptor) as an argument and (synchronously or asynchronously) returns a string. The default implementation uses Math.random() to generate a string of 8 characters. setup?: (cls: ClsService, req: Request) => void | Promise<void>; setup?: (cls: ClsService, ctx: ExecutionContext) => void | Promise<void>; Function that executes after the CLS context had been initialised. It can be used to put additional variables in the CLS context. resolveProxyProviders?: boolean (default true) Whether to automatically resolve Proxy Providers in the enhancer (if any are registered). The ClsMiddlewareOptions additionally takes the following parameters: saveReq?: boolean (default true) Whether to store the Request object to the context. It will be available under the CLS_REQ key. saveRes?: boolean (default false) Whether to store the Response object to the context. It will be available under the CLS_RES key useEnterWith?: boolean (default false) Set to true to set up the context using a call to AsyncLocalStorage#enterWith instead of wrapping the next() call with the safer AsyncLocalStorage#run. Most of the time this should not be necessary, but some frameworks are known to lose the context with run. "},{"title":"API","type":0,"sectionRef":"#","url":"/nestjs-cls/api","content":"API This chapter describes the programmatic API of the ClsService and the ClsModule options.","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Breaking out of DI","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases/breakin-out-of-di","content":"Breaking out of DI While this package aims to be compatible with NestJS's Dependency Injection, it is also possible to access the CLS context outside of it. For that, it provides the static ClsServiceManager class that exposes the getClsService() method which can be used to retrieve the context outside of Nest's injection context (e.g. in top-level functions) function helper() { const cls = ClsServiceManager.getClsService(); // you now have access to the shared storage console.log(cls.getId()); } caution Please note: Only use this feature where absolutely necessary. Using this technique instead of dependency injection will make it difficult to mock the ClsService and your code will become harder to test.","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Additional CLS Setup","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases/additional-cls-setup","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Middleware​","type":1,"pageTitle":"Additional CLS Setup","url":"/nestjs-cls/features-and-use-cases/additional-cls-setup#middleware","content":"In case of middleware the Request and Response objects are passed as the second and third parameters. ClsModule.forRoot({ middleware: { mount: true, setup: (cls, req: Request, res: Response) => { cls.set('TENANT_ID', req.params('tenant_id')); cls.set('AUTH', { authenticated: false }); }, }, }); "},{"title":"Enhancers​","type":1,"pageTitle":"Additional CLS Setup","url":"/nestjs-cls/features-and-use-cases/additional-cls-setup#enhancers","content":"In a guard or interceptor, the ExecutionContext object is passed as a second parameter. ClsModule.forRoot({ interceptor: { mount: true, setup: (cls, context) => { const req = context.switchToHttp().getRequest<Request>(); cls.set('TENANT_ID', req.params('tenant_id')); cls.set('AUTH', { authenticated: false }); }, }, }); "},{"title":"Considerations","type":0,"sectionRef":"#","url":"/nestjs-cls/considerations","content":"Considerations This chapter exists to help you decide whether this library is compatible with your project and to address any concerns that you may have. You might be also interested in the Author's take","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Request ID","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases/request-id","content":"Request ID Because of a shared storage, CLS is an ideal tool for tracking request (correlation) IDs for the purpose of logging. This package provides an option to automatically generate request IDs in the middleware/guard/interceptor, if you pass { generateId: true } to its options. By default, the generated ID is a string based on Math.random(), but you can provide a custom function in the idGenerator option. This function receives the Request (or ExecutionContext in case a ClsGuard is used) as the first parameter, which can be used in the generation process and should return (or resolve with) a string ID that will be stored in the CLS for later use. Below is an example of retrieving the request ID from the request header with a fallback to an autogenerated one. ClsModule.forRoot({ middleware: { mount: true, generateId: true, idGenerator: (req: Request) => req.headers['X-Request-Id'] ?? uuid(); } }) The ID is stored under the CLS_ID constant in the context. The ClsService provides a shorthand method getId to quickly retrieve it anywhere. It can be for example used in a custom logger: my.logger.ts @Injectable() class MyLogger { constructor(private readonly cls: ClsService) {} log(message: string) { console.log(`<${this.cls.getId()}> ${message}`); } } Calling this from anywhere within a CLS context results in retrieving the ID: my.service.ts @Injectable() class MyService { constructor(private readonly logger: MyLogger); hello() { this.logger.log('Hello'); // -> logs for ex.: "<44c2d8ff-49a6-4244-869f-75a2df11517a> Hello" } } ","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"How it works","type":0,"sectionRef":"#","url":"/nestjs-cls/introduction/how-it-works","content":"How it works Continuation-local storage provides a common space for storing and retrieving data throughout the life of a function/callback call chain. In NestJS, this allows for sharing request data across the lifetime of a single request - without the need for request-scoped providers. It also makes it easy to track and log request ids throughout the whole application. To make CLS work, it is required to set up the CLS context first. This is done by calling cls.run() (or cls.enter(), see Security considerations for more info) somewhere in the app. Once that is set up, anything that is called within the same callback chain has access to the same storage with cls.set() and cls.get().","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Installation","type":0,"sectionRef":"#","url":"/nestjs-cls/introduction/installation","content":"Installation Install as any other NPM package using your favorite package manager. npmyarnpnpm npm install nestjs-cls info This module requires additional peer deps, like the @nestjs/core and @nestjs/common libraries, but it is assumed those are already installed.","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Security","type":0,"sectionRef":"#","url":"/nestjs-cls/considerations/security","content":"Security It is often discussed whether AsyncLocalStorage is safe to use for concurrent requests (because of a possible context leak) and whether the context could be lost throughout the duration of a request. The ClsMiddleware and ClsInterceptor by default uses the safe run() method, which it should not leak context, but in some rare cases, the context can be lost. The ClsGuard (and ClsMiddleware, if configured so) uses the less safe enterWith() method, which might be needed in case the run() method causes context loss. This has a consequence that should be taken into account: caution When the enterWith method is used, any consequent requests get access to the CLS context of the previous request until the request hits the enterWith call. That means, when using ClsMiddleware with the useEnterWith option, or ClsGuard to set up context, be sure to mount them as early in the request lifetime as possible and do not use any other enhancers that rely on ClsService before them. For ClsGuard, that means you should probably manually mount it in AppModule if you require any other guard to run after it. The next chapter addresses compatibility with various transport protocols.","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Service Interface","type":0,"sectionRef":"#","url":"/nestjs-cls/api/service-interface","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"ClsService​","type":1,"pageTitle":"Service Interface","url":"/nestjs-cls/api/service-interface#clsservice","content":"The injectable ClsService provides the following API to manipulate the cls context: The S type parameter is used as the type of custom ClsStore. get(): S Get the entire CLS context. get(key?: keyof S): S[key] Retrieve a value from the CLS context by key. getId(): string; Retrieve the request ID (a shorthand for cls.get(CLS_ID)) has(key: keyof S): boolean Check if a key is in the CLS context. set(key: keyof S, value: S[key]): void Set a value on the CLS context. setIfUndefined(key: keyof S, value: S[key]): void Set a value on the CLS context only if it hasn't been already set. Useful for ensuring idempotence if you have multiple entry points. run(callback: () => T): T run(options: ClsContextOptions, callback: () => T): T; Run the callback in a shared CLS context. Optionally takes an options object as the first parameter. runWith(store: S, callback: () => T): T Run the callback in a new CLS context (while supplying the default store). enter(): void; enter(options: ClsContextOptions): void Run any following code in a shared CLS context. Optionally takes an options object as the first parameter. enterWith(store: S): void Run any following code in a new CLS context (while supplying the default store). exit(callback: () => T): T Run the callback without access to a shared CLS context. isActive(): boolean Whether the current code runs within an active CLS context. resolveProxyProviders(): Promise<void> Manually trigger resolution of Proxy Providers. "},{"title":"ClsContextOptions​","type":1,"pageTitle":"Service Interface","url":"/nestjs-cls/api/service-interface#clscontextoptions","content":"The run and enter methods can take an additional options object with the following settings: ifNested?: 'override' | 'inherit' | 'reuse' Sets the behavior of nested CLS context creation in case the method is invoked in an existing context. It has no effect if no parent context exist. override (default) - Run the callback with an new empty context. No values from the parent context will be accessible within the wrapped code.inherit - Run the callback with a shallow copy of the parent context. Re-assignments of top-level properties will not be reflected in the parent context. However, modifications of existing properties will be reflected.reuse - Reuse existing context without creating a new one. All modifications to the existing context will be reflected. "},{"title":"Features and use cases","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases","content":"Features and use cases In addition to the basic functionality described in the Quick start chapter, this module provides several other features to make your life as a developer easier.","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Type safety and type inference","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Type-safe ClsService​","type":1,"pageTitle":"Type safety and type inference","url":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference#type-safe-clsservice","content":"It is possible to specify a custom interface for the ClsService and get proper typing and automatic type inference when retrieving or setting values. This works even for nested objects using a dot notation. To create a typed CLS Store, start by creating an interface that extends ClsStore. my-cls-service.interface.ts export interface MyClsStore extends ClsStore { tenantId: string; user: { id: number; authorized: boolean; }; } "},{"title":"Using a type parameter​","type":1,"pageTitle":"Type safety and type inference","url":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference#using-a-type-parameter","content":"Then you can inject the ClsService with a type parameter ClsService<MyClsStore> to make use of the safe typing. export class MyService { constructor(private readonly cls: ClsService<MyClsStore>) {} doTheThing() { // a boolean type will be enforced here this.cls.set('user.authorized', true); // tenantId will be inferred as a string const tenantId = this.cls.get('tenantId'); // userId will be inferred as a number const userId = this.cls.get('user.id'); // user will be inferred as { id: number, authorized: boolean } const user = this.cls.get('user'); // you'll even get intellisense for the keys, because the type // will be inferred as: // symbol | 'tenantId˙ | 'user' | 'user.id' | 'user.authorized' // alternatively, since the `get` method returns the whole store // when called without arguments, you can use object destructuring const { tenantId, user } = this.cls.get(); // accessing a nonexistent property will result in a type error const notExist = this.cls.get('user.name'); } } "},{"title":"Using Typescript module augmentation​","type":1,"pageTitle":"Type safety and type inference","url":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference#using-typescript-module-augmentation","content":"Alternatively, if you feel like using ClsService<MyClsStore> everywhere is tedious, you can instead globally augment the ClsStore interface. Now you don't need to specify the type parameter on ClsService to still get the string typing. declare module 'nestjs-cls' { interface ClsStore { tenantId: string; user: { id: number; authorized: boolean; }; } } "},{"title":"Using a custom provider​","type":1,"pageTitle":"Type safety and type inference","url":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference#using-a-custom-provider","content":"For even more transparent approach without augmenting the declaration, you can create a typed ClsService by extending it and creating a custom provider out of it: export class MyClsService extends ClsService<MyClsStore> {} @Module({ imports: [ClsModule.forFeature()], providers: [ { provide: MyClsService, useExisting: ClsService, }, ], exports: [MyClsService], }) class MyClsModule {} Now you can inject MyClsService as an alias for ClsService<MyClsStore> without "polluting" the global type space. "},{"title":"Terminal Type​","type":1,"pageTitle":"Type safety and type inference","url":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference#terminal-type","content":"It can happen, that the object you want to store in the context is too complex, or contains cyclic references. In that case, typescript might complain that type instantiation is too deep, possibly infinite. That is due to the fact that it tries to generate all possible paths inside the ClsStore. If that's the case, you can use the Terminal type to stop generating the paths for a certain subtree: interface ClsStore { tenantId: string; user: Terminal<{ id: number; authorized: boolean; }>; } This will only generate the paths tenantId | user and won't allow directly accessing nested keys (like cls.get('user.id'), but you'll still get fully typing for things like const { id } = cls.get('user')). See issue #22 for more details. "},{"title":"Compatibility","type":0,"sectionRef":"#","url":"/nestjs-cls/considerations/compatibility","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"REST​","type":1,"pageTitle":"Compatibility","url":"/nestjs-cls/considerations/compatibility#rest","content":"This package is compatible with Nest-supported REST controllers and the preferred way is to use the ClsMiddleware with the mount option set to true. Tested with: ✔ Express✔ Fastify Known issues: In case API versioning is used, the automatic mounting of the ClsMiddleware does not work and it needs to be mounted manually. See issue #67 for details.Some existing Express middlewares may cause context loss, if that happens, mount the ClsMiddleware manually after those offending ones (#50) "},{"title":"GraphQL​","type":1,"pageTitle":"Compatibility","url":"/nestjs-cls/considerations/compatibility#graphql","content":"Using an interceptor or a guard may result in that enhancer triggering multiple times in case there are multiple queries in the GQL request. Due to this, you should ensure that any operation on the CLS store within enhancers is idempotent. This includes the setup function. Therefore, it is advised to use the ClsService#setIfUndefined() method. Tested with: ✔ Apollo (Express)✔ Mercurius (Fastify) "},{"title":"@nestjs/graphql >= 10​","type":1,"pageTitle":"Compatibility","url":"/nestjs-cls/considerations/compatibility#nestjsgraphql--10","content":"Since v10, Nest's GraphQL resolvers are compatible with this package and the preferred way to initialize the CLS context is use the ClsMiddleware with the mount option. "},{"title":"@nestjs/graphql < 10​","type":1,"pageTitle":"Compatibility","url":"/nestjs-cls/considerations/compatibility#nestjsgraphql--10-1","content":"For older versions of graphql, the ClsMiddleware needs to be mounted manually with app.use(...) in order to correctly set up the context for resolvers. Additionally, you have to pass useEnterWith: true to the ClsMiddleware options, because the context gets lost otherwise due to an issue with CLS and Apollo (sadly, the same is true for Mercurius). This method is functionally identical to just using the ClsGuard. Alternatively, you can use the ClsInterceptor, which uses the safer AsyncLocalStorage#run (thanks to andreialecu), but remember that using it makes CLS unavailable in Guards. "},{"title":"Others​","type":1,"pageTitle":"Compatibility","url":"/nestjs-cls/considerations/compatibility#others","content":"Use the ClsGuard or ClsInterceptor to set up context with any other platform. There are no explicit test for other transports, so I can't guarantee it will work with your platform of choice, but there's nothing that would indicate otherwise. If you decide to try this package with a platform that is not listed here, please let me know so I can add the compatibility notice. Below are listed transports with which it is confirmed to work: "},{"title":"Websockets​","type":1,"pageTitle":"Compatibility","url":"/nestjs-cls/considerations/compatibility#websockets","content":"Websocket Gateways don't respect globally bound enhancers, therefore it is required to bind the ClsGuard or ClsInterceptor manually on the WebsocketGateway. Special care is also needed for the handleConnection method (See #8) "},{"title":"Quick Start","type":0,"sectionRef":"#","url":"/nestjs-cls/introduction/quick-start","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Background​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#background","content":"This library exposes a dynamic ClsModule which exposes the injectable ClsService and provides means to setting up and interacting with the CLS context. The CLS context is a storage that wraps around a chain of function calls. It can be accessed anywhere during the lifecycle of such chain via the ClsService. "},{"title":"Example​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#example","content":"Below is an example of using this library to store the client's IP address in an interceptor and retrieving it in a service without explicitly passing it along. note This example assumes you are using HTTP and therefore can use middleware. For usage with non-HTTP transports, see Setting up CLS context. "},{"title":"Register the ClsModule​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#register-the-clsmodule","content":"Register the ClsModule and automatically mount the ClsMiddleware which wraps the entire request in a shared CLS context on all routes. app.module.ts @Module({ imports: [ ClsModule.forRoot({ global: true, middleware: { mount: true }, }), ], providers: [AppService], controllers: [AppController], }) export class AppModule {} "},{"title":"Create IP-address interceptor​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#create-ip-address-interceptor","content":"Create an interceptor that injects the ClsService to get access to the current shared CLS context,extract the users's IP address from the request and stores it into the CLS context, user-ip.interceptor.ts @Injectable() export class UserIpInterceptor implements NestInterceptor { constructor(private readonly cls: ClsService) {} intercept(context: ExecutionContext, next: CallHandler): Observable<any> { const request = context.switchToHttp().getRequest(); const userIp = request.connection.remoteAddress; this.cls.set('ip', userIp); return next.handle(); } } "},{"title":"Mount interceptor to controller​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#mount-interceptor-to-controller","content":"By mounting the UserIpInterceptor on the controller, it gets access to the same shared CLS context that the ClsMiddleware set up. Of course, we could also bind the interceptor globally with APP_INTERCEPTOR. app.controller.ts @UseInterceptors(UserIpInterceptor) @Injectable() export class AppController { constructor(private readonly appService: AppService) {} @Get('/hello') hello() { return this.appService.sayHello(); } } "},{"title":"Access CLS context in service​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#access-cls-context-in-service","content":"In the AppService, we can retrieve the user's IP from the CLS context without explicitly passing in anything, and without making the AppService request-scoped! app.service.ts @Injectable() export class AppService { constructor(private readonly cls: ClsService) {} sayHello() { const userIp = this.cls.get('ip'); return 'Hello ' + userIp + '!'; } } "},{"title":"That's it​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#thats-it","content":"This is pretty much all there is to it. This library further provides more quality-of-life features, so read on! info If your use-case is really simple, you can instead consider creating a custom implementation with AsyncLocalStorage. Limiting the number of dependencies in your application is always a good idea! "},{"title":"Migration guide","type":0,"sectionRef":"#","url":"/nestjs-cls/migration-guide","content":"Migration guide In case you're upgrading to a new major version of this library, follow the according migration guide.","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Usage outside of web request","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases/usage-outside-of-web-request","content":"Usage outside of web request Sometimes, a part of the app that relies on the CLS storage might need to be called outside of the context of a web request - for example, in a Cron job, while consuming a Queue or during the application bootstrap. In such cases, there are no enhancers that can be bound to the handler to set up the context. Therefore, you as the the developer are responsible for wrapping the execution with ClsService#run, or using the @UseCls decorator. In any case, if any following code depends on some context variables, these need to be set up manually. @Injectable() export class CronController { constructor( private readonly someService: SomeService, private readonly cls: ClsService, ); @Cron('45 * * * * *') async handleCronExample1() { // either explicitly wrap the function body with // a call to `ClsService#run` ... await this.cls.run(async () => { this.cls.set('mode', 'cron'); await this.someService.doTheThing(); }); } @Cron('90 * * * * *') // ... or use the convenience decorator which // does the wrapping for you seamlessly. @UseCls({ setup: (cls) => { cls.set('mode', 'cron'); }, }) async handleCronExample2() { await this.someService.doTheThing(); } } caution Special care must be taken in case you're using Proxy Providers.","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Using a Decorator","type":0,"sectionRef":"#","url":"/nestjs-cls/setting-up-cls-context/using-a-decurator","content":"Using a Decorator The @UseCls() decorator can be used at a method level to declaratively wrap the method with a cls.run() call. This method should only be used outside of the context of a web request. info Please keep in mind, that since the CLS context initialization can be async, the @UseCls() decorator can only be used on async function (those that return a Promise).","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Using a Middleware","type":0,"sectionRef":"#","url":"/nestjs-cls/setting-up-cls-context/using-a-middleware","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Automatically​","type":1,"pageTitle":"Using a Middleware","url":"/nestjs-cls/setting-up-cls-context/using-a-middleware#automatically","content":"app.module.ts @Module({ imports: [ ClsModule.forRoot({ global: true, middleware: { mount: true }, }), ], // ... }) export class AppModule {} "},{"title":"Manually​","type":1,"pageTitle":"Using a Middleware","url":"/nestjs-cls/setting-up-cls-context/using-a-middleware#manually","content":"Sometimes, you might want to only use CLS on certain routes, or you need to have more control over the order of middleware registration in combination with other middlewares. "},{"title":"In the module​","type":1,"pageTitle":"Using a Middleware","url":"/nestjs-cls/setting-up-cls-context/using-a-middleware#in-the-module","content":"In that case, omit the mount option or set it to false and bind the ClsMiddleware manually in the module: app.module.ts @Module({ imports: [ ClsModule.forRoot({ global: true, middleware: { mount: false }, }), ], // ... }) export class AppModule implements NestModule { configure(consumer: MiddlewareConsumer) { consumer.apply(ClsMiddleware).forRoutes('custom/route'); } } "},{"title":"Using app.use​","type":1,"pageTitle":"Using a Middleware","url":"/nestjs-cls/setting-up-cls-context/using-a-middleware#using-appuse","content":"Sometimes, however, the previous method won't be enough, because the middleware could be mounted too late and you won't be able to use it in other middlewares that need to run prior to that - for example, the API versioning feature of NestJS apparently interferes with the order, see issue #67. In that case, you can mount it directly in the bootstrap method: main.ts function bootstrap() { const app = await NestFactory.create(AppModule); // create and mount the middleware manually here app.use( new ClsMiddleware({ /* ...settings */ }).use, ); await app.listen(3000); } caution Please note: If you bind the middleware using app.use(), it will not respect middleware settings passed to ClsModule.forRoot(), so you will have to provide them yourself in the constructor. "},{"title":"Setting up the CLS context","type":0,"sectionRef":"#","url":"/nestjs-cls/setting-up-cls-context","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Sync​","type":1,"pageTitle":"Setting up the CLS context","url":"/nestjs-cls/setting-up-cls-context#sync","content":"app.module.ts @Module({ imports: [ ClsModule.forRoot({ global: true, middleware: { mount: true, generateId: true, }, }), ], // ... }) export class AppModule {} "},{"title":"Async​","type":1,"pageTitle":"Setting up the CLS context","url":"/nestjs-cls/setting-up-cls-context#async","content":"app.module.ts @Module({ imports: [ ClsModule.forRootAsync({ global: true, inject: [IdGeneratorService] useFactory: (idGeneratorService) => ({ middleware: { mount: true, generateId: true, idGenerator: (req) => idGeneratorService.generate(req) }, }) }), ], // ... }) export class AppModule {} "},{"title":"v2.x → v3.x","type":0,"sectionRef":"#","url":"/nestjs-cls/migration-guide/v2x-v3x","content":"v2.x → v3.x The root registration method was renamed from register (resp. registerAsync) to forRoot (resp. forRootAsync) to align with the convention. - ClsModule.register({ + ClsModule.forRoot({ middleware: { mount: true }, }), Namespace injection support with forFeature was dropped entirely, and now that method is used to register Proxy Providers. If you still have a use case for namespaces, you can create a namespaced ClsService and use a custom provider to inject it. Example: class MyContextService extends ClsService<MyStore> {} const myContextService = new MyContextService(new AsyncLocalStorage()); // [...] providers: [ { provide: MyContextService, useValue: myContextService, }, ]; ","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Using an Interceptor","type":0,"sectionRef":"#","url":"/nestjs-cls/setting-up-cls-context/using-an-interceptor","content":"Using an Interceptor Another place to initiate the CLS context is an ClsInterceptor, which, unlike the ClsGuard uses AsyncLocalStorage#run method to wrap the following code, which is considered safer than enterWith. To use it, pass its configuration to the interceptor property to the ClsModule.forRoot() options: Automatically app.module.ts @Module({ imports: [ ClsModule.forRoot({ interceptor: { mount: true }, }), ], // ... }) export class AppModule {} Manually Or mount it manually as APP_INTERCEPTOR app.module.ts @Module({ imports: [ ClsModule.forRoot({ interceptor: { mount: false } }), ] providers: [ { provide: APP_INTERCEPTOR, useClass: ClsGuard, }, ], // ... }) export class AppModule {} or directly on the Controller/Resolver with: @UseInterceptors(ClsInterceptor); note Please note: Since Nest's Interceptors run after Guards, that means using this method makes CLS unavailable in Guards (and in case of REST Controllers, also in Exception Filters).","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Proxy Providers","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases/proxy-providers","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Class Proxy Providers​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#class-proxy-providers","content":"These providers look like your regular class providers, with the exception that is the @InjectableProxy() decorator to make them easily distinguishable. user.proxy.ts @InjectableProxy() export class User { id: number; role: string; } To register the proxy provider, use the ClsModule.forFeature() registration, which exposes it an injectable provider in the parent module. ClsModule.forFeature(User); It can be then injected using the class name. However, what will be actually injected is not the instance of the class, but rather the Proxy which redirects all access to an unique instance stored in the CLS context. "},{"title":"Populate in an enhancer​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#populate-in-an-enhancer","content":"A Class provider defined in this way will be empty upon creation, so we must assign context values to it somewhere. One place to do it is an interceptor user.interceptor.ts @Injectable() export class UserInterceptor implements NestInterceptor { // we can inject the proxy here constructor(private readonly user: User) {} intercept(context: ExecutionContext, next: CallHandler): Observable<any> { const request = context.switchToHttp().getRequest(); // and assign or change values as it was a normal object this.user.id = request.user.id; this.user.role = 'admin'; return next.handle(); } } "},{"title":"Self-populating Proxy Provider​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#self-populating-proxy-provider","content":"It is also possible to inject other providers into the Proxy Provider to avoid having to do this in a separate component. For the convenience, the CLS_REQ and CLS_RES are also made into Proxy Providers and are exported from the ClsModule. user-with-rile.proxy.ts @InjectableProxy() export class UserWithRole { id: number; role: string; constructor( @Inject(CLS_REQ) request: Request, roleService: RoleService, ) { this.id = request.user.id; this.role = roleService.getForId(request.user.id); } } If you need to inject a provider from an external module, use the ClsModule.forFeatureAsync() registration to import the containing module. ClsModule.forFeatureAsync({ // make RoleService available to the Proxy provider import: [RoleModule], useClass: UserWithRole, }); tip Using @Inject(CLS_REQ), you can entirely replace @Inject(REQUEST) in REQUEST-SCOPED providers to turn them into CLS-enabled singletons without changing the implementation. "},{"title":"Factory Proxy Providers​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#factory-proxy-providers","content":"Like your normal factory providers, Proxy factory providers look familiar. They can be only registered using the ClsModule.forFeatureAsync() method. Here's an example of a hypothetical factory provider that dynamically resolves to a specific tenant database connection: ClsModule.forFeatureAsync({ provide: TENANT_CONNECTION, import: [DatabaseConnectionModule], inject: [CLS_REQ, DatabaseConnectionService], useFactory: async (req: Request, dbService: DatabaseConnectionService) => { const tenantId = req.params['tenantId']; const connection = await dbService.getTenantConnection(tenantId); return connection; }, global: true, // make the TENANT_CONNECTION available for injection globally }); Again, the factory will be called on each request and the result will be stored in the CLS context. The TENANT_CONNECTION provider, however, will still be a singleton and will not affect the scope of whatever it is injected into. In the service, it can be injected using the provide token as usual: dogs.service.ts @Injectable() class DogsService { constructor( @Inject(TENANT_CONNECTION) private readonly connection: TenantConnection, ) {} getAll() { return this.connection.dogs.getAll(); } } "},{"title":"Caveats​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#caveats","content":""},{"title":"No primitive values​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#no-primitive-values","content":"Proxy Factory providers cannot return a primitive value. This is because the provider itself is the Proxy and it only delegates access once a property or a method is called on it (or if it itself is called in case the factory returns a function). "},{"title":"typeof Proxies is always function​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#typeof-proxies-is-always-function","content":"In order to support injecting proxies of functions, the underlying proxy target is an empty function, too. It must be this way in order to be able to implement the "apply" trap. As a result of this, calling typeof on an instance of a Proxy will always return function, regardless of the value it holds. This is fine for most applications, but must be taken into consideration in some cases - please see Issue #82 for more info and possible workarounds. "},{"title":"Delayed resolution of Proxy Providers​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#delayed-resolution-of-proxy-providers","content":"By default, proxy providers are resolved as soon as the setup function in an enhancer (middleware/guard/interceptor) finishes. For some use cases, it might be required that the resolution is delayed until some later point in the request lifecycle once more information is present in the CLS . To achieve that, set resolveProxyProviders to false in the enhancer options and call ClsService#resolveProxyProviders() manually at any time. ClsModule.forRoot({ middleware: { resolveProxyProviders: false, }, }); "},{"title":"Outside web request​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#outside-web-request","content":"This is also necessary outside the context of web request, otherwise all access to an injected Proxy Provider will return undefined. With cls.run()​ If you set up the context with cls.run() to wrap any subsequent code thar relies on Proxy Providers. cron.controller.ts @Injectable() export class CronController { constructor( private readonly someService: SomeService, private readonly cls: ClsService, ); @Cron('45 * * * * *') async handleCron() { await this.cls.run(async () => { // prepare the context this.cls.set('some-key', 'some-value'); // trigger Proxy Provider resolution await this.cls.resolveProxyProviders(); await this.someService.doTheThing(); }); } } With @UseCls()​ The resolveProxyProviders is set to false by default on the @UseCls decorator. To achieve the same behavior using it, you must set it to true. The Proxy Providers will be resolved after the setup phase. cron.controller.ts @Injectable() export class CronController { constructor(private readonly someService: SomeService); @Cron('45 * * * * *') @UseCls({ resolveProxyProviders: true, setup: (cls) => { this.cls.set('some-key', 'some-value'); }, }) async handleCron() { await this.someService.doTheThing(); } } "},{"title":"Using a Guard","type":0,"sectionRef":"#","url":"/nestjs-cls/setting-up-cls-context/using-a-guard","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy"},{"title":"Automatically​","type":1,"pageTitle":"Using a Guard","url":"/nestjs-cls/setting-up-cls-context/using-a-guard#automatically","content":"Use mount: true app.module.ts @Module({ imports: [ ClsModule.forRoot({ guard: { mount: true }, }), ], // ... }) export class AppModule {} "},{"title":"Manually​","type":1,"pageTitle":"Using a Guard","url":"/nestjs-cls/setting-up-cls-context/using-a-guard#manually","content":"If you need any other guards to use the ClsService, it's preferable to mount ClsGuard manually as the first guard in the root module: app.module.ts @Module({ imports: [ ClsModule.forRoot({ guard: { mount: false } }), ] providers: [ { provide: APP_GUARD, useClass: ClsGuard, }, ], // ... }) export class AppModule {} or mount it directly on the Controller/Resolver with @UseGuards(ClsGuard); caution Please note: since the ClsGuard uses the AsyncLocalStorage#enterWith method, using the ClsGuard comes with some security considerations! "}] \ No newline at end of file +{"searchDocs":[{"title":"API","type":0,"sectionRef":"#","url":"/nestjs-cls/api","content":"API This chapter describes the programmatic API of the ClsService and the ClsModule options.","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Service Interface","type":0,"sectionRef":"#","url":"/nestjs-cls/api/service-interface","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"ClsService​","type":1,"pageTitle":"Service Interface","url":"/nestjs-cls/api/service-interface#clsservice","content":" The injectable ClsService provides the following API to manipulate the cls context: The S type parameter is used as the type of custom ClsStore. get(): S Get the entire CLS context. get(key?: keyof S): S[key] Retrieve a value from the CLS context by key. getId(): string; Retrieve the request ID (a shorthand for cls.get(CLS_ID)) has(key: keyof S): boolean Check if a key is in the CLS context. set(key: keyof S, value: S[key]): void Set a value on the CLS context. setIfUndefined(key: keyof S, value: S[key]): void Set a value on the CLS context only if it hasn't been already set. Useful for ensuring idempotence if you have multiple entry points. run(callback: () => T): T run(options: ClsContextOptions, callback: () => T): T; Run the callback in a shared CLS context. Optionally takes an options object as the first parameter. runWith(store: S, callback: () => T): T Run the callback in a new CLS context (while supplying the default store). enter(): void; enter(options: ClsContextOptions): void Run any following code in a shared CLS context. Optionally takes an options object as the first parameter. enterWith(store: S): void Run any following code in a new CLS context (while supplying the default store). exit(callback: () => T): T Run the callback without access to a shared CLS context. isActive(): boolean Whether the current code runs within an active CLS context. resolveProxyProviders(): Promise<void> Manually trigger resolution of Proxy Providers. initializePlugins(): Promise<void> Manually trigger onClsInit hooks of registered plugins. ","version":"Next","tagName":"h2"},{"title":"ClsContextOptions​","type":1,"pageTitle":"Service Interface","url":"/nestjs-cls/api/service-interface#clscontextoptions","content":" The run and enter methods can take an additional options object with the following settings: ifNested?:'inherit' | 'reuse' | 'override' Sets the behavior of nested CLS context creation in case the method is invoked in an existing context. It has no effect if no parent context exist. inherit (default) - Run the callback with a shallow copy of the parent context. Re-assignments of top-level properties will not be reflected in the parent context. However, modifications of existing properties will be reflected.reuse - Reuse existing context without creating a new one. All modifications to the existing context will be reflected.override - Run the callback with an new empty context. No values from the parent context will be accessible within the wrapped code. ::: Note Until v4, the default behavior was override. This was changed to inherit since v4 to make the behavior more intuitive. ::: ","version":"Next","tagName":"h2"},{"title":"How it works","type":0,"sectionRef":"#","url":"/nestjs-cls/introduction/how-it-works","content":"How it works Continuation-local storage provides a common space for storing and retrieving data throughout the life of a function/callback call chain. In NestJS, this allows for sharing request data across the lifetime of a single request - without the need for request-scoped providers. It also makes it easy to track and log request ids throughout the whole application. To make CLS work, it is required to set up the CLS context first. This is done by calling cls.run() (or cls.enter(), see Security considerations for more info) somewhere in the app. Once that is set up, anything that is called within the same callback chain has access to the same storage with cls.set() and cls.get().","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Considerations","type":0,"sectionRef":"#","url":"/nestjs-cls/considerations","content":"Considerations This chapter exists to help you decide whether this library is compatible with your project and to address any concerns that you may have. You might be also interested in the Author's take","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Features and use cases","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases","content":"Features and use cases In addition to the basic functionality described in the Quick start chapter, this module provides several other features to make your life as a developer easier.","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Usage outside of web request","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases/usage-outside-of-web-request","content":"Usage outside of web request Sometimes, a part of the app that relies on the CLS storage might need to be called outside of the context of a web request - for example, in a Cron job, while consuming a Queue, during the application bootstrap or in CLI apps. In such cases, there are no enhancers that can be bound to the handler to set up the context. Therefore, you as the the developer are responsible for wrapping the execution with ClsService#run, or using the @UseCls decorator. In any case, if any following code depends on some context variables, these need to be set up manually. @Injectable() export class CronController { constructor( private readonly someService: SomeService, private readonly cls: ClsService, ); @Cron('45 * * * * *') async handleCronExample1() { // either explicitly wrap the function body with // a call to `ClsService#run` ... await this.cls.run(async () => { this.cls.set('mode', 'cron'); await this.someService.doTheThing(); }); } @Cron('90 * * * * *') // ... or use the convenience decorator which // does the wrapping for you seamlessly. @UseCls({ setup: (cls) => { cls.set('mode', 'cron'); }, }) async handleCronExample2() { await this.someService.doTheThing(); } } caution Special care must be taken in case you're using Proxy Providers.","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Module Options","type":0,"sectionRef":"#","url":"/nestjs-cls/api/module-options","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"forRoot(Async)​","type":1,"pageTitle":"Module Options","url":"/nestjs-cls/api/module-options#forrootasync","content":" The ClsModule.forRoot() method takes the following ClsModuleOptions: middleware?:ClsMiddlewareOptions An object with additional options for the ClsMiddleware, see below. guard?:ClsGuardOptions An object with additional options for the ClsGuard, see below. interceptor?:ClsInterceptorOptions An object with additional options for the ClsInterceptor, see below. global?:boolean** (default false) Whether to make the module global, so you do not have to import ClsModule.forFeature() in other modules. proxyProviders?:Type[] Array of Proxy Providers that should be registered in the root module. Currently only accepts sync class Proxy providers, use ClsModule.forFeatureAsync() for more complex use-cases. ClsModule.forRootAsync() is also available. You can supply the usual imports, inject and useFactory parameters as usual. info Please note: If you intend to use multiple enhancers at the same time (e.g. initialize the CLS context in a middleware and then set some additional CLS variables in an interceptor), be aware that the only the first one in the chain will set the Request ID. ","version":"Next","tagName":"h2"},{"title":"forFeature(Async)​","type":1,"pageTitle":"Module Options","url":"/nestjs-cls/api/module-options#forfeatureasync","content":" The ClsModule.forFeature() method can be used to register a Proxy Providers. The Sync method only accepts Class Proxy providers. The ClsModule.forFeatureAsync() method accepts either ClsModuleProxyClassProviderOptions or ClsModuleProxyFactoryProviderOptions that both accept these options: provide?:any Custom injection token to use for the provider. In case of a class provider, this parameter is optional, as the class reference passed to useClass will be used by default. imports?any[] Optional list of imported modules that export the providers which are required for the provider. extraProviders?:Provider[] Optional list of additional providers that should be available to the Proxy. Useful for passing configuration from a parent dynamic module. The ClsModuleProxyClassProviderOptions interface further accepts: useClass:Type The target class that will be used by this Proxy Provider. Make sure it is decorated with @InjectableProxy. The ClsModuleProxyFactoryProviderOptions interface further accepts: inject:any[] An array of injection tokens for providers used in the useFactory. useFactory:(...args: any[]) => any Factory function that accepts an array of providers in the order of the according tokens in the inject array. Returns (or resolves with) an object (or a function) that will be used by this Proxy Provider. type?:'function' | 'object' Whether the Proxy Provider should be a function or an object. Defaults to 'object'. See Caveats for more information. ","version":"Next","tagName":"h2"},{"title":"Middleware & Enhancer options​","type":1,"pageTitle":"Module Options","url":"/nestjs-cls/api/module-options#middleware--enhancer-options","content":" All of the Cls{Middleware,Guard,Interceptor}Options take the following parameters (either in ClsModuleOptions or directly when instantiating them manually): mount?:boolean (default false) Whether to automatically mount the middleware/guard/interceptor to every route (not applicable when instantiating them manually) generateId?:boolean (default false) Whether to automatically generate a request ID. It will be available under the CLS_ID key. idGenerator?:(req: Request) => string | Promise<string> idGenerator?:(ctx: ExecutionContext) => string | Promise<string> An optional function for generating the request ID. It takes the Request object (or the ExecutionContext in case of a Guard or Interceptor) as an argument and (synchronously or asynchronously) returns a string. The default implementation uses Math.random() to generate a string of 8 characters. setup?:(cls: ClsService, req: Request) => void | Promise<void>; setup?:(cls: ClsService, ctx: ExecutionContext) => void | Promise<void>; Function that executes after the CLS context had been initialised. It can be used to put additional variables in the CLS context. resolveProxyProviders?:boolean (default true) Whether to automatically resolve Proxy Providers in the enhancer (if any are registered). initializePlugins?:boolean (default true) Whether to run the onClsInit hook for plugins as a part of the CLS context registration (runs before resolveProxyProviders just after setup). The ClsMiddlewareOptions additionally takes the following parameters: saveReq?:boolean (default true) Whether to store the Request object to the context. It will be available under the CLS_REQ key. saveRes?:boolean (default false) Whether to store the Response object to the context. It will be available under the CLS_RES key useEnterWith?:boolean (default false) Set to true to set up the context using a call to AsyncLocalStorage#enterWith instead of wrapping the next() call with the safer AsyncLocalStorage#run. Most of the time this should not be necessary, but some frameworks are known to lose the context with run. ","version":"Next","tagName":"h2"},{"title":"Breaking out of DI","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases/breaking-out-of-di","content":"Breaking out of DI While this package aims to be compatible with NestJS's Dependency Injection, it is also possible to access the CLS context outside of it. For that, it provides the static ClsServiceManager class that exposes the getClsService() method which can be used to retrieve the context outside of Nest's injection context (e.g. in top-level functions) function helper() { const cls = ClsServiceManager.getClsService(); // you now have access to the shared storage console.log(cls.getId()); } caution Please note: Only use this feature where absolutely necessary. Using this technique instead of dependency injection will make it difficult to mock the ClsService and your code will become harder to test.","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Installation","type":0,"sectionRef":"#","url":"/nestjs-cls/introduction/installation","content":"Installation Install as any other NPM package using your favorite package manager. npmyarnpnpm npm install nestjs-cls info This module requires additional peer deps, like the @nestjs/core and @nestjs/common libraries, but it is assumed those are already installed.","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Additional CLS Setup","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases/additional-cls-setup","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Middleware​","type":1,"pageTitle":"Additional CLS Setup","url":"/nestjs-cls/features-and-use-cases/additional-cls-setup#middleware","content":" In case of middleware the Request and Response objects are passed as the second and third parameters. ClsModule.forRoot({ middleware: { mount: true, setup: (cls, req: Request, res: Response) => { cls.set('TENANT_ID', req.params('tenant_id')); cls.set('AUTH', { authenticated: false }); }, }, }); ","version":"Next","tagName":"h2"},{"title":"Enhancers​","type":1,"pageTitle":"Additional CLS Setup","url":"/nestjs-cls/features-and-use-cases/additional-cls-setup#enhancers","content":" In a guard or interceptor, the ExecutionContext object is passed as a second parameter. ClsModule.forRoot({ interceptor: { mount: true, setup: (cls, context) => { const req = context.switchToHttp().getRequest<Request>(); cls.set('TENANT_ID', req.params('tenant_id')); cls.set('AUTH', { authenticated: false }); }, }, }); ","version":"Next","tagName":"h2"},{"title":"v2.x → v3.x","type":0,"sectionRef":"#","url":"/nestjs-cls/migration-guide/v2x-v3x","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Root registration method renamed​","type":1,"pageTitle":"v2.x → v3.x","url":"/nestjs-cls/migration-guide/v2x-v3x#root-registration-method-renamed","content":" The root registration method was renamed from register (resp. registerAsync) to forRoot (resp. forRootAsync) to align with the convention. - ClsModule.register({ + ClsModule.forRoot({ middleware: { mount: true }, }), ","version":"Next","tagName":"h2"},{"title":"Namespace support dropped​","type":1,"pageTitle":"v2.x → v3.x","url":"/nestjs-cls/migration-guide/v2x-v3x#namespace-support-dropped","content":" Namespace injection support with forFeature was dropped entirely, and now that method is used to register Proxy Providers. If you still have a use case for namespaces, you can create a namespaced ClsService and use a custom provider to inject it. Example: class MyContextService extends ClsService<MyStore> {} const myContextService = new MyContextService(new AsyncLocalStorage()); // [...] providers: [ { provide: MyContextService, useValue: myContextService, }, ]; ","version":"Next","tagName":"h2"},{"title":"Request ID","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases/request-id","content":"Request ID Because of a shared storage, CLS is an ideal tool for tracking request (correlation) IDs for the purpose of logging. This package provides an option to automatically generate request IDs in the middleware/guard/interceptor, if you pass { generateId: true } to its options. By default, the generated ID is a string based on Math.random(), but you can provide a custom function in the idGenerator option. This function receives the Request (or ExecutionContext in case a ClsGuard is used) as the first parameter, which can be used in the generation process and should return (or resolve with) a string ID that will be stored in the CLS for later use. Below is an example of retrieving the request ID from the request header with a fallback to an autogenerated one. ClsModule.forRoot({ middleware: { mount: true, generateId: true, idGenerator: (req: Request) => req.headers['X-Request-Id'] ?? uuid(); } }) The ID is stored under the CLS_ID constant in the context. The ClsService provides a shorthand method getId to quickly retrieve it anywhere. It can be for example used in a custom logger: my.logger.ts @Injectable() class MyLogger { constructor(private readonly cls: ClsService) {} log(message: string) { console.log(`<${this.cls.getId()}> ${message}`); } } Calling this from anywhere within a CLS context results in retrieving the ID: my.service.ts @Injectable() class MyService { constructor(private readonly logger: MyLogger); hello() { this.logger.log('Hello'); // -> logs for ex.: "<44c2d8ff-49a6-4244-869f-75a2df11517a> Hello" } } ","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Available Plugins","type":0,"sectionRef":"#","url":"/nestjs-cls/plugins/available-plugins","content":"Available Plugins This section lists all plugins that are maintained by the author of nestjs-cls. They are all published under the @nestjs-cls scope and are kept up to date with any changes to the library. Transactional","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Creating a custom adapter","type":0,"sectionRef":"#","url":"/nestjs-cls/plugins/available-plugins/transactional/creating-custom-adapter","content":"Creating a custom adapter TODO: To be written.","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Compatibility","type":0,"sectionRef":"#","url":"/nestjs-cls/considerations/compatibility","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"REST​","type":1,"pageTitle":"Compatibility","url":"/nestjs-cls/considerations/compatibility#rest","content":" This package is compatible with Nest-supported REST controllers and the preferred way is to use the ClsMiddleware with the mount option set to true. Tested with: ✔ Express✔ Fastify Known issues: In case API versioning is used, the automatic mounting of the ClsMiddleware does not work and it needs to be mounted manually. See issue #67 for details.Some existing Express middlewares may cause context loss, if that happens, mount the ClsMiddleware manually after those offending ones (#50) ","version":"Next","tagName":"h2"},{"title":"GraphQL​","type":1,"pageTitle":"Compatibility","url":"/nestjs-cls/considerations/compatibility#graphql","content":" Using an interceptor or a guard may result in that enhancer triggering multiple times in case there are multiple queries in the GQL request. Due to this, you should ensure that any operation on the CLS store within enhancers is idempotent. This includes the setup function. Therefore, it is advised to use the ClsService#setIfUndefined() method. Tested with: ✔ Apollo (Express)✔ Mercurius (Fastify) ","version":"Next","tagName":"h2"},{"title":"@nestjs/graphql >= 10​","type":1,"pageTitle":"Compatibility","url":"/nestjs-cls/considerations/compatibility#nestjsgraphql--10","content":" Since v10, Nest's GraphQL resolvers are compatible with this package and the preferred way to initialize the CLS context is use the ClsMiddleware with the mount option. ","version":"Next","tagName":"h3"},{"title":"@nestjs/graphql < 10​","type":1,"pageTitle":"Compatibility","url":"/nestjs-cls/considerations/compatibility#nestjsgraphql--10-1","content":" For older versions of graphql, the ClsMiddleware needs to be mounted manually with app.use(...) in order to correctly set up the context for resolvers. Additionally, you have to pass useEnterWith: true to the ClsMiddleware options, because the context gets lost otherwise due to an issue with CLS and Apollo (sadly, the same is true for Mercurius). This method is functionally identical to just using the ClsGuard. Alternatively, you can use the ClsInterceptor, which uses the safer AsyncLocalStorage#run (thanks to andreialecu), but remember that using it makes CLS unavailable in Guards. ","version":"Next","tagName":"h3"},{"title":"Others​","type":1,"pageTitle":"Compatibility","url":"/nestjs-cls/considerations/compatibility#others","content":" Use the ClsGuard or ClsInterceptor to set up context with any other platform. There are no explicit test for other transports, so I can't guarantee it will work with your platform of choice, but there's nothing that would indicate otherwise. If you decide to try this package with a platform that is not listed here, please let me know so I can add the compatibility notice. Below are listed transports with which it is confirmed to work: ","version":"Next","tagName":"h2"},{"title":"Websockets​","type":1,"pageTitle":"Compatibility","url":"/nestjs-cls/considerations/compatibility#websockets","content":" Websocket Gateways don't respect globally bound enhancers, therefore it is required to bind the ClsGuard or ClsInterceptor manually on the WebsocketGateway. Special care is also needed for the handleConnection method (See #8) ","version":"Next","tagName":"h3"},{"title":"Migration guide","type":0,"sectionRef":"#","url":"/nestjs-cls/migration-guide","content":"Migration guide In case you're upgrading to a new major version of this library, follow the according migration guide.","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Security","type":0,"sectionRef":"#","url":"/nestjs-cls/considerations/security","content":"Security It is often discussed whether AsyncLocalStorage is safe to use for concurrent requests (because of a possible context leak) and whether the context could be lost throughout the duration of a request. The ClsMiddleware and ClsInterceptor by default uses the safe run() method, which it should not leak context, but in some rare cases, the context can be lost. The ClsGuard (and ClsMiddleware, if configured so) uses the less safe enterWith() method, which might be needed in case the run() method causes context loss. This has a consequence that should be taken into account: caution When the enterWith method is used, any consequent requests get access to the CLS context of the previous request until the request hits the enterWith call. That means, when using ClsMiddleware with the useEnterWith option, or ClsGuard to set up context, be sure to mount them as early in the request lifetime as possible and do not use any other enhancers that rely on ClsService before them. For ClsGuard, that means you should probably manually mount it in AppModule if you require any other guard to run after it. The next chapter addresses compatibility with various transport protocols.","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Setting up the CLS context","type":0,"sectionRef":"#","url":"/nestjs-cls/setting-up-cls-context","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Sync​","type":1,"pageTitle":"Setting up the CLS context","url":"/nestjs-cls/setting-up-cls-context#sync","content":" app.module.ts @Module({ imports: [ ClsModule.forRoot({ global: true, middleware: { mount: true, generateId: true, }, }), ], // ... }) export class AppModule {} ","version":"Next","tagName":"h2"},{"title":"Async​","type":1,"pageTitle":"Setting up the CLS context","url":"/nestjs-cls/setting-up-cls-context#async","content":" app.module.ts @Module({ imports: [ ClsModule.forRootAsync({ global: true, inject: [IdGeneratorService] useFactory: (idGeneratorService) => ({ middleware: { mount: true, generateId: true, idGenerator: (req) => idGeneratorService.generate(req) }, }) }), ], // ... }) export class AppModule {} ","version":"Next","tagName":"h2"},{"title":"Plugins","type":0,"sectionRef":"#","url":"/nestjs-cls/plugins","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Usage​","type":1,"pageTitle":"Plugins","url":"/nestjs-cls/plugins#usage","content":" To use a plugin, pass it to the forRoot method of the ClsModule: ClsModule.forRoot({ plugins: [new MyPlugin()], }); ","version":"Next","tagName":"h2"},{"title":"Available plugins​","type":1,"pageTitle":"Plugins","url":"/nestjs-cls/plugins#available-plugins","content":" For a list of plugins managed by the author of nestjs-cls, see the Available Plugins page. ","version":"Next","tagName":"h2"},{"title":"Creating a plugin​","type":1,"pageTitle":"Plugins","url":"/nestjs-cls/plugins#creating-a-plugin","content":" To create a custom plugin, see the Plugin API reference. ","version":"Next","tagName":"h2"},{"title":"Using a Middleware","type":0,"sectionRef":"#","url":"/nestjs-cls/setting-up-cls-context/using-a-middleware","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Automatically​","type":1,"pageTitle":"Using a Middleware","url":"/nestjs-cls/setting-up-cls-context/using-a-middleware#automatically","content":" app.module.ts @Module({ imports: [ ClsModule.forRoot({ global: true, middleware: { mount: true }, }), ], // ... }) export class AppModule {} ","version":"Next","tagName":"h2"},{"title":"Manually​","type":1,"pageTitle":"Using a Middleware","url":"/nestjs-cls/setting-up-cls-context/using-a-middleware#manually","content":" Sometimes, you might want to only use CLS on certain routes, or you need to have more control over the order of middleware registration in combination with other middlewares. ","version":"Next","tagName":"h2"},{"title":"In the module​","type":1,"pageTitle":"Using a Middleware","url":"/nestjs-cls/setting-up-cls-context/using-a-middleware#in-the-module","content":" In that case, omit the mount option or set it to false and bind the ClsMiddleware manually in the module: app.module.ts @Module({ imports: [ ClsModule.forRoot({ global: true, middleware: { mount: false }, }), ], // ... }) export class AppModule implements NestModule { configure(consumer: MiddlewareConsumer) { consumer.apply(ClsMiddleware).forRoutes('custom/route'); } } ","version":"Next","tagName":"h3"},{"title":"Using app.use​","type":1,"pageTitle":"Using a Middleware","url":"/nestjs-cls/setting-up-cls-context/using-a-middleware#using-appuse","content":" Sometimes, however, the previous method won't be enough, because the middleware could be mounted too late and you won't be able to use it in other middlewares that need to run prior to that - for example, the API versioning feature of NestJS apparently interferes with the order, see issue #67. In that case, you can mount it directly in the bootstrap method: main.ts function bootstrap() { const app = await NestFactory.create(AppModule); // create and mount the middleware manually here app.use( new ClsMiddleware({ /* ...settings */ }).use, ); await app.listen(3000); } caution Please note: If you bind the middleware using app.use(), it will not respect middleware settings passed to ClsModule.forRoot(), so you will have to provide them yourself in the constructor. ","version":"Next","tagName":"h3"},{"title":"Type safety and type inference","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Type-safe ClsService​","type":1,"pageTitle":"Type safety and type inference","url":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference#type-safe-clsservice","content":" It is possible to specify a custom interface for the ClsService and get proper typing and automatic type inference when retrieving or setting values. This works even for nested objects using a dot notation. To create a typed CLS Store, start by creating an interface that extends ClsStore. export interface MyClsStore extends ClsStore { tenantId: string; user: { id: number; authorized: boolean; }; } ","version":"Next","tagName":"h2"},{"title":"Using a type parameter​","type":1,"pageTitle":"Type safety and type inference","url":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference#using-a-type-parameter","content":" Then you can inject the ClsService with a type parameter ClsService<MyClsStore> to make use of the safe typing. export class MyService { constructor(private readonly cls: ClsService<MyClsStore>) {} doTheThing() { // a boolean type will be enforced here this.cls.set('user.authorized', true); // tenantId will be inferred as a string const tenantId = this.cls.get('tenantId'); // userId will be inferred as a number const userId = this.cls.get('user.id'); // user will be inferred as { id: number, authorized: boolean } const user = this.cls.get('user'); // you'll even get intellisense for the keys, because the type // will be inferred as: // symbol | 'tenantId˙ | 'user' | 'user.id' | 'user.authorized' // alternatively, since the `get` method returns the whole store // when called without arguments, you can use object destructuring const { tenantId, user } = this.cls.get(); // accessing a nonexistent property will result in a type error const notExist = this.cls.get('user.name'); } } ","version":"Next","tagName":"h3"},{"title":"Using Typescript module augmentation​","type":1,"pageTitle":"Type safety and type inference","url":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference#using-typescript-module-augmentation","content":" Alternatively, if you feel like using ClsService<MyClsStore> everywhere is tedious, you can instead globally augment the ClsStore interface. Now you don't need to specify the type parameter on ClsService to still get the string typing. declare module 'nestjs-cls' { interface ClsStore { tenantId: string; user: { id: number; authorized: boolean; }; } } ","version":"Next","tagName":"h3"},{"title":"Using a custom provider​","type":1,"pageTitle":"Type safety and type inference","url":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference#using-a-custom-provider","content":" For even more transparent approach without augmenting the declaration, you can create a typed ClsService by extending it and creating a custom provider out of it: export class MyClsService extends ClsService<MyClsStore> {} @Module({ imports: [ClsModule.forFeature()], providers: [ { provide: MyClsService, useExisting: ClsService, }, ], exports: [MyClsService], }) class MyClsModule {} Now you can inject MyClsService as an alias for ClsService<MyClsStore> without "polluting" the global type space. ","version":"Next","tagName":"h3"},{"title":"Terminal Type​","type":1,"pageTitle":"Type safety and type inference","url":"/nestjs-cls/features-and-use-cases/type-safety-and-type-inference#terminal-type","content":" It can happen, that the object you want to store in the context is too complex, or contains cyclic references. In that case, typescript might complain that type instantiation is too deep, possibly infinite. That is due to the fact that it tries to generate all possible paths inside the ClsStore. If that's the case, you can use the Terminal type to stop generating the paths for a certain subtree: interface ClsStore { tenantId: string; user: Terminal<{ id: number; authorized: boolean; }>; } This will only generate the paths tenantId | user and won't allow directly accessing nested keys (like cls.get('user.id'), but you'll still get fully typing for things like const { id } = cls.get('user')). See issue #22 for more details. ","version":"Next","tagName":"h2"},{"title":"NestJS CLS","type":0,"sectionRef":"#","url":"/nestjs-cls/","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Use cases​","type":1,"pageTitle":"NestJS CLS","url":"/nestjs-cls/#use-cases","content":" Some common use cases that this library enables include: Tracking the Request ID and other metadata for logging purposesKeeping track of the user throughout the whole requestMaking the dynamic Tenant database connection available everywhere in multi-tenant appsPropagating the authentication level or role to restrict access to resourcesSeamlessly propagating database transaction across services without breaking encapsulation and isolation by explicitly passing it around (Now available with the Transactional plugin)Using "request" context in cases where actual REQUEST-scoped providers are not supported (passport strategies, cron controllers, websocket gateways, ...) Most of these are to some extent solvable using REQUEST-scoped providers or passing the context as a parameter, but these solutions are often clunky and come with a whole lot of other issues. info * The name comes from the original implementation based on cls-hooked, which was since replaced by the native AsyncLocalStorage. ","version":"Next","tagName":"h2"},{"title":"Motivation​","type":1,"pageTitle":"NestJS CLS","url":"/nestjs-cls/#motivation","content":" NestJS is an amazing framework, but in the plethora of awesome built-in features, I still missed one. I created this library to solve a specific use case, which was limiting access to only those records which had the same TenantId as the request's user in a central manner. The repository code automatically added a WHERE clause to each query, which made sure that other developers couldn't accidentally mix tenant data (all tenants' data were held in the same database) without extra effort. AsyncLocalStorage is still fairly new and not many people know of its existence and benefits. Here's a nice talk from NodeConf about the history. I've invested a great deal of my personal time in making the use of it as pleasant as possible. While the use of async_hooks is sometimes criticized for making Node run slower, in my experience, the introduced overhead is negligible compared to any IO operation (like a DB or external API call). If you want fast, use a compiled language. Also, if you use some tracing library (like otel), it most likely already uses async_hooks under the hood, so you might as well use it to your advantage. ","version":"Next","tagName":"h2"},{"title":"Highlights​","type":1,"pageTitle":"NestJS CLS","url":"/nestjs-cls/#highlights","content":" New Version 4.0 brings support for Plugins which enable pre-built integrations with other libraries and frameworks. (See Migration guide for breaking changes). Version 3.0 introduces Proxy Providers as an alternative to the imperative API. (Minor breaking changes were introduced, see Migration guide). Version 2.0 brings advanced type safety and type inference. However, it requires features from typescript >= 4.4 - Namely allowing symbol members in interfaces. If you can't upgrade but still want to use this library, install version 1.6.2, which lacks the typing features. ","version":"Next","tagName":"h2"},{"title":"v3.x → v4.x","type":0,"sectionRef":"#","url":"/nestjs-cls/migration-guide/v3x-v4x","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Changed base type of Proxy Providers​","type":1,"pageTitle":"v3.x → v4.x","url":"/nestjs-cls/migration-guide/v3x-v4x#changed-base-type-of-proxy-providers","content":" The default underlying value of Proxy Providers was changed to {}. This means that the typeof operator will now return 'object', which is more intuitive. (Link to original discussion) The use-case of using a Proxy Provider as a function is still supported, but now requires the type option to be set to 'function'. ClsModule.forFeature({ provide: 'class-proxy', useClass: SomeClass, }); ClsModule.forFeature({ provide: 'function-proxy', useFactory: () => someFunction, type: 'function', }); @Injectable() class SomeService { constructor( @Inject('class-proxy') private readonly someClass: SomeClass, @Inject('function-proxy') private readonly functionProvider: () => void, ) { console.log(typeof this.someClass); // 'object' console.log(typeof this.functionProvider); // 'function' } } ","version":"Next","tagName":"h2"},{"title":"Changed default of ifNested option​","type":1,"pageTitle":"v3.x → v4.x","url":"/nestjs-cls/migration-guide/v3x-v4x#changed-default-of-ifnested-option","content":" The default of the ifNested option was changed from override to inherit, which more closely aligns with most real-world use-cases. If you used the ClsService#run method without explicitly setting the ifNested option, you should check if the new default behavior is compatible with your use-case and adjust accordingly. this.cls.run( { ifNested: 'override' }, () => { // ... rest of the code }, ); ","version":"Next","tagName":"h2"},{"title":"Changed default of resolveProxyProviders in UseCls decorator​","type":1,"pageTitle":"v3.x → v4.x","url":"/nestjs-cls/migration-guide/v3x-v4x#changed-default-of-resolveproxyproviders-in-usecls-decorator","content":" This value was undocumented in v3, but the default was false. It was changed to true in v4 to align with the default behavior of other enhancers. This change should not affect most use-cases, because you either don't use Proxy Providers at all, or you use them and therefore had to set it to true anyway. The only case where this might be a breaking change is if you used the @UseCls in a module where you explicitly did not want to resolve Proxy Providers and therefore did not import their dependencies. In that case, you should set the resolveProxyProviders option to false in the decorator. ","version":"Next","tagName":"h2"},{"title":"Prisma adapter","type":0,"sectionRef":"#","url":"/nestjs-cls/plugins/available-plugins/transactional/prisma-adapter","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Installation​","type":1,"pageTitle":"Prisma adapter","url":"/nestjs-cls/plugins/available-plugins/transactional/prisma-adapter#installation","content":" npmyarnpnpm npm install @nestjs-cls/transactional-adapter-prisma ","version":"Next","tagName":"h2"},{"title":"Registration​","type":1,"pageTitle":"Prisma adapter","url":"/nestjs-cls/plugins/available-plugins/transactional/prisma-adapter#registration","content":" ClsModule.forRoot({ plugins: [ new ClsPluginTransactional({ imports: [ // module in which the PrismaClient is provided PrismaModule ], adapter: new TransactionalAdapterPrisma({ // the injection token of the PrismaClient prismaInjectionToken: PrismaService, }), }), ], }), ","version":"Next","tagName":"h2"},{"title":"Typing & usage​","type":1,"pageTitle":"Prisma adapter","url":"/nestjs-cls/plugins/available-plugins/transactional/prisma-adapter#typing--usage","content":" The tx property on the TransactionHost<TransactionalAdapterPrisma> refers to the transactional PrismaClient instance when used in a transactional context. It is the instance that is passed to the prisma.$transaction(( tx ) => { ... }) callback. Outside of a transactional context, it refers to the regular PrismaClient instance (but is typed as the transactional one). ","version":"Next","tagName":"h2"},{"title":"Example​","type":1,"pageTitle":"Prisma adapter","url":"/nestjs-cls/plugins/available-plugins/transactional/prisma-adapter#example","content":" user.service.ts @Injectable() class UserService { constructor(private readonly userRepository: UserRepository) {} @Transactional() async runTransaction() { // both methods are executed in the same transaction const user = await this.userRepository.createUser('John'); const foundUser = await this.userRepository.getUserById(r1.id); assert(foundUser.id === user.id); } } user.repository.ts @Injectable() class UserRepository { constructor( private readonly txHost: TransactionHost<TransactionalAdapterPrisma>, ) {} async getUserById(id: number) { // txHost.tx is typed as the transactional PrismaClient return this.txHost.tx.user.findUnique({ where: { id } }); } async createUser(name: string) { return this.txHost.tx.user.create({ data: { name: name, email: `${name}@email.com` }, }); } } ","version":"Next","tagName":"h2"},{"title":"Caveats​","type":1,"pageTitle":"Prisma adapter","url":"/nestjs-cls/plugins/available-plugins/transactional/prisma-adapter#caveats","content":" Since Prisma generates its own client to node_modules, this plugin works with the assumption that the types for the client are available as @prisma/client. If you have a different setup, you might need to use declare module '@prisma/client' to make typescript happy. ","version":"Next","tagName":"h2"},{"title":"Using the ClsService Instance","type":0,"sectionRef":"#","url":"/nestjs-cls/setting-up-cls-context/using_cls_run","content":"Using the ClsService Instance All other methods of setting up the CLS context ultimately use the ClsService#run or ClsService#enter methods. If all other attempts fail or you want to have a more fine-grained control over the CLS context, you can use ClsService instance to wrap any piece of code in a CLS context. An example is available in the Usage outside of web request section.","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Using a Decorator","type":0,"sectionRef":"#","url":"/nestjs-cls/setting-up-cls-context/using-a-decorator","content":"Using a Decorator The @UseCls() decorator can be used at a method level to declaratively wrap the method with a cls.run() call. This method should only be used outside of the context of a web request. info Please keep in mind, that since the CLS context initialization can be async, the @UseCls() decorator can only be used on async function (those that return a Promise). Since there is no request, the setup function will not receive a Request object. Instead, it will receive the this context of the class instance (this also applies to the idGenerator), the ClsService reference and all the arguments passed to the decorated method. @Injectable() class SomeService { constructor( private readonly cls: ClsService, private readonly otherService: OtherService, ) {} @UseCls<[string]>({ generateId: true, idGenerator: function (this: SomeService) { return this.generateId(); }, setup: function (this: SomeService, cls: ClsService, value: string) { cls.set('some-key', 'some-value'); }, }) async startContextualWorkflow(value: string) { return this.otherService.doSomething(value); } private generateId() { return Math.random(); } } warning It is important to define the setup and idGenerator functions as functions, not arrow functions, so that the this context is properly bound.","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Plugin API","type":0,"sectionRef":"#","url":"/nestjs-cls/plugins/plugin-api","content":"Plugin API warning The Plugin API is still experimental and might change in the future, you should not rely on it in production. Using any of the "official" plugins is safe since they are maintained by the same author. If you want to create your own plugin, you should be aware that the API might change between minor versions. A plugin is, in its core, a NestJS module with some extra options and should implement the following interface: export interface ClsPlugin { /** * The name of the plugin, used for logging and debugging */ name: string; /** * Function that is called within a Cls initializer (middleware, interceptor, guard, etc.) */ onClsInit?: (cls: ClsService) => void | Promise<void>; /** * A lifecycle method called when the `ClsModule` is initialized */ onModuleInit?: () => void | Promise<void>; /** * A lifecycle method called when the `ClsModule` is destroyed (only when shutdown hooks are enabled) */ onModuleDestroy?: () => void | Promise<void>; /** * An array of external modules that should be imported for the plugin to work. */ imports?: any[]; /** * An array of providers that the plugin provides. */ providers?: Provider[]; /** * An array of providers that the plugin provides that should be exported. */ exports?: any[]; } The plugin options are then mixed into a global ClsPluginModule and the exposed providers can be used for injection by other plugin-related code.","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Quick Start","type":0,"sectionRef":"#","url":"/nestjs-cls/introduction/quick-start","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Background​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#background","content":" This library exposes a dynamic ClsModule which exposes the injectable ClsService and provides means to setting up and interacting with the CLS context. The CLS context is a storage that wraps around a chain of function calls. It can be accessed anywhere during the lifecycle of such chain via the ClsService. ","version":"Next","tagName":"h2"},{"title":"Example​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#example","content":" Below is an example of using this library to store the client's IP address in an interceptor and retrieving it in a service without explicitly passing it along. note This example assumes you are using HTTP and therefore can use middleware. For usage with non-HTTP transports, see Setting up CLS context. ","version":"Next","tagName":"h2"},{"title":"Register the ClsModule​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#register-the-clsmodule","content":" Register the ClsModule and automatically mount the ClsMiddleware which wraps the entire request in a shared CLS context on all routes. app.module.ts @Module({ imports: [ ClsModule.forRoot({ global: true, middleware: { mount: true }, }), ], providers: [AppService], controllers: [AppController], }) export class AppModule {} ","version":"Next","tagName":"h3"},{"title":"Create IP-address interceptor​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#create-ip-address-interceptor","content":" Create an interceptor that injects the ClsService to get access to the current shared CLS context,extract the users's IP address from the request and stores it into the CLS context, user-ip.interceptor.ts @Injectable() export class UserIpInterceptor implements NestInterceptor { constructor(private readonly cls: ClsService) {} intercept(context: ExecutionContext, next: CallHandler): Observable<any> { const request = context.switchToHttp().getRequest(); const userIp = request.connection.remoteAddress; this.cls.set('ip', userIp); return next.handle(); } } ","version":"Next","tagName":"h3"},{"title":"Mount interceptor to controller​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#mount-interceptor-to-controller","content":" By mounting the UserIpInterceptor on the controller, it gets access to the same shared CLS context that the ClsMiddleware set up. Of course, we could also bind the interceptor globally with APP_INTERCEPTOR. app.controller.ts @UseInterceptors(UserIpInterceptor) @Injectable() export class AppController { constructor(private readonly appService: AppService) {} @Get('/hello') hello() { return this.appService.sayHello(); } } ","version":"Next","tagName":"h3"},{"title":"Access CLS context in service​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#access-cls-context-in-service","content":" In the AppService, we can retrieve the user's IP from the CLS context without explicitly passing in anything, and without making the AppService request-scoped! app.service.ts @Injectable() export class AppService { constructor(private readonly cls: ClsService) {} sayHello() { const userIp = this.cls.get('ip'); return 'Hello ' + userIp + '!'; } } ","version":"Next","tagName":"h3"},{"title":"That's it​","type":1,"pageTitle":"Quick Start","url":"/nestjs-cls/introduction/quick-start#thats-it","content":" This is pretty much all there is to it. This library further provides more quality-of-life features, so read on! info If your use-case is really simple, you can instead consider creating a custom implementation with AsyncLocalStorage. Limiting the number of dependencies in your application is always a good idea! ","version":"Next","tagName":"h3"},{"title":"Proxy Providers","type":0,"sectionRef":"#","url":"/nestjs-cls/features-and-use-cases/proxy-providers","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Class Proxy Providers​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#class-proxy-providers","content":" These providers look like your regular class providers, with the exception that is the @InjectableProxy() decorator to make them easily distinguishable. @InjectableProxy() export class User { id: number; role: string; } To register the proxy provider, use the ClsModule.forFeature() registration, which exposes it an injectable provider in the parent module. ClsModule.forFeature(User); It can be then injected using the class name. However, what will be actually injected is not the instance of the class, but rather the Proxy which redirects all access to an unique instance stored in the CLS context. ","version":"Next","tagName":"h2"},{"title":"Populate in an enhancer​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#populate-in-an-enhancer","content":" A Class provider defined in this way will be empty upon creation, so we must assign context values to it somewhere. One place to do it is an interceptor @Injectable() export class UserInterceptor implements NestInterceptor { // we can inject the proxy here constructor(private readonly user: User) {} intercept(context: ExecutionContext, next: CallHandler): Observable<any> { const request = context.switchToHttp().getRequest(); // and assign or change values as it was a normal object this.user.id = request.user.id; this.user.role = 'admin'; return next.handle(); } } ","version":"Next","tagName":"h3"},{"title":"Self-populating Proxy Provider​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#self-populating-proxy-provider","content":" It is also possible to inject other providers into the Proxy Provider to avoid having to do this in a separate component. For the convenience, the CLS_REQ and CLS_RES are also made into Proxy Providers and are exported from the ClsModule. @InjectableProxy() export class UserWithRole { id: number; role: string; constructor( @Inject(CLS_REQ) request: Request, roleService: RoleService, ) { this.id = request.user.id; this.role = roleService.getForId(request.user.id); } } If you need to inject a provider from an external module, use the ClsModule.forFeatureAsync() registration to import the containing module. ClsModule.forFeatureAsync({ // make RoleService available to the Proxy provider import: [RoleModule], useClass: UserWithRole, }); tip Using @Inject(CLS_REQ), you can entirely replace @Inject(REQUEST) in REQUEST-SCOPED providers to turn them into CLS-enabled singletons without changing the implementation. ","version":"Next","tagName":"h3"},{"title":"Factory Proxy Providers​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#factory-proxy-providers","content":" Like your normal factory providers, Proxy factory providers look familiar. They can be only registered using the ClsModule.forFeatureAsync() method. Here's an example of a hypothetical factory provider that dynamically resolves to a specific tenant database connection: ClsModule.forFeatureAsync({ provide: TENANT_CONNECTION, import: [DatabaseConnectionModule], inject: [CLS_REQ, DatabaseConnectionService], useFactory: async (req: Request, dbService: DatabaseConnectionService) => { const tenantId = req.params['tenantId']; const connection = await dbService.getTenantConnection(tenantId); return connection; }, global: true, // make the TENANT_CONNECTION available for injection globally }); Again, the factory will be called on each request and the result will be stored in the CLS context. The TENANT_CONNECTION provider, however, will still be a singleton and will not affect the scope of whatever it is injected into. In the service, it can be injected using the provide token as usual: @Injectable() class DogsService { constructor( @Inject(TENANT_CONNECTION) private readonly connection: TenantConnection, ) {} getAll() { return this.connection.dogs.getAll(); } } ","version":"Next","tagName":"h2"},{"title":"Caveats​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#caveats","content":" ","version":"Next","tagName":"h2"},{"title":"No primitive values​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#no-primitive-values","content":" Proxy Factory providers cannot return a primitive value. This is because the provider itself is the Proxy and it only delegates access once a property or a method is called on it (or if it itself is called in case the factory returns a function). ","version":"Next","tagName":"h3"},{"title":"function Proxies must be explicitly enabled​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#function-proxies-must-be-explicitly-enabled","content":" In order to support injecting proxies of functions, the underlying proxy target must be a function, too, in order to be able to implement the "apply" trap. However, this information cannot be extracted from the factory function itself, so if your factory returns a function, you must explicitly set the type property to function in the provider definition. { provide: SOME_FUNCTION, useFactory: () => { return () => { // do something }; }, type: 'function', } note In versions prior to v4.0, calling typeof on an instance of a Proxy provider always returned function, regardless of the value it holds. This is no longer the case. Please see Issue #82 ","version":"Next","tagName":"h3"},{"title":"Delayed resolution of Proxy Providers​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#delayed-resolution-of-proxy-providers","content":" By default, proxy providers are resolved as soon as the setup function in an enhancer (middleware/guard/interceptor) finishes. For some use cases, it might be required that the resolution is delayed until some later point in the request lifecycle once more information is present in the CLS . To achieve that, set resolveProxyProviders to false in the enhancer options and call ClsService#resolveProxyProviders() manually at any time. ClsModule.forRoot({ middleware: { resolveProxyProviders: false, }, }); ","version":"Next","tagName":"h2"},{"title":"Outside web request​","type":1,"pageTitle":"Proxy Providers","url":"/nestjs-cls/features-and-use-cases/proxy-providers#outside-web-request","content":" This is also necessary outside the context of web request, otherwise all access to an injected Proxy Provider will return undefined. With cls.run()​ If you set up the context with cls.run() to wrap any subsequent code thar relies on Proxy Providers. @Injectable() export class CronController { constructor( private readonly someService: SomeService, private readonly cls: ClsService, ); @Cron('45 * * * * *') async handleCron() { await this.cls.run(async () => { // prepare the context this.cls.set('some-key', 'some-value'); // trigger Proxy Provider resolution await this.cls.resolveProxyProviders(); await this.someService.doTheThing(); }); } } With @UseCls()​ Since the @UseCls() decorator wraps the function body with cls.run() automatically, you can use the setup function to prepare the context. The Proxy Providers will be resolved after the setup phase. @Injectable() export class CronController { constructor(private readonly someService: SomeService); @Cron('45 * * * * *') @UseCls({ setup: (cls) => { cls.set('some-key', 'some-value'); }, }) async handleCron() { await this.someService.doTheThing(); } } ","version":"Next","tagName":"h3"},{"title":"Using an Interceptor","type":0,"sectionRef":"#","url":"/nestjs-cls/setting-up-cls-context/using-an-interceptor","content":"Using an Interceptor Another place to initiate the CLS context is an ClsInterceptor, which, unlike the ClsGuard uses AsyncLocalStorage#run method to wrap the following code, which is considered safer than enterWith. To use it, pass its configuration to the interceptor property to the ClsModule.forRoot() options: Automatically app.module.ts @Module({ imports: [ ClsModule.forRoot({ interceptor: { mount: true }, }), ], // ... }) export class AppModule {} Manually Or mount it manually as APP_INTERCEPTOR app.module.ts @Module({ imports: [ ClsModule.forRoot({ interceptor: { mount: false } }), ] providers: [ { provide: APP_INTERCEPTOR, useClass: ClsGuard, }, ], // ... }) export class AppModule {} or directly on the Controller/Resolver with: @UseInterceptors(ClsInterceptor); note Please note: Since Nest's Interceptors run after Guards, that means using this method makes CLS unavailable in Guards (and in case of REST Controllers, also in Exception Filters).","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Using a Guard","type":0,"sectionRef":"#","url":"/nestjs-cls/setting-up-cls-context/using-a-guard","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Automatically​","type":1,"pageTitle":"Using a Guard","url":"/nestjs-cls/setting-up-cls-context/using-a-guard#automatically","content":" Use mount: true app.module.ts @Module({ imports: [ ClsModule.forRoot({ guard: { mount: true }, }), ], // ... }) export class AppModule {} ","version":"Next","tagName":"h2"},{"title":"Manually​","type":1,"pageTitle":"Using a Guard","url":"/nestjs-cls/setting-up-cls-context/using-a-guard#manually","content":" If you need any other guards to use the ClsService, it's preferable to mount ClsGuard manually as the first guard in the root module: app.module.ts @Module({ imports: [ ClsModule.forRoot({ guard: { mount: false } }), ] providers: [ { provide: APP_GUARD, useClass: ClsGuard, }, ], // ... }) export class AppModule {} or mount it directly on the Controller/Resolver with @UseGuards(ClsGuard); caution Please note: since the ClsGuard uses the AsyncLocalStorage#enterWith method, using the ClsGuard comes with some security considerations! ","version":"Next","tagName":"h2"},{"title":"@nestjs-cls/transactional","type":0,"sectionRef":"#","url":"/nestjs-cls/plugins/available-plugins/transactional","content":"","keywords":"async context request scope cls asynclocalstorage nestjs proxy","version":"Next"},{"title":"Installation​","type":1,"pageTitle":"@nestjs-cls/transactional","url":"/nestjs-cls/plugins/available-plugins/transactional#installation","content":" npmyarnpnpm npm install @nestjs-cls/transactional The plugin works in conjunction with various adapters that provide the actual transactional logic and types for the underlying database library, so you'll need to install one of those as well. Adapters for the following libraries are available: Prisma (see prisma-adapter) Adapters will not be implemented for the following libraries: TypeORM (since a more fully-featured community package already exists)Sequelize (since it already includes a built-in CLS-enabled transaction support) ","version":"Next","tagName":"h2"},{"title":"Example​","type":1,"pageTitle":"@nestjs-cls/transactional","url":"/nestjs-cls/plugins/available-plugins/transactional#example","content":" For this example, we'll use the prisma library and the @nestjs-cls/transactional-adapter-prisma adapter. Later, you'll learn how to create your own adapter. Suppose we already have a PrismaModule which provides a PrismaClient instance and two other services UserService and AccountService which we'd like to make transactional. ","version":"Next","tagName":"h2"},{"title":"Plugin registration​","type":1,"pageTitle":"@nestjs-cls/transactional","url":"/nestjs-cls/plugins/available-plugins/transactional#plugin-registration","content":" To add register the transactional plugin with nestjs-cls, we need to pass it to the forRoot method of the ClsModule: app.module.ts import { ClsModule } from 'nestjs-cls'; import { ClsPluginTransactional } from '@nestjs-cls/transactional'; import { TransactionalAdapterPrisma } from '@nestjs-cls/transactional-adapter-prisma'; // ... other imports @Module({ imports: [ PrismaModule, ClsModule.forRoot({ plugins: [ new ClsPluginTransactional({ // if PrismaModule is not global, we need to make it available to the plugin imports: [PrismaModule], adapter: new TransactionalAdapterPrisma({ // each adapter has its own options, see the adapter docs for more info prismaInjectionToken: PrismaClient, }), }), ], }), ], providers: [UserService, AccountService], }) export class AppModule {} This registers a TransactionHost provider in the global context which can be used to start a new transaction and retrieve the current transaction reference. ","version":"Next","tagName":"h3"},{"title":"Using the TransactionHost​","type":1,"pageTitle":"@nestjs-cls/transactional","url":"/nestjs-cls/plugins/available-plugins/transactional#using-the-transactionhost","content":" Now that we have the plugin registered, we can use the TransactionHost to start a new transaction and retrieve the current transaction reference. Suppose that any time we create an User, we want to create an Account for them as well and both operations must either succeed or fail. We can use the TransactionHost to start a new transaction and retrieve the current transaction reference. The type argument on the TransactionHost<Adapter> makes sure that the tx property is typed correctly and the withTransaction method returns the correct type. This is ensured by the implementation of the adapter: user.service.ts @Injectable() class UserService { constructor( private readonly txHost: TransactionHost<TransactionalAdapterPrisma>, private readonly accountService: AccountService, ) {} async createUser(name: string): Promise<User> { return this.txHost.withTransaction(async () => { const user = await this.txHost.tx.user.create({ data: { name } }); await this.accountService.createAccountForUser(user.id); return user; }); } } user.service.ts @Injectable() class AccountService { constructor( private readonly txHost: TransactionHost<TransactionalAdapterPrisma>, ) {} async createAccountForUser(id: number): Promise<Account> { return this.txHost.tx.user.create({ data: { userId: id, number: Math.random() }, }); } } note Notice that we never used either raw PrismaClient or the prisma.$transaction directly. This is because the adapter takes care of that for us, otherwise the transaction would not be propagated in the CLS context. ","version":"Next","tagName":"h3"},{"title":"Using the Transactional decorator​","type":1,"pageTitle":"@nestjs-cls/transactional","url":"/nestjs-cls/plugins/available-plugins/transactional#using-the-transactional-decorator","content":" The @Transactional decorator can be used to wrap a method call in the withTransaction call implicitly. This saves a lot of boilerplate code and makes the code more readable. Using the decorator, we can change the createUser method like so without changing the behavior: user.service.ts @Injectable() class UserService { constructor( private readonly txHost: TransactionHost<TransactionalAdapterPrisma>, private readonly accountService: AccountService, ) {} @Transactional() async createUser(name: string): Promise<User> { const user = await this.txHost.tx.user.create({ data: { name } }); await this.accountService.createAccountForUser(user.id); return user; } } ","version":"Next","tagName":"h3"},{"title":"Passing transaction options​","type":1,"pageTitle":"@nestjs-cls/transactional","url":"/nestjs-cls/plugins/available-plugins/transactional#passing-transaction-options","content":" The both the withTransaction method and the Transactional decorator accepts an optional TransactionOptions object as the first argument. This object can be used to configure the transaction, for example to set the isolation level or the timeout. The type is also provided by the adapter. @Transactional<TransactionalAdapterPrisma>({ isolationLevel: 'Serializable' }) async createUser(name: string): Promise<User> { const user = await this.txHost.tx.user.create({ data: { name } }); await this.accountService.createAccountForUser(user.id); return user; } async createUser(name: string): Promise<User> { return this.txHost.withTransaction({ isolationLevel: 'Serializable' }, async () => { const user = await this.txHost.tx.user.create({ data: { name } }); await this.accountService.createAccountForUser(user.id); return user; }); } ","version":"Next","tagName":"h3"},{"title":"ClsPluginTransactional Interface​","type":1,"pageTitle":"@nestjs-cls/transactional","url":"/nestjs-cls/plugins/available-plugins/transactional#clsplugintransactional-interface","content":" The ClsPluginTransactional constructor takes an options object with the following properties: imports: any[] An array of NestJS modules that should be imported for the plugin to work. If the dependencies are available in the global context, this is not necessary. adapter: TransactionalAdapter An instance of the adapter that should be used for the plugin. ","version":"Next","tagName":"h2"},{"title":"TransactionHost Interface​","type":1,"pageTitle":"@nestjs-cls/transactional","url":"/nestjs-cls/plugins/available-plugins/transactional#transactionhost-interface","content":" The TransactionHost interface is the main working interface of the plugin. It provides the following API: tx: Transaction Reference to the currently active transaction. Depending on the adapter implementation for the underlying database library, this can be either a transaction client instance, a transaction object or a transaction ID. If no transaction is active, refers to the default non-transactional client instance (or undefined transaction ID). withTransaction(callback): Promise withTransaction(options, callback): Promise Runs the callback in a transaction. Optionally takes a TransactionOptions object as the first parameter. withOutTransaction(callback): Promise Runs the callback without a transaction (even if one is active in the parent scope). isTransactionActive(): boolean Returns whether a CLS-managed transaction is active in the current scope. ","version":"Next","tagName":"h2"},{"title":"Considerations​","type":1,"pageTitle":"@nestjs-cls/transactional","url":"/nestjs-cls/plugins/available-plugins/transactional#considerations","content":" Please note that at this time, the @nestjs-cls/transactional plugin only supports a single database connection per application. This means that if you have multiple databases, you can only use one of them with the transactional plugin. This is a subject to change in the future, as there are plans to support multiple TransactionHost instances, each with their own adapter and a database connection. ","version":"Next","tagName":"h2"}],"options":{"indexBaseUrl":true,"id":"default"}} \ No newline at end of file diff --git a/setting-up-cls-context.html b/setting-up-cls-context.html old mode 100755 new mode 100644 index 53c4642..dcccb91 --- a/setting-up-cls-context.html +++ b/setting-up-cls-context.html @@ -1,16 +1,20 @@ - + - -Setting up the CLS context | NestJS CLS - - + +Setting up the CLS context | NestJS CLS + + -
-
Skip to main content

Setting up the CLS context

This package provides three methods of setting up the CLS context for incoming requests. This is mainly due to the fact that different underlying platforms are compatible with only some of these methods - see Compatibility considerations.

For HTTP transports, the context can be preferably set up in a ClsMiddleware. For all other platforms, or cases where the ClsMiddleware is not applicable, this package also provides a ClsGuard and ClsInterceptor. While both of these also work with HTTP, they come with some caveats, see below.

The ClsModule provides both forRoot and forRootAsync methods to configure these.

Sync

app.module.ts
@Module({
imports: [
ClsModule.forRoot({
global: true,
middleware: {
mount: true,
generateId: true,
},
}),
],
// ...
})
export class AppModule {}

Async

app.module.ts
@Module({
imports: [
ClsModule.forRootAsync({
global: true,
inject: [IdGeneratorService]
useFactory: (idGeneratorService) => ({
middleware: {
mount: true,
generateId: true,
idGenerator: (req) => idGeneratorService.generate(req)
},
})
}),
],
// ...
})
export class AppModule {}
- - +
Skip to main content

Setting up the CLS context

+

This package provides multiple methods of setting up the CLS context for incoming requests. This is mainly due to the fact that different underlying platforms are compatible with only some of these methods - see Compatibility considerations.

+

For HTTP transports, the context can be preferably set up in a ClsMiddleware. For all other platforms, or cases where the ClsMiddleware is not applicable, this package also provides a ClsGuard and ClsInterceptor. While both of these also work with HTTP, they come with some caveats, see below.

+

The ClsModule provides both forRoot and forRootAsync methods to configure these.

+

Sync

+
app.module.ts
@Module({
imports: [
ClsModule.forRoot({
global: true,
middleware: {
mount: true,
generateId: true,
},
}),
],
// ...
})
export class AppModule {}
+

Async

+
app.module.ts
@Module({
imports: [
ClsModule.forRootAsync({
global: true,
inject: [IdGeneratorService]
useFactory: (idGeneratorService) => ({
middleware: {
mount: true,
generateId: true,
idGenerator: (req) => idGeneratorService.generate(req)
},
})
}),
],
// ...
})
export class AppModule {}
\ No newline at end of file diff --git a/setting-up-cls-context/using-a-decorator.html b/setting-up-cls-context/using-a-decorator.html new file mode 100644 index 0000000..610b5b7 --- /dev/null +++ b/setting-up-cls-context/using-a-decorator.html @@ -0,0 +1,18 @@ + + + + + +Using a Decorator | NestJS CLS + + + + +
Skip to main content

Using a Decorator

+

The @UseCls() decorator can be used at a method level to declaratively wrap the method with a cls.run() call. This method should only be used outside of the context of a web request.

+
info

Please keep in mind, that since the CLS context initialization can be async, the @UseCls() decorator can only be used on async function (those that return a Promise).

+

Since there is no request, the setup function will not receive a Request object. Instead, it will receive the this context of the class instance (this also applies to the idGenerator), the ClsService reference and all the arguments passed to the decorated method.

+
@Injectable()
class SomeService {
constructor(
private readonly cls: ClsService,
private readonly otherService: OtherService,
) {}

@UseCls<[string]>({
generateId: true,
idGenerator: function (this: SomeService) {
return this.generateId();
},
setup: function (this: SomeService, cls: ClsService, value: string) {
cls.set('some-key', 'some-value');
},
})
async startContextualWorkflow(value: string) {
return this.otherService.doSomething(value);
}

private generateId() {
return Math.random();
}
}
+
warning

It is important to define the setup and idGenerator functions as functions, not arrow functions, so that the this context is properly bound.

+ + \ No newline at end of file diff --git a/setting-up-cls-context/using-a-decurator.html b/setting-up-cls-context/using-a-decurator.html deleted file mode 100755 index a9a5fb7..0000000 --- a/setting-up-cls-context/using-a-decurator.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - -Using a Decorator | NestJS CLS - - - - -
-
Skip to main content

Using a Decorator

The @UseCls() decorator can be used at a method level to declaratively wrap the method with a cls.run() call. This method should only be used outside of the context of a web request.

info

Please keep in mind, that since the CLS context initialization can be async, the @UseCls() decorator can only be used on async function (those that return a Promise).

- - - - \ No newline at end of file diff --git a/setting-up-cls-context/using-a-guard.html b/setting-up-cls-context/using-a-guard.html old mode 100755 new mode 100644 index 1289137..8c67754 --- a/setting-up-cls-context/using-a-guard.html +++ b/setting-up-cls-context/using-a-guard.html @@ -1,16 +1,24 @@ - + - -Using a Guard | NestJS CLS - - + +Using a Guard | NestJS CLS + + -
-
Skip to main content

Using a Guard

The ClsGuard can be also used set up the CLS context. While it is not a "guard" per-se, it's the second best place to set up the CLS context, since after a middleware, it is the first piece of code that the request hits.

To use it, pass its configuration to the guard property to the ClsModule.forRoot() options:

Automatically

Use mount: true

app.module.ts
@Module({
imports: [
ClsModule.forRoot({
guard: { mount: true },
}),
],
// ...
})
export class AppModule {}

Manually

If you need any other guards to use the ClsService, it's preferable to mount ClsGuard manually as the first guard in the root module:

app.module.ts
@Module({
imports: [
ClsModule.forRoot({
guard: { mount: false }
}),
]
providers: [
{
provide: APP_GUARD,
useClass: ClsGuard,
},
],
// ...
})
export class AppModule {}

or mount it directly on the Controller/Resolver with

@UseGuards(ClsGuard);
caution

Please note: since the ClsGuard uses the AsyncLocalStorage#enterWith method, using the ClsGuard comes with some security considerations!

- - +
Skip to main content

Using a Guard

+

The ClsGuard can be also used set up the CLS context. While it is not a "guard" per-se, it's the second best place to set up the CLS context, since after a middleware, it is the first piece of code that the request hits.

+

To use it, pass its configuration to the guard property to the ClsModule.forRoot() options:

+

Automatically

+

Use mount: true

+
app.module.ts
@Module({
imports: [
ClsModule.forRoot({
guard: { mount: true },
}),
],
// ...
})
export class AppModule {}
+

Manually

+

If you need any other guards to use the ClsService, it's preferable to mount ClsGuard manually as the first guard in the root module:

+
app.module.ts
@Module({
imports: [
ClsModule.forRoot({
guard: { mount: false }
}),
]
providers: [
{
provide: APP_GUARD,
useClass: ClsGuard,
},
],
// ...
})
export class AppModule {}
+

or mount it directly on the Controller/Resolver with

+
@UseGuards(ClsGuard);
+
caution

Please note: since the ClsGuard uses the AsyncLocalStorage#enterWith method, using the ClsGuard comes with some security considerations!

\ No newline at end of file diff --git a/setting-up-cls-context/using-a-middleware.html b/setting-up-cls-context/using-a-middleware.html old mode 100755 new mode 100644 index ddb5721..a413b5e --- a/setting-up-cls-context/using-a-middleware.html +++ b/setting-up-cls-context/using-a-middleware.html @@ -1,16 +1,29 @@ - + - -Using a Middleware | NestJS CLS - - + +Using a Middleware | NestJS CLS + + -
-
Skip to main content

Using a Middleware

info

This section applies only if you use a HTTP transport (REST or GraphQL)

Since in NestJS, HTTP middleware is the first thing to run when a request arrives, it is an ideal place to initialise the CLS context. This package provides ClsMiddleware that can be mounted to all (or selected) routes inside which the context is set up before the next() call.

All you have to do is mount it to routes in which you want to use CLS, or pass middleware: { mount: true } to the ClsModule.forRoot() options which automatically mounts it to all routes.

Once that is set up, the ClsService will have access to a common storage in all Guards, Interceptors, Pipes, Controllers, Services and Exception Filters that are called within that route.

Automatically

app.module.ts
@Module({
imports: [
ClsModule.forRoot({
global: true,
middleware: { mount: true },
}),
],
// ...
})
export class AppModule {}

Manually

Sometimes, you might want to only use CLS on certain routes, or you need to have more control over the order of middleware registration in combination with other middlewares.

In the module

In that case, omit the mount option or set it to false and bind the ClsMiddleware manually in the module:

app.module.ts
@Module({
imports: [
ClsModule.forRoot({
global: true,
middleware: { mount: false },
}),
],
// ...
})
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer.apply(ClsMiddleware).forRoutes('custom/route');
}
}

Using app.use

Sometimes, however, the previous method won't be enough, because the middleware could be mounted too late and you won't be able to use it in other middlewares that need to run prior to that - for example, the API versioning feature of NestJS apparently interferes with the order, see issue #67.

In that case, you can mount it directly in the bootstrap method:

main.ts
function bootstrap() {
const app = await NestFactory.create(AppModule);
// create and mount the middleware manually here
app.use(
new ClsMiddleware({
/* ...settings */
}).use,
);
await app.listen(3000);
}
caution

Please note: If you bind the middleware using app.use(), it will not respect middleware settings passed to ClsModule.forRoot(), so you will have to provide them yourself in the constructor.

- - +
Skip to main content

Using a Middleware

+
info

This section applies only if you use a HTTP transport (REST or GraphQL)

+

Since in NestJS, HTTP middleware is the first thing to run when a request arrives, it is an ideal place to initialise the CLS context. This package provides ClsMiddleware that can be mounted to all (or selected) routes inside which the context is set up before the next() call.

+

All you have to do is mount it to routes in which you want to use CLS, or pass middleware: { mount: true } to the ClsModule.forRoot() options which automatically mounts it to all routes.

+

Once that is set up, the ClsService will have access to a common storage in all Guards, Interceptors, Pipes, Controllers, Services and Exception Filters that are called within that route.

+

Automatically

+
app.module.ts
@Module({
imports: [
ClsModule.forRoot({
global: true,
middleware: { mount: true },
}),
],
// ...
})
export class AppModule {}
+

Manually

+

Sometimes, you might want to only use CLS on certain routes, or you need to have more control over the order of middleware registration in combination with other middlewares.

+

In the module

+

In that case, omit the mount option or set it to false and bind the ClsMiddleware manually in the module:

+
app.module.ts
@Module({
imports: [
ClsModule.forRoot({
global: true,
middleware: { mount: false },
}),
],
// ...
})
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer.apply(ClsMiddleware).forRoutes('custom/route');
}
}
+

Using app.use

+

Sometimes, however, the previous method won't be enough, because the middleware could be mounted too late and you won't be able to use it in other middlewares that need to run prior to that - for example, the API versioning feature of NestJS apparently interferes with the order, see issue #67.

+

In that case, you can mount it directly in the bootstrap method:

+
main.ts
function bootstrap() {
const app = await NestFactory.create(AppModule);
// create and mount the middleware manually here
app.use(
new ClsMiddleware({
/* ...settings */
}).use,
);
await app.listen(3000);
}
+
caution

Please note: If you bind the middleware using app.use(), it will not respect middleware settings passed to ClsModule.forRoot(), so you will have to provide them yourself in the constructor.

\ No newline at end of file diff --git a/setting-up-cls-context/using-an-interceptor.html b/setting-up-cls-context/using-an-interceptor.html old mode 100755 new mode 100644 index f480a13..b052115 --- a/setting-up-cls-context/using-an-interceptor.html +++ b/setting-up-cls-context/using-an-interceptor.html @@ -1,16 +1,23 @@ - + - -Using an Interceptor | NestJS CLS - - + +Using an Interceptor | NestJS CLS + + -
-
Skip to main content

Using an Interceptor

Another place to initiate the CLS context is an ClsInterceptor, which, unlike the ClsGuard uses AsyncLocalStorage#run method to wrap the following code, which is considered safer than enterWith.

To use it, pass its configuration to the interceptor property to the ClsModule.forRoot() options:

Automatically

app.module.ts
@Module({
imports: [
ClsModule.forRoot({
interceptor: { mount: true },
}),
],
// ...
})
export class AppModule {}

Manually

Or mount it manually as APP_INTERCEPTOR

app.module.ts
@Module({
imports: [
ClsModule.forRoot({
interceptor: { mount: false }
}),
]
providers: [
{
provide: APP_INTERCEPTOR,
useClass: ClsGuard,
},
],
// ...
})
export class AppModule {}

or directly on the Controller/Resolver with:

@UseInterceptors(ClsInterceptor);
note

Please note: Since Nest's Interceptors run after Guards, that means using this method makes CLS unavailable in Guards (and in case of REST Controllers, also in Exception Filters).

- - +
Skip to main content

Using an Interceptor

+

Another place to initiate the CLS context is an ClsInterceptor, which, unlike the ClsGuard uses AsyncLocalStorage#run method to wrap the following code, which is considered safer than enterWith.

+

To use it, pass its configuration to the interceptor property to the ClsModule.forRoot() options:

+

Automatically

+
app.module.ts
@Module({
imports: [
ClsModule.forRoot({
interceptor: { mount: true },
}),
],
// ...
})
export class AppModule {}
+

Manually

+

Or mount it manually as APP_INTERCEPTOR

+
app.module.ts
@Module({
imports: [
ClsModule.forRoot({
interceptor: { mount: false }
}),
]
providers: [
{
provide: APP_INTERCEPTOR,
useClass: ClsGuard,
},
],
// ...
})
export class AppModule {}
+

or directly on the Controller/Resolver with:

+
@UseInterceptors(ClsInterceptor);
+
note

Please note: Since Nest's Interceptors run after Guards, that means using this method makes CLS unavailable in Guards (and in case of REST Controllers, also in Exception Filters).

\ No newline at end of file diff --git a/setting-up-cls-context/using_cls_run.html b/setting-up-cls-context/using_cls_run.html new file mode 100644 index 0000000..ecc4da1 --- /dev/null +++ b/setting-up-cls-context/using_cls_run.html @@ -0,0 +1,16 @@ + + + + + +Using the ClsService Instance | NestJS CLS + + + + +
Skip to main content

Using the ClsService Instance

+

All other methods of setting up the CLS context ultimately use the ClsService#run or ClsService#enter methods.

+

If all other attempts fail or you want to have a more fine-grained control over the CLS context, you can use ClsService instance to wrap any piece of code in a CLS context.

+

An example is available in the Usage outside of web request section.

+ + \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml old mode 100755 new mode 100644 index e8a386e..fa51251 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -https://papooch.github.io/nestjs-cls/weekly0.5https://papooch.github.io/nestjs-cls/apiweekly0.5https://papooch.github.io/nestjs-cls/api/module-optionsweekly0.5https://papooch.github.io/nestjs-cls/api/service-interfaceweekly0.5https://papooch.github.io/nestjs-cls/considerationsweekly0.5https://papooch.github.io/nestjs-cls/considerations/compatibilityweekly0.5https://papooch.github.io/nestjs-cls/considerations/securityweekly0.5https://papooch.github.io/nestjs-cls/features-and-use-casesweekly0.5https://papooch.github.io/nestjs-cls/features-and-use-cases/additional-cls-setupweekly0.5https://papooch.github.io/nestjs-cls/features-and-use-cases/breakin-out-of-diweekly0.5https://papooch.github.io/nestjs-cls/features-and-use-cases/proxy-providersweekly0.5https://papooch.github.io/nestjs-cls/features-and-use-cases/request-idweekly0.5https://papooch.github.io/nestjs-cls/features-and-use-cases/type-safety-and-type-inferenceweekly0.5https://papooch.github.io/nestjs-cls/features-and-use-cases/usage-outside-of-web-requestweekly0.5https://papooch.github.io/nestjs-cls/introduction/how-it-worksweekly0.5https://papooch.github.io/nestjs-cls/introduction/installationweekly0.5https://papooch.github.io/nestjs-cls/introduction/quick-startweekly0.5https://papooch.github.io/nestjs-cls/migration-guideweekly0.5https://papooch.github.io/nestjs-cls/migration-guide/v2x-v3xweekly0.5https://papooch.github.io/nestjs-cls/setting-up-cls-contextweekly0.5https://papooch.github.io/nestjs-cls/setting-up-cls-context/using-a-decuratorweekly0.5https://papooch.github.io/nestjs-cls/setting-up-cls-context/using-a-guardweekly0.5https://papooch.github.io/nestjs-cls/setting-up-cls-context/using-a-middlewareweekly0.5https://papooch.github.io/nestjs-cls/setting-up-cls-context/using-an-interceptorweekly0.5 \ No newline at end of file +https://papooch.github.io/nestjs-cls/apiweekly0.5https://papooch.github.io/nestjs-cls/api/module-optionsweekly0.5https://papooch.github.io/nestjs-cls/api/service-interfaceweekly0.5https://papooch.github.io/nestjs-cls/considerationsweekly0.5https://papooch.github.io/nestjs-cls/considerations/compatibilityweekly0.5https://papooch.github.io/nestjs-cls/considerations/securityweekly0.5https://papooch.github.io/nestjs-cls/features-and-use-casesweekly0.5https://papooch.github.io/nestjs-cls/features-and-use-cases/additional-cls-setupweekly0.5https://papooch.github.io/nestjs-cls/features-and-use-cases/breaking-out-of-diweekly0.5https://papooch.github.io/nestjs-cls/features-and-use-cases/proxy-providersweekly0.5https://papooch.github.io/nestjs-cls/features-and-use-cases/request-idweekly0.5https://papooch.github.io/nestjs-cls/features-and-use-cases/type-safety-and-type-inferenceweekly0.5https://papooch.github.io/nestjs-cls/features-and-use-cases/usage-outside-of-web-requestweekly0.5https://papooch.github.io/nestjs-cls/introduction/how-it-worksweekly0.5https://papooch.github.io/nestjs-cls/introduction/installationweekly0.5https://papooch.github.io/nestjs-cls/introduction/quick-startweekly0.5https://papooch.github.io/nestjs-cls/migration-guideweekly0.5https://papooch.github.io/nestjs-cls/migration-guide/v2x-v3xweekly0.5https://papooch.github.io/nestjs-cls/migration-guide/v3x-v4xweekly0.5https://papooch.github.io/nestjs-cls/pluginsweekly0.5https://papooch.github.io/nestjs-cls/plugins/available-pluginsweekly0.5https://papooch.github.io/nestjs-cls/plugins/available-plugins/transactionalweekly0.5https://papooch.github.io/nestjs-cls/plugins/available-plugins/transactional/creating-custom-adapterweekly0.5https://papooch.github.io/nestjs-cls/plugins/available-plugins/transactional/prisma-adapterweekly0.5https://papooch.github.io/nestjs-cls/plugins/plugin-apiweekly0.5https://papooch.github.io/nestjs-cls/setting-up-cls-contextweekly0.5https://papooch.github.io/nestjs-cls/setting-up-cls-context/using_cls_runweekly0.5https://papooch.github.io/nestjs-cls/setting-up-cls-context/using-a-decoratorweekly0.5https://papooch.github.io/nestjs-cls/setting-up-cls-context/using-a-guardweekly0.5https://papooch.github.io/nestjs-cls/setting-up-cls-context/using-a-middlewareweekly0.5https://papooch.github.io/nestjs-cls/setting-up-cls-context/using-an-interceptorweekly0.5https://papooch.github.io/nestjs-cls/weekly0.5 \ No newline at end of file