diff --git a/.gitignore b/.gitignore index dcee4e3ed2a..9539f4f166d 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,6 @@ mise.toml # Superset .superset + +# tsbuildinfo +*.tsbuildinfo \ No newline at end of file diff --git a/apps/blog/tsconfig.tsbuildinfo b/apps/blog/tsconfig.tsbuildinfo deleted file mode 100644 index 3bd5beb9ff0..00000000000 --- a/apps/blog/tsconfig.tsbuildinfo +++ /dev/null @@ -1 +0,0 @@ -{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/typescript/lib/lib.es2023.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../node_modules/typescript/lib/lib.es2023.collection.d.ts","../../node_modules/typescript/lib/lib.es2023.intl.d.ts","../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../node_modules/typescript/lib/lib.esnext.float16.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","./.next/types/routes.d.ts","../../node_modules/@types/react/global.d.ts","../../node_modules/csstype/index.d.ts","../../node_modules/@types/react/index.d.ts","../../node_modules/next/dist/styled-jsx/types/css.d.ts","../../node_modules/next/dist/styled-jsx/types/macro.d.ts","../../node_modules/next/dist/styled-jsx/types/style.d.ts","../../node_modules/next/dist/styled-jsx/types/global.d.ts","../../node_modules/next/dist/styled-jsx/types/index.d.ts","../../node_modules/next/dist/shared/lib/amp.d.ts","../../node_modules/next/amp.d.ts","../../node_modules/next/dist/server/get-page-files.d.ts","../../node_modules/@types/node/compatibility/iterators.d.ts","../../node_modules/@types/node/globals.typedarray.d.ts","../../node_modules/@types/node/buffer.buffer.d.ts","../../node_modules/@types/node/globals.d.ts","../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../node_modules/@types/node/web-globals/crypto.d.ts","../../node_modules/@types/node/web-globals/domexception.d.ts","../../node_modules/@types/node/web-globals/events.d.ts","../../node_modules/buffer/index.d.ts","../../node_modules/undici-types/utility.d.ts","../../node_modules/undici-types/header.d.ts","../../node_modules/undici-types/readable.d.ts","../../node_modules/undici-types/fetch.d.ts","../../node_modules/undici-types/formdata.d.ts","../../node_modules/undici-types/connector.d.ts","../../node_modules/undici-types/client-stats.d.ts","../../node_modules/undici-types/client.d.ts","../../node_modules/undici-types/errors.d.ts","../../node_modules/undici-types/dispatcher.d.ts","../../node_modules/undici-types/global-dispatcher.d.ts","../../node_modules/undici-types/global-origin.d.ts","../../node_modules/undici-types/pool-stats.d.ts","../../node_modules/undici-types/pool.d.ts","../../node_modules/undici-types/handlers.d.ts","../../node_modules/undici-types/balanced-pool.d.ts","../../node_modules/undici-types/h2c-client.d.ts","../../node_modules/undici-types/agent.d.ts","../../node_modules/undici-types/mock-interceptor.d.ts","../../node_modules/undici-types/mock-call-history.d.ts","../../node_modules/undici-types/mock-agent.d.ts","../../node_modules/undici-types/mock-client.d.ts","../../node_modules/undici-types/mock-pool.d.ts","../../node_modules/undici-types/snapshot-agent.d.ts","../../node_modules/undici-types/mock-errors.d.ts","../../node_modules/undici-types/proxy-agent.d.ts","../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../node_modules/undici-types/retry-handler.d.ts","../../node_modules/undici-types/retry-agent.d.ts","../../node_modules/undici-types/api.d.ts","../../node_modules/undici-types/cache-interceptor.d.ts","../../node_modules/undici-types/interceptors.d.ts","../../node_modules/undici-types/util.d.ts","../../node_modules/undici-types/cookies.d.ts","../../node_modules/undici-types/patch.d.ts","../../node_modules/undici-types/websocket.d.ts","../../node_modules/undici-types/eventsource.d.ts","../../node_modules/undici-types/diagnostics-channel.d.ts","../../node_modules/undici-types/content-type.d.ts","../../node_modules/undici-types/cache.d.ts","../../node_modules/undici-types/index.d.ts","../../node_modules/@types/node/web-globals/fetch.d.ts","../../node_modules/@types/node/web-globals/navigator.d.ts","../../node_modules/@types/node/web-globals/storage.d.ts","../../node_modules/@types/node/web-globals/streams.d.ts","../../node_modules/@types/node/assert.d.ts","../../node_modules/@types/node/assert/strict.d.ts","../../node_modules/@types/node/async_hooks.d.ts","../../node_modules/@types/node/buffer.d.ts","../../node_modules/@types/node/child_process.d.ts","../../node_modules/@types/node/cluster.d.ts","../../node_modules/@types/node/console.d.ts","../../node_modules/@types/node/constants.d.ts","../../node_modules/@types/node/crypto.d.ts","../../node_modules/@types/node/dgram.d.ts","../../node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/@types/node/dns.d.ts","../../node_modules/@types/node/dns/promises.d.ts","../../node_modules/@types/node/domain.d.ts","../../node_modules/@types/node/events.d.ts","../../node_modules/@types/node/fs.d.ts","../../node_modules/@types/node/fs/promises.d.ts","../../node_modules/@types/node/http.d.ts","../../node_modules/@types/node/http2.d.ts","../../node_modules/@types/node/https.d.ts","../../node_modules/@types/node/inspector.d.ts","../../node_modules/@types/node/inspector.generated.d.ts","../../node_modules/@types/node/module.d.ts","../../node_modules/@types/node/net.d.ts","../../node_modules/@types/node/os.d.ts","../../node_modules/@types/node/path.d.ts","../../node_modules/@types/node/perf_hooks.d.ts","../../node_modules/@types/node/process.d.ts","../../node_modules/@types/node/punycode.d.ts","../../node_modules/@types/node/querystring.d.ts","../../node_modules/@types/node/readline.d.ts","../../node_modules/@types/node/readline/promises.d.ts","../../node_modules/@types/node/repl.d.ts","../../node_modules/@types/node/sea.d.ts","../../node_modules/@types/node/sqlite.d.ts","../../node_modules/@types/node/stream.d.ts","../../node_modules/@types/node/stream/promises.d.ts","../../node_modules/@types/node/stream/consumers.d.ts","../../node_modules/@types/node/stream/web.d.ts","../../node_modules/@types/node/string_decoder.d.ts","../../node_modules/@types/node/test.d.ts","../../node_modules/@types/node/timers.d.ts","../../node_modules/@types/node/timers/promises.d.ts","../../node_modules/@types/node/tls.d.ts","../../node_modules/@types/node/trace_events.d.ts","../../node_modules/@types/node/tty.d.ts","../../node_modules/@types/node/url.d.ts","../../node_modules/@types/node/util.d.ts","../../node_modules/@types/node/v8.d.ts","../../node_modules/@types/node/vm.d.ts","../../node_modules/@types/node/wasi.d.ts","../../node_modules/@types/node/worker_threads.d.ts","../../node_modules/@types/node/zlib.d.ts","../../node_modules/@types/node/index.d.ts","../../node_modules/@types/react/canary.d.ts","../../node_modules/@types/react/experimental.d.ts","../../node_modules/@types/react-dom/index.d.ts","../../node_modules/@types/react-dom/canary.d.ts","../../node_modules/@types/react-dom/experimental.d.ts","../../node_modules/next/dist/lib/fallback.d.ts","../../node_modules/next/dist/compiled/webpack/webpack.d.ts","../../node_modules/next/dist/server/config.d.ts","../../node_modules/next/dist/lib/load-custom-routes.d.ts","../../node_modules/next/dist/shared/lib/image-config.d.ts","../../node_modules/next/dist/build/webpack/plugins/subresource-integrity-plugin.d.ts","../../node_modules/next/dist/server/body-streams.d.ts","../../node_modules/next/dist/server/lib/cache-control.d.ts","../../node_modules/next/dist/lib/setup-exception-listeners.d.ts","../../node_modules/next/dist/lib/worker.d.ts","../../node_modules/next/dist/lib/constants.d.ts","../../node_modules/next/dist/client/components/app-router-headers.d.ts","../../node_modules/next/dist/build/rendering-mode.d.ts","../../node_modules/next/dist/server/lib/router-utils/build-prefetch-segment-data-route.d.ts","../../node_modules/next/dist/server/require-hook.d.ts","../../node_modules/next/dist/server/lib/experimental/ppr.d.ts","../../node_modules/next/dist/build/webpack/plugins/app-build-manifest-plugin.d.ts","../../node_modules/next/dist/lib/page-types.d.ts","../../node_modules/next/dist/build/segment-config/app/app-segment-config.d.ts","../../node_modules/next/dist/build/segment-config/pages/pages-segment-config.d.ts","../../node_modules/next/dist/build/analysis/get-page-static-info.d.ts","../../node_modules/next/dist/build/webpack/loaders/get-module-build-info.d.ts","../../node_modules/next/dist/build/webpack/plugins/middleware-plugin.d.ts","../../node_modules/next/dist/server/node-polyfill-crypto.d.ts","../../node_modules/next/dist/server/node-environment-baseline.d.ts","../../node_modules/next/dist/server/node-environment-extensions/error-inspect.d.ts","../../node_modules/next/dist/server/node-environment-extensions/random.d.ts","../../node_modules/next/dist/server/node-environment-extensions/date.d.ts","../../node_modules/next/dist/server/node-environment-extensions/web-crypto.d.ts","../../node_modules/next/dist/server/node-environment-extensions/node-crypto.d.ts","../../node_modules/next/dist/server/node-environment.d.ts","../../node_modules/next/dist/build/page-extensions-type.d.ts","../../node_modules/next/dist/build/webpack/plugins/flight-manifest-plugin.d.ts","../../node_modules/next/dist/server/instrumentation/types.d.ts","../../node_modules/next/dist/lib/coalesced-function.d.ts","../../node_modules/next/dist/shared/lib/router/utils/middleware-route-matcher.d.ts","../../node_modules/next/dist/server/lib/router-utils/types.d.ts","../../node_modules/next/dist/shared/lib/modern-browserslist-target.d.ts","../../node_modules/next/dist/shared/lib/constants.d.ts","../../node_modules/next/dist/trace/types.d.ts","../../node_modules/next/dist/trace/trace.d.ts","../../node_modules/next/dist/trace/shared.d.ts","../../node_modules/next/dist/trace/index.d.ts","../../node_modules/next/dist/build/load-jsconfig.d.ts","../../node_modules/@next/env/dist/index.d.ts","../../node_modules/next/dist/build/webpack/plugins/telemetry-plugin/use-cache-tracker-utils.d.ts","../../node_modules/next/dist/build/webpack/plugins/telemetry-plugin/telemetry-plugin.d.ts","../../node_modules/next/dist/telemetry/storage.d.ts","../../node_modules/next/dist/build/build-context.d.ts","../../node_modules/next/dist/shared/lib/bloom-filter.d.ts","../../node_modules/next/dist/build/webpack-config.d.ts","../../node_modules/next/dist/server/route-kind.d.ts","../../node_modules/next/dist/server/route-definitions/route-definition.d.ts","../../node_modules/next/dist/build/swc/generated-native.d.ts","../../node_modules/next/dist/build/swc/types.d.ts","../../node_modules/next/dist/server/dev/parse-version-info.d.ts","../../node_modules/next/dist/next-devtools/shared/types.d.ts","../../node_modules/next/dist/server/dev/dev-indicator-server-state.d.ts","../../node_modules/next/dist/server/lib/parse-stack.d.ts","../../node_modules/next/dist/next-devtools/server/shared.d.ts","../../node_modules/next/dist/next-devtools/shared/stack-frame.d.ts","../../node_modules/next/dist/next-devtools/dev-overlay/utils/get-error-by-type.d.ts","../../node_modules/@types/react/jsx-runtime.d.ts","../../node_modules/next/dist/next-devtools/dev-overlay/container/runtime-error/render-error.d.ts","../../node_modules/next/dist/next-devtools/dev-overlay/shared.d.ts","../../node_modules/next/dist/server/dev/hot-reloader-types.d.ts","../../node_modules/next/dist/server/lib/cache-handlers/types.d.ts","../../node_modules/next/dist/server/response-cache/types.d.ts","../../node_modules/next/dist/server/resume-data-cache/cache-store.d.ts","../../node_modules/next/dist/server/resume-data-cache/resume-data-cache.d.ts","../../node_modules/next/dist/server/render-result.d.ts","../../node_modules/next/dist/server/lib/i18n-provider.d.ts","../../node_modules/next/dist/server/web/next-url.d.ts","../../node_modules/next/dist/compiled/@edge-runtime/cookies/index.d.ts","../../node_modules/next/dist/server/web/spec-extension/cookies.d.ts","../../node_modules/next/dist/server/web/spec-extension/request.d.ts","../../node_modules/next/dist/server/after/builtin-request-context.d.ts","../../node_modules/next/dist/server/web/spec-extension/fetch-event.d.ts","../../node_modules/next/dist/server/web/spec-extension/response.d.ts","../../node_modules/next/dist/build/segment-config/middleware/middleware-config.d.ts","../../node_modules/next/dist/server/web/types.d.ts","../../node_modules/next/dist/build/webpack/plugins/pages-manifest-plugin.d.ts","../../node_modules/next/dist/shared/lib/router/utils/parse-url.d.ts","../../node_modules/next/dist/server/base-http/node.d.ts","../../node_modules/next/dist/build/webpack/plugins/next-font-manifest-plugin.d.ts","../../node_modules/next/dist/server/route-definitions/locale-route-definition.d.ts","../../node_modules/next/dist/server/route-definitions/pages-route-definition.d.ts","../../node_modules/next/dist/shared/lib/mitt.d.ts","../../node_modules/next/dist/client/with-router.d.ts","../../node_modules/next/dist/client/router.d.ts","../../node_modules/next/dist/client/route-loader.d.ts","../../node_modules/next/dist/client/page-loader.d.ts","../../node_modules/next/dist/shared/lib/router/router.d.ts","../../node_modules/next/dist/shared/lib/router-context.shared-runtime.d.ts","../../node_modules/next/dist/shared/lib/loadable-context.shared-runtime.d.ts","../../node_modules/next/dist/shared/lib/loadable.shared-runtime.d.ts","../../node_modules/next/dist/shared/lib/image-config-context.shared-runtime.d.ts","../../node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.d.ts","../../node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.d.ts","../../node_modules/next/dist/server/route-definitions/app-page-route-definition.d.ts","../../node_modules/next/dist/build/webpack/loaders/metadata/types.d.ts","../../node_modules/next/dist/build/webpack/loaders/next-app-loader/index.d.ts","../../node_modules/next/dist/server/lib/app-dir-module.d.ts","../../node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.d.ts","../../node_modules/next/dist/server/async-storage/draft-mode-provider.d.ts","../../node_modules/next/dist/server/web/spec-extension/adapters/headers.d.ts","../../node_modules/next/dist/server/app-render/cache-signal.d.ts","../../node_modules/next/dist/server/app-render/dynamic-rendering.d.ts","../../node_modules/next/dist/server/request/fallback-params.d.ts","../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.d.ts","../../node_modules/next/dist/server/response-cache/index.d.ts","../../node_modules/next/dist/server/lib/lazy-result.d.ts","../../node_modules/next/dist/server/lib/implicit-tags.d.ts","../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.d.ts","../../node_modules/next/dist/shared/lib/deep-readonly.d.ts","../../node_modules/next/dist/shared/lib/router/utils/parse-relative-url.d.ts","../../node_modules/next/dist/server/app-render/app-render.d.ts","../../node_modules/next/dist/shared/lib/server-inserted-html.shared-runtime.d.ts","../../node_modules/next/dist/shared/lib/amp-context.shared-runtime.d.ts","../../node_modules/next/dist/server/route-modules/app-page/vendored/contexts/entrypoints.d.ts","../../node_modules/next/dist/server/route-modules/app-page/module.compiled.d.ts","../../node_modules/next/dist/client/components/error-boundary.d.ts","../../node_modules/next/dist/client/components/layout-router.d.ts","../../node_modules/next/dist/client/components/render-from-template-context.d.ts","../../node_modules/next/dist/server/app-render/action-async-storage-instance.d.ts","../../node_modules/next/dist/server/app-render/action-async-storage.external.d.ts","../../node_modules/next/dist/client/components/client-page.d.ts","../../node_modules/next/dist/client/components/client-segment.d.ts","../../node_modules/next/dist/server/request/search-params.d.ts","../../node_modules/next/dist/client/components/hooks-server-context.d.ts","../../node_modules/next/dist/client/components/http-access-fallback/error-boundary.d.ts","../../node_modules/next/dist/lib/metadata/types/alternative-urls-types.d.ts","../../node_modules/next/dist/lib/metadata/types/extra-types.d.ts","../../node_modules/next/dist/lib/metadata/types/metadata-types.d.ts","../../node_modules/next/dist/lib/metadata/types/manifest-types.d.ts","../../node_modules/next/dist/lib/metadata/types/opengraph-types.d.ts","../../node_modules/next/dist/lib/metadata/types/twitter-types.d.ts","../../node_modules/next/dist/lib/metadata/types/metadata-interface.d.ts","../../node_modules/next/dist/lib/metadata/types/resolvers.d.ts","../../node_modules/next/dist/lib/metadata/types/icons.d.ts","../../node_modules/next/dist/lib/metadata/resolve-metadata.d.ts","../../node_modules/next/dist/lib/metadata/metadata.d.ts","../../node_modules/next/dist/lib/framework/boundary-components.d.ts","../../node_modules/next/dist/server/app-render/rsc/preloads.d.ts","../../node_modules/next/dist/server/app-render/rsc/postpone.d.ts","../../node_modules/next/dist/server/app-render/rsc/taint.d.ts","../../node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.d.ts","../../node_modules/next/dist/server/app-render/collect-segment-data.d.ts","../../node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.d.ts","../../node_modules/next/dist/server/app-render/entry-base.d.ts","../../node_modules/next/dist/build/templates/app-page.d.ts","../../node_modules/@types/react/jsx-dev-runtime.d.ts","../../node_modules/@types/react/compiler-runtime.d.ts","../../node_modules/next/dist/server/route-modules/app-page/vendored/rsc/entrypoints.d.ts","../../node_modules/@types/react-dom/client.d.ts","../../node_modules/@types/react-dom/static.d.ts","../../node_modules/@types/react-dom/server.d.ts","../../node_modules/next/dist/server/route-modules/app-page/vendored/ssr/entrypoints.d.ts","../../node_modules/next/dist/server/route-modules/app-page/module.d.ts","../../node_modules/next/dist/server/web/adapter.d.ts","../../node_modules/next/dist/server/use-cache/cache-life.d.ts","../../node_modules/next/dist/server/app-render/types.d.ts","../../node_modules/next/dist/client/components/router-reducer/router-reducer-types.d.ts","../../node_modules/next/dist/client/flight-data-helpers.d.ts","../../node_modules/next/dist/client/components/router-reducer/fetch-server-response.d.ts","../../node_modules/next/dist/shared/lib/app-router-context.shared-runtime.d.ts","../../node_modules/next/dist/server/route-modules/pages/vendored/contexts/entrypoints.d.ts","../../node_modules/next/dist/server/route-modules/pages/module.compiled.d.ts","../../node_modules/next/dist/build/templates/pages.d.ts","../../node_modules/next/dist/server/route-modules/pages/module.d.ts","../../node_modules/next/dist/next-devtools/userspace/pages/pages-dev-overlay-setup.d.ts","../../node_modules/next/dist/server/render.d.ts","../../node_modules/next/dist/server/route-definitions/pages-api-route-definition.d.ts","../../node_modules/next/dist/server/route-matches/pages-api-route-match.d.ts","../../node_modules/next/dist/server/route-matchers/route-matcher.d.ts","../../node_modules/next/dist/server/route-matcher-providers/route-matcher-provider.d.ts","../../node_modules/next/dist/server/route-matcher-managers/route-matcher-manager.d.ts","../../node_modules/next/dist/server/normalizers/normalizer.d.ts","../../node_modules/next/dist/server/normalizers/locale-route-normalizer.d.ts","../../node_modules/next/dist/server/normalizers/request/pathname-normalizer.d.ts","../../node_modules/next/dist/server/normalizers/request/suffix.d.ts","../../node_modules/next/dist/server/normalizers/request/rsc.d.ts","../../node_modules/next/dist/server/normalizers/request/prefetch-rsc.d.ts","../../node_modules/next/dist/server/normalizers/request/next-data.d.ts","../../node_modules/next/dist/server/normalizers/request/segment-prefix-rsc.d.ts","../../node_modules/next/dist/build/static-paths/types.d.ts","../../node_modules/next/dist/server/base-server.d.ts","../../node_modules/next/dist/server/lib/async-callback-set.d.ts","../../node_modules/next/dist/shared/lib/router/utils/route-regex.d.ts","../../node_modules/next/dist/shared/lib/router/utils/route-matcher.d.ts","../../node_modules/sharp/lib/index.d.ts","../../node_modules/next/dist/server/image-optimizer.d.ts","../../node_modules/next/dist/server/next-server.d.ts","../../node_modules/next/dist/server/lib/types.d.ts","../../node_modules/next/dist/server/lib/lru-cache.d.ts","../../node_modules/next/dist/server/lib/dev-bundler-service.d.ts","../../node_modules/next/dist/server/dev/static-paths-worker.d.ts","../../node_modules/next/dist/server/dev/next-dev-server.d.ts","../../node_modules/next/dist/server/next.d.ts","../../node_modules/next/dist/server/lib/render-server.d.ts","../../node_modules/next/dist/server/lib/router-server.d.ts","../../node_modules/next/dist/shared/lib/router/utils/path-match.d.ts","../../node_modules/next/dist/server/lib/router-utils/filesystem.d.ts","../../node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.d.ts","../../node_modules/next/dist/server/lib/router-utils/router-server-context.d.ts","../../node_modules/next/dist/server/route-modules/route-module.d.ts","../../node_modules/next/dist/server/load-components.d.ts","../../node_modules/next/dist/server/route-definitions/app-route-route-definition.d.ts","../../node_modules/next/dist/server/async-storage/work-store.d.ts","../../node_modules/next/dist/server/web/http.d.ts","../../node_modules/next/dist/server/route-modules/app-route/shared-modules.d.ts","../../node_modules/next/dist/client/components/redirect-status-code.d.ts","../../node_modules/next/dist/client/components/redirect-error.d.ts","../../node_modules/next/dist/build/templates/app-route.d.ts","../../node_modules/next/dist/server/route-modules/app-route/module.d.ts","../../node_modules/next/dist/server/route-modules/app-route/module.compiled.d.ts","../../node_modules/next/dist/build/segment-config/app/app-segments.d.ts","../../node_modules/next/dist/build/utils.d.ts","../../node_modules/next/dist/build/turborepo-access-trace/types.d.ts","../../node_modules/next/dist/build/turborepo-access-trace/result.d.ts","../../node_modules/next/dist/build/turborepo-access-trace/helpers.d.ts","../../node_modules/next/dist/build/turborepo-access-trace/index.d.ts","../../node_modules/next/dist/export/routes/types.d.ts","../../node_modules/next/dist/export/types.d.ts","../../node_modules/next/dist/export/worker.d.ts","../../node_modules/next/dist/build/worker.d.ts","../../node_modules/next/dist/build/index.d.ts","../../node_modules/next/dist/server/lib/incremental-cache/index.d.ts","../../node_modules/next/dist/server/after/after.d.ts","../../node_modules/next/dist/server/after/after-context.d.ts","../../node_modules/next/dist/server/app-render/work-async-storage-instance.d.ts","../../node_modules/next/dist/server/app-render/work-async-storage.external.d.ts","../../node_modules/next/dist/server/request/params.d.ts","../../node_modules/next/dist/server/route-matches/route-match.d.ts","../../node_modules/next/dist/server/request-meta.d.ts","../../node_modules/next/dist/cli/next-test.d.ts","../../node_modules/next/dist/server/config-shared.d.ts","../../node_modules/next/dist/server/base-http/index.d.ts","../../node_modules/next/dist/server/api-utils/index.d.ts","../../node_modules/next/dist/types.d.ts","../../node_modules/next/dist/shared/lib/html-context.shared-runtime.d.ts","../../node_modules/next/dist/shared/lib/utils.d.ts","../../node_modules/next/dist/pages/_app.d.ts","../../node_modules/next/app.d.ts","../../node_modules/next/dist/server/web/spec-extension/unstable-cache.d.ts","../../node_modules/next/dist/server/web/spec-extension/revalidate.d.ts","../../node_modules/next/dist/server/web/spec-extension/unstable-no-store.d.ts","../../node_modules/next/dist/server/use-cache/cache-tag.d.ts","../../node_modules/next/cache.d.ts","../../node_modules/next/dist/shared/lib/runtime-config.external.d.ts","../../node_modules/next/config.d.ts","../../node_modules/next/dist/pages/_document.d.ts","../../node_modules/next/document.d.ts","../../node_modules/next/dist/shared/lib/dynamic.d.ts","../../node_modules/next/dynamic.d.ts","../../node_modules/next/dist/pages/_error.d.ts","../../node_modules/next/error.d.ts","../../node_modules/next/dist/shared/lib/head.d.ts","../../node_modules/next/head.d.ts","../../node_modules/next/dist/server/request/cookies.d.ts","../../node_modules/next/dist/server/request/headers.d.ts","../../node_modules/next/dist/server/request/draft-mode.d.ts","../../node_modules/next/headers.d.ts","../../node_modules/next/dist/shared/lib/get-img-props.d.ts","../../node_modules/next/dist/client/image-component.d.ts","../../node_modules/next/dist/shared/lib/image-external.d.ts","../../node_modules/next/image.d.ts","../../node_modules/next/dist/client/link.d.ts","../../node_modules/next/link.d.ts","../../node_modules/next/dist/client/components/redirect.d.ts","../../node_modules/next/dist/client/components/not-found.d.ts","../../node_modules/next/dist/client/components/forbidden.d.ts","../../node_modules/next/dist/client/components/unauthorized.d.ts","../../node_modules/next/dist/client/components/unstable-rethrow.server.d.ts","../../node_modules/next/dist/client/components/unstable-rethrow.d.ts","../../node_modules/next/dist/client/components/navigation.react-server.d.ts","../../node_modules/next/dist/client/components/unrecognized-action-error.d.ts","../../node_modules/next/dist/client/components/navigation.d.ts","../../node_modules/next/navigation.d.ts","../../node_modules/next/router.d.ts","../../node_modules/next/dist/client/script.d.ts","../../node_modules/next/script.d.ts","../../node_modules/next/dist/server/web/spec-extension/user-agent.d.ts","../../node_modules/next/dist/compiled/@edge-runtime/primitives/url.d.ts","../../node_modules/next/dist/server/web/spec-extension/image-response.d.ts","../../node_modules/next/dist/compiled/@vercel/og/satori/index.d.ts","../../node_modules/next/dist/compiled/@vercel/og/emoji/index.d.ts","../../node_modules/next/dist/compiled/@vercel/og/types.d.ts","../../node_modules/next/dist/server/after/index.d.ts","../../node_modules/next/dist/server/request/root-params.d.ts","../../node_modules/next/dist/server/request/connection.d.ts","../../node_modules/next/server.d.ts","../../node_modules/next/types/global.d.ts","../../node_modules/next/types/compiled.d.ts","../../node_modules/next/types.d.ts","../../node_modules/next/index.d.ts","../../node_modules/next/image-types/global.d.ts","./next-env.d.ts","../../node_modules/@types/unist/index.d.ts","../../node_modules/@types/mdast/index.d.ts","../../node_modules/@zod/core/dist/esm/standard-schema.d.ts","../../node_modules/@zod/core/dist/esm/util.d.ts","../../node_modules/@zod/core/dist/esm/versions.d.ts","../../node_modules/@zod/core/dist/esm/schemas.d.ts","../../node_modules/@zod/core/dist/esm/checks.d.ts","../../node_modules/@zod/core/dist/esm/errors.d.ts","../../node_modules/@zod/core/dist/esm/core.d.ts","../../node_modules/@zod/core/dist/esm/parse.d.ts","../../node_modules/@zod/core/dist/esm/regexes.d.ts","../../node_modules/@zod/core/dist/esm/locales/az.d.ts","../../node_modules/@zod/core/dist/esm/locales/en.d.ts","../../node_modules/@zod/core/dist/esm/locales/es.d.ts","../../node_modules/@zod/core/dist/esm/locales.d.ts","../../node_modules/@zod/core/dist/esm/registries.d.ts","../../node_modules/@zod/core/dist/esm/doc.d.ts","../../node_modules/@zod/core/dist/esm/function.d.ts","../../node_modules/@zod/core/dist/esm/api.d.ts","../../node_modules/@zod/core/dist/esm/json-schema.d.ts","../../node_modules/@zod/core/dist/esm/to-json-schema.d.ts","../../node_modules/@zod/core/dist/esm/index.d.ts","../../node_modules/nextra/node_modules/zod/dist/esm/errors.d.ts","../../node_modules/nextra/node_modules/zod/dist/esm/parse.d.ts","../../node_modules/nextra/node_modules/zod/dist/esm/iso.d.ts","../../node_modules/nextra/node_modules/zod/dist/esm/coerce.d.ts","../../node_modules/nextra/node_modules/zod/dist/esm/schemas.d.ts","../../node_modules/nextra/node_modules/zod/dist/esm/checks.d.ts","../../node_modules/nextra/node_modules/zod/dist/esm/compat.d.ts","../../node_modules/nextra/node_modules/zod/dist/esm/external.d.ts","../../node_modules/nextra/node_modules/zod/dist/esm/index.d.ts","../../node_modules/better-react-mathjax/mathjax2.d.ts","../../node_modules/mathjax-full/js/components/global.d.ts","../../node_modules/mathjax-full/js/util/options.d.ts","../../node_modules/mathjax-full/js/core/tree/factory.d.ts","../../node_modules/mathjax-full/js/core/tree/nodefactory.d.ts","../../node_modules/mathjax-full/js/core/tree/node.d.ts","../../node_modules/mathjax-full/js/core/mmltree/attributes.d.ts","../../node_modules/mathjax-full/js/core/mmltree/mmlfactory.d.ts","../../node_modules/mathjax-full/js/core/domadaptor.d.ts","../../node_modules/mathjax-full/js/core/mmltree/mmlnode.d.ts","../../node_modules/mathjax-full/js/core/mathitem.d.ts","../../node_modules/mathjax-full/js/util/prioritizedlist.d.ts","../../node_modules/mathjax-full/js/util/functionlist.d.ts","../../node_modules/mathjax-full/js/core/inputjax.d.ts","../../node_modules/mathjax-full/js/core/outputjax.d.ts","../../node_modules/mathjax-full/js/util/linkedlist.d.ts","../../node_modules/mathjax-full/js/core/mathlist.d.ts","../../node_modules/mathjax-full/js/util/bitfield.d.ts","../../node_modules/mathjax-full/js/core/mathdocument.d.ts","../../node_modules/mathjax-full/js/core/handler.d.ts","../../node_modules/mathjax-full/js/util/stylelist.d.ts","../../node_modules/mathjax-full/js/output/common/fontdata.d.ts","../../node_modules/mathjax-full/js/core/tree/wrapperfactory.d.ts","../../node_modules/mathjax-full/js/core/tree/wrapper.d.ts","../../node_modules/mathjax-full/js/util/styles.d.ts","../../node_modules/mathjax-full/js/output/common/wrapperfactory.d.ts","../../node_modules/mathjax-full/js/util/bbox.d.ts","../../node_modules/mathjax-full/js/output/common/wrapper.d.ts","../../node_modules/mathjax-full/js/output/common/outputjax.d.ts","../../node_modules/mathjax-full/js/core/findmath.d.ts","../../node_modules/mathjax-full/js/input/tex/findtex.d.ts","../../node_modules/mathjax-full/js/input/tex/texerror.d.ts","../../node_modules/mathjax-full/js/input/tex/stackitem.d.ts","../../node_modules/mathjax-full/js/input/tex/stackitemfactory.d.ts","../../node_modules/mathjax-full/js/input/tex/tags.d.ts","../../node_modules/mathjax-full/js/input/tex/symbol.d.ts","../../node_modules/mathjax-full/js/input/tex/stack.d.ts","../../node_modules/mathjax-full/js/input/tex/texparser.d.ts","../../node_modules/mathjax-full/js/input/tex/types.d.ts","../../node_modules/mathjax-full/js/input/tex/symbolmap.d.ts","../../node_modules/mathjax-full/js/input/tex/maphandler.d.ts","../../node_modules/mathjax-full/js/input/tex/nodefactory.d.ts","../../node_modules/mathjax-full/js/input/tex/configuration.d.ts","../../node_modules/mathjax-full/js/input/tex/parseoptions.d.ts","../../node_modules/mathjax-full/js/input/tex/base/basemappings.d.ts","../../node_modules/mathjax-full/js/input/tex/base/baseconfiguration.d.ts","../../node_modules/mathjax-full/js/input/tex.d.ts","../../node_modules/mathjax-full/js/components/startup.d.ts","../../node_modules/better-react-mathjax/mathjax3.d.ts","../../node_modules/better-react-mathjax/mathjaxcontext/mathjaxcontext.d.ts","../../node_modules/better-react-mathjax/mathjaxcontext/index.d.ts","../../node_modules/better-react-mathjax/mathjax/mathjax.d.ts","../../node_modules/better-react-mathjax/mathjax/index.d.ts","../../node_modules/better-react-mathjax/index.d.ts","../../node_modules/@types/hast/index.d.ts","../../node_modules/@shikijs/vscode-textmate/dist/index.d.ts","../../node_modules/@shikijs/types/dist/index.d.mts","../../node_modules/shiki/dist/langs.d.mts","../../node_modules/stringify-entities/lib/util/format-smart.d.ts","../../node_modules/stringify-entities/lib/core.d.ts","../../node_modules/stringify-entities/lib/index.d.ts","../../node_modules/stringify-entities/index.d.ts","../../node_modules/property-information/lib/util/info.d.ts","../../node_modules/property-information/lib/find.d.ts","../../node_modules/property-information/lib/hast-to-react.d.ts","../../node_modules/property-information/lib/normalize.d.ts","../../node_modules/property-information/index.d.ts","../../node_modules/hast-util-to-html/lib/index.d.ts","../../node_modules/hast-util-to-html/index.d.ts","../../node_modules/@shikijs/core/dist/index.d.mts","../../node_modules/shiki/dist/themes.d.mts","../../node_modules/shiki/dist/bundle-full.d.mts","../../node_modules/@shikijs/core/dist/types.d.mts","../../node_modules/shiki/dist/types.d.mts","../../node_modules/oniguruma-to-es/dist/esm/subclass.d.ts","../../node_modules/oniguruma-to-es/dist/esm/index.d.ts","../../node_modules/@shikijs/engine-javascript/dist/shared/engine-javascript.cdednu-m.d.mts","../../node_modules/@shikijs/engine-javascript/dist/engine-raw.d.mts","../../node_modules/@shikijs/engine-javascript/dist/index.d.mts","../../node_modules/@shikijs/engine-oniguruma/dist/chunk-index.d.d.mts","../../node_modules/@shikijs/engine-oniguruma/dist/index.d.mts","../../node_modules/shiki/dist/index.d.mts","../../node_modules/vfile-message/lib/index.d.ts","../../node_modules/vfile-message/index.d.ts","../../node_modules/vfile/lib/index.d.ts","../../node_modules/vfile/index.d.ts","../../node_modules/unified/lib/callable-instance.d.ts","../../node_modules/trough/lib/index.d.ts","../../node_modules/trough/index.d.ts","../../node_modules/unified/lib/index.d.ts","../../node_modules/unified/index.d.ts","../../node_modules/rehype-pretty-code/dist/index.d.ts","../../node_modules/nextra/dist/server/schemas.d.ts","../../node_modules/@types/estree/index.d.ts","../../node_modules/@types/estree-jsx/index.d.ts","../../node_modules/source-map/source-map.d.ts","../../node_modules/hast-util-to-estree/lib/handlers/comment.d.ts","../../node_modules/hast-util-to-estree/lib/handlers/element.d.ts","../../node_modules/micromark-util-types/index.d.ts","../../node_modules/mdast-util-from-markdown/lib/types.d.ts","../../node_modules/mdast-util-from-markdown/lib/index.d.ts","../../node_modules/mdast-util-from-markdown/index.d.ts","../../node_modules/mdast-util-to-markdown/lib/types.d.ts","../../node_modules/mdast-util-to-markdown/lib/index.d.ts","../../node_modules/mdast-util-to-markdown/lib/handle/blockquote.d.ts","../../node_modules/mdast-util-to-markdown/lib/handle/break.d.ts","../../node_modules/mdast-util-to-markdown/lib/handle/code.d.ts","../../node_modules/mdast-util-to-markdown/lib/handle/definition.d.ts","../../node_modules/mdast-util-to-markdown/lib/handle/emphasis.d.ts","../../node_modules/mdast-util-to-markdown/lib/handle/heading.d.ts","../../node_modules/mdast-util-to-markdown/lib/handle/html.d.ts","../../node_modules/mdast-util-to-markdown/lib/handle/image.d.ts","../../node_modules/mdast-util-to-markdown/lib/handle/image-reference.d.ts","../../node_modules/mdast-util-to-markdown/lib/handle/inline-code.d.ts","../../node_modules/mdast-util-to-markdown/lib/handle/link.d.ts","../../node_modules/mdast-util-to-markdown/lib/handle/link-reference.d.ts","../../node_modules/mdast-util-to-markdown/lib/handle/list.d.ts","../../node_modules/mdast-util-to-markdown/lib/handle/list-item.d.ts","../../node_modules/mdast-util-to-markdown/lib/handle/paragraph.d.ts","../../node_modules/mdast-util-to-markdown/lib/handle/root.d.ts","../../node_modules/mdast-util-to-markdown/lib/handle/strong.d.ts","../../node_modules/mdast-util-to-markdown/lib/handle/text.d.ts","../../node_modules/mdast-util-to-markdown/lib/handle/thematic-break.d.ts","../../node_modules/mdast-util-to-markdown/lib/handle/index.d.ts","../../node_modules/mdast-util-to-markdown/index.d.ts","../../node_modules/mdast-util-mdx-expression/lib/index.d.ts","../../node_modules/mdast-util-mdx-expression/index.d.ts","../../node_modules/hast-util-to-estree/lib/handlers/mdx-expression.d.ts","../../node_modules/mdast-util-mdx-jsx/lib/index.d.ts","../../node_modules/mdast-util-mdx-jsx/index.d.ts","../../node_modules/hast-util-to-estree/lib/handlers/mdx-jsx-element.d.ts","../../node_modules/mdast-util-mdxjs-esm/lib/index.d.ts","../../node_modules/mdast-util-mdxjs-esm/index.d.ts","../../node_modules/hast-util-to-estree/lib/handlers/mdxjs-esm.d.ts","../../node_modules/hast-util-to-estree/lib/handlers/root.d.ts","../../node_modules/hast-util-to-estree/lib/handlers/text.d.ts","../../node_modules/hast-util-to-estree/lib/handlers/index.d.ts","../../node_modules/hast-util-to-estree/lib/index.d.ts","../../node_modules/hast-util-to-estree/lib/state.d.ts","../../node_modules/hast-util-to-estree/index.d.ts","../../node_modules/rehype-recma/lib/index.d.ts","../../node_modules/rehype-recma/index.d.ts","../../node_modules/mdast-util-to-hast/lib/state.d.ts","../../node_modules/mdast-util-to-hast/lib/footer.d.ts","../../node_modules/mdast-util-to-hast/lib/handlers/blockquote.d.ts","../../node_modules/mdast-util-to-hast/lib/handlers/break.d.ts","../../node_modules/mdast-util-to-hast/lib/handlers/code.d.ts","../../node_modules/mdast-util-to-hast/lib/handlers/delete.d.ts","../../node_modules/mdast-util-to-hast/lib/handlers/emphasis.d.ts","../../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.d.ts","../../node_modules/mdast-util-to-hast/lib/handlers/heading.d.ts","../../node_modules/mdast-util-to-hast/lib/handlers/html.d.ts","../../node_modules/mdast-util-to-hast/lib/handlers/image-reference.d.ts","../../node_modules/mdast-util-to-hast/lib/handlers/image.d.ts","../../node_modules/mdast-util-to-hast/lib/handlers/inline-code.d.ts","../../node_modules/mdast-util-to-hast/lib/handlers/link-reference.d.ts","../../node_modules/mdast-util-to-hast/lib/handlers/link.d.ts","../../node_modules/mdast-util-to-hast/lib/handlers/list-item.d.ts","../../node_modules/mdast-util-to-hast/lib/handlers/list.d.ts","../../node_modules/mdast-util-to-hast/lib/handlers/paragraph.d.ts","../../node_modules/mdast-util-to-hast/lib/handlers/root.d.ts","../../node_modules/mdast-util-to-hast/lib/handlers/strong.d.ts","../../node_modules/mdast-util-to-hast/lib/handlers/table.d.ts","../../node_modules/mdast-util-to-hast/lib/handlers/table-cell.d.ts","../../node_modules/mdast-util-to-hast/lib/handlers/table-row.d.ts","../../node_modules/mdast-util-to-hast/lib/handlers/text.d.ts","../../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.d.ts","../../node_modules/mdast-util-to-hast/lib/handlers/index.d.ts","../../node_modules/mdast-util-to-hast/lib/index.d.ts","../../node_modules/mdast-util-to-hast/index.d.ts","../../node_modules/remark-rehype/lib/index.d.ts","../../node_modules/remark-rehype/index.d.ts","../../node_modules/@mdx-js/mdx/lib/core.d.ts","../../node_modules/@mdx-js/mdx/lib/node-types.d.ts","../../node_modules/@mdx-js/mdx/lib/compile.d.ts","../../node_modules/hast-util-to-jsx-runtime/lib/types.d.ts","../../node_modules/hast-util-to-jsx-runtime/lib/index.d.ts","../../node_modules/hast-util-to-jsx-runtime/index.d.ts","../../node_modules/@types/mdx/types.d.ts","../../node_modules/@mdx-js/mdx/lib/util/resolve-evaluate-options.d.ts","../../node_modules/@mdx-js/mdx/lib/evaluate.d.ts","../../node_modules/@mdx-js/mdx/lib/run.d.ts","../../node_modules/@mdx-js/mdx/index.d.ts","../../node_modules/katex/types/katex.d.ts","../../node_modules/rehype-katex/lib/index.d.ts","../../node_modules/rehype-katex/index.d.ts","../../node_modules/nextra/dist/types.generated.d.ts","../../node_modules/nextra/dist/types.d.ts","../../node_modules/nextra/dist/server/index.d.ts","./next.config.ts","../../node_modules/motion-utils/dist/index.d.ts","../../node_modules/motion-dom/dist/index.d.ts","../../node_modules/framer-motion/dist/types.d-bjcrxcew.d.ts","../../node_modules/framer-motion/dist/types/index.d.ts","./src/components/motion/fadeup.tsx","./src/components/motion/heroparallax.tsx","./src/components/motion/tiltcard.tsx","./src/components/motion/index.ts","../../node_modules/@types/three/src/constants.d.ts","../../node_modules/@types/three/src/core/layers.d.ts","../../node_modules/@types/three/src/math/vector2.d.ts","../../node_modules/@types/three/src/math/matrix3.d.ts","../../node_modules/@types/three/src/core/bufferattribute.d.ts","../../node_modules/@types/three/src/core/interleavedbuffer.d.ts","../../node_modules/@types/three/src/core/interleavedbufferattribute.d.ts","../../node_modules/@types/three/src/math/quaternion.d.ts","../../node_modules/@types/three/src/math/euler.d.ts","../../node_modules/@types/three/src/math/matrix4.d.ts","../../node_modules/@types/three/src/math/vector4.d.ts","../../node_modules/@types/three/src/cameras/camera.d.ts","../../node_modules/@types/three/src/math/colormanagement.d.ts","../../node_modules/@types/three/src/math/color.d.ts","../../node_modules/@types/three/src/math/cylindrical.d.ts","../../node_modules/@types/three/src/math/spherical.d.ts","../../node_modules/@types/three/src/math/vector3.d.ts","../../node_modules/@types/three/src/objects/bone.d.ts","../../node_modules/@types/three/src/math/interpolant.d.ts","../../node_modules/@types/three/src/math/interpolants/cubicinterpolant.d.ts","../../node_modules/@types/three/src/math/interpolants/discreteinterpolant.d.ts","../../node_modules/@types/three/src/math/interpolants/linearinterpolant.d.ts","../../node_modules/@types/three/src/animation/keyframetrack.d.ts","../../node_modules/@types/three/src/animation/animationclip.d.ts","../../node_modules/@types/three/src/extras/core/curve.d.ts","../../node_modules/@types/three/src/extras/core/curvepath.d.ts","../../node_modules/@types/three/src/extras/core/path.d.ts","../../node_modules/@types/three/src/extras/core/shape.d.ts","../../node_modules/@types/three/src/math/line3.d.ts","../../node_modules/@types/three/src/math/sphere.d.ts","../../node_modules/@types/three/src/math/plane.d.ts","../../node_modules/@types/three/src/math/triangle.d.ts","../../node_modules/@types/three/src/math/box3.d.ts","../../node_modules/@types/three/src/renderers/common/storagebufferattribute.d.ts","../../node_modules/@types/three/src/renderers/common/indirectstoragebufferattribute.d.ts","../../node_modules/@types/three/src/core/eventdispatcher.d.ts","../../node_modules/@types/three/src/core/glbufferattribute.d.ts","../../node_modules/@types/three/src/core/buffergeometry.d.ts","../../node_modules/@types/three/src/objects/group.d.ts","../../node_modules/@types/three/src/textures/depthtexture.d.ts","../../node_modules/@types/three/src/core/rendertarget.d.ts","../../node_modules/@types/three/src/textures/compressedtexture.d.ts","../../node_modules/@types/three/src/textures/cubetexture.d.ts","../../node_modules/@types/three/src/textures/source.d.ts","../../node_modules/@types/three/src/textures/texture.d.ts","../../node_modules/@types/three/src/materials/linebasicmaterial.d.ts","../../node_modules/@types/three/src/materials/linedashedmaterial.d.ts","../../node_modules/@types/three/src/materials/meshbasicmaterial.d.ts","../../node_modules/@types/three/src/materials/meshdepthmaterial.d.ts","../../node_modules/@types/three/src/materials/meshdistancematerial.d.ts","../../node_modules/@types/three/src/materials/meshlambertmaterial.d.ts","../../node_modules/@types/three/src/materials/meshmatcapmaterial.d.ts","../../node_modules/@types/three/src/materials/meshnormalmaterial.d.ts","../../node_modules/@types/three/src/materials/meshphongmaterial.d.ts","../../node_modules/@types/three/src/materials/meshstandardmaterial.d.ts","../../node_modules/@types/three/src/materials/meshphysicalmaterial.d.ts","../../node_modules/@types/three/src/materials/meshtoonmaterial.d.ts","../../node_modules/@types/three/src/materials/pointsmaterial.d.ts","../../node_modules/@types/three/src/core/uniform.d.ts","../../node_modules/@types/three/src/core/uniformsgroup.d.ts","../../node_modules/@types/three/src/renderers/shaders/uniformslib.d.ts","../../node_modules/@types/three/src/materials/shadermaterial.d.ts","../../node_modules/@types/three/src/materials/rawshadermaterial.d.ts","../../node_modules/@types/three/src/materials/shadowmaterial.d.ts","../../node_modules/@types/three/src/materials/spritematerial.d.ts","../../node_modules/@types/three/src/materials/materials.d.ts","../../node_modules/@types/three/src/objects/sprite.d.ts","../../node_modules/@types/three/src/math/frustum.d.ts","../../node_modules/@types/three/src/renderers/webglrendertarget.d.ts","../../node_modules/@types/three/src/lights/lightshadow.d.ts","../../node_modules/@types/three/src/lights/light.d.ts","../../node_modules/@types/three/src/scenes/fog.d.ts","../../node_modules/@types/three/src/scenes/fogexp2.d.ts","../../node_modules/@types/three/src/scenes/scene.d.ts","../../node_modules/@types/three/src/math/box2.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglcapabilities.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglextensions.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglproperties.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglstate.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglutils.d.ts","../../node_modules/@types/three/src/renderers/webgl/webgltextures.d.ts","../../node_modules/@types/three/src/renderers/webgl/webgluniforms.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglprogram.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglinfo.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglrenderlists.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglobjects.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglshadowmap.d.ts","../../node_modules/@types/webxr/index.d.ts","../../node_modules/@types/three/src/cameras/perspectivecamera.d.ts","../../node_modules/@types/three/src/cameras/arraycamera.d.ts","../../node_modules/@types/three/src/objects/mesh.d.ts","../../node_modules/@webgpu/types/dist/index.d.ts","../../node_modules/@types/three/src/textures/externaltexture.d.ts","../../node_modules/@types/three/src/renderers/webxr/webxrcontroller.d.ts","../../node_modules/@types/three/src/renderers/webxr/webxrmanager.d.ts","../../node_modules/@types/three/src/renderers/webglrenderer.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglattributes.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglbindingstates.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglclipping.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglcubemaps.d.ts","../../node_modules/@types/three/src/renderers/webgl/webgllights.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglprograms.d.ts","../../node_modules/@types/three/src/materials/material.d.ts","../../node_modules/@types/three/src/textures/datatexture.d.ts","../../node_modules/@types/three/src/objects/skeleton.d.ts","../../node_modules/@types/three/src/math/ray.d.ts","../../node_modules/@types/three/src/core/raycaster.d.ts","../../node_modules/@types/three/src/core/object3d.d.ts","../../node_modules/@types/three/src/animation/animationobjectgroup.d.ts","../../node_modules/@types/three/src/animation/animationmixer.d.ts","../../node_modules/@types/three/src/animation/animationaction.d.ts","../../node_modules/@types/three/src/animation/animationutils.d.ts","../../node_modules/@types/three/src/animation/propertybinding.d.ts","../../node_modules/@types/three/src/animation/propertymixer.d.ts","../../node_modules/@types/three/src/animation/tracks/booleankeyframetrack.d.ts","../../node_modules/@types/three/src/animation/tracks/colorkeyframetrack.d.ts","../../node_modules/@types/three/src/animation/tracks/numberkeyframetrack.d.ts","../../node_modules/@types/three/src/animation/tracks/quaternionkeyframetrack.d.ts","../../node_modules/@types/three/src/animation/tracks/stringkeyframetrack.d.ts","../../node_modules/@types/three/src/animation/tracks/vectorkeyframetrack.d.ts","../../node_modules/@types/three/src/audio/audiocontext.d.ts","../../node_modules/@types/three/src/audio/audiolistener.d.ts","../../node_modules/@types/three/src/audio/audio.d.ts","../../node_modules/@types/three/src/audio/audioanalyser.d.ts","../../node_modules/@types/three/src/audio/positionalaudio.d.ts","../../node_modules/@types/three/src/renderers/webglcuberendertarget.d.ts","../../node_modules/@types/three/src/cameras/cubecamera.d.ts","../../node_modules/@types/three/src/cameras/orthographiccamera.d.ts","../../node_modules/@types/three/src/cameras/stereocamera.d.ts","../../node_modules/@types/three/src/core/clock.d.ts","../../node_modules/@types/three/src/core/instancedbufferattribute.d.ts","../../node_modules/@types/three/src/core/instancedbuffergeometry.d.ts","../../node_modules/@types/three/src/core/instancedinterleavedbuffer.d.ts","../../node_modules/@types/three/src/core/rendertarget3d.d.ts","../../node_modules/@types/three/src/core/timer.d.ts","../../node_modules/@types/three/src/extras/controls.d.ts","../../node_modules/@types/three/src/extras/core/shapepath.d.ts","../../node_modules/@types/three/src/extras/curves/ellipsecurve.d.ts","../../node_modules/@types/three/src/extras/curves/arccurve.d.ts","../../node_modules/@types/three/src/extras/curves/catmullromcurve3.d.ts","../../node_modules/@types/three/src/extras/curves/cubicbeziercurve.d.ts","../../node_modules/@types/three/src/extras/curves/cubicbeziercurve3.d.ts","../../node_modules/@types/three/src/extras/curves/linecurve.d.ts","../../node_modules/@types/three/src/extras/curves/linecurve3.d.ts","../../node_modules/@types/three/src/extras/curves/quadraticbeziercurve.d.ts","../../node_modules/@types/three/src/extras/curves/quadraticbeziercurve3.d.ts","../../node_modules/@types/three/src/extras/curves/splinecurve.d.ts","../../node_modules/@types/three/src/extras/curves/curves.d.ts","../../node_modules/@types/three/src/extras/datautils.d.ts","../../node_modules/@types/three/src/extras/imageutils.d.ts","../../node_modules/@types/three/src/extras/shapeutils.d.ts","../../node_modules/@types/three/src/extras/textureutils.d.ts","../../node_modules/@types/three/src/geometries/boxgeometry.d.ts","../../node_modules/@types/three/src/geometries/capsulegeometry.d.ts","../../node_modules/@types/three/src/geometries/circlegeometry.d.ts","../../node_modules/@types/three/src/geometries/cylindergeometry.d.ts","../../node_modules/@types/three/src/geometries/conegeometry.d.ts","../../node_modules/@types/three/src/geometries/polyhedrongeometry.d.ts","../../node_modules/@types/three/src/geometries/dodecahedrongeometry.d.ts","../../node_modules/@types/three/src/geometries/edgesgeometry.d.ts","../../node_modules/@types/three/src/geometries/extrudegeometry.d.ts","../../node_modules/@types/three/src/geometries/icosahedrongeometry.d.ts","../../node_modules/@types/three/src/geometries/lathegeometry.d.ts","../../node_modules/@types/three/src/geometries/octahedrongeometry.d.ts","../../node_modules/@types/three/src/geometries/planegeometry.d.ts","../../node_modules/@types/three/src/geometries/ringgeometry.d.ts","../../node_modules/@types/three/src/geometries/shapegeometry.d.ts","../../node_modules/@types/three/src/geometries/spheregeometry.d.ts","../../node_modules/@types/three/src/geometries/tetrahedrongeometry.d.ts","../../node_modules/@types/three/src/geometries/torusgeometry.d.ts","../../node_modules/@types/three/src/geometries/torusknotgeometry.d.ts","../../node_modules/@types/three/src/geometries/tubegeometry.d.ts","../../node_modules/@types/three/src/geometries/wireframegeometry.d.ts","../../node_modules/@types/three/src/geometries/geometries.d.ts","../../node_modules/@types/three/src/objects/line.d.ts","../../node_modules/@types/three/src/helpers/arrowhelper.d.ts","../../node_modules/@types/three/src/objects/linesegments.d.ts","../../node_modules/@types/three/src/helpers/axeshelper.d.ts","../../node_modules/@types/three/src/helpers/box3helper.d.ts","../../node_modules/@types/three/src/helpers/boxhelper.d.ts","../../node_modules/@types/three/src/helpers/camerahelper.d.ts","../../node_modules/@types/three/src/lights/directionallightshadow.d.ts","../../node_modules/@types/three/src/lights/directionallight.d.ts","../../node_modules/@types/three/src/helpers/directionallighthelper.d.ts","../../node_modules/@types/three/src/helpers/gridhelper.d.ts","../../node_modules/@types/three/src/lights/hemispherelight.d.ts","../../node_modules/@types/three/src/helpers/hemispherelighthelper.d.ts","../../node_modules/@types/three/src/helpers/planehelper.d.ts","../../node_modules/@types/three/src/lights/pointlightshadow.d.ts","../../node_modules/@types/three/src/lights/pointlight.d.ts","../../node_modules/@types/three/src/helpers/pointlighthelper.d.ts","../../node_modules/@types/three/src/helpers/polargridhelper.d.ts","../../node_modules/@types/three/src/objects/skinnedmesh.d.ts","../../node_modules/@types/three/src/helpers/skeletonhelper.d.ts","../../node_modules/@types/three/src/helpers/spotlighthelper.d.ts","../../node_modules/@types/three/src/lights/ambientlight.d.ts","../../node_modules/@types/three/src/math/sphericalharmonics3.d.ts","../../node_modules/@types/three/src/lights/lightprobe.d.ts","../../node_modules/@types/three/src/lights/rectarealight.d.ts","../../node_modules/@types/three/src/lights/spotlightshadow.d.ts","../../node_modules/@types/three/src/lights/spotlight.d.ts","../../node_modules/@types/three/src/loaders/loadingmanager.d.ts","../../node_modules/@types/three/src/loaders/loader.d.ts","../../node_modules/@types/three/src/loaders/animationloader.d.ts","../../node_modules/@types/three/src/loaders/audioloader.d.ts","../../node_modules/@types/three/src/loaders/buffergeometryloader.d.ts","../../node_modules/@types/three/src/loaders/cache.d.ts","../../node_modules/@types/three/src/loaders/compressedtextureloader.d.ts","../../node_modules/@types/three/src/loaders/cubetextureloader.d.ts","../../node_modules/@types/three/src/loaders/datatextureloader.d.ts","../../node_modules/@types/three/src/loaders/fileloader.d.ts","../../node_modules/@types/three/src/loaders/imagebitmaploader.d.ts","../../node_modules/@types/three/src/loaders/imageloader.d.ts","../../node_modules/@types/three/src/loaders/loaderutils.d.ts","../../node_modules/@types/three/src/loaders/materialloader.d.ts","../../node_modules/@types/three/src/loaders/objectloader.d.ts","../../node_modules/@types/three/src/loaders/textureloader.d.ts","../../node_modules/@types/three/src/math/frustumarray.d.ts","../../node_modules/@types/three/src/math/interpolants/quaternionlinearinterpolant.d.ts","../../node_modules/@types/three/src/math/mathutils.d.ts","../../node_modules/@types/three/src/math/matrix2.d.ts","../../node_modules/@types/three/src/objects/batchedmesh.d.ts","../../node_modules/@types/three/src/objects/instancedmesh.d.ts","../../node_modules/@types/three/src/objects/lineloop.d.ts","../../node_modules/@types/three/src/objects/lod.d.ts","../../node_modules/@types/three/src/objects/points.d.ts","../../node_modules/@types/three/src/textures/data3dtexture.d.ts","../../node_modules/@types/three/src/renderers/webgl3drendertarget.d.ts","../../node_modules/@types/three/src/textures/dataarraytexture.d.ts","../../node_modules/@types/three/src/renderers/webglarrayrendertarget.d.ts","../../node_modules/@types/three/src/textures/canvastexture.d.ts","../../node_modules/@types/three/src/textures/compressedarraytexture.d.ts","../../node_modules/@types/three/src/textures/compressedcubetexture.d.ts","../../node_modules/@types/three/src/textures/framebuffertexture.d.ts","../../node_modules/@types/three/src/textures/videotexture.d.ts","../../node_modules/@types/three/src/textures/videoframetexture.d.ts","../../node_modules/@types/three/src/utils.d.ts","../../node_modules/@types/three/src/three.core.d.ts","../../node_modules/@types/three/src/extras/pmremgenerator.d.ts","../../node_modules/@types/three/src/renderers/shaders/shaderchunk.d.ts","../../node_modules/@types/three/src/renderers/shaders/shaderlib.d.ts","../../node_modules/@types/three/src/renderers/shaders/uniformsutils.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglbufferrenderer.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglcubeuvmaps.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglgeometries.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglindexedbufferrenderer.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglshader.d.ts","../../node_modules/@types/three/src/renderers/webxr/webxrdepthsensing.d.ts","../../node_modules/@types/three/src/three.d.ts","../../node_modules/@types/three/build/three.module.d.ts","../../node_modules/utility-types/dist/aliases-and-guards.d.ts","../../node_modules/utility-types/dist/mapped-types.d.ts","../../node_modules/utility-types/dist/utility-types.d.ts","../../node_modules/utility-types/dist/functional-helpers.d.ts","../../node_modules/utility-types/dist/index.d.ts","../../node_modules/@types/react-reconciler/index.d.ts","../../node_modules/zustand/esm/vanilla.d.mts","../../node_modules/zustand/esm/react.d.mts","../../node_modules/zustand/esm/index.d.mts","../../node_modules/zustand/esm/traditional.d.mts","../../node_modules/@react-three/fiber/dist/declarations/src/core/store.d.ts","../../node_modules/@react-three/fiber/dist/declarations/src/core/reconciler.d.ts","../../node_modules/@react-three/fiber/dist/declarations/src/core/utils.d.ts","../../node_modules/@react-three/fiber/dist/declarations/src/core/events.d.ts","../../node_modules/@react-three/fiber/dist/declarations/src/core/hooks.d.ts","../../node_modules/@react-three/fiber/dist/declarations/src/core/loop.d.ts","../../node_modules/@react-three/fiber/dist/declarations/src/core/renderer.d.ts","../../node_modules/@react-three/fiber/dist/declarations/src/core/index.d.ts","../../node_modules/@react-three/fiber/dist/declarations/src/three-types.d.ts","../../node_modules/react-use-measure/dist/index.d.ts","../../node_modules/@react-three/fiber/dist/declarations/src/web/canvas.d.ts","../../node_modules/@react-three/fiber/dist/declarations/src/web/events.d.ts","../../node_modules/@react-three/fiber/dist/declarations/src/index.d.ts","../../node_modules/@react-three/fiber/dist/react-three-fiber.cjs.d.ts","../../node_modules/@react-three/drei/helpers/ts-utils.d.ts","../../node_modules/@react-three/drei/web/html.d.ts","../../node_modules/@react-three/drei/web/cycleraycast.d.ts","../../node_modules/@react-three/drei/web/usecursor.d.ts","../../node_modules/@react-three/drei/web/loader.d.ts","../../node_modules/@react-three/drei/web/scrollcontrols.d.ts","../../node_modules/@react-three/drei/web/presentationcontrols.d.ts","../../node_modules/@react-three/drei/web/keyboardcontrols.d.ts","../../node_modules/@react-three/drei/web/select.d.ts","../../node_modules/@react-three/drei/core/billboard.d.ts","../../node_modules/@react-three/drei/core/screenspace.d.ts","../../node_modules/@react-three/drei/core/screensizer.d.ts","../../node_modules/three-stdlib/misc/md2charactercomplex.d.ts","../../node_modules/three-stdlib/misc/convexobjectbreaker.d.ts","../../node_modules/three-stdlib/misc/morphblendmesh.d.ts","../../node_modules/three-stdlib/misc/gpucomputationrenderer.d.ts","../../node_modules/three-stdlib/misc/gyroscope.d.ts","../../node_modules/three-stdlib/misc/morphanimmesh.d.ts","../../node_modules/three-stdlib/misc/rollercoaster.d.ts","../../node_modules/three-stdlib/misc/timer.d.ts","../../node_modules/three-stdlib/misc/webgl.d.ts","../../node_modules/three-stdlib/misc/md2character.d.ts","../../node_modules/three-stdlib/misc/volume.d.ts","../../node_modules/three-stdlib/misc/volumeslice.d.ts","../../node_modules/three-stdlib/misc/tubepainter.d.ts","../../node_modules/three-stdlib/misc/progressivelightmap.d.ts","../../node_modules/three-stdlib/renderers/css2drenderer.d.ts","../../node_modules/three-stdlib/renderers/css3drenderer.d.ts","../../node_modules/three-stdlib/renderers/projector.d.ts","../../node_modules/three-stdlib/renderers/svgrenderer.d.ts","../../node_modules/three-stdlib/textures/flakestexture.d.ts","../../node_modules/three-stdlib/modifiers/curvemodifier.d.ts","../../node_modules/three-stdlib/modifiers/simplifymodifier.d.ts","../../node_modules/three-stdlib/modifiers/edgesplitmodifier.d.ts","../../node_modules/three-stdlib/modifiers/tessellatemodifier.d.ts","../../node_modules/three-stdlib/exporters/gltfexporter.d.ts","../../node_modules/three-stdlib/exporters/usdzexporter.d.ts","../../node_modules/three-stdlib/exporters/plyexporter.d.ts","../../node_modules/three-stdlib/exporters/dracoexporter.d.ts","../../node_modules/three-stdlib/exporters/colladaexporter.d.ts","../../node_modules/three-stdlib/exporters/mmdexporter.d.ts","../../node_modules/three-stdlib/exporters/stlexporter.d.ts","../../node_modules/three-stdlib/exporters/objexporter.d.ts","../../node_modules/three-stdlib/environments/roomenvironment.d.ts","../../node_modules/three-stdlib/animation/animationclipcreator.d.ts","../../node_modules/three-stdlib/animation/ccdiksolver.d.ts","../../node_modules/three-stdlib/animation/mmdphysics.d.ts","../../node_modules/three-stdlib/animation/mmdanimationhelper.d.ts","../../node_modules/three-stdlib/objects/batchedmesh.d.ts","../../node_modules/three-stdlib/types/shared.d.ts","../../node_modules/three-stdlib/objects/reflector.d.ts","../../node_modules/three-stdlib/objects/refractor.d.ts","../../node_modules/three-stdlib/objects/shadowmesh.d.ts","../../node_modules/three-stdlib/objects/lensflare.d.ts","../../node_modules/three-stdlib/objects/water.d.ts","../../node_modules/three-stdlib/objects/marchingcubes.d.ts","../../node_modules/three-stdlib/geometries/lightningstrike.d.ts","../../node_modules/three-stdlib/objects/lightningstorm.d.ts","../../node_modules/three-stdlib/objects/reflectorrtt.d.ts","../../node_modules/three-stdlib/objects/reflectorforssrpass.d.ts","../../node_modules/three-stdlib/objects/sky.d.ts","../../node_modules/three-stdlib/objects/water2.d.ts","../../node_modules/three-stdlib/objects/groundprojectedenv.d.ts","../../node_modules/three-stdlib/utils/sceneutils.d.ts","../../node_modules/three-stdlib/utils/uvsdebug.d.ts","../../node_modules/three-stdlib/utils/geometryutils.d.ts","../../node_modules/three-stdlib/utils/roughnessmipmapper.d.ts","../../node_modules/three-stdlib/utils/skeletonutils.d.ts","../../node_modules/three-stdlib/utils/shadowmapviewer.d.ts","../../node_modules/three-stdlib/utils/buffergeometryutils.d.ts","../../node_modules/three-stdlib/utils/geometrycompressionutils.d.ts","../../node_modules/three-stdlib/shaders/bokehshader2.d.ts","../../node_modules/three-stdlib/cameras/cinematiccamera.d.ts","../../node_modules/three-stdlib/math/convexhull.d.ts","../../node_modules/three-stdlib/math/meshsurfacesampler.d.ts","../../node_modules/three-stdlib/math/simplexnoise.d.ts","../../node_modules/three-stdlib/math/obb.d.ts","../../node_modules/three-stdlib/math/capsule.d.ts","../../node_modules/three-stdlib/math/colorconverter.d.ts","../../node_modules/three-stdlib/math/improvednoise.d.ts","../../node_modules/three-stdlib/math/octree.d.ts","../../node_modules/three-stdlib/math/lut.d.ts","../../node_modules/three-stdlib/controls/eventdispatcher.d.ts","../../node_modules/three-stdlib/controls/experimental/cameracontrols.d.ts","../../node_modules/three-stdlib/controls/firstpersoncontrols.d.ts","../../node_modules/three-stdlib/controls/transformcontrols.d.ts","../../node_modules/three-stdlib/controls/dragcontrols.d.ts","../../node_modules/three-stdlib/controls/pointerlockcontrols.d.ts","../../node_modules/three-stdlib/controls/standardcontrolseventmap.d.ts","../../node_modules/three-stdlib/controls/deviceorientationcontrols.d.ts","../../node_modules/three-stdlib/controls/trackballcontrols.d.ts","../../node_modules/three-stdlib/controls/orbitcontrols.d.ts","../../node_modules/three-stdlib/controls/arcballcontrols.d.ts","../../node_modules/three-stdlib/controls/flycontrols.d.ts","../../node_modules/three-stdlib/postprocessing/pass.d.ts","../../node_modules/three-stdlib/shaders/types.d.ts","../../node_modules/three-stdlib/postprocessing/shaderpass.d.ts","../../node_modules/three-stdlib/postprocessing/lutpass.d.ts","../../node_modules/three-stdlib/postprocessing/clearpass.d.ts","../../node_modules/three-stdlib/shaders/digitalglitch.d.ts","../../node_modules/three-stdlib/postprocessing/glitchpass.d.ts","../../node_modules/three-stdlib/postprocessing/halftonepass.d.ts","../../node_modules/three-stdlib/postprocessing/smaapass.d.ts","../../node_modules/three-stdlib/shaders/filmshader.d.ts","../../node_modules/three-stdlib/postprocessing/filmpass.d.ts","../../node_modules/three-stdlib/postprocessing/outlinepass.d.ts","../../node_modules/three-stdlib/postprocessing/ssaopass.d.ts","../../node_modules/three-stdlib/postprocessing/savepass.d.ts","../../node_modules/three-stdlib/postprocessing/bokehpass.d.ts","../../node_modules/three-stdlib/postprocessing/texturepass.d.ts","../../node_modules/three-stdlib/postprocessing/adaptivetonemappingpass.d.ts","../../node_modules/three-stdlib/postprocessing/unrealbloompass.d.ts","../../node_modules/three-stdlib/postprocessing/cubetexturepass.d.ts","../../node_modules/three-stdlib/postprocessing/saopass.d.ts","../../node_modules/three-stdlib/shaders/afterimageshader.d.ts","../../node_modules/three-stdlib/postprocessing/afterimagepass.d.ts","../../node_modules/three-stdlib/postprocessing/maskpass.d.ts","../../node_modules/three-stdlib/postprocessing/effectcomposer.d.ts","../../node_modules/three-stdlib/shaders/dotscreenshader.d.ts","../../node_modules/three-stdlib/postprocessing/dotscreenpass.d.ts","../../node_modules/three-stdlib/postprocessing/ssrpass.d.ts","../../node_modules/three-stdlib/postprocessing/ssaarenderpass.d.ts","../../node_modules/three-stdlib/postprocessing/taarenderpass.d.ts","../../node_modules/three-stdlib/postprocessing/renderpass.d.ts","../../node_modules/three-stdlib/postprocessing/renderpixelatedpass.d.ts","../../node_modules/three-stdlib/shaders/convolutionshader.d.ts","../../node_modules/three-stdlib/postprocessing/bloompass.d.ts","../../node_modules/three-stdlib/postprocessing/waterpass.d.ts","../../node_modules/three-stdlib/webxr/arbutton.d.ts","../../node_modules/three-stdlib/webxr/xrhandmeshmodel.d.ts","../../node_modules/three-stdlib/webxr/oculushandmodel.d.ts","../../node_modules/three-stdlib/webxr/oculushandpointermodel.d.ts","../../node_modules/three-stdlib/webxr/text2d.d.ts","../../node_modules/three-stdlib/webxr/vrbutton.d.ts","../../node_modules/three-stdlib/loaders/dracoloader.d.ts","../../node_modules/three-stdlib/loaders/ktx2loader.d.ts","../../node_modules/three-stdlib/loaders/gltfloader.d.ts","../../node_modules/three-stdlib/libs/motioncontrollers.d.ts","../../node_modules/three-stdlib/webxr/xrcontrollermodelfactory.d.ts","../../node_modules/three-stdlib/webxr/xrestimatedlight.d.ts","../../node_modules/three-stdlib/webxr/xrhandprimitivemodel.d.ts","../../node_modules/three-stdlib/webxr/xrhandmodelfactory.d.ts","../../node_modules/three-stdlib/geometries/parametricgeometry.d.ts","../../node_modules/three-stdlib/geometries/parametricgeometries.d.ts","../../node_modules/three-stdlib/geometries/convexgeometry.d.ts","../../node_modules/three-stdlib/geometries/roundedboxgeometry.d.ts","../../node_modules/three-stdlib/geometries/boxlinegeometry.d.ts","../../node_modules/three-stdlib/geometries/decalgeometry.d.ts","../../node_modules/three-stdlib/geometries/teapotgeometry.d.ts","../../node_modules/three-stdlib/loaders/fontloader.d.ts","../../node_modules/three-stdlib/geometries/textgeometry.d.ts","../../node_modules/three-stdlib/csm/csmfrustum.d.ts","../../node_modules/three-stdlib/csm/csm.d.ts","../../node_modules/three-stdlib/csm/csmhelper.d.ts","../../node_modules/three-stdlib/csm/csmshader.d.ts","../../node_modules/three-stdlib/shaders/acesfilmictonemappingshader.d.ts","../../node_modules/three-stdlib/shaders/basicshader.d.ts","../../node_modules/three-stdlib/shaders/bleachbypassshader.d.ts","../../node_modules/three-stdlib/shaders/blendshader.d.ts","../../node_modules/three-stdlib/shaders/bokehshader.d.ts","../../node_modules/three-stdlib/shaders/brightnesscontrastshader.d.ts","../../node_modules/three-stdlib/shaders/colorcorrectionshader.d.ts","../../node_modules/three-stdlib/shaders/colorifyshader.d.ts","../../node_modules/three-stdlib/shaders/copyshader.d.ts","../../node_modules/three-stdlib/shaders/dofmipmapshader.d.ts","../../node_modules/three-stdlib/shaders/depthlimitedblurshader.d.ts","../../node_modules/three-stdlib/shaders/fxaashader.d.ts","../../node_modules/three-stdlib/shaders/focusshader.d.ts","../../node_modules/three-stdlib/shaders/freichenshader.d.ts","../../node_modules/three-stdlib/shaders/fresnelshader.d.ts","../../node_modules/three-stdlib/shaders/gammacorrectionshader.d.ts","../../node_modules/three-stdlib/shaders/godraysshader.d.ts","../../node_modules/three-stdlib/shaders/halftoneshader.d.ts","../../node_modules/three-stdlib/shaders/horizontalblurshader.d.ts","../../node_modules/three-stdlib/shaders/horizontaltiltshiftshader.d.ts","../../node_modules/three-stdlib/shaders/huesaturationshader.d.ts","../../node_modules/three-stdlib/shaders/kaleidoshader.d.ts","../../node_modules/three-stdlib/shaders/luminosityhighpassshader.d.ts","../../node_modules/three-stdlib/shaders/luminosityshader.d.ts","../../node_modules/three-stdlib/shaders/mirrorshader.d.ts","../../node_modules/three-stdlib/shaders/normalmapshader.d.ts","../../node_modules/three-stdlib/shaders/parallaxshader.d.ts","../../node_modules/three-stdlib/shaders/pixelshader.d.ts","../../node_modules/three-stdlib/shaders/rgbshiftshader.d.ts","../../node_modules/three-stdlib/shaders/saoshader.d.ts","../../node_modules/three-stdlib/shaders/smaashader.d.ts","../../node_modules/three-stdlib/shaders/ssaoshader.d.ts","../../node_modules/three-stdlib/shaders/ssrshader.d.ts","../../node_modules/three-stdlib/shaders/sepiashader.d.ts","../../node_modules/three-stdlib/shaders/sobeloperatorshader.d.ts","../../node_modules/three-stdlib/shaders/subsurfacescatteringshader.d.ts","../../node_modules/three-stdlib/shaders/technicolorshader.d.ts","../../node_modules/three-stdlib/shaders/tonemapshader.d.ts","../../node_modules/three-stdlib/shaders/toonshader.d.ts","../../node_modules/three-stdlib/shaders/triangleblurshader.d.ts","../../node_modules/three-stdlib/shaders/unpackdepthrgbashader.d.ts","../../node_modules/three-stdlib/shaders/verticalblurshader.d.ts","../../node_modules/three-stdlib/shaders/verticaltiltshiftshader.d.ts","../../node_modules/three-stdlib/shaders/vignetteshader.d.ts","../../node_modules/three-stdlib/shaders/volumeshader.d.ts","../../node_modules/three-stdlib/shaders/waterrefractionshader.d.ts","../../node_modules/three-stdlib/interactive/htmlmesh.d.ts","../../node_modules/three-stdlib/interactive/interactivegroup.d.ts","../../node_modules/three-stdlib/interactive/selectionbox.d.ts","../../node_modules/three-stdlib/interactive/selectionhelper.d.ts","../../node_modules/three-stdlib/physics/ammophysics.d.ts","../../node_modules/three-stdlib/effects/parallaxbarriereffect.d.ts","../../node_modules/three-stdlib/effects/peppersghosteffect.d.ts","../../node_modules/three-stdlib/effects/outlineeffect.d.ts","../../node_modules/three-stdlib/effects/anaglypheffect.d.ts","../../node_modules/three-stdlib/effects/asciieffect.d.ts","../../node_modules/three-stdlib/effects/stereoeffect.d.ts","../../node_modules/three-stdlib/loaders/fbxloader.d.ts","../../node_modules/three-stdlib/loaders/tgaloader.d.ts","../../node_modules/three-stdlib/loaders/lutcubeloader.d.ts","../../node_modules/three-stdlib/loaders/nrrdloader.d.ts","../../node_modules/three-stdlib/loaders/stlloader.d.ts","../../node_modules/three-stdlib/loaders/mtlloader.d.ts","../../node_modules/three-stdlib/loaders/xloader.d.ts","../../node_modules/three-stdlib/loaders/bvhloader.d.ts","../../node_modules/three-stdlib/loaders/colladaloader.d.ts","../../node_modules/three-stdlib/loaders/kmzloader.d.ts","../../node_modules/three-stdlib/loaders/vrmloader.d.ts","../../node_modules/three-stdlib/loaders/vrmlloader.d.ts","../../node_modules/three-stdlib/loaders/lottieloader.d.ts","../../node_modules/three-stdlib/loaders/ttfloader.d.ts","../../node_modules/three-stdlib/loaders/rgbeloader.d.ts","../../node_modules/three-stdlib/loaders/assimploader.d.ts","../../node_modules/three-stdlib/loaders/mddloader.d.ts","../../node_modules/three-stdlib/loaders/exrloader.d.ts","../../node_modules/three-stdlib/loaders/3mfloader.d.ts","../../node_modules/three-stdlib/loaders/xyzloader.d.ts","../../node_modules/three-stdlib/loaders/vtkloader.d.ts","../../node_modules/three-stdlib/loaders/lut3dlloader.d.ts","../../node_modules/three-stdlib/loaders/ddsloader.d.ts","../../node_modules/three-stdlib/loaders/pvrloader.d.ts","../../node_modules/three-stdlib/loaders/gcodeloader.d.ts","../../node_modules/three-stdlib/loaders/basistextureloader.d.ts","../../node_modules/three-stdlib/loaders/tdsloader.d.ts","../../node_modules/three-stdlib/loaders/ldrawloader.d.ts","../../node_modules/three-stdlib/loaders/svgloader.d.ts","../../node_modules/three-stdlib/loaders/3dmloader.d.ts","../../node_modules/three-stdlib/loaders/objloader.d.ts","../../node_modules/three-stdlib/loaders/amfloader.d.ts","../../node_modules/three-stdlib/loaders/mmdloader.d.ts","../../node_modules/three-stdlib/loaders/md2loader.d.ts","../../node_modules/three-stdlib/loaders/ktxloader.d.ts","../../node_modules/three-stdlib/loaders/tiltloader.d.ts","../../node_modules/three-stdlib/loaders/hdrcubetextureloader.d.ts","../../node_modules/three-stdlib/loaders/pdbloader.d.ts","../../node_modules/three-stdlib/loaders/prwmloader.d.ts","../../node_modules/three-stdlib/loaders/rgbmloader.d.ts","../../node_modules/three-stdlib/loaders/voxloader.d.ts","../../node_modules/three-stdlib/loaders/pcdloader.d.ts","../../node_modules/three-stdlib/loaders/lwoloader.d.ts","../../node_modules/three-stdlib/loaders/plyloader.d.ts","../../node_modules/three-stdlib/lines/linesegmentsgeometry.d.ts","../../node_modules/three-stdlib/lines/linegeometry.d.ts","../../node_modules/three-stdlib/lines/linematerial.d.ts","../../node_modules/three-stdlib/lines/wireframe.d.ts","../../node_modules/three-stdlib/lines/wireframegeometry2.d.ts","../../node_modules/three-stdlib/lines/linesegments2.d.ts","../../node_modules/three-stdlib/lines/line2.d.ts","../../node_modules/three-stdlib/helpers/lightprobehelper.d.ts","../../node_modules/three-stdlib/helpers/raycasterhelper.d.ts","../../node_modules/three-stdlib/helpers/vertextangentshelper.d.ts","../../node_modules/three-stdlib/helpers/positionalaudiohelper.d.ts","../../node_modules/three-stdlib/helpers/vertexnormalshelper.d.ts","../../node_modules/three-stdlib/helpers/rectarealighthelper.d.ts","../../node_modules/three-stdlib/lights/rectarealightuniformslib.d.ts","../../node_modules/three-stdlib/lights/lightprobegenerator.d.ts","../../node_modules/three-stdlib/curves/nurbsutils.d.ts","../../node_modules/three-stdlib/curves/nurbscurve.d.ts","../../node_modules/three-stdlib/curves/nurbssurface.d.ts","../../node_modules/three-stdlib/curves/curveextras.d.ts","../../node_modules/three-stdlib/deprecated/geometry.d.ts","../../node_modules/three-stdlib/libs/meshoptdecoder.d.ts","../../node_modules/three-stdlib/index.d.ts","../../node_modules/@react-three/drei/core/line.d.ts","../../node_modules/@react-three/drei/core/quadraticbezierline.d.ts","../../node_modules/@react-three/drei/core/cubicbezierline.d.ts","../../node_modules/@react-three/drei/core/catmullromline.d.ts","../../node_modules/@react-three/drei/core/positionalaudio.d.ts","../../node_modules/@react-three/drei/core/text.d.ts","../../node_modules/@react-three/drei/core/usefont.d.ts","../../node_modules/@react-three/drei/core/text3d.d.ts","../../node_modules/@react-three/drei/core/effects.d.ts","../../node_modules/@react-three/drei/core/gradienttexture.d.ts","../../node_modules/@react-three/drei/core/image.d.ts","../../node_modules/@react-three/drei/core/edges.d.ts","../../node_modules/@react-three/drei/core/outlines.d.ts","../../node_modules/meshline/dist/meshlinegeometry.d.ts","../../node_modules/meshline/dist/meshlinematerial.d.ts","../../node_modules/meshline/dist/raycast.d.ts","../../node_modules/meshline/dist/index.d.ts","../../node_modules/@react-three/drei/core/trail.d.ts","../../node_modules/@react-three/drei/core/sampler.d.ts","../../node_modules/@react-three/drei/core/computedattribute.d.ts","../../node_modules/@react-three/drei/core/clone.d.ts","../../node_modules/@react-three/drei/core/marchingcubes.d.ts","../../node_modules/@react-three/drei/core/decal.d.ts","../../node_modules/@react-three/drei/core/svg.d.ts","../../node_modules/@react-three/drei/core/gltf.d.ts","../../node_modules/@react-three/drei/core/asciirenderer.d.ts","../../node_modules/@react-three/drei/core/splat.d.ts","../../node_modules/@react-three/drei/core/orthographiccamera.d.ts","../../node_modules/@react-three/drei/core/perspectivecamera.d.ts","../../node_modules/@react-three/drei/core/cubecamera.d.ts","../../node_modules/@react-three/drei/core/deviceorientationcontrols.d.ts","../../node_modules/@react-three/drei/core/flycontrols.d.ts","../../node_modules/@react-three/drei/core/mapcontrols.d.ts","../../node_modules/@react-three/drei/core/orbitcontrols.d.ts","../../node_modules/@react-three/drei/core/trackballcontrols.d.ts","../../node_modules/@react-three/drei/core/arcballcontrols.d.ts","../../node_modules/@react-three/drei/core/transformcontrols.d.ts","../../node_modules/@react-three/drei/core/pointerlockcontrols.d.ts","../../node_modules/@react-three/drei/core/firstpersoncontrols.d.ts","../../node_modules/camera-controls/dist/types.d.ts","../../node_modules/camera-controls/dist/eventdispatcher.d.ts","../../node_modules/camera-controls/dist/cameracontrols.d.ts","../../node_modules/camera-controls/dist/index.d.ts","../../node_modules/@react-three/drei/core/cameracontrols.d.ts","../../node_modules/@react-three/drei/core/motionpathcontrols.d.ts","../../node_modules/@react-three/drei/core/gizmohelper.d.ts","../../node_modules/@react-three/drei/core/gizmoviewcube.d.ts","../../node_modules/@react-three/drei/core/gizmoviewport.d.ts","../../node_modules/@react-three/drei/core/grid.d.ts","../../node_modules/@react-three/drei/core/cubetexture.d.ts","../../node_modules/@react-three/drei/core/fbx.d.ts","../../node_modules/@react-three/drei/core/ktx2.d.ts","../../node_modules/@react-three/drei/core/progress.d.ts","../../node_modules/@react-three/drei/core/texture.d.ts","../../node_modules/hls.js/dist/hls.d.mts","../../node_modules/@react-three/drei/core/videotexture.d.ts","../../node_modules/@react-three/drei/core/usespriteloader.d.ts","../../node_modules/@react-three/drei/core/helper.d.ts","../../node_modules/@react-three/drei/core/stats.d.ts","../../node_modules/stats-gl/dist/stats-gl.d.ts","../../node_modules/@react-three/drei/core/statsgl.d.ts","../../node_modules/@react-three/drei/core/usedepthbuffer.d.ts","../../node_modules/@react-three/drei/core/useaspect.d.ts","../../node_modules/@react-three/drei/core/usecamera.d.ts","../../node_modules/detect-gpu/dist/src/index.d.ts","../../node_modules/@react-three/drei/core/detectgpu.d.ts","../../node_modules/three-mesh-bvh/src/index.d.ts","../../node_modules/@react-three/drei/core/bvh.d.ts","../../node_modules/@react-three/drei/core/usecontextbridge.d.ts","../../node_modules/@react-three/drei/core/useanimations.d.ts","../../node_modules/@react-three/drei/core/fbo.d.ts","../../node_modules/@react-three/drei/core/useintersect.d.ts","../../node_modules/@react-three/drei/core/useboxprojectedenv.d.ts","../../node_modules/@react-three/drei/core/bbanchor.d.ts","../../node_modules/@react-three/drei/core/trailtexture.d.ts","../../node_modules/@react-three/drei/core/example.d.ts","../../node_modules/@react-three/drei/core/instances.d.ts","../../node_modules/@react-three/drei/core/spriteanimator.d.ts","../../node_modules/@react-three/drei/core/curvemodifier.d.ts","../../node_modules/@react-three/drei/core/meshdistortmaterial.d.ts","../../node_modules/@react-three/drei/core/meshwobblematerial.d.ts","../../node_modules/@react-three/drei/materials/meshreflectormaterial.d.ts","../../node_modules/@react-three/drei/core/meshreflectormaterial.d.ts","../../node_modules/@react-three/drei/materials/meshrefractionmaterial.d.ts","../../node_modules/@react-three/drei/core/meshrefractionmaterial.d.ts","../../node_modules/@react-three/drei/core/meshtransmissionmaterial.d.ts","../../node_modules/@react-three/drei/core/meshdiscardmaterial.d.ts","../../node_modules/@react-three/drei/core/multimaterial.d.ts","../../node_modules/@react-three/drei/core/pointmaterial.d.ts","../../node_modules/@react-three/drei/core/shadermaterial.d.ts","../../node_modules/@react-three/drei/core/softshadows.d.ts","../../node_modules/@react-three/drei/core/shapes.d.ts","../../node_modules/@react-three/drei/core/roundedbox.d.ts","../../node_modules/@react-three/drei/core/screenquad.d.ts","../../node_modules/@react-three/drei/core/center.d.ts","../../node_modules/@react-three/drei/core/resize.d.ts","../../node_modules/@react-three/drei/core/bounds.d.ts","../../node_modules/@react-three/drei/core/camerashake.d.ts","../../node_modules/@react-three/drei/core/float.d.ts","../../node_modules/@react-three/drei/helpers/environment-assets.d.ts","../../node_modules/@react-three/drei/core/useenvironment.d.ts","../../node_modules/@react-three/drei/core/environment.d.ts","../../node_modules/@react-three/drei/core/contactshadows.d.ts","../../node_modules/@react-three/drei/core/accumulativeshadows.d.ts","../../node_modules/@react-three/drei/core/stage.d.ts","../../node_modules/@react-three/drei/core/backdrop.d.ts","../../node_modules/@react-three/drei/core/shadow.d.ts","../../node_modules/@react-three/drei/core/caustics.d.ts","../../node_modules/@react-three/drei/core/spotlight.d.ts","../../node_modules/@react-three/drei/core/lightformer.d.ts","../../node_modules/@react-three/drei/core/sky.d.ts","../../node_modules/@react-three/drei/core/stars.d.ts","../../node_modules/@react-three/drei/core/cloud.d.ts","../../node_modules/@react-three/drei/core/sparkles.d.ts","../../node_modules/@react-three/drei/core/matcaptexture.d.ts","../../node_modules/@react-three/drei/core/normaltexture.d.ts","../../node_modules/@react-three/drei/materials/wireframematerial.d.ts","../../node_modules/@react-three/drei/core/wireframe.d.ts","../../node_modules/@react-three/drei/core/shadowalpha.d.ts","../../node_modules/@react-three/drei/core/points.d.ts","../../node_modules/@react-three/drei/core/segments.d.ts","../../node_modules/@react-three/drei/core/detailed.d.ts","../../node_modules/@react-three/drei/core/preload.d.ts","../../node_modules/@react-three/drei/core/bakeshadows.d.ts","../../node_modules/@react-three/drei/core/meshbounds.d.ts","../../node_modules/@react-three/drei/core/adaptivedpr.d.ts","../../node_modules/@react-three/drei/core/adaptiveevents.d.ts","../../node_modules/@react-three/drei/core/performancemonitor.d.ts","../../node_modules/@react-three/drei/core/rendertexture.d.ts","../../node_modules/@react-three/drei/core/rendercubetexture.d.ts","../../node_modules/@react-three/drei/core/mask.d.ts","../../node_modules/@react-three/drei/core/hud.d.ts","../../node_modules/@react-three/drei/core/fisheye.d.ts","../../node_modules/@react-three/drei/core/meshportalmaterial.d.ts","../../node_modules/@react-three/drei/core/calculatescalefactor.d.ts","../../node_modules/@react-three/drei/core/index.d.ts","../../node_modules/@react-three/drei/web/view.d.ts","../../node_modules/@react-three/drei/web/pivotcontrols/context.d.ts","../../node_modules/@react-three/drei/web/pivotcontrols/index.d.ts","../../node_modules/@react-three/drei/web/screenvideotexture.d.ts","../../node_modules/@react-three/drei/web/webcamvideotexture.d.ts","../../node_modules/@mediapipe/tasks-vision/vision.d.ts","../../node_modules/@react-three/drei/web/facemesh.d.ts","../../node_modules/@react-three/drei/web/facecontrols.d.ts","../../node_modules/@use-gesture/core/dist/declarations/src/types/utils.d.ts","../../node_modules/@use-gesture/core/dist/declarations/src/types/state.d.ts","../../node_modules/@use-gesture/core/dist/declarations/src/types/config.d.ts","../../node_modules/@use-gesture/core/dist/declarations/src/types/internalconfig.d.ts","../../node_modules/@use-gesture/core/dist/declarations/src/types/handlers.d.ts","../../node_modules/@use-gesture/core/dist/declarations/src/config/resolver.d.ts","../../node_modules/@use-gesture/core/dist/declarations/src/eventstore.d.ts","../../node_modules/@use-gesture/core/dist/declarations/src/timeoutstore.d.ts","../../node_modules/@use-gesture/core/dist/declarations/src/controller.d.ts","../../node_modules/@use-gesture/core/dist/declarations/src/engines/engine.d.ts","../../node_modules/@use-gesture/core/dist/declarations/src/types/action.d.ts","../../node_modules/@use-gesture/core/dist/declarations/src/types/index.d.ts","../../node_modules/@use-gesture/core/dist/declarations/src/types.d.ts","../../node_modules/@use-gesture/core/types/dist/use-gesture-core-types.cjs.d.ts","../../node_modules/@use-gesture/react/dist/declarations/src/types.d.ts","../../node_modules/@use-gesture/react/dist/declarations/src/usedrag.d.ts","../../node_modules/@use-gesture/react/dist/declarations/src/usepinch.d.ts","../../node_modules/@use-gesture/react/dist/declarations/src/usewheel.d.ts","../../node_modules/@use-gesture/react/dist/declarations/src/usescroll.d.ts","../../node_modules/@use-gesture/react/dist/declarations/src/usemove.d.ts","../../node_modules/@use-gesture/react/dist/declarations/src/usehover.d.ts","../../node_modules/@use-gesture/react/dist/declarations/src/usegesture.d.ts","../../node_modules/@use-gesture/react/dist/declarations/src/createusegesture.d.ts","../../node_modules/@use-gesture/core/dist/declarations/src/utils/maths.d.ts","../../node_modules/@use-gesture/core/dist/declarations/src/utils.d.ts","../../node_modules/@use-gesture/core/utils/dist/use-gesture-core-utils.cjs.d.ts","../../node_modules/@use-gesture/core/dist/declarations/src/actions.d.ts","../../node_modules/@use-gesture/core/actions/dist/use-gesture-core-actions.cjs.d.ts","../../node_modules/@use-gesture/react/dist/declarations/src/index.d.ts","../../node_modules/@use-gesture/react/dist/use-gesture-react.cjs.d.ts","../../node_modules/@react-three/drei/web/dragcontrols.d.ts","../../node_modules/@react-three/drei/web/facelandmarker.d.ts","../../node_modules/@react-three/drei/web/index.d.ts","../../node_modules/@react-three/drei/index.d.ts","./src/components/three/herocanvas.tsx","./src/components/three/index.ts","../../node_modules/nextra/dist/client/mdx-components/pre/index.d.ts","../../node_modules/nextra/dist/client/components/image-zoom.d.ts","../../node_modules/nextra/dist/client/mdx-components/anchor.d.ts","../../node_modules/nextra/dist/client/mdx-components.d.ts","../../node_modules/nextra-theme-blog/dist/mdx-components.d.mts","../../node_modules/nextra-theme-blog/dist/components/cusdis.d.mts","../../node_modules/next-themes/dist/index.d.ts","../../node_modules/nextra-theme-blog/dist/components/layout.d.mts","../../node_modules/nextra-theme-blog/dist/components/navbar.d.mts","../../node_modules/nextra-theme-blog/dist/types.d.mts","../../node_modules/nextra-theme-blog/dist/components/post-card.d.mts","../../node_modules/nextra-theme-blog/dist/components/theme-switch.d.mts","../../node_modules/nextra-theme-blog/dist/index.d.mts","./mdx-components.tsx","../../node_modules/@theguild/remark-mermaid/dist/mermaid.d.ts","../../node_modules/nextra/dist/client/components/banner/index.d.ts","../../node_modules/nextra/dist/client/components/file-tree/file.d.ts","../../node_modules/nextra/dist/client/components/file-tree/tree.d.ts","../../node_modules/nextra/dist/client/components/file-tree/index.d.ts","../../node_modules/nextra/dist/client/components/skip-nav/index.client.d.ts","../../node_modules/nextra/dist/client/components/skip-nav/index.d.ts","../../node_modules/@headlessui/react/dist/types.d.ts","../../node_modules/@headlessui/react/dist/utils/render.d.ts","../../node_modules/@headlessui/react/dist/components/button/button.d.ts","../../node_modules/@headlessui/react/dist/components/checkbox/checkbox.d.ts","../../node_modules/@headlessui/react/dist/components/close-button/close-button.d.ts","../../node_modules/@headlessui/react/dist/hooks/use-by-comparator.d.ts","../../node_modules/@floating-ui/utils/dist/floating-ui.utils.d.mts","../../node_modules/@floating-ui/core/dist/floating-ui.core.d.mts","../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.d.mts","../../node_modules/@floating-ui/dom/dist/floating-ui.dom.d.mts","../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.d.mts","../../node_modules/@floating-ui/react/dist/floating-ui.react.d.mts","../../node_modules/@headlessui/react/dist/internal/floating.d.ts","../../node_modules/@headlessui/react/dist/components/label/label.d.ts","../../node_modules/@headlessui/react/dist/components/combobox/combobox.d.ts","../../node_modules/@headlessui/react/dist/components/data-interactive/data-interactive.d.ts","../../node_modules/@headlessui/react/dist/components/description/description.d.ts","../../node_modules/@headlessui/react/dist/components/dialog/dialog.d.ts","../../node_modules/@headlessui/react/dist/components/disclosure/disclosure.d.ts","../../node_modules/@headlessui/react/dist/components/field/field.d.ts","../../node_modules/@headlessui/react/dist/components/fieldset/fieldset.d.ts","../../node_modules/@headlessui/react/dist/components/focus-trap/focus-trap.d.ts","../../node_modules/@headlessui/react/dist/components/input/input.d.ts","../../node_modules/@headlessui/react/dist/components/legend/legend.d.ts","../../node_modules/@headlessui/react/dist/components/listbox/listbox.d.ts","../../node_modules/@headlessui/react/dist/components/menu/menu.d.ts","../../node_modules/@headlessui/react/dist/components/popover/popover.d.ts","../../node_modules/@headlessui/react/dist/components/portal/portal.d.ts","../../node_modules/@headlessui/react/dist/components/radio-group/radio-group.d.ts","../../node_modules/@headlessui/react/dist/components/select/select.d.ts","../../node_modules/@headlessui/react/dist/components/switch/switch.d.ts","../../node_modules/@headlessui/react/dist/components/tabs/tabs.d.ts","../../node_modules/@headlessui/react/dist/components/textarea/textarea.d.ts","../../node_modules/@headlessui/react/dist/internal/close-provider.d.ts","../../node_modules/@headlessui/react/dist/components/transition/transition.d.ts","../../node_modules/@headlessui/react/dist/index.d.ts","../../node_modules/nextra/dist/client/components/popup/index.client.d.ts","../../node_modules/nextra/dist/client/components/popup/index.d.ts","../../node_modules/nextra/dist/client/components/tabs/index.client.d.ts","../../node_modules/nextra/dist/client/components/tabs/index.d.ts","../../node_modules/nextra/dist/client/components/bleed.d.ts","../../node_modules/nextra/dist/client/components/button.d.ts","../../node_modules/nextra/dist/client/components/callout.d.ts","../../node_modules/nextra/dist/client/components/cards.d.ts","../../node_modules/nextra/dist/client/components/collapse.d.ts","../../node_modules/nextra/dist/client/components/head.d.ts","../../node_modules/nextra/dist/client/evaluate.d.ts","../../node_modules/nextra/dist/client/mdx-remote.d.ts","../../node_modules/nextra/dist/client/components/playground.d.ts","../../node_modules/nextra/dist/client/components/search.d.ts","../../node_modules/nextra/dist/client/components/select.d.ts","../../node_modules/nextra/dist/client/components/steps.d.ts","../../node_modules/nextra/dist/client/hocs/with-icons.d.ts","../../node_modules/nextra/dist/client/hocs/with-github-alert.d.ts","../../node_modules/nextra/dist/client/mdx-components/code.d.ts","../../node_modules/nextra/dist/client/mdx-components/details.d.ts","../../node_modules/nextra/dist/client/mdx-components/image.d.ts","../../node_modules/nextra/dist/client/mdx-components/summary.d.ts","../../node_modules/nextra/dist/client/mdx-components/table.d.ts","../../node_modules/nextra/dist/client/components/index.d.ts","../../node_modules/nextra/dist/server/page-map/normalize.d.ts","../../node_modules/nextra/dist/server/page-map/to-page-map.d.ts","../../node_modules/nextra/dist/server/page-map/merge-meta-with-page-map.d.ts","../../node_modules/nextra/dist/server/page-map/get.d.ts","../../node_modules/nextra/dist/server/page-map/index-page.d.ts","../../node_modules/nextra/dist/server/page-map/index.d.ts","./src/app/layout.tsx","./src/components/footer.tsx","./src/components/header.tsx","./.next/types/cache-life.d.ts","./.next/types/validator.ts","../../node_modules/bun-types/globals.d.ts","../../node_modules/bun-types/s3.d.ts","../../node_modules/bun-types/fetch.d.ts","../../node_modules/bun-types/bun.d.ts","../../node_modules/bun-types/extensions.d.ts","../../node_modules/bun-types/devserver.d.ts","../../node_modules/bun-types/ffi.d.ts","../../node_modules/bun-types/html-rewriter.d.ts","../../node_modules/bun-types/jsc.d.ts","../../node_modules/bun-types/sqlite.d.ts","../../node_modules/bun-types/vendor/expect-type/utils.d.ts","../../node_modules/bun-types/vendor/expect-type/overloads.d.ts","../../node_modules/bun-types/vendor/expect-type/branding.d.ts","../../node_modules/bun-types/vendor/expect-type/messages.d.ts","../../node_modules/bun-types/vendor/expect-type/index.d.ts","../../node_modules/bun-types/test.d.ts","../../node_modules/bun-types/wasm.d.ts","../../node_modules/bun-types/overrides.d.ts","../../node_modules/bun-types/deprecated.d.ts","../../node_modules/bun-types/redis.d.ts","../../node_modules/bun-types/shell.d.ts","../../node_modules/bun-types/experimental.d.ts","../../node_modules/bun-types/serve.d.ts","../../node_modules/bun-types/sql.d.ts","../../node_modules/bun-types/security.d.ts","../../node_modules/bun-types/bun.ns.d.ts","../../node_modules/bun-types/index.d.ts"],"fileIdsList":[[80,135,152,153,435,436,437,438,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[66,80,135,152,153,485,1537,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1462,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[66,80,135,152,153,486,487,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,486,708,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,1462,1530,1536,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,713,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,713,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,714,715,716,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,715,967,991,1277,1278,1280,1296,1318,1336,1346,1349,1350,1352,1354,1355,1356,1371,1373,1377,1381,1382,1383,1387,1389,1390,1403,1447,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1448,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1477,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1478,1479,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,1480,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,1481,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,1471,1472,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,1473,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,1471,1472,1476,1483,1484,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,1471,1472,1487,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,1471,1472,1484,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,1471,1472,1483,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,1471,1472,1476,1484,1487,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,1471,1472,1484,1487,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1473,1474,1475,1484,1485,1486,1487,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,1481,1482,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,1471,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,692,693,694,697,699,700,701,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,605,692,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,490,610,614,615,646,649,652,661,689,691,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,605,698,699,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,698,699,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,694,697,698,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,967,991,992,1277,1278,1280,1296,1318,1336,1346,1349,1350,1352,1354,1355,1356,1371,1373,1377,1381,1382,1383,1387,1389,1390,1403,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,991,992,1269,1277,1278,1280,1296,1318,1336,1346,1349,1350,1352,1354,1355,1356,1371,1373,1377,1381,1382,1383,1387,1389,1390,1403,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,991,1277,1278,1280,1296,1318,1346,1349,1350,1352,1354,1355,1356,1371,1373,1377,1381,1382,1383,1387,1389,1390,1403,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,967,991,1277,1278,1280,1296,1318,1336,1346,1349,1350,1352,1354,1355,1356,1371,1373,1377,1381,1382,1383,1387,1389,1390,1403,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,991,992,1277,1278,1280,1296,1318,1336,1346,1349,1350,1352,1354,1355,1356,1371,1373,1377,1381,1382,1383,1387,1389,1390,1403,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,991,1277,1278,1280,1296,1318,1336,1346,1349,1350,1352,1354,1355,1356,1371,1373,1377,1381,1382,1383,1387,1389,1390,1403,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,991,992,1277,1278,1280,1296,1312,1318,1336,1346,1349,1350,1352,1354,1355,1356,1371,1373,1377,1381,1382,1383,1387,1389,1390,1403,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,992,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,992,1269,1270,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,967,980,991,1277,1278,1280,1296,1318,1336,1346,1349,1350,1352,1354,1355,1356,1371,1373,1377,1381,1382,1383,1387,1389,1390,1403,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,967,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,992,1269,1270,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,967,991,992,1269,1277,1278,1280,1296,1318,1336,1346,1349,1350,1352,1354,1355,1356,1371,1373,1377,1381,1382,1383,1387,1389,1390,1403,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,1334,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,967,991,1269,1277,1278,1280,1296,1318,1336,1346,1349,1350,1352,1354,1355,1356,1369,1370,1371,1373,1377,1381,1382,1383,1387,1389,1390,1403,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,967,1290,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,991,992,1269,1277,1278,1280,1296,1318,1346,1349,1350,1352,1354,1355,1356,1371,1373,1377,1381,1382,1383,1387,1389,1390,1403,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,967,991,1269,1277,1278,1280,1290,1296,1318,1336,1346,1349,1350,1352,1354,1355,1356,1371,1373,1377,1381,1382,1383,1387,1389,1390,1403,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,967,972,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1001,1002,1003,1270,1271,1272,1273,1274,1275,1276,1277,1278,1279,1280,1281,1282,1287,1288,1289,1290,1291,1292,1293,1294,1295,1296,1297,1298,1299,1300,1301,1302,1303,1304,1305,1306,1307,1308,1313,1314,1315,1316,1317,1318,1319,1320,1321,1322,1323,1325,1326,1327,1328,1330,1331,1332,1333,1335,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1352,1354,1355,1356,1357,1358,1359,1360,1361,1362,1363,1364,1365,1366,1367,1368,1370,1371,1372,1373,1374,1375,1376,1377,1378,1379,1380,1381,1382,1383,1384,1385,1387,1388,1389,1390,1391,1392,1393,1394,1395,1396,1397,1398,1399,1400,1401,1402,1403,1404,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,967,980,991,992,1277,1278,1280,1296,1318,1336,1346,1349,1350,1352,1354,1355,1356,1371,1373,1377,1381,1382,1383,1387,1389,1390,1403,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,991,992,1277,1278,1280,1296,1318,1346,1349,1350,1351,1352,1354,1355,1356,1371,1373,1377,1381,1382,1383,1387,1389,1390,1403,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,967,991,1277,1278,1280,1296,1318,1336,1346,1349,1350,1352,1353,1354,1355,1356,1371,1373,1377,1381,1382,1383,1387,1389,1390,1403,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,976,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,967,980,991,1277,1278,1280,1296,1318,1326,1336,1346,1349,1350,1352,1354,1355,1356,1371,1373,1377,1381,1382,1383,1387,1389,1390,1403,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,991,1277,1278,1280,1296,1318,1346,1349,1350,1352,1354,1355,1356,1364,1369,1371,1372,1373,1377,1381,1382,1383,1387,1389,1390,1403,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,992,1329,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,991,992,1277,1278,1280,1296,1318,1346,1349,1350,1352,1354,1355,1356,1371,1373,1377,1381,1382,1383,1387,1389,1390,1403,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,967,991,992,1269,1276,1277,1278,1280,1296,1318,1336,1346,1349,1350,1352,1354,1355,1356,1371,1373,1377,1381,1382,1383,1387,1389,1390,1403,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,967,992,1286,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1336,1369,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1269,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,967,1324,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,967,991,1277,1278,1280,1296,1318,1336,1346,1349,1350,1352,1354,1355,1356,1371,1373,1377,1381,1382,1383,1386,1387,1389,1390,1403,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1446,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,967,992,1336,1443,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,967,1325,1336,1411,1412,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,1411,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,967,972,991,992,1277,1278,1280,1296,1318,1336,1346,1349,1350,1352,1354,1355,1356,1371,1373,1377,1381,1382,1383,1387,1389,1390,1403,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,993,994,995,996,997,998,999,1000,1405,1406,1408,1409,1410,1412,1413,1444,1445,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,967,992,1336,1407,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,967,1324,1325,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,967,992,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,978,980,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,967,978,979,980,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,978,979,980,981,982,983,984,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,805,978,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,967,973,978,980,981,986,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,967,978,979,980,981,986,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,805,967,976,977,980,981,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,967,973,978,979,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,985,986,988,989,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,73,80,135,152,153,186,187,188,189,190,253,342,430,478,967,980,985,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,253,985,986,987,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,978,981,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,990,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,574,576,588,646,649,652,689,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,575,576,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,576,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,575,576,595,596,597,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,575,576,595,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,599,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,574,575,646,649,652,689,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,613,614,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,489,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,132,133,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,134,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,140,152,153,170,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,136,141,146,152,153,155,167,178,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,136,137,146,152,153,155,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,138,152,153,179,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,139,140,147,152,153,156,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,140,152,153,167,175,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,141,143,146,152,153,155,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,134,135,142,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,143,144,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,145,146,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,134,135,146,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,146,147,148,152,153,167,178,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,146,147,148,152,153,162,167,170,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[80,127,135,143,146,149,152,153,155,167,178,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,146,147,149,150,152,153,155,167,175,178,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,151,152,153,167,175,178,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[78,79,80,81,82,83,84,85,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,146,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,154,178,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,143,146,152,153,155,167,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,156,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,157,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,134,135,152,153,158,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,160,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,161,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,146,152,153,162,163,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,162,164,179,181,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,147,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,146,152,153,167,168,170,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,169,170,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,167,168,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,170,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,171,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,132,135,152,153,167,172,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,146,152,153,173,174,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,173,174,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,140,152,153,155,167,175,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,176,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,155,177,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,161,178,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[80,135,140,152,153,179,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,167,180,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,154,181,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,182,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,140,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,127,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,183,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,127,135,146,148,152,153,158,167,170,178,180,181,183,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,167,184,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,73,80,135,152,153,186,187,188,190,430,478,986,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,73,80,135,152,153,186,187,188,189,345,430,478,986,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,73,80,135,152,153,186,187,189,190,430,478,986,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,190,345,346,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,190,345,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,73,80,135,152,153,187,188,189,190,430,478,986,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,73,80,135,152,153,186,188,189,190,430,478,986,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[67,68,80,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,966,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,741,825,827,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,734,735,740,825,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,741,753,825,826,828,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,825,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,722,741,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,722,737,738,739,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,822,825,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,830,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,740,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,740,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,825,838,839,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,840,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,825,838,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,839,840,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,806,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,719,727,728,734,825,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,729,758,825,843,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,729,825,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,720,729,825,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,729,806,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,721,727,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,720,722,724,725,727,734,747,750,752,753,754,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,722,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,755,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,722,723,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,722,724,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,721,722,723,727,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,719,721,725,726,727,729,734,741,745,753,755,756,761,762,791,813,820,822,824,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,719,720,729,734,811,823,825,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,728,753,757,762,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,758,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,753,776,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,753,825,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,720,734,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,720,734,742,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,720,743,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,720,744,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,720,731,744,745,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,855,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,734,742,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,720,742,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,855,856,857,858,859,860,861,862,863,864,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,734,760,762,786,791,813,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,720,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,762,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,873,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,875,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,720,734,742,745,755,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,720,755,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,745,755,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,734,742,755,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,731,734,808,825,892,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,731,755,763,894,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,731,750,894,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,731,755,763,825,894,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,727,729,731,894,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,727,731,825,892,900,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,727,731,765,825,903,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,748,894,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,727,731,825,907,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,731,894,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,727,731,735,825,894,910,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,727,731,788,825,894,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,731,788,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,731,734,788,825,899,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,787,845,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,731,734,788,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,731,787,825,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,788,914,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,720,727,728,729,785,786,788,825,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,731,788,906,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,787,788,806,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,731,734,762,788,825,917,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,787,806,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,741,919,920,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,919,920,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,755,849,919,920,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,759,919,920,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,760,919,920,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,821,919,920,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,919,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,920,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,762,820,919,920,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,741,755,761,762,820,825,849,919,920,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,762,919,920,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,731,762,820,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,763,820,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,720,726,729,731,748,753,755,756,761,762,791,813,819,825,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,763,764,765,766,767,768,769,770,771,772,773,774,775,779,780,781,782,820,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,726,731,762,820,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,762,820,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,762,820,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,720,726,731,762,820,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,720,731,762,820,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,720,762,820,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,720,731,762,772,820,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,779,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,720,721,727,728,734,777,778,820,825,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,731,820,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,722,727,734,747,748,749,825,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,721,722,724,730,734,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,721,731,734,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,734,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,725,727,734,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,727,734,747,748,750,784,825,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,734,747,750,784,807,825,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,736,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,727,734,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,725,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,720,727,734,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,721,725,726,734,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,721,727,734,746,747,750,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,722,724,726,727,734,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,727,734,747,748,750,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,727,734,748,750,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,720,722,724,728,734,748,750,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,721,722,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,721,722,724,725,726,727,729,731,732,733,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,722,725,727,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,727,729,731,747,750,755,808,820,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,722,727,731,747,750,755,808,820,821,825,848,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,755,820,825,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,755,820,825,892,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,734,755,820,825,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,727,735,821,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,727,734,747,750,755,808,820,822,825,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,720,755,783,825,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,722,751,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,778,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,720,721,731,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,777,778,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,722,724,754,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,722,755,800,814,820,825,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,794,801,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,729,748,795,820,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,813,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,762,813,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,722,755,801,814,825,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,800,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,794,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,799,813,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,778,788,791,793,794,800,813,815,816,817,818,820,825,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,729,755,756,791,795,800,820,825,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,729,788,791,793,803,813,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,728,786,794,820,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,793,794,795,796,797,801,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,798,800,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,794,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,758,786,944,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,758,786,946,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,758,760,762,786,813,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,720,722,728,729,731,734,748,750,755,762,786,791,792,793,794,795,796,800,801,802,804,812,820,825,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,758,762,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,734,756,825,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,808,810,812,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,728,753,805,806,807,808,810,811,813,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,731,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,726,731,760,762,789,790,820,825,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,759,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,722,762,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,762,809,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,720,721,753,758,759,760,761,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,952,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,753,754,755,756,757,758,759,760,761,762,776,777,783,784,785,786,787,788,789,790,791,792,806,807,808,810,811,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,865,866,867,868,869,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,778,793,794,795,796,797,798,799,800,801,802,803,804,811,812,813,814,815,816,817,818,819,955,956,957,958,959,960,961,962,963,964,965,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1440,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1419,1426,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1426,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1420,1421,1426,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1420,1421,1422,1426,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1422,1426,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1425,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1416,1419,1422,1423,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1414,1415,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1414,1415,1416,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1414,1415,1416,1417,1418,1424,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1414,1416,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1437,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1438,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1427,1428,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1427,1429,1430,1431,1432,1433,1434,1435,1436,1439,1441,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,1427,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1442,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,492,494,495,497,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,492,494,496,497,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,494,496,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,492,494,495,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,492,494,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,492,493,494,495,496,497,498,499,503,504,505,506,507,508,509,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,500,501,502,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,496,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,494,497,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,491,492,493,495,496,497,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,494,504,508,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,494,495,496,497,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,520,568,570,572,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,571,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,570,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,522,567,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,569,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,520,568,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,127,135,140,147,149,152,153,175,179,183,1542,1543,1544,1547,1548,1558,1559,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1542,1543,1544,1545,1547,1558,1561,1562,1563,1564,1565,1566],[80,135,152,153,1542,1543,1544,1545,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1564,1565,1566],[80,127,135,152,153,1542,1543,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,127,135,140,152,153,158,167,170,175,179,183,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,185,1542,1543,1544,1545,1546,1547,1548,1549,1550,1551,1557,1558,1559,1560,1561,1562,1563,1564,1565,1566,1567],[80,135,140,147,148,152,153,156,170,175,178,184,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1542,1543,1544,1545,1547,1558,1560,1562,1563,1564,1565,1566],[80,135,147,152,153,1542,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565],[80,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1565,1566],[80,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1563,1564,1565,1566],[80,135,152,153,1542,1543,1544,1545,1547,1551,1558,1560,1561,1562,1563,1564,1566],[80,135,152,153,1542,1543,1544,1545,1547,1556,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1542,1543,1544,1545,1547,1552,1553,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1542,1543,1544,1545,1547,1552,1553,1554,1555,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1542,1543,1544,1545,1547,1552,1554,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1542,1543,1544,1545,1547,1552,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1542,1543,1544,1545,1547,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1309,1310,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1310,1311,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,710,711,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,253,710,711,712,986,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,656,657,658,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,574,614,646,649,652,659,689,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,616,617,647,650,653,654,655,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,614,646,659,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,614,649,659,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,652,659,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,574,613,614,646,649,652,659,689,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,574,586,613,614,646,649,652,689,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,587,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,574,581,586,646,649,652,689,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,695,696,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,574,646,649,652,689,695,697,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,521,528,529,533,534,538,539,548,566,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,522,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,522,530,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,522,528,538,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,522,527,528,529,530,532,538,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,522,527,528,529,530,531,533,534,536,537,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,522,529,533,538,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,530,535,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,525,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,524,529,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,525,526,527,528,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,522,528,530,532,538,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,524,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,523,525,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,525,542,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,523,525,543,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,522,527,529,530,533,538,550,551,562,563,565,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,554,557,562,564,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,522,531,532,552,554,560,566,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,522,530,549,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,558,559,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,527,529,563,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,522,529,553,554,557,560,561,562,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,529,552,553,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,523,529,553,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,523,552,563,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,558,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,555,558,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,522,529,530,552,563,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,522,529,552,553,554,556,558,560,563,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,552,555,557,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,522,540,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,522,529,530,534,538,540,541,544,545,547,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,525,528,529,530,540,541,543,544,545,546,548,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,529,541,542,547,548,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,531,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,618,619,620,621,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,490,618,619,621,646,649,652,689,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,490,618,621,646,649,652,689,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,490,574,614,645,646,649,652,689,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,621,644,649,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,489,490,574,614,621,644,646,648,649,652,689,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,490,574,614,646,649,651,652,689,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,621,644,649,652,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,490,574,646,649,652,662,663,687,688,689,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,574,646,649,652,662,689,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,490,574,646,649,652,662,689,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,490,574,605,646,649,652,663,689,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,622,623,643,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,490,644,646,649,652,689,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,490,646,649,652,689,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,489,490,646,649,652,689,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1283,1284,1285,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1284,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,710,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[75,80,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,433,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,440,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,194,208,209,210,212,427,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,194,233,235,237,238,241,427,429,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,194,198,200,201,202,203,204,416,427,429,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,427,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,209,311,397,406,423,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,194,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,191,423,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,245,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,244,427,429,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,293,311,340,484,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,304,320,406,422,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,358,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,410,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,409,410,411,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,409,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[77,80,135,149,152,153,191,194,198,201,205,206,207,209,213,221,222,351,376,407,427,430,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,194,211,229,233,234,239,240,427,484,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,211,484,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,222,229,291,427,484,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,484,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,194,211,212,484,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,236,484,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,205,408,415,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,161,253,423,986,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,253,423,986,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,253,986,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,312,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,308,356,423,466,467,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,403,460,461,462,463,465,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,402,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,402,403,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,202,352,353,354,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,352,355,356,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,464,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,352,356,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,195,454,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,178,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,211,281,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,211,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,279,283,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,280,432,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,73,80,135,149,152,153,185,186,187,188,189,190,430,476,477,986,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,198,260,352,362,377,397,412,413,427,428,484,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,221,414,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,430,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,193,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,293,307,319,329,331,422,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,161,293,307,328,329,330,422,483,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,322,323,324,325,326,327,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,324,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,328,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,251,252,253,255,986,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,246,247,248,254,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,251,254,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,249,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,250,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,253,280,432,986,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,253,431,432,986,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,253,432,986,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,377,419,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,419,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,428,432,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,316,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,134,135,152,153,315,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,223,261,299,301,303,304,305,306,349,352,422,425,428,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,223,337,352,356,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,304,422,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,304,313,314,316,317,318,319,320,321,332,333,334,335,336,338,339,422,423,484,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,298,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,161,223,224,260,275,305,349,350,351,356,377,397,418,427,428,429,430,484,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,422,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,134,135,152,153,209,302,305,351,418,420,421,428,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,304,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,134,135,152,153,260,265,294,295,296,297,298,299,300,301,303,422,423,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,265,266,294,428,429,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,209,351,352,377,418,422,428,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,427,429,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,167,425,428,429,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,161,178,191,198,211,223,224,226,261,262,267,272,275,301,305,352,362,364,367,369,372,373,374,375,376,397,417,418,423,425,427,428,429,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,167,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,194,195,196,198,203,206,211,229,417,425,426,430,432,484,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,167,178,241,243,245,246,247,248,255,484,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,161,178,191,233,243,271,272,273,274,301,352,367,376,377,383,386,387,397,418,423,425,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,205,206,221,351,376,418,427,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,178,195,198,301,381,425,427,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,292,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,384,385,394,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,425,427,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,299,302,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,301,305,417,432,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,161,227,233,274,367,377,383,386,389,425,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,205,221,233,390,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,194,226,392,417,427,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,178,427,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,211,225,226,227,238,256,391,393,417,427,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[77,80,135,152,153,223,305,396,430,432,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,161,178,198,205,213,221,224,261,267,271,272,273,274,275,301,352,364,377,378,380,382,397,417,418,423,424,425,432,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,167,205,383,388,394,425,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,216,217,218,219,220,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,262,368,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,370,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,368,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,370,371,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,198,201,202,260,428,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,161,193,195,223,261,275,305,360,361,397,425,429,430,432,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,161,178,197,202,301,361,424,428,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,294,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,295,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,296,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,423,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,242,258,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,198,242,261,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,257,258,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,259,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,242,243,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,242,276,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,242,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,262,366,424,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,365,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,243,423,424,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,363,424,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,243,423,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,349,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,198,203,261,290,293,299,301,305,307,310,341,344,348,352,396,417,425,428,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,284,287,288,289,308,309,356,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,188,190,253,342,343,986,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,188,190,253,342,343,347,986,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,405,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,209,266,304,305,316,320,352,396,398,399,400,401,403,404,407,417,422,427,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,356,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,360,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,261,277,357,359,362,396,425,430,432,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,284,285,286,287,288,289,308,309,356,431,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[77,80,135,149,152,153,161,178,224,242,243,275,301,305,394,395,397,417,418,427,428,430,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,266,268,271,418,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,262,427,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,265,304,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,264,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,266,267,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,263,265,427,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,149,152,153,197,266,268,269,270,427,428,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,352,353,355,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,228,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,195,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,423,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,77,80,135,152,153,275,305,430,432,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,195,454,455,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,283,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,161,178,193,240,278,280,282,432,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,211,423,428,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,379,423,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,352,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,147,149,152,153,161,193,229,235,283,430,431,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,186,187,188,189,190,430,478,986,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,70,71,72,73,80,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,230,231,232,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,230,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,73,80,135,149,151,152,153,161,185,186,187,188,189,190,191,193,224,328,389,427,429,432,478,986,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,442,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,444,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,446,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,448,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,450,451,452,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,456,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[74,76,80,135,152,153,434,439,441,443,445,447,449,453,457,459,469,470,472,482,483,484,485,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,458,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,468,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,280,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,471,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,134,135,152,153,266,268,269,271,319,423,473,474,475,478,479,480,481,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,185,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,1456,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,708,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,708,1459,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,253,986,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,178,253,457,459,708,986,1450,1453,1454,1455,1456,1457,1458,1459,1460,1461,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,178,457,459,1450,1453,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,708,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,1506,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,1466,1467,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,519,573,611,702,705,706,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,457,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,178,454,457,459,486,490,519,573,611,612,646,649,652,689,702,705,706,707,1450,1451,1452,1453,1464,1465,1466,1467,1468,1469,1470,1506,1507,1508,1509,1510,1511,1512,1513,1514,1515,1516,1517,1518,1519,1520,1521,1522,1523,1524,1525,1526,1527,1528,1529,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,178,457,459,486,490,519,573,611,612,646,649,652,689,702,705,706,707,1451,1452,1453,1517,1518,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,1506,1507,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,486,490,519,573,611,612,646,649,652,689,702,705,706,707,1506,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,1469,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,1506,1509,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,178,457,459,486,490,519,573,611,612,646,649,652,689,702,705,706,707,1451,1452,1453,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,1450,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,178,457,459,486,490,519,573,611,612,646,649,652,689,702,705,706,707,1451,1452,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,459,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,454,457,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,178,457,459,486,490,519,573,611,612,646,649,652,689,702,705,706,707,1451,1452,1453,1517,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,486,490,519,573,611,612,646,649,652,689,702,705,706,707,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,486,490,519,573,611,612,646,649,652,689,702,705,706,707,1531,1532,1533,1534,1535,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,519,573,611,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[69,80,135,152,153,486,490,519,573,611,612,646,649,652,689,702,705,706,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,573,611,702,705,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,510,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,510,515,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,510,511,512,515,516,517,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,518,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,510,511,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,510,512,513,514,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,594,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,583,584,585,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,582,586,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,586,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,704,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,574,605,646,649,652,689,703,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,574,601,610,646,649,652,689,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,659,660,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,574,613,614,646,649,652,661,689,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,689,690,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,490,574,605,610,646,649,652,689,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,167,185,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,574,576,577,589,590,646,649,652,689,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,574,576,577,589,590,591,592,593,598,600,646,649,652,689,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,589,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,576,577,589,590,592,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,580,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,578,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,578,579,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1037,1038,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1063,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1074,1080,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1074,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1143,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1144,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1134,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1141,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1075,1076,1077,1078,1079,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1195,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,805,967,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1249,1250,1253,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1248,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1248,1250,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1126,1127,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1218,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1212,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1014,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1209,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1126,1128,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1069,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1015,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1048,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1041,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1042,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1086,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1086,1106,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1086,1117,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1086,1110,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1086,1095,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1086,1091,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1088,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1086,1087,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1051,1086,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1113,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1087,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,1087,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,805,967,1121,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1128,1129,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1121,1132,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,967,1133,1336,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,607,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,93,96,99,100,135,152,153,178,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[80,96,135,152,153,167,178,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[80,96,100,135,152,153,178,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,167,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,90,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,94,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,92,93,96,135,152,153,178,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,155,175,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[80,90,135,152,153,185,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,92,96,135,152,153,155,178,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[80,87,88,89,91,95,135,146,152,153,167,178,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[80,96,104,112,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,88,94,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,96,121,122,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,88,91,96,135,152,153,170,178,185,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[80,96,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,92,96,135,152,153,178,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[80,87,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,90,91,92,94,95,96,97,98,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,122,123,124,125,126,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,96,114,117,135,143,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,96,104,105,106,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,94,96,105,107,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,95,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,88,90,96,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,96,100,105,107,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,100,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,94,96,99,135,152,153,178,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[80,88,92,96,104,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,96,114,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,107,135,152,153,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,90,96,121,135,152,153,170,183,185,1542,1543,1544,1545,1547,1558,1559,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,605,609,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,489,605,606,608,610,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,968,969,970,971,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,968,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,969,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,602,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,603,604,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,489,603,605,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,974,975,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566],[80,135,152,153,974,1542,1543,1544,1545,1547,1558,1560,1561,1562,1563,1564,1565,1566]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"a384610388221cd70cffb4503cee7853b8b076f2b4a55324b20a4bdbd25a3538","affectsGlobalScope":true},{"version":"170d4db14678c68178ee8a3d5a990d5afb759ecb6ec44dbd885c50f6da6204f6","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"0ff1b165090b491f5e1407ae680b9a0bc3806dc56827ec85f93c57390491e732","impliedFormat":1},{"version":"acd8fd5090ac73902278889c38336ff3f48af6ba03aa665eb34a75e7ba1dccc4","impliedFormat":1},{"version":"d6258883868fb2680d2ca96bc8b1352cab69874581493e6d52680c5ffecdb6cc","impliedFormat":1},{"version":"1b61d259de5350f8b1e5db06290d31eaebebc6baafd5f79d314b5af9256d7153","impliedFormat":1},{"version":"f258e3960f324a956fc76a3d3d9e964fff2244ff5859dcc6ce5951e5413ca826","impliedFormat":1},{"version":"643f7232d07bf75e15bd8f658f664d6183a0efaca5eb84b48201c7671a266979","impliedFormat":1},{"version":"0f6666b58e9276ac3a38fdc80993d19208442d6027ab885580d93aec76b4ef00","impliedFormat":1},{"version":"05fd364b8ef02fb1e174fbac8b825bdb1e5a36a016997c8e421f5fab0a6da0a0","impliedFormat":1},{"version":"631eff75b0e35d1b1b31081d55209abc43e16b49426546ab5a9b40bdd40b1f60","impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"378281aa35786c27d5811af7e6bcaa492eebd0c7013d48137c35bbc69a2b9751","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"1b2dd1cbeb0cc6ae20795958ba5950395ebb2849b7c8326853dd15530c77ab0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"387a023d363f755eb63450a66c28b14cdd7bc30a104565e2dbf0a8988bb4a56c","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"7fb266686238369442bd1719bc0d7edd0199da4fb8540354e1ff7f16669b4323","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"c183b931b68ad184bc8e8372bf663f3d33304772fb482f29fb91b3c391031f3e","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"e1528ca65ac90f6fa0e4a247eb656b4263c470bb22d9033e466463e13395e599","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"830171b27c5fdf9bcbe4cf7d428fcf3ae2c67780fb7fbdccdf70d1623d938bc4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ea15fd99b2e34cb25fe8346c955000bb70c8b423ae4377a972ef46bfb37f595","impliedFormat":1},{"version":"7cf69dd5502c41644c9e5106210b5da7144800670cbe861f66726fa209e231c4","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"f9b4137a0d285bd77dba2e6e895530112264310ae47e07bf311feae428fb8b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b21e13ed07d0df176ae31d6b7f01f7b17d66dbeb489c0d31d00de2ca14883da","impliedFormat":1},{"version":"51aecd2df90a3cffea1eb4696b33b2d78594ea2aa2138e6b9471ec4841c6c2ee","impliedFormat":1},{"version":"9d8f9e63e29a3396285620908e7f14d874d066caea747dc4b2c378f0599166b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"f929f0b6b3421a2d34344b0f421f45aeb2c84ad365ebf29d04312023b3accc58","impliedFormat":1},{"version":"db9ada976f9e52e13f7ae8b9a320f4b67b87685938c5879187d8864b2fbe97f3","impliedFormat":1},{"version":"9f39e70a354d0fba29ac3cdf6eca00b7f9e96f64b2b2780c432e8ea27f133743","impliedFormat":1},{"version":"0dace96cc0f7bc6d0ee2044921bdf19fe42d16284dbcc8ae200800d1c9579335","impliedFormat":1},{"version":"a2e2bbde231b65c53c764c12313897ffdfb6c49183dd31823ee2405f2f7b5378","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"c64e1888baaa3253ca4405b455e4bf44f76357868a1bd0a52998ade9a092ad78","affectsGlobalScope":true,"impliedFormat":1},{"version":"d8cf132379078d0974a59df26069689a2d33c7dc826b5be56231841cb2f32e58","impliedFormat":1},{"version":"fbf413fc617837453c878a9174a1f1b383616857a3f8366bc41cf30df4aea7d5","impliedFormat":1},{"version":"148c73ec11318850f571172ceae3e55ce479d850fe18ec8eae0abd99d9f6c319","impliedFormat":1},{"version":"230bdc111d7578276e4a3bb9d075d85c78c6b68f428c3a9935e2eaa10f4ae1f5","impliedFormat":1},{"version":"e8aabbee5e7b9101b03bb4222607d57f38859b8115a8050a4eb91b4ee43a3a73","impliedFormat":1},{"version":"bbf42f98a5819f4f06e18c8b669a994afe9a17fe520ae3454a195e6eabf7700d","impliedFormat":1},{"version":"c0bb1b65757c72bbf8ddf7eaa532223bacf58041ff16c883e76f45506596e925","impliedFormat":1},{"version":"c8b85f7aed29f8f52b813f800611406b0bfe5cf3224d20a4bdda7c7f73ce368e","affectsGlobalScope":true,"impliedFormat":1},{"version":"145dcf25fd4967c610c53d93d7bc4dce8fbb1b6dd7935362472d4ae49363c7ba","impliedFormat":1},{"version":"ff65b8a8bd380c6d129becc35de02f7c29ad7ce03300331ca91311fb4044d1a9","impliedFormat":1},{"version":"76957a6d92b94b9e2852cf527fea32ad2dc0ef50f67fe2b14bd027c9ceef2d86","impliedFormat":1},{"version":"9043daec15206650fa119bad6b8d70136021ea7d52673a71f79a87a42ee38d44","affectsGlobalScope":true,"impliedFormat":1},{"version":"8ba0db41ed773e152647a78e9053e36a747891db41d6a51c7030a0d0f01babb2","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"8c81fd4a110490c43d7c578e8c6f69b3af01717189196899a6a44f93daa57a3a","impliedFormat":1},{"version":"5fb39858b2459864b139950a09adae4f38dad87c25bf572ce414f10e4bd7baab","impliedFormat":1},{"version":"65faec1b4bd63564aeec33eab9cacfaefd84ce2400f03903a71a1841fbce195f","impliedFormat":1},{"version":"b33b74b97952d9bf4fbd2951dcfbb5136656ddb310ce1c84518aaa77dbca9992","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"6b306cd4282bbb54d4a6bb23cfb7a271160983dfc38c67b5a132504cfcc34896","affectsGlobalScope":true,"impliedFormat":1},{"version":"c119835edf36415081dfd9ed15fc0cd37aaa28d232be029ad073f15f3d88c323","impliedFormat":1},{"version":"450172a56b944c2d83f45cc11c9a388ea967cd301a21202aa0a23c34c7506a18","impliedFormat":1},{"version":"9705cd157ffbb91c5cab48bdd2de5a437a372e63f870f8a8472e72ff634d47c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"72f8936aebf0c4a1adab767b97d34ba7d3a308afcf76de4417b9c16fb92ed548","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"69e0a41d620fb678a899c65e073413b452f4db321b858fe422ad93fd686cd49a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3585d6891e9ea18e07d0755a6d90d71331558ba5dc5561933553209f886db106","affectsGlobalScope":true,"impliedFormat":1},{"version":"86be71cbb0593468644932a6eb96d527cfa600cecfc0b698af5f52e51804451d","impliedFormat":1},{"version":"84dd6b0fd2505135692935599d6606f50a421389e8d4535194bcded307ee5cf2","impliedFormat":1},{"version":"0d5b085f36e6dc55bc6332ecb9c733be3a534958c238fb8d8d18d4a2b6f2a15a","impliedFormat":1},{"version":"db19ea066fdc5f97df3f769e582ae3000380ab7942e266654bdb1a4650d19eaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"2a034894bf28c220a331c7a0229d33564803abe2ac1b9a5feee91b6b9b6e88ea","impliedFormat":1},{"version":"d7e9ab1b0996639047c61c1e62f85c620e4382206b3abb430d9a21fb7bc23c77","impliedFormat":1},{"version":"24259d3dae14de55d22f8b3d3e96954e5175a925ab6a830dc05a1993d4794eda","impliedFormat":1},{"version":"05069916ab9175271d15f9315a41ab28401561fe0e5f85f295c43538a38bd62e","impliedFormat":1},{"version":"be1cc4d94ea60cbe567bc29ed479d42587bf1e6cba490f123d329976b0fe4ee5","impliedFormat":1},{"version":"42bc0e1a903408137c3df2b06dfd7e402cdab5bbfa5fcfb871b22ebfdb30bd0b","impliedFormat":1},{"version":"9894dafe342b976d251aac58e616ac6df8db91fb9d98934ff9dd103e9e82578f","impliedFormat":1},{"version":"413df52d4ea14472c2fa5bee62f7a40abd1eb49be0b9722ee01ee4e52e63beb2","impliedFormat":1},{"version":"db6d2d9daad8a6d83f281af12ce4355a20b9a3e71b82b9f57cddcca0a8964a96","impliedFormat":1},{"version":"829b9e6028b29e6a8b1c01ddb713efe59da04d857089298fa79acbdb3cfcfdef","impliedFormat":1},{"version":"24f8562308dd8ba6013120557fa7b44950b619610b2c6cb8784c79f11e3c4f90","impliedFormat":1},{"version":"c696aa0753345ae6bdaab0e2d4b2053ee76be5140470860eef7e6cadc9f725a1","impliedFormat":1},{"version":"a86f82d646a739041d6702101afa82dcb935c416dd93cbca7fd754fd0282ce1f","impliedFormat":1},{"version":"ad0d1d75d129b1c80f911be438d6b61bfa8703930a8ff2be2f0e1f8a91841c64","impliedFormat":1},{"version":"ce75b1aebb33d510ff28af960a9221410a3eaf7f18fc5f21f9404075fba77256","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"496bbf339f3838c41f164238543e9fe5f1f10659cb30b68903851618464b98ba","impliedFormat":1},{"version":"5178eb4415a172c287c711dc60a619e110c3fd0b7de01ed0627e51a5336aa09c","impliedFormat":1},{"version":"ca6e5264278b53345bc1ce95f42fb0a8b733a09e3d6479c6ccfca55cdc45038c","impliedFormat":1},{"version":"9e2739b32f741859263fdba0244c194ca8e96da49b430377930b8f721d77c000","impliedFormat":1},{"version":"fb1d8e814a3eeb5101ca13515e0548e112bd1ff3fb358ece535b93e94adf5a3a","impliedFormat":1},{"version":"ffa495b17a5ef1d0399586b590bd281056cee6ce3583e34f39926f8dcc6ecdb5","impliedFormat":1},{"version":"98b18458acb46072947aabeeeab1e410f047e0cacc972943059ca5500b0a5e95","impliedFormat":1},{"version":"361e2b13c6765d7f85bb7600b48fde782b90c7c41105b7dab1f6e7871071ba20","impliedFormat":1},{"version":"c86fe861cf1b4c46a0fb7d74dffe596cf679a2e5e8b1456881313170f092e3fa","impliedFormat":1},{"version":"b6db56e4903e9c32e533b78ac85522de734b3d3a8541bf24d256058d464bf04b","impliedFormat":1},{"version":"24daa0366f837d22c94a5c0bad5bf1fd0f6b29e1fae92dc47c3072c3fdb2fbd5","impliedFormat":1},{"version":"570bb5a00836ffad3e4127f6adf581bfc4535737d8ff763a4d6f4cc877e60d98","impliedFormat":1},{"version":"889c00f3d32091841268f0b994beba4dceaa5df7573be12c2c829d7c5fbc232c","impliedFormat":1},{"version":"65f43099ded6073336e697512d9b80f2d4fec3182b7b2316abf712e84104db00","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"acf5a2ac47b59ca07afa9abbd2b31d001bf7448b041927befae2ea5b1951d9f9","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"d71291eff1e19d8762a908ba947e891af44749f3a2cbc5bd2ec4b72f72ea795f","impliedFormat":1},{"version":"c0480e03db4b816dff2682b347c95f2177699525c54e7e6f6aa8ded890b76be7","impliedFormat":1},{"version":"27ab780875bcbb65e09da7496f2ca36288b0c541abaa75c311450a077d54ec15","impliedFormat":1},{"version":"b620391fe8060cf9bedc176a4d01366e6574d7a71e0ac0ab344a4e76576fcbb8","impliedFormat":1},{"version":"380647d8f3b7f852cca6d154a376dbf8ac620a2f12b936594504a8a852e71d2f","impliedFormat":1},{"version":"208c9af9429dd3c76f5927b971263174aaa4bc7621ddec63f163640cbd3c473c","impliedFormat":1},{"version":"6459054aabb306821a043e02b89d54da508e3a6966601a41e71c166e4ea1474f","impliedFormat":1},{"version":"a23185bc5ef590c287c28a91baf280367b50ae4ea40327366ad01f6f4a8edbc5","impliedFormat":1},{"version":"bb37588926aba35c9283fe8d46ebf4e79ffe976343105f5c6d45f282793352b2","impliedFormat":1},{"version":"002eae065e6960458bda3cf695e578b0d1e2785523476f8a9170b103c709cd4f","impliedFormat":1},{"version":"c83bb0c9c5645a46c68356c2f73fdc9de339ce77f7f45a954f560c7e0b8d5ebb","impliedFormat":1},{"version":"05c97cddbaf99978f83d96de2d8af86aded9332592f08ce4a284d72d0952c391","impliedFormat":1},{"version":"72179f9dd22a86deaad4cc3490eb0fe69ee084d503b686985965654013f1391b","impliedFormat":1},{"version":"2e6114a7dd6feeef85b2c80120fdbfb59a5529c0dcc5bfa8447b6996c97a69f5","impliedFormat":1},{"version":"7b6ff760c8a240b40dab6e4419b989f06a5b782f4710d2967e67c695ef3e93c4","impliedFormat":1},{"version":"c8f004e6036aa1c764ad4ec543cf89a5c1893a9535c80ef3f2b653e370de45e6","impliedFormat":1},{"version":"dd80b1e600d00f5c6a6ba23f455b84a7db121219e68f89f10552c54ba46e4dc9","impliedFormat":1},{"version":"b064c36f35de7387d71c599bfcf28875849a1dbc733e82bd26cae3d1cd060521","impliedFormat":1},{"version":"6a148329edecbda07c21098639ef4254ef7869fb25a69f58e5d6a8b7b69d4236","impliedFormat":1},{"version":"8de9fe97fa9e00ec00666fa77ab6e91b35d25af8ca75dabcb01e14ad3299b150","impliedFormat":1},{"version":"f63ab283a1c8f5c79fabe7ca4ef85f9633339c4f0e822fce6a767f9d59282af2","impliedFormat":1},{"version":"dba114fb6a32b355a9cfc26ca2276834d72fe0e94cd2c3494005547025015369","impliedFormat":1},{"version":"a54c996c8870ef1728a2c1fa9b8eaec0bf4a8001cd2583c02dd5869289465b10","impliedFormat":1},{"version":"3e7efde639c6a6c3edb9847b3f61e308bf7a69685b92f665048c45132f51c218","impliedFormat":1},{"version":"df45ca1176e6ac211eae7ddf51336dc075c5314bc5c253651bae639defd5eec5","impliedFormat":1},{"version":"3754982006a3b32c502cff0867ca83584f7a43b1035989ca73603f400de13c96","impliedFormat":1},{"version":"a30ae9bb8a8fa7b90f24b8a0496702063ae4fe75deb27da731ed4a03b2eb6631","impliedFormat":1},{"version":"f974e4a06953682a2c15d5bd5114c0284d5abf8bc0fe4da25cb9159427b70072","impliedFormat":1},{"version":"50256e9c31318487f3752b7ac12ff365c8949953e04568009c8705db802776fb","impliedFormat":1},{"version":"7d73b24e7bf31dfb8a931ca6c4245f6bb0814dfae17e4b60c9e194a631fe5f7b","impliedFormat":1},{"version":"413586add0cfe7369b64979d4ec2ed56c3f771c0667fbde1bf1f10063ede0b08","impliedFormat":1},{"version":"06472528e998d152375ad3bd8ebcb69ff4694fd8d2effaf60a9d9f25a37a097a","impliedFormat":1},{"version":"50b5bc34ce6b12eccb76214b51aadfa56572aa6cc79c2b9455cdbb3d6c76af1d","impliedFormat":1},{"version":"b7e16ef7f646a50991119b205794ebfd3a4d8f8e0f314981ebbe991639023d0e","impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"a401617604fa1f6ce437b81689563dfdc377069e4c58465dbd8d16069aede0a5","impliedFormat":1},{"version":"e9dd71cf12123419c60dab867d44fbee5c358169f99529121eaef277f5c83531","impliedFormat":1},{"version":"5b6a189ba3a0befa1f5d9cb028eb9eec2af2089c32f04ff50e2411f63d70f25d","impliedFormat":1},{"version":"d6e73f8010935b7b4c7487b6fb13ea197cc610f0965b759bec03a561ccf8423a","impliedFormat":1},{"version":"174f3864e398f3f33f9a446a4f403d55a892aa55328cf6686135dfaf9e171657","impliedFormat":1},{"version":"824c76aec8d8c7e65769688cbee102238c0ef421ed6686f41b2a7d8e7e78a931","impliedFormat":1},{"version":"75b868be3463d5a8cfc0d9396f0a3d973b8c297401d00bfb008a42ab16643f13","impliedFormat":1},{"version":"15a234e5031b19c48a69ccc1607522d6e4b50f57d308ecb7fe863d44cd9f9eb3","impliedFormat":1},{"version":"d682336018141807fb602709e2d95a192828fcb8d5ba06dda3833a8ea98f69e3","impliedFormat":1},{"version":"6124e973eab8c52cabf3c07575204efc1784aca6b0a30c79eb85fe240a857efa","impliedFormat":1},{"version":"0d891735a21edc75df51f3eb995e18149e119d1ce22fd40db2b260c5960b914e","impliedFormat":1},{"version":"3b414b99a73171e1c4b7b7714e26b87d6c5cb03d200352da5342ab4088a54c85","impliedFormat":1},{"version":"4fbd3116e00ed3a6410499924b6403cc9367fdca303e34838129b328058ede40","impliedFormat":1},{"version":"b01bd582a6e41457bc56e6f0f9de4cb17f33f5f3843a7cf8210ac9c18472fb0f","impliedFormat":1},{"version":"0a437ae178f999b46b6153d79095b60c42c996bc0458c04955f1c996dc68b971","impliedFormat":1},{"version":"74b2a5e5197bd0f2e0077a1ea7c07455bbea67b87b0869d9786d55104006784f","impliedFormat":1},{"version":"4a7baeb6325920044f66c0f8e5e6f1f52e06e6d87588d837bdf44feb6f35c664","impliedFormat":1},{"version":"6dcf60530c25194a9ee0962230e874ff29d34c59605d8e069a49928759a17e0a","impliedFormat":1},{"version":"7274fbffbd7c9589d8d0ffba68157237afd5cecff1e99881ea3399127e60572f","impliedFormat":1},{"version":"1a42d2ec31a1fe62fdc51591768695ed4a2dc64c01be113e7ff22890bebb5e3f","impliedFormat":1},{"version":"1a82deef4c1d39f6882f28d275cad4c01f907b9b39be9cbc472fcf2cf051e05b","impliedFormat":1},{"version":"c5426dbfc1cf90532f66965a7aa8c1136a78d4d0f96d8180ecbfc11d7722f1a5","impliedFormat":1},{"version":"65a15fc47900787c0bd18b603afb98d33ede930bed1798fc984d5ebb78b26cf9","impliedFormat":1},{"version":"9d202701f6e0744adb6314d03d2eb8fc994798fc83d91b691b75b07626a69801","impliedFormat":1},{"version":"de9d2df7663e64e3a91bf495f315a7577e23ba088f2949d5ce9ec96f44fba37d","impliedFormat":1},{"version":"c7af78a2ea7cb1cd009cfb5bdb48cd0b03dad3b54f6da7aab615c2e9e9d570c5","impliedFormat":1},{"version":"1ee45496b5f8bdee6f7abc233355898e5bf9bd51255db65f5ff7ede617ca0027","impliedFormat":1},{"version":"0c7c947ff881c4274c0800deaa0086971e0bfe51f89a33bd3048eaa3792d4876","affectsGlobalScope":true,"impliedFormat":1},{"version":"db01d18853469bcb5601b9fc9826931cc84cc1a1944b33cad76fd6f1e3d8c544","affectsGlobalScope":true,"impliedFormat":1},{"version":"a8f8e6ab2fa07b45251f403548b78eaf2022f3c2254df3dc186cb2671fe4996d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa6c12a7c0f6b84d512f200690bfc74819e99efae69e4c95c4cd30f6884c526e","impliedFormat":1},{"version":"f1c32f9ce9c497da4dc215c3bc84b722ea02497d35f9134db3bb40a8d918b92b","impliedFormat":1},{"version":"b73c319af2cc3ef8f6421308a250f328836531ea3761823b4cabbd133047aefa","affectsGlobalScope":true,"impliedFormat":1},{"version":"e433b0337b8106909e7953015e8fa3f2d30797cea27141d1c5b135365bb975a6","impliedFormat":1},{"version":"15b36126e0089bfef173ab61329e8286ce74af5e809d8a72edcafd0cc049057f","impliedFormat":1},{"version":"ddff7fc6edbdc5163a09e22bf8df7bef75f75369ebd7ecea95ba55c4386e2441","impliedFormat":1},{"version":"106c6025f1d99fd468fd8bf6e5bda724e11e5905a4076c5d29790b6c3745e50c","impliedFormat":1},{"version":"a57b1802794433adec9ff3fed12aa79d671faed86c49b09e02e1ac41b4f1d33a","impliedFormat":1},{"version":"ad10d4f0517599cdeca7755b930f148804e3e0e5b5a3847adce0f1f71bbccd74","impliedFormat":1},{"version":"1042064ece5bb47d6aba91648fbe0635c17c600ebdf567588b4ca715602f0a9d","impliedFormat":1},{"version":"c49469a5349b3cc1965710b5b0f98ed6c028686aa8450bcb3796728873eb923e","impliedFormat":1},{"version":"4a889f2c763edb4d55cb624257272ac10d04a1cad2ed2948b10ed4a7fda2a428","impliedFormat":1},{"version":"7bb79aa2fead87d9d56294ef71e056487e848d7b550c9a367523ee5416c44cfa","impliedFormat":1},{"version":"72d63643a657c02d3e51cd99a08b47c9b020a565c55f246907050d3c8a5e77fb","impliedFormat":1},{"version":"1d415445ea58f8033ba199703e55ff7483c52ac6742075b803bd3e7bbe9f5d61","impliedFormat":1},{"version":"d6406c629bb3efc31aedb2de809bef471e475c86c7e67f3ef9b676b5d7e0d6b2","impliedFormat":1},{"version":"27ff4196654e6373c9af16b6165120e2dd2169f9ad6abb5c935af5abd8c7938c","impliedFormat":1},{"version":"24428762d0c97b44c4784d28eee9556547167c4592d20d542a79243f7ca6a73f","impliedFormat":1},{"version":"8c030e515014c10a2b98f9f48408e3ba18023dfd3f56e3312c6c2f3ae1f55a16","impliedFormat":1},{"version":"dafc31e9e8751f437122eb8582b93d477e002839864410ff782504a12f2a550c","impliedFormat":1},{"version":"754498c5208ce3c5134f6eabd49b25cf5e1a042373515718953581636491f3c3","impliedFormat":1},{"version":"9c82171d836c47486074e4ca8e059735bf97b205e70b196535b5efd40cbe1bc5","impliedFormat":1},{"version":"f56bdc6884648806d34bc66d31cdb787c4718d04105ce2cd88535db214631f82","impliedFormat":1},{"version":"633d58a237f4bb25ec7d565e4ffa32cecdcee8660ac12189c4351c52557cee9e","impliedFormat":1},{"version":"2e4f37ffe8862b14d8e24ae8763daaa8340c0df0b859d9a9733def0eee7562d9","impliedFormat":1},{"version":"13283350547389802aa35d9f2188effaeac805499169a06ef5cd77ce2a0bd63f","impliedFormat":1},{"version":"ce791f6ea807560f08065d1af6014581eeb54a05abd73294777a281b6dfd73c2","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"49f95e989b4632c6c2a578cc0078ee19a5831832d79cc59abecf5160ea71abad","impliedFormat":1},{"version":"9666533332f26e8995e4d6fe472bdeec9f15d405693723e6497bf94120c566c8","impliedFormat":1},{"version":"ce0df82a9ae6f914ba08409d4d883983cc08e6d59eb2df02d8e4d68309e7848b","impliedFormat":1},{"version":"796273b2edc72e78a04e86d7c58ae94d370ab93a0ddf40b1aa85a37a1c29ecd7","impliedFormat":1},{"version":"5df15a69187d737d6d8d066e189ae4f97e41f4d53712a46b2710ff9f8563ec9f","impliedFormat":1},{"version":"e17cd049a1448de4944800399daa4a64c5db8657cc9be7ef46be66e2a2cd0e7c","impliedFormat":1},{"version":"43fa6ea8714e18adc312b30450b13562949ba2f205a1972a459180fa54471018","impliedFormat":1},{"version":"6e89c2c177347d90916bad67714d0fb473f7e37fb3ce912f4ed521fe2892cd0d","impliedFormat":1},{"version":"43ba4f2fa8c698f5c304d21a3ef596741e8e85a810b7c1f9b692653791d8d97a","impliedFormat":1},{"version":"4d4927cbee21750904af7acf940c5e3c491b4d5ebc676530211e389dd375607a","impliedFormat":1},{"version":"72105519d0390262cf0abe84cf41c926ade0ff475d35eb21307b2f94de985778","impliedFormat":1},{"version":"8a97e578a9bc40eb4f1b0ca78f476f2e9154ecbbfd5567ee72943bab37fc156a","impliedFormat":1},{"version":"c857e0aae3f5f444abd791ec81206020fbcc1223e187316677e026d1c1d6fe08","impliedFormat":1},{"version":"ccf6dd45b708fb74ba9ed0f2478d4eb9195c9dfef0ff83a6092fa3cf2ff53b4f","impliedFormat":1},{"version":"2d7db1d73456e8c5075387d4240c29a2a900847f9c1bff106a2e490da8fbd457","impliedFormat":1},{"version":"2b15c805f48e4e970f8ec0b1915f22d13ca6212375e8987663e2ef5f0205e832","impliedFormat":1},{"version":"f22d05663d873ee7a600faf78abb67f3f719d32266803440cf11d5db7ac0cab2","impliedFormat":1},{"version":"d93c544ad20197b3976b0716c6d5cd5994e71165985d31dcab6e1f77feb4b8f2","impliedFormat":1},{"version":"35069c2c417bd7443ae7c7cafd1de02f665bf015479fec998985ffbbf500628c","impliedFormat":1},{"version":"a8b1c79a833ee148251e88a2553d02ce1641d71d2921cce28e79678f3d8b96aa","impliedFormat":1},{"version":"126d4f950d2bba0bd45b3a86c76554d4126c16339e257e6d2fabf8b6bf1ce00c","impliedFormat":1},{"version":"7e0b7f91c5ab6e33f511efc640d36e6f933510b11be24f98836a20a2dc914c2d","impliedFormat":1},{"version":"045b752f44bf9bbdcaffd882424ab0e15cb8d11fa94e1448942e338c8ef19fba","impliedFormat":1},{"version":"2894c56cad581928bb37607810af011764a2f511f575d28c9f4af0f2ef02d1ab","impliedFormat":1},{"version":"0a72186f94215d020cb386f7dca81d7495ab6c17066eb07d0f44a5bf33c1b21a","impliedFormat":1},{"version":"2d3cc2211f352f46ea6b7cf2c751c141ffcdf514d6e7ae7ee20b7b6742da313f","impliedFormat":1},{"version":"c75445151ff8b77d9923191efed7203985b1a9e09eccf4b054e7be864e27923d","impliedFormat":1},{"version":"0aedb02516baf3e66b2c1db9fef50666d6ed257edac0f866ea32f1aa05aa474f","impliedFormat":1},{"version":"fa8a8fbf91ee2a4779496225f0312aac6635b0f21aa09cdafa4283fe32d519c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"0e8aef93d79b000deb6ec336b5645c87de167168e184e84521886f9ecc69a4b5","impliedFormat":1},{"version":"56ccb49443bfb72e5952f7012f0de1a8679f9f75fc93a5c1ac0bafb28725fc5f","impliedFormat":1},{"version":"20fa37b636fdcc1746ea0738f733d0aed17890d1cd7cb1b2f37010222c23f13e","impliedFormat":1},{"version":"d90b9f1520366d713a73bd30c5a9eb0040d0fb6076aff370796bc776fd705943","impliedFormat":1},{"version":"88e9caa9c5d2ba629240b5913842e7c57c5c0315383b8dc9d436ef2b60f1c391","impliedFormat":1},{"version":"19df3488557c2fc9b4d8f0bac0fd20fb59aa19dec67c81f93813951a81a867f8","affectsGlobalScope":true,"impliedFormat":1},{"version":"a15cf91ab29d3667801562a95730c5f0d96e1d87dffa00a8a91da0002e89fd2d","affectsGlobalScope":true,"impliedFormat":1},{"version":"bef86adb77316505c6b471da1d9b8c9e428867c2566270e8894d4d773a1c4dc2","impliedFormat":1},{"version":"de7052bfee2981443498239a90c04ea5cc07065d5b9bb61b12cb6c84313ad4ef","impliedFormat":1},{"version":"a3e7d932dc9c09daa99141a8e4800fc6c58c625af0d4bbb017773dc36da75426","impliedFormat":1},{"version":"43e96a3d5d1411ab40ba2f61d6a3192e58177bcf3b133a80ad2a16591611726d","impliedFormat":1},{"version":"4a2edd238d9104eac35b60d727f1123de5062f452b70ed8e0366cb36387dfdfd","impliedFormat":1},{"version":"ca921bf56756cb6fe957f6af693a35251b134fb932dc13f3dfff0bb7106f80b4","impliedFormat":1},{"version":"fee92c97f1aa59eb7098a0cc34ff4df7e6b11bae71526aca84359a2575f313d8","impliedFormat":1},{"version":"0bd0297484aacea217d0b76e55452862da3c5d9e33b24430e0719d1161657225","impliedFormat":1},{"version":"2ab6d334bcbf2aff3acfc4fd8c73ecd82b981d3c3aa47b3f3b89281772286904","impliedFormat":1},{"version":"d07cbc787a997d83f7bde3877fec5fb5b12ce8c1b7047eb792996ed9726b4dde","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"4805f6161c2c8cefb8d3b8bd96a080c0fe8dbc9315f6ad2e53238f9a79e528a6","impliedFormat":1},{"version":"b83cb14474fa60c5f3ec660146b97d122f0735627f80d82dd03e8caa39b4388c","impliedFormat":1},{"version":"f374cb24e93e7798c4d9e83ff872fa52d2cdb36306392b840a6ddf46cb925cb6","impliedFormat":1},{"version":"49179c6a23701c642bd99abe30d996919748014848b738d8e85181fc159685ff","impliedFormat":1},{"version":"b73cbf0a72c8800cf8f96a9acfe94f3ad32ca71342a8908b8ae484d61113f647","impliedFormat":1},{"version":"bae6dd176832f6423966647382c0d7ba9e63f8c167522f09a982f086cd4e8b23","impliedFormat":1},{"version":"20865ac316b8893c1a0cc383ccfc1801443fbcc2a7255be166cf90d03fac88c9","impliedFormat":1},{"version":"c9958eb32126a3843deedda8c22fb97024aa5d6dd588b90af2d7f2bfac540f23","impliedFormat":1},{"version":"461d0ad8ae5f2ff981778af912ba71b37a8426a33301daa00f21c6ccb27f8156","impliedFormat":1},{"version":"e927c2c13c4eaf0a7f17e6022eee8519eb29ef42c4c13a31e81a611ab8c95577","impliedFormat":1},{"version":"fcafff163ca5e66d3b87126e756e1b6dfa8c526aa9cd2a2b0a9da837d81bbd72","impliedFormat":1},{"version":"70246ad95ad8a22bdfe806cb5d383a26c0c6e58e7207ab9c431f1cb175aca657","impliedFormat":1},{"version":"f00f3aa5d64ff46e600648b55a79dcd1333458f7a10da2ed594d9f0a44b76d0b","impliedFormat":1},{"version":"772d8d5eb158b6c92412c03228bd9902ccb1457d7a705b8129814a5d1a6308fc","impliedFormat":1},{"version":"45490817629431853543adcb91c0673c25af52a456479588b6486daba34f68bb","impliedFormat":1},{"version":"802e797bcab5663b2c9f63f51bdf67eff7c41bc64c0fd65e6da3e7941359e2f7","impliedFormat":1},{"version":"8b4327413e5af38cd8cb97c59f48c3c866015d5d642f28518e3a891c469f240e","impliedFormat":1},{"version":"8514c62ce38e58457d967e9e73f128eedc1378115f712b9eef7127f7c88f82ae","impliedFormat":1},{"version":"f1289e05358c546a5b664fbb35a27738954ec2cc6eb4137350353099d154fc62","impliedFormat":1},{"version":"4b20fcf10a5413680e39f5666464859fc56b1003e7dfe2405ced82371ebd49b6","impliedFormat":1},{"version":"1d17ba45cfbe77a9c7e0df92f7d95f3eefd49ee23d1104d0548b215be56945ad","impliedFormat":1},{"version":"f7d628893c9fa52ba3ab01bcb5e79191636c4331ee5667ecc6373cbccff8ae12","impliedFormat":1},{"version":"1d879125d1ec570bf04bc1f362fdbe0cb538315c7ac4bcfcdf0c1e9670846aa6","impliedFormat":1},{"version":"9f5a0f3ed33e363b7393223ba4f4af15c13ce94fe3dbdaa476afd2437553a7dd","impliedFormat":1},{"version":"46273e8c29816125d0d0b56ce9a849cc77f60f9a5ba627447501d214466f0ff3","impliedFormat":1},{"version":"d663134457d8d669ae0df34eabd57028bddc04fc444c4bc04bc5215afc91e1f4","impliedFormat":1},{"version":"985153f0deb9b4391110331a2f0c114019dbea90cba5ca68a4107700796e0d75","impliedFormat":1},{"version":"3af3584f79c57853028ef9421ec172539e1fe01853296dc05a9d615ade4ffaf6","impliedFormat":1},{"version":"f82579d87701d639ff4e3930a9b24f4ee13ca74221a9a3a792feb47f01881a9c","impliedFormat":1},{"version":"d7e5d5245a8ba34a274717d085174b2c9827722778129b0081fefd341cca8f55","impliedFormat":1},{"version":"d9d32f94056181c31f553b32ce41d0ef75004912e27450738d57efcd2409c324","impliedFormat":1},{"version":"752513f35f6cff294ffe02d6027c41373adf7bfa35e593dbfd53d95c203635ee","impliedFormat":1},{"version":"6c800b281b9e89e69165fd11536195488de3ff53004e55905e6c0059a2d8591e","impliedFormat":1},{"version":"7d4254b4c6c67a29d5e7f65e67d72540480ac2cfb041ca484847f5ae70480b62","impliedFormat":1},{"version":"1a7e2ea171726446850ec72f4d1525d547ff7e86724cc9e7eec509725752a758","impliedFormat":1},{"version":"8c901126d73f09ecdea4785e9a187d1ac4e793e07da308009db04a7283ec2f37","impliedFormat":1},{"version":"db97922b767bd2675fdfa71e08b49c38b7d2c847a1cc4a7274cb77be23b026f1","impliedFormat":1},{"version":"aab290b8e4b7c399f2c09b957666fc95335eb4522b2dd9ead1bf0cb64da6d6ee","impliedFormat":1},{"version":"94fe3281392e1015b22f39535878610b4fa6f1388dc8d78746be3bc4e4bb8950","impliedFormat":1},{"version":"2652448ac55a2010a1f71dd141f828b682298d39728f9871e1cdf8696ef443fd","impliedFormat":1},{"version":"06c25ddfc2242bd06c19f66c9eae4c46d937349a267810f89783680a1d7b5259","impliedFormat":1},{"version":"120599fd965257b1f4d0ff794bc696162832d9d8467224f4665f713a3119078b","impliedFormat":1},{"version":"5433f33b0a20300cca35d2f229a7fc20b0e8477c44be2affeb21cb464af60c76","impliedFormat":1},{"version":"db036c56f79186da50af66511d37d9fe77fa6793381927292d17f81f787bb195","impliedFormat":1},{"version":"bd4131091b773973ca5d2326c60b789ab1f5e02d8843b3587effe6e1ea7c9d86","impliedFormat":1},{"version":"c7f6485931085bf010fbaf46880a9b9ec1a285ad9dc8c695a9e936f5a48f34b4","impliedFormat":1},{"version":"14f6b927888a1112d662877a5966b05ac1bf7ed25d6c84386db4c23c95a5363b","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"0427df5c06fafc5fe126d14b9becd24160a288deff40e838bfbd92a35f8d0d00","impliedFormat":1},{"version":"90c54a02432d04e4246c87736e53a6a83084357acfeeba7a489c5422b22f5c7a","impliedFormat":1},{"version":"49c346823ba6d4b12278c12c977fb3a31c06b9ca719015978cb145eb86da1c61","impliedFormat":1},{"version":"bfac6e50eaa7e73bb66b7e052c38fdc8ccfc8dbde2777648642af33cf349f7f1","impliedFormat":1},{"version":"92f7c1a4da7fbfd67a2228d1687d5c2e1faa0ba865a94d3550a3941d7527a45d","impliedFormat":1},{"version":"f53b120213a9289d9a26f5af90c4c686dd71d91487a0aa5451a38366c70dc64b","impliedFormat":1},{"version":"83fe880c090afe485a5c02262c0b7cdd76a299a50c48d9bde02be8e908fb4ae6","impliedFormat":1},{"version":"0a372c2d12a259da78e21b25974d2878502f14d89c6d16b97bd9c5017ab1bc12","impliedFormat":1},{"version":"57d67b72e06059adc5e9454de26bbfe567d412b962a501d263c75c2db430f40e","impliedFormat":1},{"version":"6511e4503cf74c469c60aafd6589e4d14d5eb0a25f9bf043dcbecdf65f261972","impliedFormat":1},{"version":"ec1ca97598eda26b7a5e6c8053623acbd88e43be7c4d29c77ccd57abc4c43999","impliedFormat":1},{"version":"6e2261cd9836b2c25eecb13940d92c024ebed7f8efe23c4b084145cd3a13b8a6","impliedFormat":1},{"version":"a67b87d0281c97dfc1197ef28dfe397fc2c865ccd41f7e32b53f647184cc7307","impliedFormat":1},{"version":"771ffb773f1ddd562492a6b9aaca648192ac3f056f0e1d997678ff97dbb6bf9b","impliedFormat":1},{"version":"232f70c0cf2b432f3a6e56a8dc3417103eb162292a9fd376d51a3a9ea5fbbf6f","impliedFormat":1},{"version":"a47e6d954d22dd9ebb802e7e431b560ed7c581e79fb885e44dc92ed4f60d4c07","impliedFormat":1},{"version":"f019e57d2491c159d47a107fd90219a1734bdd2e25cd8d1db3c8fae5c6b414c4","impliedFormat":1},{"version":"8a0e762ceb20c7e72504feef83d709468a70af4abccb304f32d6b9bac1129b2c","impliedFormat":1},{"version":"d1c9bf292a54312888a77bb19dba5e2503ad803f5393beafd45d78d2f4fe9b48","impliedFormat":1},{"version":"9252d498a77517aab5d8d4b5eb9d71e4b225bbc7123df9713e08181de63180f6","impliedFormat":1},{"version":"cb8d8ef7b9ce8ed3e6f1c814fcbf3f90dab0cb8863079236784fc350746e27c4","impliedFormat":1},{"version":"35e6379c3f7cb27b111ad4c1aa69538fd8e788ab737b8ff7596a1b40e96f4f90","impliedFormat":1},{"version":"1fffe726740f9787f15b532e1dc870af3cd964dbe29e191e76121aa3dd8693f2","impliedFormat":1},{"version":"3be035da7bee86b4c3abf392e0edaa44fc6e45092995eefe36b39118c8a84068","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f828825d077c2fa0ea606649faeb122749273a353daab23924fe674e98ba44c","impliedFormat":1},{"version":"2896c2e673a5d3bd9b4246811f79486a073cbb03950c3d252fba10003c57411a","impliedFormat":1},{"version":"616775f16134fa9d01fc677ad3f76e68c051a056c22ab552c64cc281a9686790","impliedFormat":1},{"version":"65c24a8baa2cca1de069a0ba9fba82a173690f52d7e2d0f1f7542d59d5eb4db0","impliedFormat":1},{"version":"f9fe6af238339a0e5f7563acee3178f51db37f32a2e7c09f85273098cee7ec49","impliedFormat":1},{"version":"407a06ba04eede4074eec470ecba2784cbb3bf4e7de56833b097dd90a2aa0651","impliedFormat":1},{"version":"77e71242e71ebf8528c5802993697878f0533db8f2299b4d36aa015bae08a79c","impliedFormat":1},{"version":"98a787be42bd92f8c2a37d7df5f13e5992da0d967fab794adbb7ee18370f9849","impliedFormat":1},{"version":"5c96bad5f78466785cdad664c056e9e2802d5482ca5f862ed19ba34ffbb7b3a4","impliedFormat":1},{"version":"81d8603ac527e75cfec72bb9391228b58f161c2b33514a9d814c7f3ebd3ef466","impliedFormat":1},{"version":"5f3dc10ae646f375776b4e028d2bed039a93eebbba105694d8b910feebbe8b9c","impliedFormat":1},{"version":"bb0cd7862b72f5eba39909c9889d566e198fcaddf7207c16737d0c2246112678","impliedFormat":1},{"version":"4545c1a1ceca170d5d83452dd7c4994644c35cf676a671412601689d9a62da35","impliedFormat":1},{"version":"320f4091e33548b554d2214ce5fc31c96631b513dffa806e2e3a60766c8c49d9","impliedFormat":1},{"version":"a2d648d333cf67b9aeac5d81a1a379d563a8ffa91ddd61c6179f68de724260ff","impliedFormat":1},{"version":"d90d5f524de38889d1e1dbc2aeef00060d779f8688c02766ddb9ca195e4a713d","impliedFormat":1},{"version":"a3f41ed1b4f2fc3049394b945a68ae4fdefd49fa1739c32f149d32c0545d67f5","impliedFormat":1},{"version":"bad68fd0401eb90fe7da408565c8aee9c7a7021c2577aec92fa1382e8876071a","impliedFormat":1},{"version":"47699512e6d8bebf7be488182427189f999affe3addc1c87c882d36b7f2d0b0e","impliedFormat":1},{"version":"fec01479923e169fb52bd4f668dbeef1d7a7ea6e6d491e15617b46f2cacfa37d","impliedFormat":1},{"version":"8a8fb3097ba52f0ae6530ec6ab34e43e316506eb1d9aa29420a4b1e92a81442d","impliedFormat":1},{"version":"44e09c831fefb6fe59b8e65ad8f68a7ecc0e708d152cfcbe7ba6d6080c31c61e","impliedFormat":1},{"version":"1c0a98de1323051010ce5b958ad47bc1c007f7921973123c999300e2b7b0ecc0","impliedFormat":1},{"version":"4655709c9cb3fd6db2b866cab7c418c40ed9533ce8ea4b66b5f17ec2feea46a9","impliedFormat":1},{"version":"87affad8e2243635d3a191fa72ef896842748d812e973b7510a55c6200b3c2a4","impliedFormat":1},{"version":"ad036a85efcd9e5b4f7dd5c1a7362c8478f9a3b6c3554654ca24a29aa850a9c5","impliedFormat":1},{"version":"fedebeae32c5cdd1a85b4e0504a01996e4a8adf3dfa72876920d3dd6e42978e7","impliedFormat":1},{"version":"3eecb25bb467a948c04874d70452b14ae7edb707660aac17dc053e42f2088b00","impliedFormat":1},{"version":"cdf21eee8007e339b1b9945abf4a7b44930b1d695cc528459e68a3adc39a622e","impliedFormat":1},{"version":"330896c1a2b9693edd617be24fbf9e5895d6e18c7955d6c08f028f272b37314d","impliedFormat":1},{"version":"1d9c0a9a6df4e8f29dc84c25c5aa0bb1da5456ebede7a03e03df08bb8b27bae6","impliedFormat":1},{"version":"84380af21da938a567c65ef95aefb5354f676368ee1a1cbb4cae81604a4c7d17","impliedFormat":1},{"version":"1af3e1f2a5d1332e136f8b0b95c0e6c0a02aaabd5092b36b64f3042a03debf28","impliedFormat":1},{"version":"30d8da250766efa99490fc02801047c2c6d72dd0da1bba6581c7e80d1d8842a4","impliedFormat":1},{"version":"03566202f5553bd2d9de22dfab0c61aa163cabb64f0223c08431fb3fc8f70280","impliedFormat":1},{"version":"5f0292a40df210ab94b9fb44c8b775c51e96777e14e073900e392b295ca1061b","impliedFormat":1},{"version":"bc9ee0192f056b3d5527bcd78dc3f9e527a9ba2bdc0a2c296fbc9027147df4b2","impliedFormat":1},{"version":"8627ad129bcf56e82adff0ab5951627c993937aa99f5949c33240d690088b803","impliedFormat":1},{"version":"1de80059b8078ea5749941c9f863aa970b4735bdbb003be4925c853a8b6b4450","impliedFormat":1},{"version":"1d079c37fa53e3c21ed3fa214a27507bda9991f2a41458705b19ed8c2b61173d","impliedFormat":1},{"version":"5bf5c7a44e779790d1eb54c234b668b15e34affa95e78eada73e5757f61ed76a","impliedFormat":1},{"version":"5835a6e0d7cd2738e56b671af0e561e7c1b4fb77751383672f4b009f4e161d70","impliedFormat":1},{"version":"5c634644d45a1b6bc7b05e71e05e52ec04f3d73d9ac85d5927f647a5f965181a","impliedFormat":1},{"version":"4b7f74b772140395e7af67c4841be1ab867c11b3b82a51b1aeb692822b76c872","impliedFormat":1},{"version":"27be6622e2922a1b412eb057faa854831b95db9db5035c3f6d4b677b902ab3b7","impliedFormat":1},{"version":"a68d4b3182e8d776cdede7ac9630c209a7bfbb59191f99a52479151816ef9f9e","impliedFormat":99},{"version":"39644b343e4e3d748344af8182111e3bbc594930fff0170256567e13bbdbebb0","impliedFormat":99},{"version":"ed7fd5160b47b0de3b1571c5c5578e8e7e3314e33ae0b8ea85a895774ee64749","impliedFormat":99},{"version":"63a7595a5015e65262557f883463f934904959da563b4f788306f699411e9bac","impliedFormat":1},{"version":"ecbaf0da125974be39c0aac869e403f72f033a4e7fd0d8cd821a8349b4159628","impliedFormat":1},{"version":"4ba137d6553965703b6b55fd2000b4e07ba365f8caeb0359162ad7247f9707a6","impliedFormat":1},{"version":"ceec3c81b2d81f5e3b855d9367c1d4c664ab5046dff8fd56552df015b7ccbe8f","affectsGlobalScope":true,"impliedFormat":1},{"version":"8fac4a15690b27612d8474fb2fc7cc00388df52d169791b78d1a3645d60b4c8b","affectsGlobalScope":true,"impliedFormat":1},{"version":"064ac1c2ac4b2867c2ceaa74bbdce0cb6a4c16e7c31a6497097159c18f74aa7c","impliedFormat":1},{"version":"3dc14e1ab45e497e5d5e4295271d54ff689aeae00b4277979fdd10fa563540ae","impliedFormat":1},{"version":"1d63055b690a582006435ddd3aa9c03aac16a696fac77ce2ed808f3e5a06efab","impliedFormat":1},{"version":"b789bf89eb19c777ed1e956dbad0925ca795701552d22e68fd130a032008b9f9","impliedFormat":1},"85ae5aee75f011967cf2d25cbc342f62d69314e9d925f7f4aa3456fc2cffcca6",{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"d4a22007b481fe2a2e6bfd3a42c00cd62d41edb36d30fc4697df2692e9891fc8","impliedFormat":1},{"version":"309ebd217636d68cf8784cbc3272c16fb94fb8e969e18b6fe88c35200340aef1","impliedFormat":99},{"version":"235234ffe0b0c8091344a14cc83e1cdf60c4f3abbdbf4c376f3574313d3f9091","impliedFormat":99},{"version":"e361b59c492bbd1da2113d1eb08101c8d71f3c029887acbcd105e6e70c634b6b","impliedFormat":99},{"version":"45247bb63d9d6ddd2082311c7d5f567f1cadfdae9df381616509020249feeb42","impliedFormat":99},{"version":"9bf002511afc49f4343bb5777c35cd00a8665312bc93927124994a4d18a4008c","impliedFormat":99},{"version":"3a0ecea45182b31cdb7a7fefcfd5c56da5e0c96ae111001fa768f52f54dce9f4","impliedFormat":99},{"version":"7230c72f75b27304266e5ea092cd82da2e605062de598183d78171b39d42754c","impliedFormat":99},{"version":"3444149263c59f8562120bc04554b6208b4062bf4e7fe0f62107139606c1e063","impliedFormat":99},{"version":"f8c53bf9e4fece65d829a2d0522d227401e25e85c2ba10c0f18245418c5ded36","impliedFormat":99},{"version":"a2874b365d04b46db1cf6df79adca2acddde4f7ccf1e42e246dbbab8b7f9a647","impliedFormat":99},{"version":"a2874b365d04b46db1cf6df79adca2acddde4f7ccf1e42e246dbbab8b7f9a647","impliedFormat":99},{"version":"a2874b365d04b46db1cf6df79adca2acddde4f7ccf1e42e246dbbab8b7f9a647","impliedFormat":99},{"version":"03dfe654842ad0e69a35b6bd117cf98fb2063c57b5d2c4df4406e29a4b46135f","impliedFormat":99},{"version":"e50cc7d8f2afbd14b4b11b4db1f3018b224a5fa973ad77813c5899be4c7e5b91","impliedFormat":99},{"version":"80e653fbbec818eecfe95d182dc65a1d107b343d970159a71922ac4491caa0af","impliedFormat":99},{"version":"2f821d34a449bbae30860674c1d14a2712e8a6f48daf2cd23f4ba8cb1ffb720d","impliedFormat":99},{"version":"89daf2368d7634f87eeb6bd3b1bef3584d71cfbd09bd16f88a2a43bb9342a7db","impliedFormat":99},{"version":"bad22756de490f855a83fcd719a1547550214731924bdee6343d7b6b5f8de734","impliedFormat":99},{"version":"aff7b85d52604f7ea083913f47efb5e191f3f139e8817cb4f74fb2d2427bb83a","impliedFormat":99},{"version":"193f1b7743aaec33873e283328f529e168123302622e3a045ceadcd7f5ce6ff3","impliedFormat":99},{"version":"1abc56274b53f688360b509004b18be8aff3a80d71a89aec0b66c6638cb4eba1","impliedFormat":99},{"version":"51d61479094395b8a1007b4f26759ff4cbd0bed164c061a2d7b6c2191f17a921","impliedFormat":99},{"version":"be7a13d53450d950f6dfb6e01f72e57990ed0fe4829170e741a50643d1ff38a3","impliedFormat":99},{"version":"d923ce9e38bf31c6cf1f938e775578400ae7f77039b5743b60b455afb71919b6","impliedFormat":99},{"version":"5b1355a05633f768589bc55e2a7b2d9bced7a82a47242bb550e4a904f11df3d7","impliedFormat":99},{"version":"77861241bc1e9db3598eee3108ad376313c55edfac58113c0eeddb2ad741d73a","impliedFormat":99},{"version":"bbb9557d6e7962bbc16b0388e37d8935d3cd32613ff2147cb201f04c75c3534f","impliedFormat":99},{"version":"9c7162a736d94a8ef32765bbd7e4be0e55f3147e36a59e018aafdd761ad02525","impliedFormat":99},{"version":"d49030b9a324bab9bcf9f663a70298391b0f5a25328409174d86617512bf3037","impliedFormat":99},{"version":"c888123e192a2fa20c7d58075aa60b6b48880cdf96bd39e92601ccb698569d05","impliedFormat":1},{"version":"1d959fdfe98916a596e44de2e5c1a302343b6917e58416696822e88bb116c5c2","impliedFormat":1},{"version":"7ee96c33ffa8089198e0caa413a0ded9a7d6bda9c428d721500200f561fa5912","impliedFormat":1},{"version":"0553fe55dea25bca5c65dd32b8ddd3be252dac19deedf5351068b14e3802292c","impliedFormat":1},{"version":"e128206c4e79a401f4d56c6d0eccb0e0024206069064eda35352810bce71a13d","impliedFormat":1},{"version":"07f3e5242785465bb7dfdac011638f60f36f1bdc107d7aed88c6dd5028a05fc8","impliedFormat":1},{"version":"dd41cffa61aeb7f1f45988fdb6554b3cd6c119d2489d1b060485beb17a24f84b","impliedFormat":1},{"version":"5bd39ec249095c24afd1250438ba99828f45ef8fa528ecbfcad2b784f2626b85","impliedFormat":1},{"version":"fb66f815ffad21aa39d287143df839080043df9143319f4c0df0ee7ce981d685","impliedFormat":1},{"version":"a692f79e1c4698b451ac84063159052dd6c5cffd9c1ddcd500371e616f33f49a","impliedFormat":1},{"version":"591c3090cba30fe63313a4cd6e0870e48f664626d06296155053d60e67576bbb","impliedFormat":1},{"version":"602ee2c4c4b144883e6469ce187d73d07053f7fa1832e38bde7b338d93309b4f","impliedFormat":1},{"version":"8599238bbe9b0576d88ba9c905e9cdd2f62b4de11724995e634cc44efe8d468f","impliedFormat":1},{"version":"d708d5cda41ab5cdb7238c75cab0650a1d8216cf0bd803b166a0b4e3371b2ead","impliedFormat":1},{"version":"d8a3e7a3fd488135d24f3dd2b1c355a5c0ef9bf1169356168c015521f9213881","impliedFormat":1},{"version":"8ad33af0c5e997c5fb2687b563ef15be184dfda0284d6ccefa1a63309ea6d3c5","impliedFormat":1},{"version":"adbe638d4ebb0a68e18fd257cc0be63e4dbf96efb311d6f7a0f502f746bae4d2","impliedFormat":1},{"version":"a8128e02f6c067da2f13224157b3b0024b1c5aa9d2a15946438d35d447a06b32","impliedFormat":1},{"version":"c37aecf4c7828e00392c784013513fff8256d700edb45c6aaf07b6f8156ca36f","impliedFormat":1},{"version":"4b95398b7517ab91a0dac31797e02be5a8b0e2160610d998a7b9e51c58f9e657","impliedFormat":1},{"version":"98682515f91248382be2c583a819e8e0bef160ad5ec0c49346100098755b4b80","impliedFormat":1},{"version":"69b50a12f5fe856d5d4d486e068938f364f4e04eee6b2ed323139b7c85edf849","impliedFormat":1},{"version":"ecfb422f8cf7cd66fa315e5501ca3d613cdde85aafeab0c22594d9ea3b2783df","impliedFormat":1},{"version":"f54a16d715fb229425b99ce208848b9528b4a0eefb2ab1052e30ab97f215a5dd","impliedFormat":1},{"version":"3ffb73d98590f61b003647a41911a51e82fce04b7dd8e1eca0390c240540e551","impliedFormat":1},{"version":"765b9f5a1b16c41688e883bd3bb9f0e33d4f5e26cc88b2ba80dca534ecea2cd1","impliedFormat":1},{"version":"12fcef9ef0bba67853c41e49cd57da352cc5d6b940a4ec7b5d9f46075b48bdf7","impliedFormat":1},{"version":"b133a567fe7e2ddd69391d546fcc8f29dd3983aee8e9b5e1a0af967c9624ed9f","impliedFormat":1},{"version":"62a013c189f3ac31c869642c0d6765e41519ba86ee7816de50d0df432693ff00","impliedFormat":1},{"version":"d1e4734feadf722b761d72b601f52aff639497e01f30210c2498b236c88f6d1f","impliedFormat":1},{"version":"b7b3112ed4a8c225f37b6c3b33147b291d76973ab3ad291b49a18df4cb3dfe10","impliedFormat":1},{"version":"2efd37a6626889d88e7881b1a3228a24944f7b4a02e4a72081b684bf28477f93","impliedFormat":1},{"version":"3f8d9d32bba66703ef3cbd3db94ab1092a2ca0f32415947e8eddbfab897fbc11","impliedFormat":1},{"version":"8a480dd48b83a683049509d51b4c008efafd17fc31ffb13c956ea0eaccbd9f36","impliedFormat":1},{"version":"310837536fb604daac566843519d1aa381312933c070bb250a34e2f8ccd8df09","impliedFormat":1},{"version":"a6b6d531ffc0e07459b9ee80664e938f998944d36807003dac316dc927aaffcf","impliedFormat":1},{"version":"b2e20e48ee8ca889fb3196cdc4a15ebc0f7f840dcacc05d0669a400f3753d5bd","impliedFormat":1},{"version":"a4dfc191cc9469a444e39351b9b2ad2eaf6eb9a3f977827c3f08b7bfb9d6cddd","impliedFormat":1},{"version":"92361785eb6735bbd0e4e04f2b353b4d1502b0dd452a307d1d8514ba4ab062cb","impliedFormat":1},{"version":"f3a5f83f1f11602ef9f1f1859c391996a375b7581041aaace936387a8caac650","impliedFormat":1},{"version":"806fe0c46d860f0e256964de1aa5a4fbafb7fdaa152bc3be20edd7890444a8ae","impliedFormat":1},{"version":"219efb4c63c52fbb2df716391a8c3b71176cd9861d29300d247bfed566d0c6e0","impliedFormat":1},{"version":"bc264ae77c91f490c177e2353c44eb1d0dff40367d958159789f1e51c4f8fb79","impliedFormat":1},{"version":"ed3ff1f2a9d6f6111efe3a848966be05da8123a8f5da106d0c451bf0a100afb5","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"2d355bca3bcd3583b8c8b5820c4ead05917d24f2ca08d402a2ec1c112e17b087","impliedFormat":1},{"version":"48def278284b6070983dc9b8eb1a5d91946eb70eabf9b9a0d3daa4d1e31cb4ee","impliedFormat":1},{"version":"bcf3d283431b202ead3430491573d56e34153a122181c122ea0207f8f45c6828","impliedFormat":1},{"version":"d5424c5b192d8683d39187553a7f7aad733af72c70c0ddd3423244650de9e862","impliedFormat":1},{"version":"a827909fa8035922dd865b896d017b6e35e47b1bcc1f23ae56a68dfeb5141f24","impliedFormat":1},{"version":"1eec30e1287373c57a19b7b0e6c7769eaeed91f889c930c7c1f8af64d0a57935","impliedFormat":1},{"version":"038b0db492ddf28ff7bfc06da3a9bb4209bd24be978950ed895a6e3cd7deafa6","impliedFormat":1},{"version":"bf46e2f4e1c7aaa5d3e04f175cae4b6ff230718d606b055bcf929fe81babfd14","impliedFormat":1},{"version":"4fa2f105c0cf7969521837f4bef954f31fa1e228d9b0cde44e6503722a60c858","impliedFormat":1},{"version":"79b4369233a12c6fa4a07301ecb7085802c98f3a77cf9ab97eee27e1656f82e6","impliedFormat":1},{"version":"6c3741e44c9b0ebd563c8c74dcfb2f593190dfd939266c07874dc093ecb4aa0e","impliedFormat":99},{"version":"367986e86147da028e1a107cd1c72666a5677d6339d3af294d5e253dfe66ea5a","impliedFormat":99},{"version":"10ab5b311087399a1a08c27cc72758f3069067b6934407347bd5f83fa2bf8928","impliedFormat":99},{"version":"a65735a086ae8b401c1c41b51b41546532670c919fd2cedc1606fd186fcee2d7","impliedFormat":99},{"version":"fe021dbde66bd0d6195d4116dcb4c257966ebc8cfba0f34441839415e9e913e1","impliedFormat":99},{"version":"d52a4b1cabee2c94ed18c741c480a45dd9fed32477dd94a9cc8630a8bc263426","impliedFormat":99},{"version":"d059a52684789e6ef30f8052244cb7c52fb786e4066ac415c50642174cc76d14","impliedFormat":99},{"version":"2ccdfd33a753c18e8e5fe8a1eadefff968531d920bc9cdc7e4c97b0c6d3dcaf8","impliedFormat":99},{"version":"d64a434d7fb5040dbe7d5f4911145deda53e281b3f1887b9a610defd51b3c1a2","impliedFormat":99},{"version":"927f406568919fd7cd238ef7fe5e9c5e9ec826f1fff89830e480aff8cfd197da","impliedFormat":99},{"version":"a77d742410fe78bb054d325b690fda75459531db005b62ba0e9371c00163353c","impliedFormat":99},{"version":"f8de61dd3e3c4dc193bb341891d67d3979cb5523a57fcacaf46bf1e6284e6c35","impliedFormat":99},{"version":"addca1bb7478ebc3f1c67b710755acc945329875207a3c9befd6b5cbcab12574","impliedFormat":99},{"version":"50b565f4771b6b150cbf3ae31eb815c31f15e2e0f45518958a5f4348a1a01660","impliedFormat":99},{"version":"eaee342ebb3a826a48c87c1af3ec9359ee5452da6e960751fcd5c5dd8ca8d7ea","impliedFormat":99},{"version":"bc7f70d67697f70e89ef74f6620b9ac0096a3f0ee3cdf2531b4fa08d2af4219d","impliedFormat":99},{"version":"4056a596190daaaa7268f5465b972915facc5eca90ee6432e90afa130ba2e4ee","impliedFormat":99},{"version":"aa20728bb08af6288996197b97b5ed7bcfb0b183423bb482a9b25867a5b33c57","impliedFormat":99},{"version":"5322c3686d3797d415f8570eec54e898f328e59f8271b38516b1366074b499aa","impliedFormat":99},{"version":"b0aa778c53f491350d81ec58eb3e435d34bef2ec93b496c51d9b50aa5a8a61e5","impliedFormat":99},{"version":"fa454230c32f38213198cf47db147caf4c03920b3f8904566b29a1a033341602","impliedFormat":99},{"version":"5571608cd06d2935efe2ed7ba105ec93e5c5d1e822d300e5770a1ad9a065c8b6","impliedFormat":99},{"version":"6bf8aa6ed64228b4d065f334b8fe11bc11f59952fd15015b690dfb3301c94484","impliedFormat":99},{"version":"41ae2bf47844e4643ebe68b8e0019af7a87a9daea2d38959a9f7520ada9ad3cb","impliedFormat":99},{"version":"f4498a2ac4186466abe5f9641c9279a3458fa5992dc10ed4581c265469b118d4","impliedFormat":99},{"version":"bd09a0e906dae9a9351c658e7d8d6caa9f4df2ba104df650ebca96d1c4f81c23","impliedFormat":99},{"version":"055ad004f230e10cf1099d08c6f5774c564782bd76fbefbda669ab1ad132c175","impliedFormat":99},{"version":"2b37ba54ec067598bf912d56fcb81f6d8ad86a045c757e79440bdef97b52fe1b","impliedFormat":99},{"version":"1bc9dd465634109668661f998485a32da369755d9f32b5a55ed64a525566c94b","impliedFormat":99},{"version":"5702b3c2f5d248290ed99419d77ca1cc3e6c29db5847172377659c50e6303768","impliedFormat":99},{"version":"9764b2eb5b4fc0b8951468fb3dbd6cd922d7752343ef5fbf1a7cd3dfcd54a75e","impliedFormat":99},{"version":"1fc2d3fe8f31c52c802c4dee6c0157c5a1d1f6be44ece83c49174e316cf931ad","impliedFormat":99},{"version":"dc4aae103a0c812121d9db1f7a5ea98231801ed405bf577d1c9c46a893177e36","impliedFormat":99},{"version":"106d3f40907ba68d2ad8ce143a68358bad476e1cc4a5c710c11c7dbaac878308","impliedFormat":99},{"version":"42ad582d92b058b88570d5be95393cf0a6c09a29ba9aa44609465b41d39d2534","impliedFormat":99},{"version":"36e051a1e0d2f2a808dbb164d846be09b5d98e8b782b37922a3b75f57ee66698","impliedFormat":99},{"version":"c20c6267d89b11813a3a6af9b9531518c554bfcce896cc14eee2e567e8fd59b6","impliedFormat":99},{"version":"312dfc2d7c1f6504c5dbf81d58a059a7884ee488d48160f0953751483eeb0999","impliedFormat":99},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"5d08a179b846f5ee674624b349ebebe2121c455e3a265dc93da4e8d9e89722b4","impliedFormat":1},{"version":"89dcbbf69b16cd94043e16c7fbcfa04256577ec98bb8ae894833d2a922394db4","impliedFormat":1},{"version":"d9a75d09e41d52d7e1c8315cc637f995820a4a18a7356a0d30b1bed6d798aa70","impliedFormat":99},{"version":"a76819b2b56ccfc03484098828bdfe457bc16adb842f4308064a424cb8dba3e4","impliedFormat":99},{"version":"a5dbd4c9941b614526619bad31047ddd5f504ec4cdad88d6117b549faef34dd3","impliedFormat":99},{"version":"011423c04bfafb915ceb4faec12ea882d60acbe482780a667fa5095796c320f8","impliedFormat":99},{"version":"f8eb2909590ec619643841ead2fc4b4b183fbd859848ef051295d35fef9d8469","impliedFormat":99},{"version":"fe784567dd721417e2c4c7c1d7306f4b8611a4f232f5b7ce734382cf34b417d2","impliedFormat":99},{"version":"45d1e8fb4fd3e265b15f5a77866a8e21870eae4c69c473c33289a4b971e93704","impliedFormat":99},{"version":"cd40919f70c875ca07ecc5431cc740e366c008bcbe08ba14b8c78353fb4680df","impliedFormat":99},{"version":"ddfd9196f1f83997873bbe958ce99123f11b062f8309fc09d9c9667b2c284391","impliedFormat":99},{"version":"2999ba314a310f6a333199848166d008d088c6e36d090cbdcc69db67d8ae3154","impliedFormat":99},{"version":"62c1e573cd595d3204dfc02b96eba623020b181d2aa3ce6a33e030bc83bebb41","impliedFormat":99},{"version":"ca1616999d6ded0160fea978088a57df492b6c3f8c457a5879837a7e68d69033","impliedFormat":99},{"version":"835e3d95251bbc48918bb874768c13b8986b87ea60471ad8eceb6e38ddd8845e","impliedFormat":99},{"version":"de54e18f04dbcc892a4b4241b9e4c233cfce9be02ac5f43a631bbc25f479cd84","impliedFormat":99},{"version":"453fb9934e71eb8b52347e581b36c01d7751121a75a5cd1a96e3237e3fd9fc7e","impliedFormat":99},{"version":"bc1a1d0eba489e3eb5c2a4aa8cd986c700692b07a76a60b73a3c31e52c7ef983","impliedFormat":99},{"version":"4098e612efd242b5e203c5c0b9afbf7473209905ab2830598be5c7b3942643d0","impliedFormat":99},{"version":"28410cfb9a798bd7d0327fbf0afd4c4038799b1d6a3f86116dc972e31156b6d2","impliedFormat":99},{"version":"514ae9be6724e2164eb38f2a903ef56cf1d0e6ddb62d0d40f155f32d1317c116","impliedFormat":99},{"version":"970e5e94a9071fd5b5c41e2710c0ef7d73e7f7732911681592669e3f7bd06308","impliedFormat":99},{"version":"491fb8b0e0aef777cec1339cb8f5a1a599ed4973ee22a2f02812dd0f48bd78c1","impliedFormat":99},{"version":"6acf0b3018881977d2cfe4382ac3e3db7e103904c4b634be908f1ade06eb302d","impliedFormat":99},{"version":"2dbb2e03b4b7f6524ad5683e7b5aa2e6aef9c83cab1678afd8467fde6d5a3a92","impliedFormat":99},{"version":"135b12824cd5e495ea0a8f7e29aba52e1adb4581bb1e279fb179304ba60c0a44","impliedFormat":99},{"version":"e4c784392051f4bbb80304d3a909da18c98bc58b093456a09b3e3a1b7b10937f","impliedFormat":99},{"version":"2e87c3480512f057f2e7f44f6498b7e3677196e84e0884618fc9e8b6d6228bed","impliedFormat":99},{"version":"66984309d771b6b085e3369227077da237b40e798570f0a2ddbfea383db39812","impliedFormat":99},{"version":"e41be8943835ad083a4f8a558bd2a89b7fe39619ed99f1880187c75e231d033e","impliedFormat":99},{"version":"260558fff7344e4985cfc78472ae58cbc2487e406d23c1ddaf4d484618ce4cfd","impliedFormat":99},{"version":"a3d5be0365b28b3281541d39d9db08d30b88de49576ddfbbb5d086155017b283","impliedFormat":99},{"version":"985d310b29f50ce5d4b4666cf2e5a06e841f3e37d1d507bd14186c78649aa3dd","impliedFormat":99},{"version":"af1120ba3de51e52385019b7800e66e4694ebc9e6a4a68e9f4afc711f6ae88be","impliedFormat":99},{"version":"5c6b3840cbc84f6f60abfc5c58c3b67b7296b5ebe26fd370710cfc89bbe3a5f1","impliedFormat":99},{"version":"91ef552cc29ec57d616e95d73ee09765198c710fa34e20b25cb9f9cf502821f1","impliedFormat":99},{"version":"25b6edf357caf505aa8e21a944bb0f7a166c8dac6a61a49ad1a0366f1bde5160","impliedFormat":99},{"version":"1ab840e4672a64e3c705a9163142e2b79b898db88b3c18400e37dbe88a58fa60","impliedFormat":99},{"version":"48516730c1cf1b72cac2da04481983cfe61359101d8563314457ecb059b102a9","impliedFormat":99},{"version":"d391200bb56f44a4be56e6571b2aeedfe602c0fd3c686b87b1306ae62e80b1e9","impliedFormat":99},{"version":"3b3e4b39cbb8adb1f210af60388e4ad66f6dfdeb45b3c8dde961f557776d88fe","impliedFormat":99},{"version":"431f31d10ad58b5767c57ffbf44198303b754193ba8fbf034b7cf8a3ab68abc1","impliedFormat":99},{"version":"a52180aca81ba4ef18ac145083d5d272c3a19f26db54441d5a7d8ef4bd601765","impliedFormat":99},{"version":"9de8aba529388309bc46248fb9c6cca493111a6c9fc1c1f087a3b281fb145d77","impliedFormat":99},{"version":"f07c5fb951dfaf5eb0c6053f6a77c67e02d21c9586c58ed0836d892e438c5bb2","impliedFormat":99},{"version":"c97b20bb0ad5d42e1475255cb13ede29fe1b8c398db5cba2a5842f1cb973b658","impliedFormat":99},{"version":"5559999a83ecfa2da6009cdab20b402c63cd6bb0f7a13fc033a5b567b3eb404b","impliedFormat":99},{"version":"aec26ed2e2ef8f2dbc6ffce8e93503f0c1a6b6cf50b6a13141a8462e7a6b8c79","impliedFormat":99},{"version":"a510938c29a2e04183c801a340f0bbb5a0ae091651bd659214a8587d710ddfbb","impliedFormat":99},{"version":"07bcf85b52f652572fc2a7ec58e6de5dd4fcaf9bbc6f4706b124378cedcbb95c","impliedFormat":99},{"version":"4368a800522ca3dd131d3bbc05f2c46a8b7d612eefca41d5c2e5ac0428a45582","impliedFormat":99},{"version":"720e56f06175c21512bcaeed59a4d4173cd635ea7b4df3739901791b83f835b9","impliedFormat":99},{"version":"349949a8894257122f278f418f4ee2d39752c67b1f06162bb59747d8d06bbc51","impliedFormat":99},{"version":"364832fbef8fb60e1fee868343c0b64647ab8a4e6b0421ca6dafb10dff9979ba","impliedFormat":99},{"version":"dfe4d1087854351e45109f87e322a4fb9d3d28d8bd92aa0460f3578320f024e9","impliedFormat":99},{"version":"886051ae2ccc4c5545bedb4f9af372d69c7c3844ae68833ed1fba8cae8d90ef8","impliedFormat":99},{"version":"3f4e5997cb760b0ef04a7110b4dd18407718e7502e4bf6cd8dd8aa97af8456ff","impliedFormat":99},{"version":"381b5f28b29f104bbdd130704f0a0df347f2fc6cb7bab89cfdc2ec637e613f78","impliedFormat":99},{"version":"a52baccd4bf285e633816caffe74e7928870ce064ebc2a702e54d5e908228777","impliedFormat":99},{"version":"c6120582914acd667ce268849283702a625fee9893e9cad5cd27baada5f89f50","impliedFormat":99},{"version":"da1c22fbbf43de3065d227f8acbc10b132dfa2f3c725db415adbe392f6d1359f","impliedFormat":99},{"version":"858880acbe7e15f7e4f06ac82fd8f394dfe2362687271d5860900d584856c205","impliedFormat":99},{"version":"8dfb1bf0a03e4db2371bafe9ac3c5fb2a4481c77e904d2a210f3fed7d2ad243a","impliedFormat":99},{"version":"bc840f0c5e7274e66f61212bb517fb4348d3e25ed57a27e7783fed58301591e0","impliedFormat":99},{"version":"26438d4d1fc8c9923aea60424369c6e9e13f7ce2672e31137aa3d89b7e1ba9af","impliedFormat":99},{"version":"1ace7207aa2566178c72693b145a566f1209677a2d5e9fb948c8be56a1a61ca9","impliedFormat":99},{"version":"a776df294180c0fdb62ba1c56a959b0bb1d2967d25b372abefdb13d6eba14caf","impliedFormat":99},{"version":"6c88ea4c3b86430dd03de268fd178803d22dc6aa85f954f41b1a27c6bb6227f2","impliedFormat":99},{"version":"11e17a3addf249ae2d884b35543d2b40fabf55ddcbc04f8ee3dcdae8a0ce61eb","impliedFormat":99},{"version":"4fd8aac8f684ee9b1a61807c65ee48f217bf12c77eb169a84a3ba8ddf7335a86","impliedFormat":99},{"version":"1d0736a4bfcb9f32de29d6b15ac2fa0049fd447980cf1159d219543aa5266426","impliedFormat":99},{"version":"11083c0a8f45d2ec174df1cb565c7ba9770878d6820bf01d76d4fedb86052a77","impliedFormat":99},{"version":"d8e37104ef452b01cefe43990821adc3c6987423a73a1252aa55fb1d9ebc7e6d","impliedFormat":99},{"version":"f5622423ee5642dcf2b92d71b37967b458e8df3cf90b468675ff9fddaa532a0f","impliedFormat":99},{"version":"21a942886d6b3e372db0504c5ee277285cbe4f517a27fc4763cf8c48bd0f4310","impliedFormat":99},{"version":"41a4b2454b2d3a13b4fc4ec57d6a0a639127369f87da8f28037943019705d619","impliedFormat":99},{"version":"e9b82ac7186490d18dffaafda695f5d975dfee549096c0bf883387a8b6c3ab5a","impliedFormat":99},{"version":"eed9b5f5a6998abe0b408db4b8847a46eb401c9924ddc5b24b1cede3ebf4ee8c","impliedFormat":99},{"version":"f99db2cd80274f32467ae5231d74632c35596ab75fa65baac3fec9dd551cf9d7","impliedFormat":99},{"version":"c799ceedd4821387e6f3518cf5725f9430e2fb7cae1d4606119a243dea28ee40","impliedFormat":99},{"version":"dcf54538d0bfa5006f03bf111730788a7dd409a49036212a36b678afa0a5d8c6","impliedFormat":99},{"version":"1ed428700390f2f81996f60341acef406b26ad72f74fc05afaf3ca101ae18e61","impliedFormat":99},{"version":"417048bbdce52a57110e6c221d6fa4e883bde6464450894f3af378a8b9a82a47","impliedFormat":99},{"version":"ab0048d2b673c0d60afc882a4154abcb2edb9a10873375366f090ae7ae336fe8","impliedFormat":99},{"version":"f8a6bb79327f4a6afc63d28624654522fc80f7536efa7a617ef48200b7a5f673","impliedFormat":1},{"version":"3e61b9db82b5e4a8ffcdd54812fda9d980cd4772b1d9f56b323524368eed9e5a","impliedFormat":99},{"version":"dcbc70889e6105d3e0a369dcea59a2bd3094800be802cd206b617540ff422708","impliedFormat":99},{"version":"f0d325b9e8d30a91593dc922c602720cec5f41011e703655d1c3e4e183a22268","impliedFormat":99},{"version":"afbd42eb9f22aa6a53aa4d5f8e09bb289dd110836908064d2a18ea3ab86a1984","impliedFormat":99},{"version":"5bb37c8ed3d343ae525902e64be52edbc1ce0a5ad86ca2201118c0d8168078e5","impliedFormat":1},{"version":"61838b01af740887b4fe07d0602c2d62a66cd84cf309e4f7a5c21ec15d656510","impliedFormat":99},{"version":"15ec7a0b94628e74974c04379e20de119398638b3c70f0fa0c76ab92956be77c","impliedFormat":99},{"version":"c0d1ee395f67ad47a8e8e74acaff8f56a31af1925e7989e69502be57016a7cd7","impliedFormat":99},{"version":"33abc1d0628959795b7bc25c0cc7202554236b974d73146c1a1aadb7a8c2b213","impliedFormat":99},{"version":"4988820a1950b86c971c9bb361d8e8939d299a76385807e0853350f4a44bb0be","impliedFormat":99},{"version":"8f23c1924c0e9c1845965fdd7b88de23f16672f9445e5b69b8c0abcef08d0e20","signature":"9c0eeb8de8dfdfb63ebcef09564c84ae1f6b6187c8e8e274fc5b0ee0a2c8432b"},{"version":"37c7961117708394f64361ade31a41f96cef7f2a6606300821c72438dd4abda3","impliedFormat":1},{"version":"5f38aeb6dea42ad0e3cc7f8feafadad51e0d8a51a743e88cd6f3380caf921779","affectsGlobalScope":true,"impliedFormat":1},{"version":"cf805f6b2f9b3b796a0c86fcaa15bc9b5b95a46e60e1808b6108f264871911df","affectsGlobalScope":true,"impliedFormat":1},{"version":"98bca214055937eb15f0a586fd4e1bae751a79840f1396f8465f2673aa26cb76","impliedFormat":1},{"version":"9a88bd18163b613c461ad20bf3b22c7beb5da7c9f67d9615417e18e6b9223d51","signature":"7aa9a11c0860312ed7ef6c73acad1eeb2b92ffc06ec26febaf305b674ef1df73"},{"version":"c0c4062004ea0a299dfa51248c6ebe7121274830f5fd4caf97da235b25d01242","signature":"d7e16c8516387f2c0699959359a7749b17c9c6898a297c0628881b5e75a1f2d1"},{"version":"7f669a75563882c2157b78106226dc28e1c37f8f4a11d2b94fd85f3949dc8eeb","signature":"751c08d1154b195306cdbf6dc7b50956a403415d31f2608117e0886f3f82a1b6"},"dcb6ee27b7ee33a059c82f024df1581d1c10b070f3ded07f5fe94ea3f7e77d62",{"version":"45df11ed45eb1c707ef59206bb0c6daddd348e59803bf26646ad0d85c00eb633","impliedFormat":99},{"version":"ae046314c0651da4a01e9e48ddf370ce9d22ad21f48962f25a12c1c09de9b01a","impliedFormat":99},{"version":"d0e136d6bf3c38be7af296b7e01912b6e8944a428ba7fd1e415a10acd9e687e8","impliedFormat":99},{"version":"7a685305685db7f9d2195ae629df44ae5888c13371a032ebe629a615a177a45b","impliedFormat":99},{"version":"026b28bf8f8c6f88e4e3aee7dd69f2523b91df8310bf6557d71c853144ec0720","impliedFormat":99},{"version":"4bc5ace72e3fcd7da9d8872af098c4b157ad8bd98b1996c097212884dc8e09cb","impliedFormat":99},{"version":"c3aa1b9d09adac7ac5e49aba8e8fa7114c2c842d46c2c5f51da53ec889787bac","impliedFormat":99},{"version":"7cd8fbd00f9608795145d427ff641d7abc485cd485d833ea1d9a90222ee73778","impliedFormat":99},{"version":"0f4f54801406a0a67455a9ad950bed9f4d2921fd66a91682f83a985086d60082","impliedFormat":99},{"version":"7c128cd80303077ca51f3b70b6103f5715048642f5b232cacc02f515ea2c0149","impliedFormat":99},{"version":"8c18a2ccca01e6ec6bb951c9a376d12b08112ee5237826caa913d85b4e3cadb5","impliedFormat":99},{"version":"935c01e5232775764203dce2944dfd69047e66765e6e521fa11d110b74aac76a","impliedFormat":99},{"version":"6aeb63cfffaa8f3274025ba556e6d90d9e90a0b5a664bdcd26fcb23486309efd","impliedFormat":99},{"version":"4f0d9edb39ca115f34bf49e6047d041fa9b589dbe5e652ccec0e61bcc4ceb6a5","impliedFormat":99},{"version":"6e5aa91099e2fe5d1d05f6f3100a90e5a5d9b8aea7b0ea6f4d05a0f192899a64","impliedFormat":99},{"version":"bd85cba544b37cd32e8d02b138c3a2a4075930d01146b3f5e33d713b39dafe77","impliedFormat":99},{"version":"0356655e60acc281c43788011d9f0115438503e6da81ae50afa063c212b86cdd","impliedFormat":99},{"version":"20ca05d62223bf6f117925ef8f9b9781e894cb146d30ac491e0763d34e53a5d0","impliedFormat":99},{"version":"4ba733d1a5ff0a0779b714468b13c9089f0d877e6fbd0147fac7c3af54c89fe0","impliedFormat":99},{"version":"697203f3f5a1fea90e40fe660360325090ab36e630dc9422a1909dd4faa2cacc","impliedFormat":99},{"version":"ad1226eba93a65cdccdb1b4f115d67c5469e12705dbe80139c2988d6b296d04d","impliedFormat":99},{"version":"4ea2c94c3a1c87029d10f11c209674d4c6a0c675a97503dc9668d2815ff6ea11","impliedFormat":99},{"version":"2c78675da824686c3541304a927c852a10611b38cdd99b7798e7d923429dc759","impliedFormat":99},{"version":"42ff88c837d04ae4aa8dad82b40613d4f23eddfa674862cf323a4765864f895f","impliedFormat":99},{"version":"94cfe3be66e4a6a1d52eaff0eb03bea21b4cded83428272c28feedfa5f9a152a","impliedFormat":99},{"version":"c2cf5eb33fc641dd321afd12c726ac3e753a81ab1618270ce6cd508f927989c7","impliedFormat":99},{"version":"a7f2f38cd72a96e7678555a1166a4488771b94e5a9c799d1c8943974ada483bd","impliedFormat":99},{"version":"c519327110a82e5eeaad683dc64f36994f19d9893fe69c4ea2b19d41b7e3e45b","impliedFormat":99},{"version":"fa525a25eaf81e3eaef7ca328c352bf4b38e1392ba468aeef117477a5dc42ea7","impliedFormat":99},{"version":"74a3f8babbd6269b402051673c8b255ad31db07539e37bc15aedcf6311fbb53c","impliedFormat":99},{"version":"73c4f628937d4e4a94d5af1c04bf57008a9d2c5f94a8fe6d9da8d51783069e15","impliedFormat":99},{"version":"f8e1fd0e462a1208e7c1e804fa87790112a6ba8c90ad3dc341d7c6430a8b79e1","impliedFormat":99},{"version":"1636e5ef72e41182b6a6a3e62595a3ff60c48f8b6fdb7373b2e7f7eb0f9485d7","impliedFormat":99},{"version":"6fbdecf06e73381e692ae1c2637a93fe2fa21f08e7cfebfac1cd2d50c6c6df6c","impliedFormat":99},{"version":"e437fb52a096addea9cf385b00cadc5fc34b8b8f6a7e63ef02b26cdc495478ab","impliedFormat":99},{"version":"75ad38105b8decc3c60ee068c8d76e3f546b4db1ca55255d0a509f45e4b52990","impliedFormat":99},{"version":"13ce682bb57f9df36d87418dba739412fd47a143f0846ea8a1eb579f85eeed5d","impliedFormat":99},{"version":"d6608a9dd5b11c6386446e415dc53f964f0b39641c161775de537bd964a338da","impliedFormat":99},{"version":"d45218d368df27abcfd0253d4b1287e1b954156f32ff263f31913bad81a80918","impliedFormat":99},{"version":"dfb31f55c4a39440f89ae132de8bad7d4ff09c0f419df24955800ab5266cd7f5","impliedFormat":99},{"version":"edd454b3d3813b5cc5d87c68ba3c982ad8ec4b22b6ebd5e03a4f6a06f56f6e98","impliedFormat":99},{"version":"c5b7d15ea876bf33972a2ab1d31aa0dd9328e23ee6e59349afff62fa784e6da2","impliedFormat":99},{"version":"f154284eee40d23741c6d62884cecad12fdda3b4981bd4cd46d5515910ce84b3","impliedFormat":99},{"version":"827a02d7987f70a3675cadeef9e7128cb4d65135fd8ea6fca87f91263b6229db","impliedFormat":99},{"version":"bfc938fd99ffb5407a7c0bde6d49c42a3d23f0e8fbdbbb5a50926b72114d5d1f","impliedFormat":99},{"version":"ebdc3b72652592040fe10eaaa4ae53621460085eaf70be4b0e560fc30d459877","impliedFormat":99},{"version":"c35b0845639396a86ea5bf1276550dc0db6aadbbfb1d7145fe5974701065f99a","impliedFormat":99},{"version":"7c7dfb0cb2a27eb09a6e6b47566678a13e85de27c244d37d897ecb17399c24ea","impliedFormat":99},{"version":"f5f99c35649b9ad64c6b3dcdd8cfc7c9db3472d27eeb04156b15c17be0e30e5c","impliedFormat":99},{"version":"ecd5b86187507d8dd18df5c1dfdf466533fa0c219f1141874544cad4ee8181d0","impliedFormat":99},{"version":"d4af10887947f5f2d16df413017ec9b69fccf0f1dcdd284b6284d2784c976018","impliedFormat":99},{"version":"f38ae89747f696e40b633f4c4813e4a7b1e677ffc4d1fe41fa842bc89ece4979","impliedFormat":99},{"version":"b3f309aab87ae7d8c0b3db432480f23a023204fcd58c9ebba001b53aa3ec313b","impliedFormat":99},{"version":"96dd81986d1a9b9da2002c35040d94a4a97362b810c558cdc46e573abf4aa717","impliedFormat":99},{"version":"277835d2fa0011bc11b00e550e92a95c82c128af031405938d85a38d8de12ed8","impliedFormat":99},{"version":"70859886ddd69237ad8e8c2e20d052c778870c6e3d420dbcddf4d2d9d56878f8","impliedFormat":99},{"version":"ad42398997e18754aa0441a40d1c73e3a45adef0742ca4b4d4bdc335405f6735","impliedFormat":99},{"version":"ba2edd91e0df0a3d331b411440c9273f4cf55f1603ba36af2bf849f1ab9e7edb","impliedFormat":99},{"version":"c91b058ab74323c57dda1cbda7eb8cee56272002249a642deebbbd977c4a0baa","impliedFormat":99},{"version":"cb7f489960477f1f432a3389f691dc243ca075e87f20032a2866321dab05bae2","impliedFormat":99},{"version":"ca885b971dc0c8217ef8aca9f3879c3c2d53415c4dfbe457748045160f6e5205","impliedFormat":99},{"version":"966c9476536dcff6470b95afd27f30acef2692e4795ef8da8ee4b568b4baeb34","impliedFormat":99},{"version":"13c2e1798a144acb07b57bc6b66d4eadf6e79f1bbd72472357d303e7b794842a","impliedFormat":99},{"version":"516f5feb685e00a96e4d4c148f9f71f0c388bdc223350c76b7fb97a2750d4d98","impliedFormat":99},{"version":"24c626960973658ff450798d90b9696c53271c2d60192ce73306bd4298dcbd1b","impliedFormat":99},{"version":"7c7a960997d3470573faaaa089e6effd21cd6233d97ba7245974b4adf46597fd","impliedFormat":99},{"version":"560ad98415f922fd0bbe0371224646932d43d3719a5f2b4375817dc3704cb77b","impliedFormat":99},{"version":"69a24ce73bd1a72860582848f778a9404611a2cb05adeb2313c7d13bbc8fbad1","impliedFormat":99},{"version":"017907864b01ae728f5be6be99ea7632e68b2a35c2d7c9606bde20f85f10f838","impliedFormat":99},{"version":"a73fe468accce86f9cd30cb927ae0890fc56e0f5b895bdaa1883a2ea00f2ac52","impliedFormat":99},{"version":"22f98eae982b7f0d26d3dd7849210e033dc1992f594d87c6fe30075eb94b7a24","impliedFormat":99},{"version":"ec47b34311c3c799d1c90a3dcac1651ed23948c064aca4f0617fa253e648ab15","impliedFormat":99},{"version":"761efac4dfd849586e4fe49fc6cda2aba8e708fa8e4eb19ae85373084cba0d51","impliedFormat":99},{"version":"45d1e62fd2cfcf9fd0b42e636a94c2939ffd835d8aa42cccb88bdf4f6042549a","impliedFormat":99},{"version":"965bfde0433a808a389b80a8e45b717cd2d5a3a0cdf418707cfda3046e33fa5e","impliedFormat":99},{"version":"1d107f6f5f233d9a19c67d423cfdd3cb3aec49f41e338ad09a50cab2a1c94bd2","impliedFormat":99},{"version":"b011f71b5d21579da9f868e56acf3887051fc4027cc7cde7317facb232ed3e95","impliedFormat":99},{"version":"7714308befeeb34cbc1d6715bb650d05e2b4e0516db9e58ef4c399e462d222b1","impliedFormat":99},{"version":"3098f0794f8cecb813ede63e9484a44bb75926c37c9983efc85c9994ebc6e9a6","impliedFormat":99},{"version":"eb8a258495db43e8e4641def32bbbee1b73ecdc680407f948543bd9950668293","impliedFormat":99},{"version":"aa7a83f4acf2686925511ecc32d148062c02984068d563c44f00835fee5b164f","impliedFormat":99},{"version":"d4632bbd2d2afbb1b75163dc7cabab5cc218c2fa933cb8f7d5b7089255faa6fd","impliedFormat":99},{"version":"0cf4827f19c749c5befed9585862c6196a4a5b3d889d20e0f5f4bdb6f734dcc7","impliedFormat":99},{"version":"14d3c7499d1759af5c78eec4f26a6f5b85bdd5b0e41ef3f5e6e813f1ae88c06a","impliedFormat":99},{"version":"0082935dc2cb31cd632eaa6bbdec17f1a9142652e38ede025c0ffab00c50bac4","impliedFormat":99},{"version":"0df7497ada3a4f6459420803ecf7e555f1ad1e7bd43c1e17bdafbc34e19d7162","impliedFormat":99},{"version":"5cccc8d1dd17c789bb6baba06a035e98e378a80d133da3071045c9901bee0094","impliedFormat":99},{"version":"c8a40bb3df60346af02e8d786473985ba53b716bc7caefd21ab838f025ec103b","affectsGlobalScope":true,"impliedFormat":1},{"version":"64da9a17f7cb5d84731607aed8493e4550a3e613cc7b880c87ce82b209d66b96","impliedFormat":99},{"version":"c00cdbfab0c58bb06a3d3931d912428f47925e7f913d8024437ca26a120e4140","impliedFormat":99},{"version":"4ca5b927a7e047f0a0974c7daaeb882230ac08ba3fc165c8e63ddcbd10da5261","impliedFormat":99},{"version":"98033c4e4156d3de12cdc2bfb5494a3eba887661e46a492788f0d9a0cb0c25ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"0b6d4c3f82f8dc5ea956b45f38badb561e5b580651397c7d7c06c472f9a7f2c3","impliedFormat":99},{"version":"6d056661e4b636cc04e36c36b24a4eb692499b21fe0b18cb81f8bb655d7a3930","impliedFormat":99},{"version":"e71c5f5440bea23cee6fa272d088930e69694c09ccb89f8811b097feb7c078dc","impliedFormat":99},{"version":"d5de759fa4dc835dd077e4187cb2ff88443990f91dcd606c2ce2a2add88669c2","impliedFormat":99},{"version":"1f957c8657bb868e8cb92e46eac8c8b1877a96708e962015a1ed47fd42c697f6","impliedFormat":99},{"version":"217800577a2c9a7232e5a9d1abd1c1836acbb004e7522a5261299aa867713f96","impliedFormat":99},{"version":"60981ae7c2a8926f7855d8068c42e05a3b1959f0bb795a8bb9773c912a9a6f16","impliedFormat":99},{"version":"4a6de5821d23f5e1781c567ab6550e5357b2c2ae3e8813a277062512f73d4a28","impliedFormat":99},{"version":"618b5aa1f8b9791938f8033f1855238774b555f9dd35f0b8a5443cc066721605","impliedFormat":99},{"version":"760064e691b40768713d8d4d55c8516c402670fed62d189a67d9c9b11ca64cb6","impliedFormat":99},{"version":"bdf1401d357e12cb102b886ee5bd88ef1d975a0fc408cf190ea2e2b824d5b8cd","impliedFormat":99},{"version":"8e8fa002f1dabd3fadbdc4c110274558e44279e0628f53053c23cf89070d6a99","impliedFormat":99},{"version":"68617a52d0596e488c88549c000e964c5f6a241e5361095b2c6203586689b1f3","impliedFormat":99},{"version":"8d4a70e05b1f8450f5fb8997e5bfc336dd0baec3f2c8117f6f260d4eb68de0ac","impliedFormat":99},{"version":"8fa060b55694a9427afa2346181d988302de37181cac7df6e29f252b3741164c","impliedFormat":99},{"version":"e61ce3bbfe37669692af8ac289869baa7b9d01b7e260e5cd0294095a4f6c29a2","impliedFormat":99},{"version":"10f60c4f46231065e5a4815651300d69925049b6d654c141eea7bc3410fa5b4d","impliedFormat":99},{"version":"ab6f3cd2e0edc76fb4d65a8f109f3085d4d0791cb083b685b73c4a45c46d9d8e","impliedFormat":99},{"version":"8cc3ab398412f20af6fdd1d307176f933f3a4a6b7eeab11388d3a084b811bec8","impliedFormat":99},{"version":"696116447a588ebeff9d158672b83ce1d26b2be7ffb29acee5925b75c1e29ed4","impliedFormat":99},{"version":"8ca97507cc241216ed30a5c73091a6dd4818dc9cf6dbd3bdab039e40f474202e","impliedFormat":99},{"version":"5676038845e4209868d017df816419f7492d62530eb41bccc2de6783f3df2598","impliedFormat":99},{"version":"cdc154f5e44aa28c4f948ddce70d8cc57acd0992809549761b2f352c409e03b4","impliedFormat":99},{"version":"d7697f915c61a7f7ee03922e9f4e2dd3ef8122a3bcdafc1d7824f2c664b67ad0","impliedFormat":99},{"version":"8ae0357ed41745154782684b1cd3a8b9c84dc92935348d3711b8c949472d6398","impliedFormat":99},{"version":"ece19f08fb075c84c2e22fee2af1991bd2f67f60157b72a2993dc6d1087a7e80","impliedFormat":99},{"version":"4804c3e9ab498d31144a0c9b95defba9f913a4326063d19d8583eb4ba9708a15","impliedFormat":99},{"version":"f7292171fc81d858880863eeea33c85f9522909b6929559f780b5ed697c99020","impliedFormat":99},{"version":"b90f14bca14cdbdd60dc83c451aca97e8df63c8eb8a158a9ed84de4bfb4cad76","impliedFormat":99},{"version":"654fac848dea765dcd6fb3456ab083d6ab20a91b78721928a8d0d691387ae8c2","impliedFormat":99},{"version":"daf3cb7fbb067540163df0a3421e791ebde6bd2e699aad4cdb13366871cb7196","impliedFormat":99},{"version":"98ba4768c426848773fb4a39203aac92e6baa545d93510665cdf207454d0811c","impliedFormat":99},{"version":"f65116ea54fd65813a0d9695249ceaa716487c932247e4aede3e2e3ad3d07316","impliedFormat":99},{"version":"99484c7a277c488a16c49ac1affe465e4fbb5e4d57b8c2190092c5d7b4fe6fca","impliedFormat":99},{"version":"459576a2bc7f798ca767ded6a79cc639a26cb797e5b0c417d0f05eb46f595019","impliedFormat":99},{"version":"0f1ea4f6570d745ee2dfa784baa306ae15c35ff7742566ac5ccc1a893af9a1ba","impliedFormat":99},{"version":"06e727ca4d41b4f549f875d7999d940a392058b1b579846441351ff011a63a31","impliedFormat":99},{"version":"d7e8d8a15b4fdd368720cb7a1ad3e740e2f25b9a5ac24c26839921b8d0b7134b","impliedFormat":99},{"version":"d94acd15b4a3517523756dfeabcb7b4fb8ee853bba680d892ccfd3df4c81edc1","impliedFormat":99},{"version":"0f65f9b61383ffcfa1a409da90c35741cd81ece1a2dc6f2ebd094d81599bc5f6","impliedFormat":99},{"version":"9abd03a84d5473e66b038270dbeae266129ab97261d348a5fbd32ec876161a85","impliedFormat":99},{"version":"884f8073c4687a2058be4f15a8f3d8ad613864a4f2d637bf8523fa52b32cf93f","impliedFormat":99},{"version":"693c4ea033e1d8cb4968972024b972aed022d155a338d67425381446dcea5491","impliedFormat":99},{"version":"e3ac1db377991a0bea76cfcfd60959f9ba94878cf99d141222c8f11470f540ff","impliedFormat":99},{"version":"b6024c6222886b95cb29ab236155a98f8e5dc41151233781815e81a83debf67b","impliedFormat":99},{"version":"94dab3752006a2cd2726462342f1775ef18ff4986404d016d317fe79a9d0a14c","impliedFormat":99},{"version":"727b3a462015bbed74b520861445761ebaecf94e09d95bbf59dfcf22afaccae9","impliedFormat":99},{"version":"2c0300921d8d04b21353c94a8f50a2b6c902feccd1303b6f136bedbb2cec5ed1","impliedFormat":99},{"version":"d496217c7f38f218fc162e8f3e6ed611343aa65615f730f82c494dee6c892bc0","impliedFormat":99},{"version":"282ed4ab5b5c4759d5c917c51a5b2f03ca1df4072275b6bccb936cf60078e973","impliedFormat":99},{"version":"2c96813e14e7edcd8e846f009b24fb1bd842b90e2dcd85481136e52588de7982","impliedFormat":99},{"version":"aa70da8072bb8b6e8fae35c7d394d543be8e5c946dad666225a3475010fd2bf0","impliedFormat":99},{"version":"d2c35cb9836cae1899ae9e7e114410dc128bcff4a79cc26318db285699e0223a","impliedFormat":99},{"version":"f89fbb50fd3736e09b418a2e66b98ff9a04820259856afe54bc67977e1acd05b","impliedFormat":99},{"version":"4c76aceec7002f299d9a57ec8e6623f3573bea208b1ea51cc5ea03bf140adad4","impliedFormat":99},{"version":"a0f217b01453d43058cea514325ac8bd3ac3a184265314429eec8059c62824b6","impliedFormat":99},{"version":"e06bc5a68917139f31f323293f575cf1eb75231ac23ac1b95341079364ef1873","impliedFormat":99},{"version":"31a4b6d0c23346d5fb30b52bd3a8f83113fc928ee6474338d5571361943d58ea","impliedFormat":99},{"version":"aecd83ca7059d21a33fb7ed01dfa06a36c545698dbe0017073dba45532a8487d","impliedFormat":99},{"version":"7fb874c17f3c769961d1b07b6bb0ef07b3ca3d49da344726d8b69608997ef190","impliedFormat":99},{"version":"979e969f86456425e505f6054f5d299f848223d70770a5283fa7c405020b47e1","impliedFormat":99},{"version":"2ad6c5849a68263e12b9f246ffd09b4713cef96d617618076adbe2f7907f3d12","impliedFormat":99},{"version":"acd7f9268858029bcec5eba752515b9351d4435b21f1956461242c706dcc0cf9","impliedFormat":99},{"version":"53e2856f8644978742fae88b3c7f570ab509dc4d13288b3912a4446993fa3bc7","impliedFormat":99},{"version":"ea2b6112bfd326f1075896bf76c9108dfd08ccbae2482ba31f68ca43f0b59ca5","impliedFormat":99},{"version":"3f9368aa15d0cc227a3af7af3e3df431dadf0f7cd9897fcc54507f7eb68761cc","impliedFormat":99},{"version":"0f2d4be859066fc3ea8d04b583cd0774e1f9dce7f60b9890bcc0a10efb9fac33","impliedFormat":99},{"version":"ac09b9131c553c189311d9e94d3853b7942d0097925304fe043220a893701ce9","impliedFormat":99},{"version":"f1b34ea3d64f73fc79ce1f312589134db27aa78ef9e156a8f14f89f768e800ac","impliedFormat":99},{"version":"873da6c837a1ee62b5f9b286845be06dc887290a75c553bed7f431107d25a3b6","impliedFormat":99},{"version":"b2abee3c001c024d4e552c4a3319bf3fcc94a1f48bb0d21f5d300d9b4920bde9","impliedFormat":99},{"version":"f9740d044306830442cac761b593538117f46c5ea57a8dc6d61f0bee12e971b6","impliedFormat":99},{"version":"7cf786964e26f0e2c3a904f93f6e31609e2636723df8c1ce248d39b55055c89f","impliedFormat":99},{"version":"41c6aff52e4289763ea30f0849b712437aaeb420c8448aeb8047ee2eca4549f4","impliedFormat":99},{"version":"f5db101f7d90f614627bcab5f8d06d9ccd144a1735b475637940c54097786b67","impliedFormat":99},{"version":"8c575a8e1b6032e576577f28d74066f73aefa7a35d741d0015be36956bbc30aa","impliedFormat":99},{"version":"1989cb4fb2174c56b15f8b10d18ecb0c053e7b39f94582581d69767d7bfb9b32","impliedFormat":99},{"version":"7d90add559ac0a060d621c722127b9a5880a6ab4c15d512a91c57a7b14a073ca","impliedFormat":99},{"version":"47921880701610e8d8a5930d0c9ea03ee9c13773e6665f4ffc8378d5f8c8c168","impliedFormat":99},{"version":"41cbf6c58f2f4e1e5ee95a829b3f193f83952385fa303062f648040a314f939b","impliedFormat":99},{"version":"bb11cd0d046d21d4ae4a28fc4b0eb5d9336a728f9bd489807a6a313142903bc1","impliedFormat":99},{"version":"a96d6463ab2a5a4cf31b01946f1b0929dc3f8be9f28c7c43da29a9e6b7649db1","impliedFormat":99},{"version":"ec43d6b21fd1ed5a1afeb779ceba99e80fe010458bb0a67d9ef301426b1929e5","impliedFormat":99},{"version":"105bb5317c5212d56f82fd9730322b87f4ad8aea2927ef7684341afad050f49b","impliedFormat":99},{"version":"79ffce57ab318282b29bceb505812c490957124a3a96c7d280a342488b0859bf","impliedFormat":99},{"version":"3631657afc1d7e451e25bd3c2eb7444417b75330963dde464708df353778396c","impliedFormat":99},{"version":"c4b46086b44bb8816d4a995654c00f64b3601eb50a163f2bba4dfe48ae6c6b91","impliedFormat":99},{"version":"32e670209322bd3692e8fc884c63002f6bd565e83f62f1fd23c46729aa335d1b","impliedFormat":99},{"version":"97717d35deb9f6a6127f3abff60c9af080ab0ccba60aa06a5a3486a374747573","impliedFormat":99},{"version":"4d70c89489fdef067b0819f22eec5fd0323a8b488d93075cb7953bbfc636e03e","impliedFormat":99},{"version":"27548f1a6ff90f3f3fe65ad4d8ba26a3ddc3e833aae59eb312dde605f6ab7591","impliedFormat":99},{"version":"e3fbf3f3e99083f8fc21bbde7677c3b1cad0c730fe231599a69911aa66487d01","impliedFormat":99},{"version":"59110c7d72a09bacde4a80f4ba95d9990b352911f0e4ea09bf766804f8d3e44b","impliedFormat":99},{"version":"3d827d1dd689311e57a98e476b3451445d39e573f4855ac265b7ec1747075c4f","impliedFormat":99},{"version":"e0669b0e7c953962035bb39e7fdfd5cc8fc3d9a666a8b167b78417355609be01","impliedFormat":99},{"version":"8495eef8be427c71a2d574e3ead06c537a9a6d437dd669e6786dab3df009f125","impliedFormat":99},{"version":"15741df16deef60b197560d3cfe45e6c1eff69fa7b85a861e3d8aa8a26683b83","impliedFormat":99},{"version":"c1fc3a728bc95e5ae7dbbb3c650247e77bdeccd7c246f76ca917aadc94a8fba7","impliedFormat":99},{"version":"bb77b52bead9b75d7173bec685e5e2136f6c3f226cedae736db63a44f69db679","impliedFormat":99},{"version":"b3f7783d4977af919bdb8db798fe185908083c6f4bd3b07460967c8e093f7312","impliedFormat":99},{"version":"5a6bae49831f960e7f0bc66f49b2c40077b136d9573871f865507fde09580436","impliedFormat":99},{"version":"c8366dba8df08ef5a83995e10faea3ef86d81cd656b18e89e32e043aa7b0f7f1","impliedFormat":99},{"version":"e6295124f95b686a16233c1031d04cd971f9685e3416631f463bde75a5c86ce7","impliedFormat":99},{"version":"00c38bd1fe89fed8d4e8502db4f896aef7415b097ac061c2d65f2b539b6df6a7","impliedFormat":99},{"version":"94a2d7c15538d8e83415299f17fd00ab88c594b6a0a40be1e26c99febbab45f6","impliedFormat":99},{"version":"20bbd68ac2d2e7cdf9f60816ba9b378e13c07f0fdafccf9ae5833c876c6f51bc","impliedFormat":99},{"version":"df109d2490b693bd75105efaae08738ab84102bfdb2eee2372e9e3f369ec5fc2","impliedFormat":99},{"version":"9d5c684e68509dccdc68d5778dd58873138b299cf9f16a16ea9911f04eddce43","impliedFormat":99},{"version":"d411ba0bcd6a51485be855a01cb95f79649fa90039b4f235ba8481dc68edae3e","impliedFormat":99},{"version":"8f47a2e6bd2914f74471a693fc3389f243a97367d8bdd920f27198b6018872ad","impliedFormat":99},{"version":"d6e125557820886c2add872cfb3e9502d4113fd1dd22a1f76ded1f439837f119","impliedFormat":99},{"version":"6e688e8aeba98c268b195f80355a8d163d87ac135ad03c708ceda608e6e269b2","impliedFormat":99},{"version":"802a6978c1b38822934ce43a3505e13b555584848c50bc5db9deb2e896c0940e","impliedFormat":99},{"version":"f502c7d829f5774109007ec2262c23efc941dd1ce42acc140f293a7c5ccfd25b","impliedFormat":99},{"version":"af3444bd00030bae3bef81569f8703ecddc2e569cb6b728ec045f0d73d47572b","impliedFormat":99},{"version":"53102281f8a153bb051e0223a8dc51ff9c4cf92da127d91e3f60e74b4e8f41ca","impliedFormat":99},{"version":"e402e111fadcd36fa26ea1ad74f3defd6ef478f6d278a69c547e664b57770392","impliedFormat":99},{"version":"bf8f4b3b372e92a4e4942ce7f872b2b1e1bd1d3f8698af21627db2dee0dda813","impliedFormat":99},{"version":"0ff08be8d55c47d19f3d6bd79110a2ac67c6c72858250710ba2b689a74149ee2","impliedFormat":99},{"version":"77676a7a58c79c467b6afdb39bed7261a8d3ba510e9fd9b4dbb84a71dd947df3","impliedFormat":99},{"version":"dad5c38d723d08fc0134279b90fac87441ee99b71b0d30814b86954e0111d504","impliedFormat":99},{"version":"dd7510a9a4d30db5ac6418ef1d5381202c6b42c550efeb5fb24dd663eac3f6a2","impliedFormat":99},{"version":"cef653b7f2115c8e2a9b6558bf9a083dbcc37ce8fb6bae0e48cde3b92fdaacb2","impliedFormat":99},{"version":"2c87178f8b940592781cea818e840a825ad9cf5168593ff36469c5edb82c8ee2","impliedFormat":99},{"version":"34e0a7e03021f1f29f109cee7054216f94a6a769aa965070b3d00cf4648a8ce4","impliedFormat":99},{"version":"c85f04a8ff65051d2cffc664baa83b70583bd72b9811a50c77f880968c1188ea","impliedFormat":99},{"version":"ad48586787d5e217f4fcc229e3c3d8de8aa12979fdf1f186134e3684d56577ac","impliedFormat":99},{"version":"229d6bca5145c86846793cb3166c83abb256cfdb5c425f25ada8eee49c993e54","impliedFormat":99},{"version":"292856f47dad178fe1cb3401554428b3b0157369a8fa52792587fd2bd06fcbec","impliedFormat":99},{"version":"c7d9ac6cbda9b080656b859f3a05e1b5efa14f82aa7e0c7821b4ba1e129d6240","impliedFormat":99},{"version":"b18c7a06ac51bb77d1baaf6691ea048d4d77445475692d797bf05f777c20a580","impliedFormat":99},{"version":"b8562e5aefa86c069ec1c61dff56ef0492e9fbd731cbcdd4d7fce28a8644e9f6","impliedFormat":99},{"version":"69722e1a7d3aebbbb9d057ff25ae3667abf15218c14e7d8685ddcd8ed64686e3","impliedFormat":99},{"version":"dd6c7d6abb025e7494d02fa9f118af4a5ab0217e03ae54dd836f1160cb7a9201","impliedFormat":99},{"version":"b8ecf3aa6da346b8dcf36e93c4dd9232bbf3a413fae23f5bcc950eaa62d0139d","impliedFormat":99},{"version":"440c9aba92c41b63d718656bd3758f8f98619dbe827448e47601faa51e7a42fa","impliedFormat":99},{"version":"c98507e3d5155788df0decbdcc1feb4bab28171edb642f0239ee930c98dfeff0","impliedFormat":99},{"version":"d9cf429fa9667112f53e9bb67bb7b32eeb3697f524d01b9781b65247f1733da4","impliedFormat":99},{"version":"d12caf569803d56c5f827e4d90b00da9e631e8dfc088fa836256c647c0ac21d3","impliedFormat":99},{"version":"4cd4400178414d9a106f9b58ef98018330411e3e6ab6000205bcffd03a4d2c7e","impliedFormat":99},{"version":"4e549cbc811726ceeb47b55c3a68ec89b7d4413710f03eda57fd43b85b73d8af","impliedFormat":99},{"version":"c6b196ae0b930bc53f969cac072d2d5484727ff7574533d65c52202c226433ac","impliedFormat":99},{"version":"21c180c753baa409e924458db18bbe02c838c9b8a37605e042c3701488ecc561","impliedFormat":99},{"version":"2fcb9b13c206fa4f6e88a2c090e4d591e4a963f8fc53b70ddc67507a976b7dcf","impliedFormat":99},{"version":"37f443b8a01997b7ed60837d5ca6f4d5d66776b709c9f562623324bef792cb98","impliedFormat":99},{"version":"e5b973ad95b871ea4444aa82d9005a198268bd69294e762ff7ca50cca02b6fd1","impliedFormat":99},{"version":"e67fbc9a974d14cab74cb47b4bed04205886bf534c7e2f17ecb8f7789d297b1c","impliedFormat":99},{"version":"82d76af0a89cd5eb4338771a2a5b27f3cbc689b22be0b840de75be4cfc61f864","impliedFormat":99},{"version":"24e856aec3b5c4228ffed866dcd8e7e692aa86eccaecc4fa8205fadd9737d1af","impliedFormat":99},{"version":"fe395a24df9ffd344cb825575d4b35c1cf69275208c0f99517c715bd7d08ff79","impliedFormat":99},{"version":"39e8edcbd5ac35c6cfdf2b1a794a9693a461a54efb2a475ab7fc08ab13504e26","impliedFormat":99},{"version":"12012b6c28d09a6f1d86b2a30213a92a9e92ad9ee573f94c92a8b237b6422bb7","impliedFormat":99},{"version":"8ee28204ddb2be7d6dfb68891493f654cbf10f5e1667bd33bd62920d9eb9e164","impliedFormat":99},{"version":"b09669391dd3312b8a52242af7823a3c44b50c7dcdc216db8da88b679af46574","impliedFormat":99},{"version":"b71e7f69e72d51d44ad171e6e93aedc2c33c339dab5fa2656e7b1ee5ba19b2ad","impliedFormat":99},{"version":"d17f54b297c4a0ba7be1621b4d696ef657764e3acddcc8380e9bfc66eeb324a3","impliedFormat":99},{"version":"9c61e1d1777ef5ec76a62eb9c66ebc0c1ee5bf1d1037767208693cc3fe61bf9a","impliedFormat":99},{"version":"a715a2786c285a9e27ea2bbaa2ed249d3017e7139782f5ebb8eeedb777b26926","impliedFormat":99},{"version":"2dffb65044b6a28dcba73284ac6c274985b03a6ce4a3b33967d783df18f8b48c","impliedFormat":1},{"version":"f7e187abe606adf3c1e319e080d4301ba98cb9927fd851eded5bcac226b35fd1","impliedFormat":1},{"version":"335084b62e38b8882a84580945a03f5c887255ac9ba999af5df8b50275f3d94f","impliedFormat":1},{"version":"5d874fb879ab8601c02549817dceb2d0a30729cb7e161625dd6f819bbff1ec0b","impliedFormat":1},{"version":"ace68d700c2960e2d013598730888cde6d8825c54065c9f5077aaf3b2e55e3ad","impliedFormat":1},{"version":"86de522a6c6f7854738c1a88f3639e472e1778dff42ffd9f296476099cf170e6","impliedFormat":1},{"version":"4d7d964609a07368d076ce943b07106c5ebee8138c307d3273ba1cf3a0c3c751","impliedFormat":99},{"version":"0e48c1354203ba2ca366b62a0f22fec9e10c251d9d6420c6d435da1d079e6126","impliedFormat":99},{"version":"0662a451f0584bb3026340c3661c3a89774182976cd373eca502a1d3b5c7b580","impliedFormat":99},{"version":"c02203ae7f03fd2dd9c0da1a08a886734c54aae25fdf8543b1125589f20f0b52","impliedFormat":99},{"version":"409d9b2dffd896e5589be900b59d81149fd48dd811a6fca9311407e03b331e80","impliedFormat":1},{"version":"85caf550ab6f9d0020b0aaf23acf2cbb092fe8ec8058ea3805dcdbdbfd0b3e44","impliedFormat":1},{"version":"21bc4db82aff687d0a4e58858d51ff544677cbc3b6789934bbd4c9abe7bd04aa","impliedFormat":1},{"version":"1dd4deeb0e37d39f07354a91c65e3b040ff408960e1ceed31446343419f9a07b","impliedFormat":1},{"version":"3456acb6ff0d0a202eec1307f2e8b2d1cbba68dace120c47b7e38d7343da19f2","impliedFormat":1},{"version":"7a429fa77d22d12f8febc7ebbb00fa45c75c60b47ce840f92f03b05e9d16648d","impliedFormat":1},{"version":"4852930d1e33da62f75e66ae71bf7b6646d0e0aba7704ff3d1bdda15656dd7f7","impliedFormat":1},{"version":"9dc3f2a0efa278d6255bcd95b42ce28f8e14f177f6701bd6668999a34356f1c7","impliedFormat":1},{"version":"5483233566b27fecdef8a3f40420d60db822ffbdb0cf20073ac8fd0157fd2290","impliedFormat":1},{"version":"b42bc4e718dbeba955b71adc452e5023b8dda17aa57bb9050ec8c542a8e7e626","impliedFormat":99},{"version":"2091e884437c2fac7ef5b4c37a55a1d0291f3d9e774ca484054adf9088a49788","impliedFormat":1},{"version":"c2762b064c3f241efdcbfce2a3fb4fe926b9c705cbea1da8f2ee92a90bc44e27","impliedFormat":1},{"version":"6b33b56ce86bed582039802da1de9ff7f9c60946b710fb5a7a00ee8a089dc1a2","impliedFormat":1},{"version":"b4fbfaa34aacd768965b0135a0c4e7dbaa055a8a4d6ffe7bedf1786d3dc614de","impliedFormat":1},{"version":"be3daf180476b92514b9003e9bd1583a2a71ad80c9342f627ca325b863ca55d4","impliedFormat":1},{"version":"8ab9b0dd5ad04b64911bbf9ae853690d047c1e12651940bd08da5b6c8fae8b04","impliedFormat":1},{"version":"6fcb9ff90e597db84de7e94537a661dca09dc3c384e1414496d76d31f91232a3","impliedFormat":1},{"version":"ad68aac2dffb24c0330e5bcfe57aa0f2e829650c8dfe63d7329d58af7277990e","impliedFormat":1},{"version":"df0627eabd39ed947e03aedef8c677eb9ad91b733f8d6c7cdc48fc012a41ed8a","impliedFormat":1},{"version":"2164ae0de9e076bf50b097cc192d6600a7b3eb07a0e1cd3281f7f5d19d4f4638","impliedFormat":1},{"version":"e9759993d816a63028cb9a42120223941b0835c6b27aa8af69cc650a18c1bf91","impliedFormat":1},{"version":"f964f0ebc9cad8ce4873f24e82241b8eb609d304cbc1662a739443b24ef11c9e","impliedFormat":1},{"version":"f0f65a61b70d5ddb3d7f07a6e3f9d73a5da863172c815a3559c8bbb5c18bcc23","impliedFormat":1},{"version":"639c15ef2ce567ec3a62d9c51a43b65f1a8eabfdc88dc5ed57f1f23cc213189f","impliedFormat":1},{"version":"b6d80e669780b6591b159637ad0e8cf678cf6929fa0643be7d16aff7ca499bd6","impliedFormat":1},{"version":"d4e6925460a27b532a99e38bb0e579ed74b5f6422d70a210aeca9da358526f89","impliedFormat":1},{"version":"8a9d6ffa232e5599cebac02c653c01afa9480875139bab7d70654d1a557c7582","impliedFormat":99},{"version":"9ee450d9e0fbae0c5d862b03ae90d3690b725b4bd084c5daec5206aefa27c3f1","impliedFormat":99},{"version":"e2e459aac2973963ed39ec89eaba3f31ede317a089085bf551cc3a3e8d205bb4","impliedFormat":99},{"version":"bd3a31455afb2f7b1e291394d42434383b6078c848a9a3da80c46b3fa1da17d5","impliedFormat":99},{"version":"51053ea0f7669f2fe8fc894dcea5f28a811b4fefdbaa12c7a33ed6b39f23190b","impliedFormat":99},{"version":"5f1caf6596b088bd67d5c166a1b6b3cd487c95e795d41b928898553daf90db8d","impliedFormat":99},{"version":"eaeaddb037a447787e3ee09f7141d694231f2ac7378939f1a4f8b450e2f8f21f","impliedFormat":99},{"version":"7c76a8f04c519d13690b57d28a1efe81541d00f090a9e35dca43cde055fed31b","impliedFormat":99},{"version":"17c976add56f90dd5aad81236898bad57901d6bdac0bd16f3941514d42c6fcc7","impliedFormat":99},{"version":"0d793c82f81d7c076f8f137fa0d3e7e9b6a705b9f12e39a35c715097c55520c9","impliedFormat":99},{"version":"7c6fd782f657caea1bfc97a0ad6485b3ad6e46037505d18f21b4839483a66a1c","impliedFormat":99},{"version":"4281390dad9412423b5cc3afccf677278d262a8952991e1dfaa032055c6b13fb","impliedFormat":99},{"version":"02565e437972f3c420157d88ae89e8f3e033c2962e010483321c54792bce620a","impliedFormat":99},{"version":"1623082417056ce69446be4cf7d83f812640f9e9c5f1be99d6bc0fad0df081ab","impliedFormat":99},{"version":"0c1f67774332e01286cdd5e57386028dd3255576c8676723c10bd002948c1077","impliedFormat":99},{"version":"232c6c58a21eb801d382fb79af792c0ec4b2226a4c9e4cf64a52246538488468","impliedFormat":99},{"version":"196ce15505ddb7df64fa2b9525ec99ec348d66b021e76130220a9ac37840a04a","impliedFormat":99},{"version":"899a2d983c33f9c00808bf53720d3d74a4c04a06305049c5da8c9e694c0c0c74","impliedFormat":99},{"version":"942719a6fafe1205a3c07cecc1ea0c5d888ff5701a7fbbd75d2917070b2b7114","impliedFormat":99},{"version":"7ad9c5c8ca6f45cf8cc029f1e789177360ef8a1ac2d2e05e3157f943e70f1fa3","impliedFormat":99},{"version":"e9204156d21f5dd62fa4676de6299768b8826bb02708a6e96043989288c782c7","impliedFormat":99},{"version":"b892c877d4b18faad42fd174f057154101518281f961a402281b21225bf86e2f","impliedFormat":99},{"version":"755e75ad8e93039274b454954c1c9bb74a58ac9cef9ff37f18c6f1e866842e2e","impliedFormat":99},{"version":"53e7a7fa0388634e99cf1e1be2c9760c7c656c0358c520f7ec4302bd1c5e2c65","impliedFormat":99},{"version":"f81b440b0a50aa0e34f33160e2b8346127dbf01380631f4fc20e1d37f407bef9","impliedFormat":99},{"version":"0791871b50f78d061f72d2a285c9bfac78dba0e08f0445373ad10850c26a6401","impliedFormat":99},{"version":"d45d1d173b8db71a469df3c97a680ed979d91df737aa4462964d1770d3f5da1b","impliedFormat":99},{"version":"e616ad1ce297bf53c4606ffdd162a38b30648a5ab8c54c469451288c1537f92e","impliedFormat":99},{"version":"8b456d248bb6bc211daf1aae5dcb14194084df458872680161596600f29acb8d","impliedFormat":99},{"version":"1a0baa8f0e35f7006707a9515fe9a633773d01216c3753cea81cf5c1f9549cbd","impliedFormat":99},{"version":"7fa79c7135ff5a0214597bf99b21d695f434e403d2932a3acad582b6cd3fffef","impliedFormat":99},{"version":"fb6f6c173c151260d7a007e36aa39256dd0f5a429e0223ec1c4af5b67cc50633","impliedFormat":99},{"version":"eebfa1b87f6a8f272ff6e9e7c6c0f5922482c04420cde435ec8962bc6b959406","impliedFormat":99},{"version":"ab16001e8a01821a0156cf6257951282b20a627ee812a64f95af03f039560420","impliedFormat":99},{"version":"f77b14c72bd27c8eea6fffc7212846b35d80d0db90422e48cd8400aafb019699","impliedFormat":99},{"version":"53c00919cc1a2ce6301b2a10422694ab6f9b70a46444ba415e26c6f1c3767b33","impliedFormat":99},{"version":"5a11ae96bfae3fb5a044f0f39e8a042015fb9a2d0b9addc0a00f50bd8c2cc697","impliedFormat":99},{"version":"59259f74c18b507edb829e52dd326842368eaef51255685b789385cd3468938f","impliedFormat":99},{"version":"30015e41e877d8349b41c381e38c9f28244990d3185e245db72f78dfba3bbb41","impliedFormat":99},{"version":"52e70acadb4a0f20b191a3582a6b0c16dd7e47489703baf2e7437063f6b4295a","impliedFormat":99},{"version":"15b7ac867a17a97c9ce9c763b4ccf4d56f813f48ea8730f19d7e9b59b0ed6402","impliedFormat":99},{"version":"fb4a64655583aafcb7754f174d396b9895c4198242671b60116eecca387f058d","impliedFormat":99},{"version":"23dae33db692c3d1e399d5f19a127ae79324fee2047564f02c372e02dbca272d","impliedFormat":99},{"version":"4c8da58ebee817a2bac64f2e45fc629dc1c53454525477340d379b79319fff29","impliedFormat":99},{"version":"50e6a35405aea9033f9fded180627f04acf95f62b5a17abc12c7401e487f643f","impliedFormat":99},{"version":"c1a3ca43ec723364c687d352502bec1b4ffece71fc109fbbbb7d5fca0bef48f1","impliedFormat":99},{"version":"e88f169d46b117f67f428eca17e09b9e3832d934b265c16ac723c9bf7d580378","impliedFormat":99},{"version":"c138a966cc2e5e48f6f3a1def9736043bb94a25e2a25e4b14aed43bff6926734","impliedFormat":99},{"version":"b9f9097d9563c78f18b8fb3aa0639a5508f9983d9a1b8ce790cbabcb2067374b","impliedFormat":99},{"version":"925ad2351a435a3d88e1493065726bdaf03016b9e36fe1660278d3280a146daf","impliedFormat":99},{"version":"100e076338a86bc8990cbe20eb7771f594b60ecc3bfc28b87eb9f4ab5148c116","impliedFormat":99},{"version":"d2edbba429d4952d3cf5962dbfbe754aa9f7abcfcbdda800191f37e07ec3181b","impliedFormat":99},{"version":"8107fdc5308223459d7558b0a9fa9582fa2c662bd68d498c43dd9ab764856bc7","impliedFormat":99},{"version":"a35a8a48ad5d4aad45a79f6743f2308bdaea287c857c06402c98f9c3522a7420","impliedFormat":99},{"version":"e4aa88040fd946f04fe412197e1004fb760968ac3bd90d1a20bfb8b048f80ce0","impliedFormat":99},{"version":"f16df903c7a06f3edd65f6292fef3698d31445eaca70f11020201f8295c069b5","impliedFormat":99},{"version":"d889a5532ecd42d61637e65fac81ea545289b5366f33be030e3505a5056ee48a","impliedFormat":99},{"version":"6d8762dd63ee9f93277e47bf727276d6b8bdd1f44eb149cfa55923d65b9e36bc","impliedFormat":99},{"version":"bf7eebda1ab67091ac899798c1f0b002b46f3c52e20cccb1e7f345121fc7c6c2","impliedFormat":99},{"version":"9a3983d073297027d04edec69b54287c1fbbd13bbe767576fdab4ce379edc1df","impliedFormat":99},{"version":"8f42567aa98c36a58b8efb414a62c6ad458510a9de1217eee363fbf96dfd0222","impliedFormat":99},{"version":"8593dde7e7ffe705b00abf961c875baef32261d5a08102bc3890034ae381c135","impliedFormat":99},{"version":"53cf4e012067ce875983083131c028e5900ce481bc3d0f51128225681e59341b","impliedFormat":99},{"version":"6090fc47646aa054bb73eb0c660809dc73fb5b8447a8d59e6c1053d994bf006e","impliedFormat":99},{"version":"b6a9bf548a5f0fe46a6d6e81e695d367f5d02ce1674c3bc61fe0c987f7b2944f","impliedFormat":99},{"version":"d77fa89fff74a40f5182369cc667c9dcc370af7a86874f00d4486f15bdf2a282","impliedFormat":99},{"version":"0c10513a95961a9447a1919ba22a09297b1194908a465be72e3b86ab6c2094cc","impliedFormat":99},{"version":"acfce7df88ff405d37dc0166dca87298df88d91561113724fdcb7ad5e114a6ba","impliedFormat":99},{"version":"2fb0e1fc9762f55d9dbd2d61bbc990b90212e3891a0a5ce51129ed45e83f33ee","impliedFormat":99},{"version":"7be15512c38fdbed827641166c788b276bcfa67eda3a752469863dbc7de09634","impliedFormat":99},{"version":"cbba36c244682bbfaa3e078e1fb9a696227d227d1d6fc0c9b90f0a381a91f435","impliedFormat":99},{"version":"ec893d1310e425750d4d36eb09185d6e63d37a8860309158244ea84adb3a41b8","impliedFormat":99},{"version":"0d350b4b9b4fea30b1dbac257c0fc6ff01e53c56563f9f4691458d88de5e6f71","impliedFormat":99},{"version":"4642959656940773e3a15db30ed35e262d13d16864c79ded8f46fb2a94ed4c72","impliedFormat":99},{"version":"a2341c64daa3762ce6aefdefc92e4e0e9bf5b39458be47d732979fb64021fb4f","impliedFormat":99},{"version":"5640ea5f7dfd6871ab4684a4e731d48a54102fd42ea7de143626496e57071704","impliedFormat":99},{"version":"7f6170c966bbd9c55fd3e6bcc324b35f5ca27d70e509972f4b6b1c62b96c08ff","impliedFormat":99},{"version":"62cb7efe6e2beecb46e0530858383f27e59d302eb0a6161f66e4d6a98ae30ff5","impliedFormat":99},{"version":"a67ae9840f867db93aca8ec9300c0c927116d2543ecc0d5af8b7ab706cdda5ad","impliedFormat":99},{"version":"658b8dbb0eef3dcfbcaf37e90b69b1686ba45716d3b9fb6e14bb6f6f9ef52154","impliedFormat":99},{"version":"1e62ffb0b2bc05b7b04a354710596e60ac005cab6e12face413855c409239e9b","impliedFormat":99},{"version":"c92349bad69a4e56ac867121cda04887a79789adb418b4ee78948a477f0c4586","impliedFormat":99},{"version":"d49420a87cc4608acbd4e8ce774920f593891047d91c6b153f0da3df3349b9be","impliedFormat":99},{"version":"44376b040b0712ffe875ad014bb8c9f84d7648487cdf36e8bbe8f4888f860a03","impliedFormat":99},{"version":"4c704b137991192a3d2f9e23a3ded54bdb44f53ea5884c611c48637064e8c6cb","impliedFormat":99},{"version":"917af11888db0ac87046f9b31f8ccb081d2da9ba650d6aab9636a018f2d86259","impliedFormat":99},{"version":"d6c196e038cb164428f2f92feb0191de8a95d60aad8eb65bc703d3499d7ff888","impliedFormat":99},{"version":"b27723af585d0cf2e5f6a253b2989d084ba5c7ffe24130ab33d3c01f60f8f7c8","impliedFormat":99},{"version":"37f271a1de9b674667cffbd616832f4127c0a364d502b2b33e3e9c6b16fde1b8","impliedFormat":99},{"version":"0c796f53945fee54a07b295dbd1f1303c7a73cdd2c629e66fbfa5e29df16de9e","impliedFormat":99},{"version":"2b3045052668b317d06947a6ab1187755b2ad4885dd6640b6a8fe174e139ec5e","impliedFormat":99},{"version":"44ee21f3f866b5517804aadc860c89da792cca2d3ad7431d5742c147be7deb82","impliedFormat":99},{"version":"57bc6a334f498834fe779ea68e92a06c569e3b6757b608a092119589c34b7242","impliedFormat":99},{"version":"ccc8793b3493c8cf50af8e181da08e4e7ff327535724dfde8bf56249a385954f","impliedFormat":99},{"version":"c48b220c9a10db0df2d791b93d332575bb57033797da241c124f87c2171159ea","impliedFormat":99},{"version":"d1509856fe7e38720ef11b8e449d4ada04879e5ecfd2d09b41c2e4a07b3d8dd1","impliedFormat":99},{"version":"3883734e7cba8ceb7a314ca68c97ac3f69031a2fde7830e5b2e2339f10520497","impliedFormat":99},{"version":"54396051cf9f736287426d1f3c9ec0f8afad30a4d3e607f65ffd6205ec90bdce","impliedFormat":99},{"version":"4c5ed0d7c2b8dc59f2bcc2141a9479bc1ae8309d271145329b8074337507575d","impliedFormat":99},{"version":"2bdc0310704fe6b970799ee5214540c2d2ff57e029b4775db3687fbe9325a1e4","impliedFormat":99},{"version":"d9c92e20ad3c537e99a035c20021a79c66670da1c4946e1b66468ca0159e7afd","impliedFormat":99},{"version":"b62f1c33a042e7eb17ac850e53eb9ee1e7a7adbfa4aacf0d54ea9c692b64fc07","impliedFormat":99},{"version":"c5f8b0b4351f0883983eb2a2aaa98556cc56ed30547f447ea705dbfbe751c979","impliedFormat":99},{"version":"6a643b9e7a1a477674578ba8e7eed20b106adbef86dabe0faf7c2ba73dc5b263","impliedFormat":99},{"version":"6e434425d09e4a222f64090febcbbfbb8fb19b39cec68a36263a8e3231dab7ad","impliedFormat":99},{"version":"58afdddfd9bc4529afe96203e2001dcc150d6f46603b2930e14843a2adc0bef3","impliedFormat":99},{"version":"faa121086350e966ec3c19a86b64748221146b47b946745c6b6402d7ecf449d4","impliedFormat":99},{"version":"a9286d1583b12fd76bf08bcd1d8dad0c5e3c0618367fe3fe49326386fee528bd","impliedFormat":99},{"version":"141c5152b14aa1044b7411b83a6a9707f63e24298bfc566561a22d61b02177a4","impliedFormat":99},{"version":"dce464247d9d69227307f085606844dc1a6badc1e10d6f8e06f3a72d471e7766","impliedFormat":99},{"version":"26333aa1e58f4c7c6acb6cdb1490ba000c857f7e8a21608019ca9323ad97365e","impliedFormat":99},{"version":"b36269da8b9c370075ad842a17f7d284bae04bc07d743aa25cc396d2bbd922cd","impliedFormat":99},{"version":"1e5afd6a1d7f160c2da8ed1d298efcd5086b5a1bdb10e6d56f3ed9d70840aa5d","impliedFormat":99},{"version":"2e7c3024fa224f85f7c7044eded4dba89bf39c6189c20224fa41207462831e06","impliedFormat":99},{"version":"4ca05a8dfe3b861cf6dc4e763519778fc98b40655e71ddee5e8546390cf42b21","impliedFormat":99},{"version":"f96c214198c797da18198b7c660627faf40303ba4d1ac291ac431046ec018853","impliedFormat":99},{"version":"fa20380686e1f6c7429e3194dea61e9d68b7af55fa5fc6da5f1da8fc2b885c3d","impliedFormat":99},{"version":"d3a480946bced3c94e6b8ab3617330e59bf35c3273a96448d6e81ba354f6c20e","impliedFormat":99},{"version":"ff72b0d58aa1f69f3c7fa6e5a806aa588b5024d8bd81cb8314b6df32759cafdd","impliedFormat":99},{"version":"feccbe0137990c333898ac789870caf62bddf7b7f825cca3f5aac4388d867695","impliedFormat":99},{"version":"5d0b0e10dd5f4857dcf4703a4c86d92fe3e1d82a68ffc6739d777fc2ff6d6902","impliedFormat":99},{"version":"d002e1dad5ff22c6d7b9b4e8b09302b99fe6089f907e4e00310b1eea88d24a01","impliedFormat":99},{"version":"0497b91aa0292f7cafe54202e69cb467242426a414623aac0febc931c92b10f2","impliedFormat":99},{"version":"faf1f29f98e2a8db3737827234c5de88d2bf1546471c05b136578190ed647eb9","impliedFormat":99},{"version":"80634ab7f8f65c7b4663e807f8d961c683eaea3b0e58818524c847abb657b795","impliedFormat":99},{"version":"85e852e090c97b25243fb6c986cad3d2b48d0bb83cd1c369f6ff1cf9743ab490","impliedFormat":99},{"version":"12e856f6193309e09fbab3ce89f70e622c19b52cbeaad07b14d47ef19063e4dc","impliedFormat":99},{"version":"d3f4fda002f6200565ef1a5f6bcad4e28e150c209e95716e101d6c689ae11503","impliedFormat":99},{"version":"497a791143290119136bfcde6cd402e3b7d211df944188d1a4a511b8df5a9b13","impliedFormat":99},{"version":"1cb9dab41d415a2a401d52c6bede4ad5aa14a732b2914c01c16cc8b0fc69cf88","impliedFormat":99},{"version":"617108f6e6514fbfa7bf226cf99c33c8872a28517f5b7e855c657d4132afeb3d","impliedFormat":99},{"version":"194823a242a97327f6ac0af92f3d37fc078d4773149724fbb5176093eb7b0617","impliedFormat":99},{"version":"085f9e9b8f27c4833a6cf9228b1ae26d383bf7eb4e0677b5321029564336deff","impliedFormat":99},{"version":"34b81ae7140be9b70a7dfded8acebc06d62c5508617b196739e578595949724d","impliedFormat":99},{"version":"c7631702b00fbbac3682deeeaeaac4bfc0694bec74dda8db4afae1098310e18c","impliedFormat":99},{"version":"b0c04f92ff4c9da466ba563170892afe043ecd0f088deb3d3dc482a747d75bf0","impliedFormat":99},{"version":"c4d6664fa99f28b210a65e5feccc41723bf77d89e5f00afdbdaf25726a9ea4c3","impliedFormat":99},{"version":"f4940ce6889056747592fc93a331d7e33db8889d48e401397cfa15fa27ac4000","impliedFormat":99},{"version":"2e3ae7d41b13b4ebfdf76eb20d4282b72b4eafb9b75b0f850177d03e92f59d7b","impliedFormat":99},{"version":"e37392287850bebf777be5e4b573ef447b3437bf46f85969f9d9b4b37b7a8629","impliedFormat":99},{"version":"68771841743fe93f5732c94a93447cfc2ebce7de956330fcb704e82725f218be","impliedFormat":99},{"version":"6e58d2b1619cb5b2312a57fb1a0071f693ac0c7547f12d4e38c2b49629f71b9f","impliedFormat":99},{"version":"8363077b4b4520e9cfff74d0ae1d034b84f7429d35265e9e77daedeb428297f2","impliedFormat":99},{"version":"541cfa49f8c37ea962d96f4e591487524af58bfbf4faf45e904a4e1b25b7a7aa","impliedFormat":99},{"version":"ebb09c62607092b0aa7dbc658b186ee8cc39621de7f3ccf8acbd829f2418d976","impliedFormat":99},{"version":"f797dc6c71867b6da17755cfdbd06ef5ed5062e1b6fd354a07929a56546d4f4d","impliedFormat":99},{"version":"686bd9db685be2e1f812cf82d476c7702986ad177374dad64337635af24a0b9f","impliedFormat":99},{"version":"cc8520ff04dae6933f1eec93629b76197fb4a40a3a00da87c44e709cfa4af1ba","impliedFormat":99},{"version":"55880163bc61bc2478772370acce81a947301156cdce0d8459015f0e5a3f3f9c","impliedFormat":99},{"version":"d7591af9e3eee9e3406129e0dacb69eb2ac02f8d7ceb62767a6489cb280ca997","impliedFormat":99},{"version":"522356a026eb12397c71931ff85ce86065980138e2c8bce3fefc05559153eb80","impliedFormat":99},{"version":"1b998abad2ae5be415392d268ba04d9331e1b63d4e19fa97f97fe71ba6751665","impliedFormat":99},{"version":"81af071877c96ddb63dcf4827ecdd2da83ee458377d3a0cb18e404df4b5f6aa0","impliedFormat":99},{"version":"d087a17b172f43ff030d5a3ede4624c750b7ca59289e8af36bc49adb27c187af","impliedFormat":99},{"version":"e1cc224d0c75c8166ae984f68bfcdcd5d0e9c203fe7b8899c197e6012089694c","impliedFormat":99},{"version":"1025296be4b9c0cbc74466aab29dcd813eb78b57c4bef49a336a1b862d24cab0","impliedFormat":99},{"version":"18c8cf7b6d86f7250a7b723a066f3e3bf44fd39d2cb135eaffe2746e9e29cc01","impliedFormat":99},{"version":"c77cd0bddb5bec3652ff2e5dd412854a6c57eaa5b65cbf0b6a47aae37341eca9","impliedFormat":99},{"version":"e4a2ca50c6ded65a6829639f098560c60f5a11bc27f6d6d22c548fe3ec80894d","impliedFormat":99},{"version":"e989badc045124ca9516f28f49f670b8aeee1fb2150f6aefd87bb9df3175b052","impliedFormat":99},{"version":"d274cf19b989b9deff1304e4e874bc742816fca7aae3998c7feec0a1224079c7","impliedFormat":99},{"version":"0aefb67a9c212a540e2dedb089c4bbe274d32e5a179864d11c4eea7dc3644666","impliedFormat":99},{"version":"2767af8f266375ebd57c74932f35ce7231e16179d3066e87bcb67da9b2365245","impliedFormat":99},{"version":"34a1c0d17046ac6b326ed8fbe6e5a0b94aeef9e50119e78461b3f0e0c3a4618a","impliedFormat":99},{"version":"6fd58a158e4a9c661d506c053e10c7321edaa42b930e73b7a6d34eb81f2a71e8","impliedFormat":99},{"version":"60e18895fc4bff9e2f6fb58b74fcf83191386553e8ab0acc54660d65564e996c","impliedFormat":99},{"version":"41d624e8c6522001554fdddef30fed443b4c250ec8ddbb553bbe89e7f7daf2f4","impliedFormat":99},{"version":"b3034ec5a961ab98a41bc59c781bf950bb710834f1f99bf4b07bfbba77e2f04a","impliedFormat":99},{"version":"2115776fcd8001f094066e24d80b7473bbc2443a5488684f9f3a94a3842daadb","impliedFormat":99},{"version":"55e49ce04550294b3a40dcd9146d5611cfcd4fa317eb2dcb2c19dd28dea09f58","impliedFormat":99},{"version":"96149ea111d0a0017b95606821a16d4a1cf2470f1460549ba65ec63bf9224b5d","impliedFormat":99},{"version":"5b290d80e30d0858b30aab7ccff4dbfa68195f7a38f732a59cfe341764932910","impliedFormat":99},{"version":"a85ee477d4e97c2bfae6716b0faaaacef6b4f3de64e0b449c0347322e92a594e","impliedFormat":99},{"version":"8c11d3a3eac4c18abf364d20dde653c8b4d3c3ad85bb55da285209140dae256c","impliedFormat":99},{"version":"262fcc12bd0cb2fe7ce2115093ae2b083cf425329b7966d8857af78e1e33814d","impliedFormat":99},{"version":"24f4daf278786772d9cee29876e85f5f6712c65b741b997a900b1d942c8f217e","impliedFormat":99},{"version":"a2be1e277d805c54f038fee25fd291b5fdd76990be855454bd48e336b315fb8b","impliedFormat":99},{"version":"dce9350553d244fa5ad6cff4e9aea3664d918113ddff74ef84210b0481b79f74","impliedFormat":99},{"version":"8802c923b63c304b8e014600ff58fb9542323e842701aba9e69df60c7c979df5","impliedFormat":99},{"version":"b5a14e52ffa8efd7e31e7856bbf36a7bce32446283a9b51e0a819b04a94f2ce4","impliedFormat":99},{"version":"9cc999adecb60f81915c635cc91acdb0b79904370653acc283b97656b5b2cfa8","impliedFormat":99},{"version":"80249dc33a16d10faf6ec20ea50d4c72b0d92e55070bba0327de428e1d0979e7","impliedFormat":99},{"version":"7367f5f54504a630ff69d0445d4aecf9f8c22286f375842a9a4324de1b35066f","impliedFormat":99},{"version":"0b86afbb8d60fd89e3033c89d6410844d6cb6a11d87e85a3ef6f75f4f1bae8a8","impliedFormat":99},{"version":"9cfb95029f27b79f6c849bbb7d36a4318d8acf1c7b7d3618936c219ad5cddab7","impliedFormat":99},{"version":"2a4181e00cfe58bdce671461642f96301f1f8921d0f05bd1cc7750bbf25dd54a","impliedFormat":99},{"version":"24e33e2ece5223951e52df17904dcc52a4022be3eb639ab388e673903608eb37","impliedFormat":99},{"version":"506eaf48e9f57567649da05e18ddd5e43e4ad46d0227127d67f07152e4415f29","impliedFormat":99},{"version":"9e5247c2cdf36b8c44d22caa499decd252577b8b5f718b498f7a8b813d81a210","impliedFormat":99},{"version":"69abcf790968f38d1e58bccff7691aa2553d14daada9f96dcc5fe2b1f43762c3","impliedFormat":99},{"version":"5e88a51477d77e8ec02675edf32e7d1fccdc2af60972d530c3e961bd15730788","impliedFormat":99},{"version":"0620fa1ded997cd0cdc1340e9b34d3fe5e84f46ba109b4a69176df548e76081c","impliedFormat":99},{"version":"8508ed314834f8865469a0628cc8d6c31bf5ea2905f8a87f336a2168e66f91f4","impliedFormat":99},{"version":"9757602b417a9364a599c07507e8c9a4e567f78829eeb03a7c64b79ffb16caf9","impliedFormat":99},{"version":"e0bfc7204238bd5b19f0b9f3cd8aa9e31979835772102d2f4fa0e4728140bdbf","impliedFormat":99},{"version":"070ff67371e23b620cbf776e08881a3d1ff6cdf06c1cf6a753fb89b870c6f310","impliedFormat":99},{"version":"d2e8a7070ff0c6815be4ccca5071fe90d7923702e6348fa83275b452768f701a","impliedFormat":99},{"version":"63c057f6b98e622b13aa24a973bbdf0fef58d44e142a1c67753e981185465603","impliedFormat":99},{"version":"2b857bdc485905b1be1cee2e47f60fc50e4113f4f7c2c7301cdc0f14c013278e","impliedFormat":99},{"version":"4abccbf2fc4841cf06c0ff49f6178d8f190f2645acda5d365e61a48877b8b03e","impliedFormat":99},{"version":"b4ababf5c8f64e398617d5f683ad6c8694f19f589485580623a927121cfab64b","impliedFormat":99},{"version":"f856d3559afde2a5e3f0e4e877d0397fe673eea71ac3683abb7c6cef429c192d","impliedFormat":99},{"version":"8148fe494a3556aec26a46b0deba7a85d78883b285e408ebf69ff1cfd1531c00","impliedFormat":99},{"version":"0942f7d40c91c30a5936d896de2194238ad65a45e7540bab7f7f588b70242bb8","impliedFormat":99},{"version":"b808dbc3d555d643bd6410da582c2d7512b39dc8331acef7d4752fff0f390b5f","impliedFormat":99},{"version":"65971cd38702bdce2440a7322eccccf978a37e481b44e22dd0b34aee30e0b6dd","impliedFormat":99},{"version":"c6f038949f364df4f690cebfe93324f54d53c9c50aec6c8e5508b7f6a6ea4df7","impliedFormat":99},{"version":"58a0bdd8fa7be3a362ce850e4af11c7a4f82abcbfad36201463f7b28ebf53e7e","impliedFormat":99},{"version":"cc9f07af7679c686e5e68c3933a4430af6ea651ed0c1cfcf0db7c60576d05ccc","impliedFormat":99},{"version":"d45698ab81cc9a9722ec492e7442de1136be3c2a5c830b7c700c3cae020bbf70","impliedFormat":99},{"version":"18441c1a35fed75775881c3b918c3ea4a630f02e43c8179225a268055907b140","impliedFormat":99},{"version":"bbe0ac66e24ba0c5d30dfc8f0579e3c660f8e1f3b8f234c7cbdd9fd2db9ed22f","impliedFormat":99},{"version":"63e65622cd147ea99f39f8833c65d7c2b7a0595c86ce71e92e04b07d1f38d3ad","impliedFormat":99},{"version":"6a840e9604c761dd515f8c76ea08c648beed01129b75133e0d54e24372802302","impliedFormat":99},{"version":"7b853ab7e6a660ca2dfdc36eff9d3cb5215b3e10acbe65a09ed6d9be52c38d9b","impliedFormat":99},{"version":"cb1f24cd504d21fe92ea004fab2b3e496248b4230c3133c239fbc37413a872b7","impliedFormat":99},{"version":"d7ec8da78b951af56a738ab0586815263a433ef3517c4e3ea6aad5dfd65c4a04","impliedFormat":99},{"version":"6adb1517628439ae88aeb0419f4fa89eacda98f89791fcd05fa92ad2cdc389af","impliedFormat":99},{"version":"87e256c8149c5487ef2c47297770c4e0e622271ac1c8902dc0b31795062a1410","impliedFormat":99},{"version":"99c98d7abbf313f8978c0df4fae66f5caf05b1e7075a2a3f0e8cd28c5abb56d2","impliedFormat":99},{"version":"3d7c052002e317d7ff01dbe4c6cf82aa20b6ef751101139c38c547636d872ffe","impliedFormat":99},{"version":"353fd6acf4bc2232c850bcf24fa6512a85517623f84dabe4dc4a22fcd0a69f00","impliedFormat":99},{"version":"f9c4bdf33b97ce2f7c4fa422c32ce85f8f4cafa4421e02172279ee5ebd097804","impliedFormat":99},{"version":"1f098514ce3fb820e89bde510a34b939f281581a7c1e9d39527ec90cec46f7c8","impliedFormat":99},{"version":"54b21f4fe217619f1b1dc43b92f86b741c55400b5f35bfd42f8ea51b2f6248a1","impliedFormat":99},{"version":"48d9c8e386b3ba47dd187ee4b118c49d658cdac580879984b1dc364cf5a994ca","impliedFormat":99},{"version":"b69cecaec600733bb42800ac1f4be532036f3e8c88e681f692b4654475275261","impliedFormat":99},{"version":"bb8e4982de3a8add33577b084a2a0a3c3e9ebf5a1ec17ddfe6677130ec19b97d","impliedFormat":99},{"version":"5a8aa1adc0a8d6cf8a106fd8cc422e28ca130292d452b75d17678d24ab31626b","impliedFormat":99},{"version":"f4d331bd8e86deaaeedc9d69d872696f9d263bcb8b8980212181171a70bf2b03","impliedFormat":99},{"version":"c4717c87eecbb4f01c31838d859b0ac5487c1538767bba9b77a76232fa3f942e","impliedFormat":99},{"version":"90a8959154cd1c2605ac324459da3c9a02317b26e456bb838bd4f294135e2935","impliedFormat":99},{"version":"5a68e0660309b9afb858087f281a88775d4c21f0c953c5ec477a49bb92baa6ec","impliedFormat":99},{"version":"38e6bb4a7fc25d355def36664faf0ecfed49948b86492b3996f54b4fd9e6531e","impliedFormat":99},{"version":"a8826523bac19611e6266fe72adcc0a4b1ebc509531688608be17f55cba5bb19","impliedFormat":99},{"version":"4dc964991e81d75b24363d787fefbae1ee6289d5d9cc9d29c9cec756ffed282b","impliedFormat":99},{"version":"e42a756747bc0dbc1b182fe3e129bfa90e8fb388eee2b15e97547e02c377c5ef","impliedFormat":99},{"version":"8b5b2e11343212230768bc59c8be400d4523849953a21f47812e60c0c88184b3","impliedFormat":99},{"version":"d96b4e9f736167c37d33c40d1caae8b26806cdd435c1d71a3a3c747365c4163c","impliedFormat":99},{"version":"363b0e97b95b3bcc1c27eb587ae16dfa60a6d1369994b6da849c3f10f263fd04","impliedFormat":99},{"version":"6c7278e2386b1993c5d9dfa7381c617dc2d206653b324559f7ef0595a024a3da","impliedFormat":99},{"version":"f5d731a9084db49b8ffd42bc60aecb28f90966e489261d7ec5f00c853efc3865","impliedFormat":99},{"version":"4dcc76850d97256f83a7d45b40327725db3aa7ee02dee3b1e860ca81ce591694","impliedFormat":99},{"version":"70fa22a23b35e04482f13ab7f697a057506503e21ced87d933359e3224c92ed5","impliedFormat":99},{"version":"709622bea0f7188c66bcee996bd4f24221c69d67e1d04797a11ebdd1311096cd","impliedFormat":99},{"version":"e8ad189c7d2932a01feadccefca9c873bee40d202fb53f708f1e7b1efce4ffef","impliedFormat":99},{"version":"ed3dbe543bbf46c4365e3eb5faa3fa87f0fe0c3db4b2476b8f430838432e2b8c","impliedFormat":99},{"version":"1ad2f20d17cad8ed17df10daf3f9050161fd42a86d5b7afd0a1dacac216e9c14","impliedFormat":99},{"version":"4e6502d4dc180cdff48d77f6ee04007167bef42f7b5488dbadedb0ddb1e9cdf1","impliedFormat":99},{"version":"e41e03387b7c74aae146473ff507c26b07699cfcd953f79dd174bfd624bcb5d0","impliedFormat":99},{"version":"ff671a3c1efcc1a96ca6f418c7a9616ae4a4c6110ece811fc1ec8013a3a24e6b","impliedFormat":99},{"version":"a105278208759f167642ea5b37b78661edf4b0350824ad2f961a329e5976b9b6","impliedFormat":99},{"version":"6f9a389203f44e1c344e5e5d8c0ddad05f0f2e033d0657297894cd8e6ca4747f","impliedFormat":99},{"version":"636ddb4225f892b1033182ae24af259fe30d5209a2b9e69d7374c3268818b9d3","impliedFormat":99},{"version":"c00c3b2b915c5cd789a78f86c98c211c78646872ed84ddc478994e97c6560a0a","impliedFormat":99},{"version":"592640ac835589f476f9cefbffdfeef79dc327bb9b25c0a3f92549fcd8e8c514","impliedFormat":99},{"version":"24033c6280d58689e7cdb5af09e2766c6b44a3747dbb0d844f155bd0621024f0","impliedFormat":99},{"version":"1914db9d25d18ff046611a41a8129ad01c829d5f9565f16660c7d09c66f776c6","impliedFormat":99},{"version":"054c4bef46bc70b9fbb18481f501bac861cd54af683fe5942e5c7e7d3b0c1fb5","impliedFormat":99},{"version":"d6ce9fe8c2849756dae3c9e11de07966bb58b6638a462098a3a1b23d78b56ef0","impliedFormat":99},{"version":"0f149ffde075123eb05b9aefdd405d5dc1acd729f94b3dedaf9f48d9fbbe2348","impliedFormat":99},{"version":"193a5fc1bfbc703c3772e05dfffb1c821ef30bb2d787f906fc26c38718bb35bb","impliedFormat":99},{"version":"dfdc408e78629b12771eca9a58edbeeb2f4783e79841368a069b8eb65ce447ce","impliedFormat":99},{"version":"513601842e2f161c0e7c3bc35c433f793f338b5d7d0465423d071486f43b65e4","impliedFormat":99},{"version":"5270479971ab757c197fa22d4eb07bf7bfc886440a76da240e095d5ffb2e95bc","impliedFormat":99},{"version":"8f5d63fde9f0ace19cfcec1a2bc4bc0efec47b89465216817204448dc6dfd5a2","impliedFormat":99},{"version":"65323bbeb0b10634c92484812f6a0020d3ca38a888c2a536962b425cb77d8e77","impliedFormat":1},{"version":"767183261649b963ccc7daa3d2ae38cc604ce60fc3a453a15a8afa9a4daba71f","impliedFormat":1},{"version":"5fb2b92475a3963e7b4ee8152cc6c3ae066081364b4abaeea695a5001db32e63","impliedFormat":1},{"version":"890d6c959fe26e8bd017bbb9b25623c227368fa1983a8966055c960b14de1452","impliedFormat":1},{"version":"4b5ed80412f64641dc5caf5af1c98d8083315bcf5f4d9bceea7b6aac4a1b865b","impliedFormat":1},{"version":"81957f051f71d2f4b0b20fbe8bfc40cbaa4d9a441ee3af3ec82646a96076429d","impliedFormat":1},{"version":"e4630dcc04c04cfed62e267a2233cae1367a7366d5cadcf0d2c0d367fd43e8d4","impliedFormat":1},{"version":"f7f13164c6c9b9e638ac98ffd06041a334cb20564d24d37185e29408d00cea8f","impliedFormat":1},{"version":"eec0d8defb7ed885473e742b9298a2f253f2113688787c2495b4f8228bc22590","impliedFormat":1},{"version":"de2cddc05d2aff0460f1bb27f796e9134b049e4fab33716b4d658628e0976105","impliedFormat":1},{"version":"4bd3e56fca57ce532152c64036a2153d61f2c1acfc27b4d679b1f4829988b9f4","impliedFormat":1},{"version":"7640a64392d0920c04d091373eb8ca038d6e80cc5b202bddcb0ea0937f90def4","impliedFormat":1},{"version":"ec817057681d50c1c0d2a3c805aee50e6df7c51c60484fdf590c81b9a5001931","impliedFormat":1},{"version":"bf6c2b7d7ef94e5d5add264d87aa2321e2e1d875d74e2ff1a5870b3fd0fa4506","impliedFormat":99},{"version":"da85d4bf5436447eea22ed6404226fa97f44ae375559ac97b5d3d5d86c1d5b72","impliedFormat":99},{"version":"e86e6db08b9106c95115542563d5a49d20447cf08cd2994dbd86c1896c49dc08","impliedFormat":99},{"version":"c3bbaa7348f9e5ca7e7c67c18aa0db9cfbfb1485ab4c13b73e8e0a15766b99de","impliedFormat":99},{"version":"338d21e6e39eac5d7df7fbad9179a489c4689471775cedc24a4eacd2b4acfc97","impliedFormat":1},{"version":"71c894f7dbb289f6b9907e4d70f0ccaa746be732a7d65354e6bcd23405fcc1e6","impliedFormat":1},{"version":"0cb45071af866142b4198636d458bd6d2f564b7d79896907a75b01d66c135625","impliedFormat":1},{"version":"e151f7178771544d572824da291a8e2c45325c0cc2dbfe513de06c9d3cf771fc","impliedFormat":1},{"version":"16d707a765a9a3114e9911c1a57634fb3c90d678539c2d6d793c30cc87e759f3","impliedFormat":1},{"version":"4ce2e4991a21c8e6a98905d0dc3a9efaf75e8e8812a2b930f77ed8aa4435784d","impliedFormat":1},{"version":"4b86cb06a21c36b5ff47731a046e0109cb41d540e17215b8f95829e30da1bb94","impliedFormat":1},{"version":"7cc83c9b21c59ab3b08196adbeb13d999e16c56a5bbf89864d6e01cc1a6e6204","impliedFormat":1},{"version":"102334bccff335c3ef1c556fabac2c2f12bf93ce1a5cd8ce826ed188707496ed","impliedFormat":1},{"version":"c9144f4f50f868501918f526697deb558eb9d82bcad179b3807609246ba6b32b","impliedFormat":1},{"version":"8bb219fc6b96eb8fee00d73aa6e570b01885a01be42f2b85d93a1fa102f52ccd","impliedFormat":1},{"version":"fcc36716f4a5bb4ac1babbd30a3c55483def152357c0d17c570ecc406ef8f159","impliedFormat":1},{"version":"66c695ccbaa50b938c0e058b28b3a004fc8954e7e0f7f01177bae4bb8e92cc0f","impliedFormat":1},{"version":"6e01462f84beeb73382f987fae1bc554f0ed6d9f70056106f417a9f6088bdbc5","impliedFormat":1},{"version":"1b46f9a444f79e8aaa88e9c7ccff9f131ab101015b8933ea3a8fc7cc2021adc9","impliedFormat":1},{"version":"7749ee7c2eb72db8f09271082b925580321c546d8b2aef68960f3f4bf483d454","impliedFormat":1},{"version":"3d77e968a4a37fe3857daf2227ccaa7efb978830a6873de10d6a887daabda9cb","impliedFormat":1},{"version":"0ee14e6d06ffdcc74c5fc496224c15e6275bda1c413ffc86b0ad19d1452898a6","impliedFormat":1},{"version":"b10364cad5f3ba55bb99c69d21eb4a0df657c7a36027a2618f8739ed69142570","impliedFormat":1},{"version":"c7c4c05e6788ee40a4f1e374ab1355d3a8dcd1c947afadc8ac1dfdd0bb0ea41b","impliedFormat":1},{"version":"0a5e955193cb8aea98e00bf54042651f8c8b9b00c87337ff3c0ce8960345b5ba","impliedFormat":1},{"version":"5ad71db5434af4e0d796a387bb7f4b7c1837199b866723921e5bd67fb01c2f0f","impliedFormat":1},{"version":"f2d68f4ccfd297a6b22d2df8271e68bb8a4d38c5e2a503b1a24ced9a3c7d7d9f","impliedFormat":1},{"version":"0a176b1b69c74bcc70bb1e3220fb14f5377e50b3fca16546a78c8ac87d84501e","impliedFormat":1},{"version":"cedac9b020418397b6dac0c22ada9f2539ead0c4d6c4f002900aceaac860437a","impliedFormat":1},{"version":"938492e3d181452f0cd89248fdb15e8126ac2aab687948d8d488d255d7a4fea6","impliedFormat":1},{"version":"b1a02c272b834972bef5cb8d9c79acb0352966ed5ae3a37482cec39da5e51276","impliedFormat":1},{"version":"25197fdcec1f0b168131c901881f9689b950c546a8d5d3620a9028765e9c91d8","impliedFormat":1},{"version":"c2a5d0ee3f7dd09d0741ba10eb9d07ccc714ee5f7fad3e550fe8ad99eedda1a5","impliedFormat":1},{"version":"81af227428e65ccfec74d0e439a810fcc2f33f3fa0e74730d486edf14ad2e367","impliedFormat":1},{"version":"2e6b2ac20f09b0351d256155e9b8d8854434ed9a01ba7e55a87a5d13e4365f63","impliedFormat":1},{"version":"3b0b108ad2bfedd6aba6c50b5b6aa969a75644935e40a749ecc2d28de9d9e788","impliedFormat":1},{"version":"221e3b82ae572a418be0a8e112681c64aae84166f2c25f4fd39297d0a6958b92","impliedFormat":1},{"version":"8a5fea1b0a68c64d9d830e878ea4e81efac6be802b4af1aa29cdfaad9be210f0","impliedFormat":1},{"version":"367fd06f031fee62713fa846885d31c8cfa8101b7e3ab129f1d89d9d5e719124","impliedFormat":1},{"version":"7163a9b5ad66c4e388aaeb18acf502e7c5afdbc52cb163bac5faf5d140abedfe","impliedFormat":1},{"version":"a9347756f992e52cd1ad3a5a7f35f3176e05795f44f4299f2809f5458699981a","impliedFormat":1},{"version":"68f142589baa770d72f2ec2c76dc5850d243ce5eb9b8b1f7e895e52c5dde89ed","impliedFormat":99},{"version":"dd6585c64a7e2247adc774fe92a3c5bebac28af2c1bc06bbdafeb58a2813d725","impliedFormat":1},{"version":"e0feff26b376e6eda473fea2273a6e96c5b380276a9ad9d3730cb607a0bcf1ce","impliedFormat":1},{"version":"4a286cb32756749c240e70cdb3e751b676fd0305f9d35928e3d3976e0d3c39b1","impliedFormat":1},{"version":"5b9716db2e3ca48d084e8baff9e2db5b2824ac7f7413e001dc33976e9f8e9636","impliedFormat":1},{"version":"ceacff8e81d4c413c8cdba7ef6eb5d35a2a20a7b0bc5b316114bbdce888b58da","impliedFormat":99},{"version":"dc62e0d530ec9d6b960e09c39f3eb0e1f0384511facc30f07e441b0abef2c5c0","impliedFormat":1},{"version":"9da9c5a6b9c0020c1e8f2d087168d2ea5d43ad70fec8d8b31be7db2e2296ef55","impliedFormat":1},{"version":"690bc2bd40e8d87f033168d99e4cde82607b8e0a181163350e7de07ccc98f5b1","impliedFormat":1},{"version":"4619bbac2522271def9ec6d67b1b421a8fe4b85a90bc2f92ddd8f4b7a08f728e","impliedFormat":1},{"version":"9019d34b102c683cf2810e38477cd5e8964e46a15870abcd27c108c31d90970d","impliedFormat":1},{"version":"dd0b8ff0d6d5922e247969e6b3df41cae2d7294d000b056f9f93eda3e5bc31f9","impliedFormat":1},{"version":"b53e04ce667e2497d2e1e5826eb739840b6d83e73abeba7d267416990cf7c900","impliedFormat":99},{"version":"466d30b0f75773a2677ad69bc7d94facb224e061e0276c18b22a50d922e7a6be","impliedFormat":1},{"version":"858520cadc012c1c8ff47ddc61686f50f4ee52c9b87a7c10b8fb84b60ababc32","impliedFormat":1},{"version":"09e286c715f875d3772a8c196677934495eb7cc0b0222ddbf6756f4f3c57830d","impliedFormat":1},{"version":"f45c90fb3bc0f1bc18aabaeaf52747c633152994792d6c119ddd7d29e9d53414","impliedFormat":1},{"version":"29b553ef6920613307fa4edbd656a105bf159c7db2438fd84fe624a4ef6fc491","impliedFormat":1},{"version":"a69b64cc44b49bdadaa0de322b4b347b16fcb9c7fc08029a0372a082cb0f4467","impliedFormat":1},{"version":"7596bc71c0939bf0b534c1ead88b0c13c6ce7a8ffed9e47fd176036b3a464062","impliedFormat":1},{"version":"51cafc266445e20b92529192d8eb0ff3385ac1bc44fe125e84561563f338ec80","impliedFormat":1},{"version":"86a9434282d3ac8a6438ad0d6bec7f9e6463106edb2dc63c26a9dc63a6050d24","impliedFormat":1},{"version":"c16cffd6aa4a2c0701bd16332f4dfe6517a17f770f00218867d1fd4b13617fe2","impliedFormat":1},{"version":"ff1e570657ad6fb9247c2d7160d8c318796b88ab5db739336515fb04547a2d20","impliedFormat":1},{"version":"2ef29f5b7766615f2dc6b2fad24f5ce9e64204f6bdc035f3c9f90ade189196b5","impliedFormat":1},{"version":"ff4a940841cc11f423a911011edef12b47541e48c02cd5be4e8aa0addb0cf3f7","impliedFormat":1},{"version":"2ce39f6923be247a53eb5ea78ee1b5df3be8086253b8dd70be2584f5d8c2537a","impliedFormat":1},{"version":"bac47ef1b5d6cbf8c3e80f672e8f9ecf1cbab10da5fd25b7f228702306fceff8","impliedFormat":1},{"version":"3ef21503ad78f542c2efbd785f22a8c77e3798a2462be8a25a806937d4d85a3a","impliedFormat":1},{"version":"bd1ff4e0676496bf4f98f4f3ee31765bb49339aafa8b076952ec27cb041db0c7","impliedFormat":1},{"version":"5b89a6e06ccb15548326fac4c3ccb65892d8b10cf52fccb2867d0eb9a0b27bfd","impliedFormat":1},{"version":"2aba54f9c5acaf97b2f54e15dd52b88a26069c04e40118c5c1b4e1c7d0b13704","impliedFormat":1},{"version":"22b47c263603277f4caae17f9b5aa564f600a9b770f05920e68bee09394e2178","impliedFormat":1},{"version":"bdb92c931b192ef315b53cd48aa02e4398c251a8ea8800492cf0f43cb038ba28","impliedFormat":1},{"version":"eb37622408d5a60a38a9141acc5ce584f031df61fa67eeba98d495704fa14ddd","impliedFormat":1},{"version":"d787f15bf7abaa3a0d38c657e4281b13f86cc38b8845094a6977d583a9347ea2","impliedFormat":1},{"version":"8cb8894f63c1636f90fb7730fe50e421cdf56c779d0ba298010f0be89022cd39","impliedFormat":1},{"version":"749fb78249cdfc1fbb9ef8cef948a13f85f9942ca5489f1468736922500d78e1","impliedFormat":1},{"version":"30fd5d3577a7e58f873b83049dfbd2f173c350851c17b1e9a4b0878020626b97","impliedFormat":1},{"version":"66231c5bc015e15786504a220d622ddc6aac651b2a49f9cbf3fb945e27e733cd","impliedFormat":1},{"version":"819175b71a0809ed8bd0e76470a5e1deac5e02897862d4b633c17238ffc22b97","impliedFormat":1},{"version":"5426089e9fcec830597afd777d68bfe372de694dea4a8e7e68e3ca28acc8a6db","impliedFormat":1},{"version":"8e302e6fa5c43ca2384fe54b39fbdf0c320224a6919d71da5efc423366551314","impliedFormat":1},{"version":"fdc1bebcfdb5da0d3db8b11a94e68e0f40aff9f126ba06512c74e83cbab03a03","impliedFormat":1},{"version":"9139c1f3d72a1419734da74c4cbed997d073dafdb8fba63f9088a6fce6f23c99","impliedFormat":1},{"version":"79314b827217deb6d8518be67e201505f4da047bfd8fee11457f997403e0e7e9","impliedFormat":1},{"version":"5e788a039b7435497ef94c30ceff9f92ae097522e53ee75652407f1fba79579d","impliedFormat":1},{"version":"8782f99016b5b587eeb2e57c913a0a9470200941afda788224ce960fae47eeb4","impliedFormat":1},{"version":"c471dc722410fa62a4ff2c7f033cc15814087f5b445b5e9fbda596cd4c228a2e","impliedFormat":1},{"version":"0548857ee66b6fad6f26fdfaa76ee25334fa62454997c3a954726c166deb6a5a","impliedFormat":1},{"version":"a1ffd087cb5a5f76ff56226148d0acf8d223a9474eaf9d97dbd45fa6a19c1e58","impliedFormat":1},{"version":"cc5f3ec646bf93a7f13e27a9bb72f42b2a094a551a015296361cfe7f0d4350d2","impliedFormat":1},{"version":"f9e8a5ef3b0cbc104b6e66b936e5e76119630186ede7d3bef2cf53df506ca5a6","impliedFormat":1},{"version":"3644cfe268c1fe7de7b18619b385f8fdae10531ebd0ea4193ca6ab8bc8175e72","impliedFormat":1},{"version":"a05cfa018e37d5f3a5f39773145e5e77d18f32819ba3e115cd49b468f3ac139e","impliedFormat":1},{"version":"e2ecb11f739a7f3556659fee61d144d3ca1d715436ceb727f5701cd12461a65b","impliedFormat":1},{"version":"6ec1463df8c2070371669bdaee719272607903467a19f9883348166b50af8d54","impliedFormat":1},{"version":"cc08bd4e50ec465e694826816b4797e6f6a4a5211e98bb76bb05342439c7ce38","impliedFormat":1},{"version":"96cfa668e8ad2f88bf255184086129046467ff400f678de888c2cddf82b999ec","impliedFormat":1},{"version":"8d27a16268750bef7f8f2816fdcb28a9500fb9e6ba5a1e5981a053d35b416c3d","impliedFormat":1},{"version":"d90ff671df07b5dc26709a9ff6688a96fbf467e6835bee3ad8e96af26871d42c","impliedFormat":1},{"version":"7a0555e1186c549e113b9603b37994dbdb9b0aea18c1ebaccbade9fba289d260","impliedFormat":1},{"version":"ad1eab49ed8d2c7027c7d5b8333217688ef1bf628c6b68ca7674329c262433c5","impliedFormat":1},{"version":"c8d412a9b07756667bf4779a960226b71418a858cb6801188992f4e9ed023839","impliedFormat":1},{"version":"7801e1a8f4396ec3a8eb0fae480baf1fe9ea036a5d68868337a7bcc50bf769e4","impliedFormat":1},{"version":"9dfbe649c60c743bf0cbf473639551cf743a1acdead36e3d66a8e3feee648879","impliedFormat":1},{"version":"c214b33fb74b0ea35c672b1923e51ab30a1e3e8f876a09e94148a35f3cd2f5db","impliedFormat":1},{"version":"e3846aa20e866fce307a39d7efc4e90eef08ea0884b956738458fe724684e591","impliedFormat":1},{"version":"c19feddfc23f04fd9cda6b24568894eb79852a26b3f9733cc0472b91bfc1c0a1","impliedFormat":1},{"version":"9ac8b88f902bd4c2212ae16b11d26421e50669f0a0643586083281176f9d9132","impliedFormat":1},{"version":"5180e5bae39bbb8baf8aeba9100814e4f4d017d41638a4e609ca5c3ce83993ea","impliedFormat":1},{"version":"b69e0431f9b7f6e6c5f0754e8a3dad3f263684ed4c7406d4be7649eeb7d9af27","impliedFormat":1},{"version":"a10e2f2466f0ed484ef74a385bfb5e63f2b202d51dbf1bb4c51c294a70ba92ca","impliedFormat":1},{"version":"5347737b57f1c1cce11c140228c4e4068eca4c2435b1e4beb4d46e60c5d5e55e","impliedFormat":1},{"version":"631b3d9fcc0fd5e08affcdb01b76f5d34e1f1c607031d03a6d621cf2aa63b2e8","impliedFormat":1},{"version":"ef7ee4e86977bf10f68dc2e1a3378bbebb4e97dc476bac72ca9315cc7e89e3e2","impliedFormat":1},{"version":"3a21d83e527b6d812d75c719134026ffc18efe0f01c76e6441b29d77add09e26","impliedFormat":1},{"version":"91406250d53804ad5f3a42af40a5e17f1ea3e54c493076f6f931e77efa6db566","impliedFormat":1},{"version":"1fb51788ac6acb1e6cba5cf7e99b03d07ca8b4120550defd561b331dfa8e816d","impliedFormat":1},{"version":"3cc15f1ebcd824e7752f390dab07e92b15e02514f2c9ceb1737ee42d4e3164e3","impliedFormat":1},{"version":"830c34482ca4bce8c4fa2f14cff1197fce2017471752441e95b25112827ceef3","impliedFormat":1},{"version":"f00b89d69f241f3e74269c2de5d3cd564fea760fd4d2a403820ed5b077819724","impliedFormat":1},{"version":"d2e41732e6551589732bb50507b48762982fbe68fcb739f7a4fdacf7a2eb6bb1","impliedFormat":1},{"version":"b62750f035b864e25b966d2a5bd32a716d8a0f5e9befaa3638603ec8df578b37","impliedFormat":1},{"version":"8933e7bf77f729d2ae382fe434a1038fa304caf15c71a4c16c90c19e9ca7626f","impliedFormat":1},{"version":"20463dff6b7f9ab3573ceb503f0674d34c3571328bec2152db193e732a29bb7a","impliedFormat":1},{"version":"528e1e94b95de11acf4545f8b930b460e18ef044579a24a8b1b2d40c068fa89e","impliedFormat":1},{"version":"fc8a3cf4a55f7d1ae3f2efdda84bbeaeea605a92e535ac52b99deed6366917d5","impliedFormat":99},{"version":"4d0d2708fe857d7a1a936da40fb357b2f67f22b0e0c4994211ee6a6ccbd48a33","impliedFormat":1},{"version":"21a572262a50e7b603382800b727abae5b7d52ccd71ae163f8dc4cac379f7274","impliedFormat":1},{"version":"e674342d40884888334a6cf55ac4276abd77f36f51687f56a47d5910fd9ea033","impliedFormat":1},{"version":"ac04b4535689f4fd637d97c9811d5fafe4d2209d497c0eae539c3e99d81978fc","impliedFormat":1},{"version":"c3a31b99b4de2d53784cf340ee9b36907f2b859dcb34dd75c08425248e9e3525","impliedFormat":1},{"version":"f03893fc4406737e85fd952654fd0a81c6a787b4537427b80570fea3a6e4e8b6","impliedFormat":1},{"version":"518ee71252a0acf9fce679a78f13630ab81d24a9b4ee0b780e418a4859cc5e9f","impliedFormat":1},{"version":"3946840c77ebba396a071303e6e4993eaa15f341af507a04b8b305558410f41e","impliedFormat":1},{"version":"2fba8367edfbc4db7237afc46fd04f11a5cc68a5ff60a374f8f478fcc65aa940","impliedFormat":1},{"version":"8d6e54930ac061493fa08de0f2fd7af5a1292de5e468400c4df116fd104585a2","impliedFormat":1},{"version":"38c6778d12f0d327d11057ef49c9b66e80afb98e540274c9d10e5c126345c91d","impliedFormat":1},{"version":"2ac9c98f2e92d80b404e6c1a4a3d6b73e9dc7a265c76921c00bbcc74d6aa6a19","impliedFormat":1},{"version":"8464225b861e79722bf523bb5f9f650b5c4d92a0b0ede063cc0f3cf7a8ddd14a","impliedFormat":1},{"version":"266fb71b46300d4651ff34b6f088ac26730097d9b30d346b632128a2c481a380","impliedFormat":1},{"version":"e747335bc7db47d79474deaa7a7285bf1688359763351705379d49efcddc6d75","impliedFormat":1},{"version":"20f99f0f0fdf0c71d336110b7f28f11f86e632cf4cf0145a76b37926ffaa5e67","impliedFormat":1},{"version":"148e0a838139933abaeee7afc116198e20b5a3091c5e63f9d6460744f9ad61a0","impliedFormat":1},{"version":"72c0d33dd598971c1caa9638e46d561489e9db6f0c215ced7431d1d2630e26d3","impliedFormat":1},{"version":"611f0ccef4b1eebe00271c7e303d79309d94141b6d937c9c27b627a6c5b9837f","impliedFormat":1},{"version":"e2d98375b375d8baa7402848dca7c6cd764da6abf65ecfaa05450a81a488157f","impliedFormat":1},{"version":"b6254476d1ab4ce8525ae5f0f7e31a74d43f79eecd1503c4de3c861ee3040927","impliedFormat":1},{"version":"65f702c9b0643dc0d37be10d70da8f8bbd6a50c65c83f989f48674afb3703d06","impliedFormat":1},{"version":"5734aa7e99741993aa742bf779c109ced2d70952401efe91a56f87ed7c212d1b","impliedFormat":1},{"version":"96f46fdc3e6b3f94cd2e68eca6fd069453f96c3dea92a23e9fcf4e4e5ba6ecdb","impliedFormat":1},{"version":"bde86caf9810f742affde41641c953a5448855f03635bf3677edf863107d2beb","impliedFormat":1},{"version":"6df9dfe35560157af609b111a548dc48381c249043f68bcdf9cf7709851ac693","impliedFormat":1},{"version":"9ba8d6c8359e51801a4722ce0cbf24f259115114a339524bb1fdb533e9d179da","impliedFormat":1},{"version":"8b1f2a75b36d4a5b52771e1bfd94706b1ec9cd03b0825d4b3c7bcf45e5759eab","impliedFormat":1},{"version":"97d50788c0ec99494913915997ab16e03fb25db0d11f7d1d7395275fa0255b66","impliedFormat":1},{"version":"aea313472885609bd9f7cd0efdc6bc17112f8734699b743e7fbd873d272ca147","impliedFormat":1},{"version":"116f362c8b60668e7a99f19a46108ceac87b970e98678a83ae5b2a18382db181","impliedFormat":1},{"version":"b4fbfaa34aacd768965b0135a0c4e7dbaa055a8a4d6ffe7bedf1786d3dc614de","impliedFormat":1},{"version":"87b9b8fd9faf5298d4054bfa6bf6a159571afa41dfdbd3a23ea2a3d0fab723bd","impliedFormat":1},{"version":"cde5f66590c3a1af8b32b89444c7e975de93a3f4b7fc878087abf4187c7949fc","impliedFormat":1},{"version":"31ad2c3e09a73713d4c52f325e0fa0cf920ea3ea6bccb1fc4b271d9313183883","impliedFormat":1},{"version":"5906db268438b1a7a124f8690a92031288a8e42e6aea0f525158031b324427d7","impliedFormat":1},{"version":"f2daf948e6882c190d741e339257dac36bd908ae31dccae0c62960b356951524","signature":"73feafc42ede9749ac86b79c13298375f974c9a2d52befce29a53ae263ce0961"},"1f77f9cd570da963b09ad926eb9787ead5975b60398c635acc8d33397c68bce7",{"version":"a30302fe38c71633b69e8f427a9fa0354204a493d49edb5a364748e96ecb8148","impliedFormat":1},{"version":"bdee4994e4d36a404f31b791699a3bca0a6f7416d3ef47800160bb2d76ba561c","impliedFormat":1},{"version":"7ebcfed08a1a61449e87fa8052d1505baf1cb381b2d574a75fe1b1f6338a3961","impliedFormat":1},{"version":"e37fb25a4beb34512425fdaadc7bb51c9675f2b0a10dcfda182c3a18f41f8869","impliedFormat":1},{"version":"3502d92e5536d61a1d45fbc4eeca9bf6caa678cac5cff012d04fc6da468f5460","impliedFormat":99},{"version":"0ac380e9f9d544612be559ca317adec087001348f51152453e46abe1029c729b","impliedFormat":99},{"version":"6c05d0fcee91437571513c404e62396ee798ff37a2d8bef2104accdc79deb9c0","impliedFormat":1},{"version":"c316d73b87ab0d1de758bd722b144dc160d96f6b2c11589c1083ceea8e3c3b6f","impliedFormat":99},{"version":"7901fcb692ee0541b0a2723b22877fc2a13eb5ff9e3d1b0f01b1cb0f63b3fdff","impliedFormat":99},{"version":"caa2bd2afb28e26ac8b78bdd7f5bf50b3c1186252bfb6d00fe288bc2939fbb79","impliedFormat":99},{"version":"4f1e7560a5e62a3424af356a60533d5b66514220e8ac7c0c733ccaf86edf8b78","impliedFormat":99},{"version":"73098e0a343245cae83fac59537d1bd4f8e8a70c6805855f5f0d09edb43c282e","impliedFormat":99},{"version":"2a837e4d17c3d6d91ace72337a0ec76e2862b49c6e0fe4f6e5243cd6232a9c76","impliedFormat":99},{"version":"cad13018180e48c14ac0a8ad519bf93f8a0efd734280ce4ed35ff1df34ee812a","signature":"06a4761546d2c70ddfc3d8a7eb9e565b78e7fbcd1207491a510ad77dc8fff2e4"},{"version":"f66ddc4c537b76c0d69a08094a77dc3d5cae860ae9a549612cd738e67aa2ab6e","impliedFormat":99},{"version":"673446388721fb5130c4f8fbc3af8e187e0f6f8fa2ae29bda56ad3119d98f427","impliedFormat":1},{"version":"29d0311cc23d8ff84f2db8aa59ba5b283f294fa8791dc0bec3f175ce9d281244","impliedFormat":1},{"version":"0893c4bd1be9399141ea698c08c70e2eca1caa61ad4c42d24ec0895dbdbaeb8d","impliedFormat":1},{"version":"7b6c8999ce500ad946f4a608944d3a0e6b7111e2f3058f5a38cfcb9a9ac30796","impliedFormat":1},{"version":"5b0580c13591cb8d99a0681815f0c36c203d7f0119fe749c0724b3d205dd52ac","impliedFormat":1},{"version":"0b7df36baa62f953f7612d414e8d3aa4ec0f2f1c53a6b2d4eb18fd517fa00f4a","impliedFormat":1},{"version":"eae0f0bd272650a83a592c6000b7733520eb5aa42efcc8ab62d47dc1acb5ee78","impliedFormat":99},{"version":"9744ab454af4a34e65a3af6daa6a05ec9d9d2990e1508c75177603535304a8d5","impliedFormat":99},{"version":"481c19996de65c72ebf9d7e8f9952298072d4c30db6475cd4231df8e2f2d09b1","impliedFormat":99},{"version":"406be199d4f2b0c74810de31b45fecb333d0c04f6275d6e9578067cced0f3b8c","impliedFormat":99},{"version":"2401f5d61e82a35b49f8e89fe5e826682d82273714d86454b5d8ff74838efa7a","impliedFormat":99},{"version":"87ba3ab05e8e23618cd376562d0680ddd0c00a29569ddddb053b9862ef73e159","impliedFormat":99},{"version":"2b4276dde46aa2faf0dd86119999c76b81e6488cd6b0d0fcf9fb985769cd11c0","impliedFormat":99},{"version":"88247402edb737af32da5c7f69ff80e66e831262065b7f0feb32ea8293260d22","impliedFormat":99},{"version":"5ecea63968444d55f7c3cf677cbec9525db9229953b34f06be0386a24b0fffd2","impliedFormat":99},{"version":"b50ee4bde16b52ecb08e2407dca49a5649b38e046e353485335aa024f6efb8ef","impliedFormat":99},{"version":"a3d603c46b55d51493799241b8a456169d36301cc926ff72c75f5480e7eb25bf","impliedFormat":99},{"version":"324869b470cb6aa2bc54e8fb057b90d972f90d24c7059c027869b2587efe01aa","impliedFormat":99},{"version":"eedf3960076a5b33a84cd28476e035983b7c71a9a8728f904d8e17e824259a8e","impliedFormat":99},{"version":"d7058b71aae678b2a276ecbeb7a9f0fdf4d57ccf0831f572686ba43be26b8ef7","impliedFormat":99},{"version":"85f9d1a2bbc6d5a8542c27b90ea6214475dec898166e01b8db95e9a696ded58f","impliedFormat":99},{"version":"9e0b04a9586f6f7bcf2cd160a21630643957553fc49197e8e10d8cca2d163610","impliedFormat":99},{"version":"2df4f080ac546741f1963d7b8a9cc74f739fbdedf8912c0bad34edeb99b64db6","impliedFormat":99},{"version":"4b62ccc8a561ee6f6124dec319721c064456d5888a66a31a5f2691d33aa93a5f","impliedFormat":99},{"version":"430fa8183f4a42a776af25dac202a5e254598ff5b46aa3016165570ea174b09e","impliedFormat":99},{"version":"7cd3e62c5a8cc665104736a6b6d8b360d97ebc9926e2ed98ac23dca8232e210b","impliedFormat":99},{"version":"ff434ea45f1fc18278b1fc25d3269ec58ce110e602ebafba629980543c3d6999","impliedFormat":99},{"version":"d39e6644c8b9854b16e6810f6fc96c2bf044e2fd200da65a17e557c1bac51bc4","impliedFormat":99},{"version":"cd6f4c96cb17765ebc8f0cc96637235385876f1141fa749fc145f29e0932fc2b","impliedFormat":99},{"version":"45ea8224ec8fc3787615fc548677d6bf6d7cec4251f864a6c09fc86dbdb2cd5d","impliedFormat":99},{"version":"3a997ddb7db269e4789803bc3afa7acac9797647477ac683a27f9d41fc681d17","impliedFormat":99},{"version":"0bbc9eb3b65e320a97c4a1cc8ee5069b86048c4b3dd12ac974c7a1a6d8b6fb36","impliedFormat":99},{"version":"68dc445224378e9b650c322f5753b371cccbeca078e5293cbc54374051d62734","impliedFormat":99},{"version":"93340b1999275b433662eedd4b1195b22f2df3a8eb7e9d1321e5a06c5576417c","impliedFormat":99},{"version":"4e76f3c76469e7c1025ef764118524a84d68aedd6d9c66c3089e3e0d430f09e5","impliedFormat":99},{"version":"37fcf5a0823c2344a947d4c0e50cc63316156f1e6bc0f0c6749e099642d286b1","impliedFormat":99},{"version":"85022f6317402b14e3a2f34aa21bc6849c6eded2e64ebfc5e26ba820492d9f3e","impliedFormat":99},{"version":"1b50e65f1fbcf48850f91b0bc6ff8c61e6fa2e2e64dd2134a087c40fcfa84e28","impliedFormat":99},{"version":"3736846e55c2a2291b0e4b8b0cb875d329b0b190367323f55a5ab58ee9c8406c","impliedFormat":99},{"version":"f86c6ba182a8b3e2042a61b7e4740413ddca1b68ed72d95758355d53dac232d4","impliedFormat":99},{"version":"33aab7e0f4bf0f7c016e98fb8ea1a05b367fedb2785025c7fa628d91f93818cc","impliedFormat":99},{"version":"20cb0921e0f2580cb2878b4379eedab15a7013197a1126a3df34ea7838999039","impliedFormat":99},{"version":"a88418129ba1c0da303f67e47ee8ac6f4cbfd563cff223031d2cf110c4696226","impliedFormat":1},{"version":"87a90971310514449015b19bc8c59c0edaaba3d153a80ac52c44e16bcf0d1d28","impliedFormat":1},{"version":"3b9f4ac2a325f66c0903baa8aa17d4700e7cd00269f1555cb12fa987108712ad","impliedFormat":1},{"version":"2955bb1323b7db4e5bc106c129ab526b79a15d87e6825a0ceccf4b21f0195e8a","impliedFormat":1},{"version":"884066b708c13cf4354e423131286134458ea143944321bda525570d858305bc","impliedFormat":1},{"version":"5cc7a2443958afc67c80359f132ee17c9878a2c14c76028fbd857245112de0ad","impliedFormat":1},{"version":"8de66fd74714b1800778f9c0c34aa62426223ccd10bbe0f5792ea14aa325c1e1","impliedFormat":1},{"version":"30676348ab19164671a301005feca9829b4ee79a4924436ec61276ee4b5936b5","impliedFormat":1},{"version":"4d553d9e9e633ff77e9571a03fa225f83a133b5612931a013ae7d07a8d1032dd","impliedFormat":1},{"version":"c4d731b7e3343653bd5af1b3a1a4d7c3acea5ec36661788a7c2d74baaf6302fd","impliedFormat":1},{"version":"f28d1befaee36c27655633b246c4720afd6136c34656d9a6d297ee7625bbc28d","impliedFormat":1},{"version":"9b5716de9eb0f8b8380b6acf6719e849468987590c9a34db9e98e274c299d2dd","impliedFormat":1},{"version":"224333569037a28cab226f61dcefa4c7cfac29bd38c54aca4b96d6fcc0c36d16","impliedFormat":1},{"version":"994871071cc737d3e9ae4b3c3981fd6a091a76adcc8656ea890abdeba686a9e3","impliedFormat":1},{"version":"8c600a8bf06f06c323b0dd6b576a194e049e269b12242dc4b3b27f227fe6d115","impliedFormat":1},{"version":"451d4bf2933967e1e352df7beca72fc1b8470a7dca62ff5be4bfb6a3603f76ab","impliedFormat":1},{"version":"76f37f27446d8b116ca6091954c8c7f72342f6c271478b98fd0afdc42c61dec7","impliedFormat":1},{"version":"40641de2695e62b3b253c6636064bc54eb238eddfe454588fa67254815e011a0","impliedFormat":1},{"version":"d6fb16225f7646cde2e68930942b9602352e4f230b74bfc5b53756342f964f33","impliedFormat":1},{"version":"9f5e7861e49857780d09abd67534d793d652905f1177e22c5e26fa22a0f0251e","impliedFormat":1},{"version":"40c6d9d73635d066b3ee0375fbefe4ac5f9f7421e997f9851423b4b0b1f1e05c","impliedFormat":1},{"version":"cef4f19f013d36794cbf6116b5a3b3fa062a4cb60c0724449ad6e18788ccaad4","impliedFormat":1},{"version":"2949d179b723cf2f748fc0f958cb464763904bde7f42b6695065bb847c3e9a66","impliedFormat":1},{"version":"9f317077d6e6f130fc9bd81456dbc39d3a810180bed948b2b40de89ec361fbbf","impliedFormat":1},{"version":"e398327186bb72b3730222e73cccc8815ea77f6de3addef908de58c4343db9aa","impliedFormat":99},{"version":"ad120003744e9fa2a0af510695bbeabbad9d8a5a9806e8e1cc671921185742bb","impliedFormat":99},{"version":"dcf8f6b18ffd15c495fbfc4e2c09b6fe3521a354b4b634eb275a4eddb3c1287f","impliedFormat":99},{"version":"cadf71de927adfda0164b3638bf65f331ae6181e5e68264a3809744d489f9b48","impliedFormat":99},{"version":"4a45fe6a8311a82ae37dff2e9d295a870df30042af8b85d433a4ea7e1f67eeec","impliedFormat":99},{"version":"4248918827e8f480cbb1e1f65e21305fb65362d0aae9a8cf626ccfa419648527","impliedFormat":99},{"version":"ca28adf9b6c5eef05a86ee7576bca6eefc64fb1390fa673bd44de633ead1fbfb","signature":"579ed633d4484aa3589b035a8d9d9094d948948439ed14ff593ba66e6190d72f"},{"version":"b00aeac37b802daa47fde044282f6ab7bdb249c69d7545bb3ef810a960c979c5","signature":"ce646e3f553e635398f12c5b8dc8b218d6c55577c74bc266463414789ae07f09"},{"version":"6f58164d0215ebfb7b71a119327a97591da3642cc53c167ab39716690c9b8404","signature":"b38a9e9add7938286ce894c1ec3e07c4950e6da7bd69e4294a21931b6e4cf9ba"},"2552a31fad45a9ed1bde87e51b038dc0e786cd364b597162263abbf57018949b",{"version":"b779e7c734d7774a7e5176e0c6d760175f7c6d36cf20e23b223c8324fbb4d090","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"5db9b6c3ced7ee043b0aa49e3e51a2a4536d05faaad512fcf704e99bd0e42095","affectsGlobalScope":true,"impliedFormat":1},{"version":"53e074a281b50dc3bbdddac7a1c2946100c80a7f5c3161452ab98b31db2e31ba","impliedFormat":1},{"version":"f3d3e999a323c85c8a63ce90c6e4624ff89fe137a0e2508fddc08e0556d08abf","impliedFormat":1},{"version":"688cdd392d279cb97b06a3099266e66879bdbdef5b94428c0da07b5186b2042c","impliedFormat":1},{"version":"49ae37a1b5de16f762c8a151eeaec6b558ce3c27251052ef7a361144af42cad4","impliedFormat":1},{"version":"fc9e630f9302d0414ccd6c8ed2706659cff5ae454a56560c6122fa4a3fac5bbd","affectsGlobalScope":true,"impliedFormat":1},{"version":"aa0a44af370a2d7c1aac988a17836f57910a6c52689f52f5b3ac1d4c6cadcb23","impliedFormat":1},{"version":"0ac74c7586880e26b6a599c710b59284a284e084a2bbc82cd40fb3fbfdea71ae","affectsGlobalScope":true,"impliedFormat":1},{"version":"2ce12357dadbb8efc4e4ec4dab709c8071bf992722fc9adfea2fe0bd5b50923f","impliedFormat":1},{"version":"31bd1a31f935276adf90384a35edbd4614018ff008f57d62ffb57ac538e94e51","impliedFormat":1},{"version":"ffd344731abee98a0a85a735b19052817afd2156d97d1410819cd9bcd1bd575e","impliedFormat":1},{"version":"475e07c959f4766f90678425b45cf58ac9b95e50de78367759c1e5118e85d5c3","impliedFormat":1},{"version":"a524ae401b30a1b0814f1bbcdae459da97fa30ae6e22476e506bb3f82e3d9456","impliedFormat":1},{"version":"7375e803c033425e27cb33bae21917c106cb37b508fd242cccd978ef2ee244c7","impliedFormat":1},{"version":"eeb890c7e9218afdad2f30ad8a76b0b0b5161d11ce13b6723879de408e6bc47a","impliedFormat":1},{"version":"34ec3d38094f9e4ae29e9051d6995733df1f3d0eeb2c0a00afc2ad2b40674b19","impliedFormat":1},{"version":"b05b9ef20d18697e468c3ae9cecfff3f47e8976f9522d067047e3f236db06a41","affectsGlobalScope":true,"impliedFormat":1},{"version":"53951e52c952d8ceafe4644f7b20be8190f447df49ed946d6cdf8e4a57445612","affectsGlobalScope":true,"impliedFormat":1},{"version":"6b386c7b6ce6f369d18246904fa5eac73566167c88fb6508feba74fa7501a384","affectsGlobalScope":true,"impliedFormat":1},{"version":"592a109e67b907ffd2078cd6f727d5c326e06eaada169eef8fb18546d96f6797","impliedFormat":1},{"version":"f2eb1e35cae499d57e34b4ac3650248776fe7dbd9a3ec34b23754cfd8c22fceb","impliedFormat":1},{"version":"83150b58197b25de8ba1334ec4732edf866a23fdd2b29f404b1af1da0614ce80","impliedFormat":1},{"version":"bfeaf31a016650424a2fba73ee0dfb3024ff375087fa16ec38c6156e2cf445bf","impliedFormat":1},{"version":"9e98bd421e71f70c75dae7029e316745c89fa7b8bc8b43a91adf9b82c206099c","impliedFormat":1},{"version":"fc803e6b01f4365f71f51f9ce13f71396766848204d4f7a1b2b6154434b84b15","impliedFormat":1},{"version":"c8109fe76467db6e801d0edfbc50e6826934686467c9418ce6b246232ce7f109","affectsGlobalScope":true,"impliedFormat":1},{"version":"1922ac4f92c7f8320b4584e3fe117776395ef5b4dc2bd426e5b0de39261669ec","affectsGlobalScope":true,"impliedFormat":1}],"root":[66,488,709,[714,717],1448,1449,1463,[1537,1541]],"options":{"allowImportingTsExtensions":true,"allowJs":true,"checkJs":true,"esModuleInterop":true,"jsx":1,"module":99,"noFallthroughCasesInSwitch":true,"noPropertyAccessFromIndexSignature":false,"noUncheckedIndexedAccess":true,"noUnusedLocals":false,"noUnusedParameters":false,"skipLibCheck":true,"strict":true,"target":10,"verbatimModuleSyntax":true},"referencedMap":[[1540,1],[66,2],[1541,3],[1463,4],[488,5],[709,6],[1537,7],[1538,8],[1539,9],[714,9],[715,9],[717,10],[716,9],[1448,11],[1449,12],[1478,13],[1480,14],[1481,15],[1482,16],[1477,2],[1479,2],[1473,17],[1474,17],[1475,18],[1485,19],[1486,17],[1487,17],[1488,20],[1489,17],[1490,17],[1491,17],[1492,17],[1493,17],[1484,17],[1494,21],[1495,19],[1496,22],[1497,22],[1498,17],[1499,23],[1500,17],[1501,24],[1502,17],[1503,17],[1505,17],[1476,2],[1506,25],[1504,26],[1483,27],[1471,26],[1472,28],[702,29],[694,30],[692,31],[700,32],[693,2],[701,33],[699,34],[1411,2],[235,2],[1373,35],[1395,2],[1396,2],[1305,36],[1295,26],[1375,37],[1393,2],[1343,38],[1001,39],[1366,38],[1337,35],[1404,40],[1313,41],[1367,42],[1273,43],[1377,35],[1364,39],[1290,35],[1382,44],[1289,38],[1372,39],[1299,38],[1319,45],[1272,46],[1348,47],[1292,35],[1391,35],[1335,48],[1300,36],[1281,36],[1278,36],[1371,49],[1345,37],[1340,45],[1320,50],[1308,51],[1402,37],[1368,35],[1301,36],[1315,40],[1316,37],[1317,37],[1294,52],[1279,38],[1318,39],[1327,53],[1401,26],[1280,39],[1405,54],[1346,55],[1321,45],[1379,39],[1270,36],[1302,36],[1291,36],[1400,39],[1384,45],[1394,56],[1356,39],[1349,39],[1403,39],[1352,57],[1354,58],[1355,39],[1350,39],[1314,38],[1357,37],[1385,45],[1303,36],[1297,35],[1282,38],[1397,26],[1298,35],[1307,36],[1358,39],[1389,35],[1274,39],[1392,56],[1322,59],[1271,46],[1399,35],[1398,35],[1365,44],[1362,39],[1288,38],[1363,39],[1003,39],[1002,39],[1390,47],[1359,40],[1376,39],[1388,45],[1361,39],[1380,36],[1360,2],[1383,39],[1296,38],[1378,35],[1347,60],[1374,61],[1381,39],[1328,26],[1330,62],[1293,39],[1275,63],[1277,64],[1323,45],[1304,36],[1287,65],[1344,45],[1306,47],[1339,45],[1332,2],[1342,38],[1333,45],[1338,26],[1331,56],[1370,66],[1276,67],[1341,45],[1326,40],[1325,68],[1387,69],[1369,2],[992,26],[1447,70],[1351,56],[1353,40],[1386,40],[994,45],[1444,71],[1413,72],[1445,73],[1412,44],[993,74],[1446,75],[999,59],[996,26],[1407,45],[1408,76],[998,26],[1409,77],[997,78],[1000,38],[995,2],[1406,45],[1410,77],[981,79],[982,80],[985,81],[983,82],[979,83],[984,84],[978,85],[980,86],[990,87],[986,88],[988,89],[989,90],[991,91],[589,92],[592,93],[597,94],[598,95],[596,96],[599,2],[600,97],[576,98],[575,2],[1464,26],[614,99],[613,2],[574,100],[490,100],[698,2],[132,101],[133,101],[134,102],[80,103],[135,104],[136,105],[137,106],[78,2],[138,107],[139,108],[140,109],[141,110],[142,111],[143,112],[144,112],[145,113],[146,114],[147,115],[148,116],[81,2],[79,2],[149,117],[150,118],[151,119],[185,120],[152,121],[153,2],[154,122],[155,123],[156,124],[157,125],[158,126],[159,127],[160,128],[161,129],[162,130],[163,130],[164,131],[165,2],[166,132],[167,133],[169,134],[168,135],[170,136],[171,137],[172,138],[173,139],[174,140],[175,141],[176,142],[177,143],[178,144],[179,145],[180,146],[181,147],[182,148],[82,2],[83,149],[84,2],[85,2],[128,150],[129,151],[130,2],[131,136],[183,152],[184,153],[189,154],[345,26],[190,155],[188,156],[347,157],[346,158],[973,26],[186,159],[343,2],[187,160],[67,2],[69,161],[342,26],[253,26],[967,162],[828,163],[741,164],[827,165],[826,166],[829,167],[740,168],[830,169],[831,170],[832,171],[833,172],[834,172],[835,172],[836,171],[837,172],[840,173],[841,174],[838,2],[839,175],[842,176],[807,177],[729,178],[844,179],[845,180],[806,181],[846,182],[718,2],[722,183],[755,184],[847,2],[753,2],[754,2],[848,185],[849,186],[850,187],[723,188],[724,189],[719,2],[825,190],[824,191],[758,192],[851,193],[852,2],[776,2],[777,194],[853,195],[742,196],[743,197],[744,198],[745,199],[854,200],[856,201],[857,202],[858,203],[859,202],[865,204],[855,203],[860,203],[861,202],[862,203],[863,202],[864,203],[866,2],[867,2],[956,205],[868,206],[869,207],[870,186],[871,186],[872,186],[874,208],[873,186],[876,209],[877,186],[878,210],[891,211],[879,209],[880,212],[881,209],[882,186],[875,186],[883,186],[884,213],[885,186],[886,209],[887,186],[888,186],[889,214],[890,186],[893,215],[895,216],[896,217],[897,218],[898,219],[901,220],[902,216],[904,221],[905,222],[908,223],[909,224],[911,225],[912,226],[913,227],[900,228],[899,229],[903,230],[788,231],[915,232],[787,233],[907,234],[906,235],[916,227],[918,236],[917,237],[921,238],[922,239],[923,240],[924,2],[925,241],[926,242],[927,243],[928,239],[929,239],[930,239],[920,244],[931,2],[919,245],[932,246],[933,247],[934,248],[763,249],[764,250],[820,251],[783,252],[765,253],[766,254],[767,255],[768,256],[769,257],[770,258],[771,256],[773,259],[772,256],[774,257],[775,249],[780,260],[779,261],[781,262],[782,249],[792,206],[750,263],[731,264],[730,265],[732,266],[726,267],[785,268],[935,269],[736,2],[737,270],[738,270],[739,270],[936,270],[746,271],[937,272],[938,2],[721,273],[727,274],[748,275],[725,276],[823,277],[747,278],[733,266],[914,266],[749,279],[720,280],[734,281],[728,282],[939,283],[735,166],[756,166],[940,284],[892,285],[941,286],[894,286],[942,180],[808,287],[943,285],[822,288],[910,289],[784,290],[752,291],[751,185],[957,2],[958,292],[778,293],[959,294],[814,295],[815,296],[960,297],[793,298],[816,299],[817,300],[961,301],[794,2],[962,302],[963,2],[801,303],[818,304],[803,2],[800,305],[819,306],[795,2],[802,307],[964,2],[804,308],[796,309],[798,310],[799,311],[797,312],[945,313],[947,314],[843,315],[813,316],[786,317],[811,318],[965,319],[812,320],[789,321],[790,321],[791,322],[948,207],[949,323],[950,323],[759,324],[760,207],[944,324],[946,324],[821,324],[757,207],[810,325],[951,207],[761,266],[762,326],[953,327],[952,207],[955,328],[966,329],[954,2],[489,2],[805,2],[1441,330],[1440,331],[1419,332],[1422,333],[1423,334],[1420,335],[1421,2],[1426,336],[1424,337],[1416,338],[1418,339],[1425,340],[1417,339],[1415,341],[1414,2],[1438,342],[1437,332],[1427,332],[1439,343],[1436,344],[1442,345],[1428,346],[1429,344],[1435,344],[1434,344],[1433,344],[1430,344],[1432,344],[1431,344],[1443,347],[809,2],[507,348],[495,349],[497,350],[505,2],[496,351],[506,352],[510,353],[508,2],[503,354],[500,355],[501,355],[502,355],[498,349],[499,2],[504,356],[494,357],[491,2],[509,358],[492,359],[493,2],[573,360],[572,361],[571,362],[520,2],[568,363],[570,364],[569,365],[86,2],[1545,366],[1567,2],[1560,367],[1547,368],[1563,369],[1546,2],[1544,370],[1548,2],[1542,371],[1549,2],[1568,372],[1550,2],[1559,373],[1561,374],[1543,375],[1566,376],[1564,377],[1562,378],[1565,379],[1551,2],[1557,380],[1554,381],[1556,382],[1555,383],[1553,384],[1552,2],[1558,385],[1311,386],[1310,2],[1312,387],[1309,56],[68,2],[1334,2],[712,388],[713,389],[659,390],[616,391],[617,391],[656,392],[647,393],[650,394],[653,395],[654,391],[655,391],[657,396],[658,397],[588,398],[587,399],[697,400],[696,401],[695,397],[1324,2],[703,2],[521,2],[567,402],[528,403],[549,404],[539,405],[533,406],[538,407],[530,408],[536,409],[526,410],[527,411],[529,412],[534,413],[523,2],[525,414],[524,415],[543,416],[542,417],[566,418],[565,419],[564,2],[562,420],[550,421],[560,422],[561,423],[563,424],[556,425],[552,426],[553,427],[555,428],[559,429],[554,430],[551,2],[557,431],[558,432],[541,433],[548,434],[547,435],[545,436],[546,2],[537,2],[532,437],[535,2],[522,2],[531,2],[540,2],[544,2],[621,438],[620,439],[619,440],[646,441],[645,442],[649,443],[648,442],[652,444],[651,445],[689,446],[663,447],[664,448],[665,448],[666,448],[667,448],[668,448],[669,448],[670,448],[671,448],[672,448],[673,448],[687,449],[674,448],[675,448],[676,448],[677,448],[678,448],[679,448],[680,448],[681,448],[683,448],[684,448],[682,448],[685,448],[686,448],[688,448],[662,450],[644,451],[624,452],[625,452],[626,452],[627,452],[628,452],[629,452],[630,453],[632,452],[631,452],[643,454],[633,452],[635,452],[634,452],[637,452],[636,452],[638,452],[639,452],[640,452],[641,452],[642,452],[623,452],[622,455],[1286,456],[1283,56],[1284,56],[1285,457],[618,2],[711,458],[710,2],[1456,26],[76,459],[434,460],[439,1],[441,461],[211,462],[239,463],[417,464],[234,465],[222,2],[203,2],[209,2],[407,466],[270,467],[210,2],[376,468],[244,469],[245,470],[341,471],[404,472],[359,473],[411,474],[412,475],[410,476],[409,2],[408,477],[241,478],[212,479],[291,2],[292,480],[207,2],[223,481],[213,482],[275,481],[272,481],[196,481],[237,483],[236,2],[416,484],[426,2],[202,2],[317,485],[318,486],[312,26],[462,2],[320,2],[321,487],[313,488],[468,489],[466,490],[461,2],[403,491],[402,2],[460,492],[314,26],[355,493],[353,494],[463,2],[467,2],[465,495],[464,2],[354,496],[455,497],[458,498],[282,499],[281,500],[280,501],[471,26],[279,502],[264,2],[474,2],[477,2],[476,26],[478,503],[192,2],[413,504],[414,505],[415,506],[225,2],[201,507],[191,2],[333,26],[194,508],[332,509],[331,510],[322,2],[323,2],[330,2],[325,2],[328,511],[324,2],[326,512],[329,513],[327,512],[208,2],[199,2],[200,481],[254,514],[255,515],[252,516],[250,517],[251,518],[247,2],[339,487],[361,487],[433,519],[442,520],[446,521],[420,522],[419,2],[267,2],[479,523],[429,524],[315,525],[316,526],[307,527],[297,2],[338,528],[298,529],[340,530],[335,531],[334,2],[336,2],[352,532],[421,533],[422,534],[300,535],[304,536],[295,537],[399,538],[428,539],[274,540],[377,541],[197,542],[427,543],[193,465],[248,2],[256,544],[388,545],[246,2],[387,546],[77,2],[382,547],[224,2],[293,548],[378,2],[198,2],[257,2],[386,549],[206,2],[262,550],[303,551],[418,552],[302,2],[385,2],[249,2],[390,553],[391,554],[204,2],[393,555],[395,556],[394,557],[227,2],[384,542],[397,558],[383,559],[389,560],[215,2],[218,2],[216,2],[220,2],[217,2],[219,2],[221,561],[214,2],[369,562],[368,2],[374,563],[370,564],[373,565],[372,565],[375,563],[371,564],[261,566],[362,567],[425,568],[481,2],[450,569],[452,570],[299,2],[451,571],[423,533],[480,572],[319,533],[205,2],[301,573],[258,574],[259,575],[260,576],[290,577],[398,577],[276,577],[363,578],[277,578],[243,579],[242,2],[367,580],[366,581],[365,582],[364,583],[424,584],[311,585],[349,586],[310,587],[344,588],[348,589],[406,590],[405,591],[401,592],[358,593],[360,594],[357,595],[396,596],[351,2],[438,2],[350,597],[400,2],[263,598],[296,504],[294,599],[265,600],[268,601],[475,2],[266,602],[269,602],[436,2],[435,2],[437,2],[473,2],[271,603],[309,26],[75,2],[356,604],[240,2],[229,605],[305,2],[444,26],[454,606],[289,26],[448,487],[288,607],[431,608],[287,606],[195,2],[456,609],[285,26],[286,26],[278,2],[228,2],[284,610],[283,611],[226,612],[306,129],[273,129],[392,2],[380,613],[379,2],[440,2],[337,614],[308,26],[432,615],[70,26],[73,616],[74,617],[71,26],[72,2],[238,149],[233,618],[232,2],[231,619],[230,2],[430,620],[443,621],[445,622],[447,623],[449,624],[453,625],[487,626],[457,626],[486,627],[459,628],[469,629],[470,630],[472,631],[482,632],[485,507],[484,2],[483,633],[1455,26],[1457,634],[1458,635],[1460,636],[1461,637],[1462,638],[1454,639],[1459,640],[1465,26],[1511,26],[1512,641],[1513,26],[1514,26],[1515,26],[1466,26],[1468,642],[1467,26],[1516,643],[1451,644],[1530,645],[1519,646],[1507,641],[1508,647],[1520,648],[1521,26],[1469,26],[1470,649],[1522,26],[1509,641],[1510,650],[1517,651],[1524,26],[1523,652],[1453,653],[1452,654],[1525,26],[1526,26],[1527,655],[1450,26],[1528,26],[1529,26],[1518,656],[708,657],[1534,657],[1535,657],[1536,658],[1533,657],[1531,657],[1532,657],[612,659],[707,660],[706,661],[516,662],[514,663],[517,663],[511,662],[518,664],[519,665],[513,663],[512,666],[515,667],[595,668],[594,2],[586,669],[583,670],[584,2],[585,2],[582,671],[987,2],[705,672],[704,673],[611,674],[661,675],[660,676],[691,677],[690,678],[381,679],[591,680],[601,681],[577,94],[590,682],[593,683],[615,2],[1329,2],[581,684],[579,685],[580,686],[578,2],[1336,56],[1036,56],[1037,56],[1039,687],[1038,56],[1064,688],[1084,689],[1081,689],[1078,690],[1074,2],[1075,690],[1076,690],[1085,690],[1083,689],[1079,690],[1080,2],[1082,689],[1077,56],[1144,691],[1143,56],[1145,692],[1146,2],[1266,56],[1264,56],[1265,56],[1263,56],[1267,56],[1201,56],[1202,56],[1200,56],[1198,56],[1199,56],[1203,56],[1035,56],[1031,56],[1030,56],[1027,56],[1032,56],[1034,56],[1029,56],[1033,56],[1028,56],[1138,56],[1136,56],[1139,56],[1048,56],[1135,693],[1134,56],[1137,56],[1140,56],[1142,694],[1255,56],[1258,56],[1256,56],[1260,56],[1259,56],[1257,56],[1269,695],[1193,56],[1194,56],[1195,56],[1196,696],[1268,2],[1129,697],[1262,56],[1261,2],[1254,698],[1249,699],[1250,56],[1253,700],[1248,56],[1251,700],[1252,699],[1233,56],[1222,56],[1235,56],[1219,56],[1229,56],[1211,56],[1212,56],[1226,56],[1126,56],[1221,56],[1204,56],[1141,56],[1228,56],[1128,701],[1240,702],[1213,703],[1127,56],[1238,56],[1231,56],[1216,56],[1225,56],[1206,56],[1246,56],[1237,56],[1220,56],[1236,56],[1209,56],[1207,704],[1234,705],[1245,56],[1241,56],[1247,56],[1242,56],[1227,56],[1218,56],[1243,56],[1208,56],[1232,56],[1230,56],[1205,56],[1239,56],[1217,56],[1244,56],[1215,56],[1214,706],[1224,56],[1210,56],[1223,56],[1069,56],[1070,56],[1065,56],[1071,2],[1073,56],[1066,56],[1068,56],[1072,707],[1067,2],[1005,56],[1007,56],[1008,56],[1013,56],[1004,56],[1009,56],[1006,56],[1017,56],[1010,56],[1011,2],[1016,56],[1014,708],[1015,704],[1012,2],[1023,56],[1025,56],[1024,56],[1026,56],[1040,56],[1054,56],[1045,56],[1049,709],[1047,56],[1042,710],[1051,56],[1050,711],[1043,710],[1044,56],[1052,56],[1046,56],[1053,710],[1197,56],[1102,712],[1107,713],[1118,714],[1100,712],[1090,712],[1104,712],[1111,715],[1109,712],[1096,716],[1092,717],[1093,712],[1089,718],[1108,712],[1097,712],[1086,56],[1115,712],[1116,712],[1105,712],[1099,712],[1088,719],[1094,712],[1113,712],[1098,712],[1112,720],[1114,721],[1101,712],[1103,712],[1119,712],[1018,56],[1019,56],[1020,56],[1021,56],[1147,722],[1106,722],[1148,723],[1149,722],[1150,2],[1151,722],[1063,56],[1152,2],[1153,56],[1154,56],[1117,722],[1155,722],[1157,722],[1091,2],[1156,2],[1110,56],[1095,2],[1159,2],[1160,56],[1161,2],[1158,56],[1162,722],[1163,56],[1164,2],[1165,722],[1166,2],[1167,2],[1168,2],[1169,56],[1170,2],[1171,2],[1172,56],[1173,2],[1174,2],[1175,2],[1176,722],[1180,2],[1177,56],[1181,56],[1178,56],[1179,56],[1182,2],[1183,2],[1184,2],[1185,56],[1186,56],[1087,56],[1187,2],[1188,722],[1189,2],[1190,2],[1191,56],[1192,2],[1022,2],[1041,2],[1061,56],[1062,56],[1057,56],[1058,56],[1055,56],[1060,56],[1059,56],[1056,56],[1120,697],[1122,724],[1123,56],[1124,56],[1125,56],[1130,725],[1131,697],[1121,56],[1133,726],[1132,727],[608,728],[607,2],[64,2],[65,2],[11,2],[12,2],[14,2],[13,2],[2,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[22,2],[3,2],[23,2],[24,2],[4,2],[25,2],[29,2],[26,2],[27,2],[28,2],[30,2],[31,2],[32,2],[5,2],[33,2],[34,2],[35,2],[36,2],[6,2],[40,2],[37,2],[38,2],[39,2],[41,2],[7,2],[42,2],[47,2],[48,2],[43,2],[44,2],[45,2],[46,2],[8,2],[52,2],[49,2],[50,2],[51,2],[53,2],[9,2],[54,2],[55,2],[56,2],[58,2],[57,2],[59,2],[60,2],[10,2],[61,2],[1,2],[62,2],[63,2],[104,729],[116,730],[102,731],[117,732],[126,733],[93,734],[94,735],[92,736],[125,633],[120,737],[124,738],[96,739],[113,740],[95,741],[123,742],[90,743],[91,737],[97,744],[98,2],[103,745],[101,744],[88,746],[127,747],[118,748],[107,749],[106,744],[108,750],[111,751],[105,752],[109,753],[121,633],[99,754],[100,755],[112,756],[89,732],[115,757],[114,744],[110,758],[119,2],[87,2],[122,759],[610,760],[606,2],[609,761],[968,2],[971,2],[972,762],[969,763],[970,764],[603,765],[602,100],[605,766],[604,767],[976,768],[975,769],[977,769],[974,2]],"affectedFilesPendingEmit":[1541,1463,709,1537,1538,1539,714,715,717,716,1448,1449],"version":"5.9.3"} \ No newline at end of file diff --git a/apps/cli/package.json b/apps/cli/package.json index b303bc6b0f7..e04e0bfd180 100644 --- a/apps/cli/package.json +++ b/apps/cli/package.json @@ -1,5 +1,5 @@ { - "name": "cli", + "name": "@superset/cli", "version": "0.0.0", "license": "MIT", "bin": "dist/cli.js", @@ -19,10 +19,15 @@ "format:check": "biome format ." }, "files": [ - "dist" + "dist", + "src/types" ], + "exports": { + "./types/*": "./src/types/*", + "./types": "./src/types/index.ts" + }, "dependencies": { - "commander": "^14.0.1", + "commander": "^14.0.2", "ink": "^6.5.0", "ink-select-input": "^6.2.0", "ink-table": "^3.1.0", diff --git a/apps/desktop/docs/DND_BACKEND_UNIFICATION.md b/apps/desktop/docs/DND_BACKEND_UNIFICATION.md new file mode 100644 index 00000000000..ab55311aee7 --- /dev/null +++ b/apps/desktop/docs/DND_BACKEND_UNIFICATION.md @@ -0,0 +1,63 @@ +# Drag-and-Drop Backend Unification (HTML5Backend) + +Problem: Multiple HTML5 backends were created at runtime, triggering: + +Error: Cannot have two HTML5 backends at the same time. + +This occurred because our app used React DnD directly while `react-mosaic-component` and `react-arborist` also rely on React DnD. If any of them creates its own `DndProvider`/backend, we end up with multiple HTML5 backends in the same window. + +## Goals + +- Enforce a single, shared DragDropManager/HTML5 backend for the entire renderer. +- Keep Mosaic and Arborist interoperable by reusing the same manager. +- Prevent regressions by documenting the pattern and providing a shared utility. + +## High-Level Plan + +- Create a shared DnD manager via `createDndContext(HTML5Backend)`. +- Use a single top-level `DndProvider` wired to that manager. +- Pass the same manager to any library that can optionally create its own provider (e.g., `react-arborist`’s `Tree` via `dndManager`). +- Remove/avoid any nested `DndProvider` instances that initialize their own HTML5 backend. + +## Implementation Details + +1) Shared manager utility +- File: `apps/desktop/src/renderer/lib/dnd.ts` +- Exports: `dragDropManager` created once via `createDndContext(HTML5Backend)`. + +2) Top-level provider uses the shared manager +- File: `apps/desktop/src/renderer/screens/main/MainScreen.tsx` +- Change: Replace `backend={HTML5Backend}` with `manager={dragDropManager}` on `DndProvider`. + +3) Arborist uses the shared manager +- Files: + - `apps/desktop/src/renderer/screens/main/components/Sidebar/components/WorktreeList/components/WorktreeItem/WorktreeItem.tsx` + - `apps/desktop/src/renderer/screens/main/components/Sidebar/components/WorktreeList/components/WorktreeItem/WorktreeItemArborist.tsx` +- Change: Add `dndManager={dragDropManager}` to `` and import the manager from `renderer/lib/dnd`. + +4) Mosaic +- `react-mosaic-component` internally mounts its own `DndProvider` using `react-dnd-multi-backend`. +- To avoid multiple MultiBackends, pass the shared manager via `dragAndDropManager={dragDropManager}` to ``. +- This makes its internal provider reuse the shared manager rather than creating a new MultiBackend instance. + +## What Changed (Summary) + +- Added `apps/desktop/src/renderer/lib/dnd.ts` exporting a singleton `dragDropManager`. +- Updated top-level DnD provider in `MainScreen.tsx` to use `manager={dragDropManager}`. +- Updated all Arborist `Tree` usages to pass `dndManager={dragDropManager}`. + +## Validation + +- Typecheck/lint: `bun run typecheck` and `bun run lint:check` at repo root. +- Manual: Open the Desktop app and interact with Mosaic panes and the Arborist trees (dragging, dropping, splitting). No console errors about multiple HTML5 backends should appear. + +## Regression Guardrails + +- Do not add additional `DndProvider` instances in the renderer. If a subtree must have a provider for scoping, pass `manager={dragDropManager}` to reuse the shared manager. +- For `react-arborist`, always provide `dndManager={dragDropManager}` to ``. +- Centralize DnD concerns in `renderer/lib/dnd.ts`. If backend options change (e.g., `rootElement`), update only this file. + +## Notes & Alternatives + +- If drag-and-drop is needed within portals or iframes, configure backend `options` (e.g., `rootElement`) in `renderer/lib/dnd.ts` and ensure every consumer still reuses the same manager. +- This approach avoids multi-backend solutions and keeps complexity low by standardizing on one HTML5 backend across the renderer. diff --git a/apps/desktop/docs/STATE_PERSISTENCE_PLAN.md b/apps/desktop/docs/STATE_PERSISTENCE_PLAN.md new file mode 100644 index 00000000000..4d448b76209 --- /dev/null +++ b/apps/desktop/docs/STATE_PERSISTENCE_PLAN.md @@ -0,0 +1,151 @@ +# Desktop State & Persistence Refactor Plan + +Author: Platform +Status: Proposed +Audience: Agents working on Desktop app state/persistence + +## Context + +The Desktop app’s current persistence mixes runtime data (worktrees) with UI and domain concerns in a single JSON file. This leads to drift (e.g., worktrees out of sync with Git) and makes the state model hard to evolve. We also want to align domain models with the CLI types while keeping CLI and Desktop storage separate for now. + +## Goals + +- Make Git the single source of truth for worktrees (scan, don’t trust JSON). +- Split persistence into coherent, versioned slices aligned to CLI domain types and Desktop UI. +- Keep Desktop and CLI persistence separate locations. +- Establish a deterministic loading sequence with background rescan/reconciliation. +- Preserve type safety and the type-safe IPC pattern. + +## Non‑Goals + +- Do not merge CLI and Desktop persistence yet. +- Do not introduce new runtime dependencies or database engines. +- Do not prescribe file‑level code changes; this plan guides architecture/tasks. + +## Principles + +- Decouple domain, UI, and derived state. +- Prefer immutable sources (Git) over persisted lists for worktrees. +- Persist only what cannot be derived (domain objects, UI state). +- Use existing CLI types as the canonical domain shape. + +## State Domains + +- Domain (persisted; aligns with CLI types) + - Environment, Workspace (LocalWorkspace for Desktop), Process/Agent/Terminal, Change, FileDiff, AgentSummary. +- UI (persisted; Desktop‑only) + - Window state, last active workspace. + - Per‑workspace UI state: active worktree selection, active tab, tabs, mosaic layout, per‑tab CWD/URL, worktree metadata (description, prUrl, merged). +- Derived (in‑memory / cache) + - Worktrees scanned from Git (branch/path), detected ports, short‑lived git status. + +## Persistence Split + +- CLI location remains separate (unchanged): `~/.superset/cli/`. +- Desktop location (new): `~/.superset/desktop/` + - db/ (domain; versioned) + - environments, workspaces (LocalWorkspace), processes, changes, fileDiffs, agentSummaries (split by collection). + - db.version + - ui/ (Desktop‑only; versioned) + - window-state.json, settings.json (lastActiveWorkspaceId, preferences) + - workspaces/.json (per‑workspace UI state) + - ui.version + - cache/ (ephemeral) + - ports.json, optional git status caches + +Note: The “split by file per collection” is to keep the “not one big JSON” requirement. If a single domain DB file is preferred later, keep collections separate within the file while UI remains separate. + +## Loading Flow (High‑Level) + +1. App Boot (Main) + - Load env with override (uses find-up logic to locate monorepo root .env robustly). + - Initialize domain store targeting `~/.superset/desktop/db/`. + - Load UI settings (window + last active workspace) from `~/.superset/desktop/ui/`. +2. Activate Workspace + - Read domain workspace (LocalWorkspace) by id. + - Scan Git for worktrees (path/branch/bare) using the workspace repo path. + - Merge: join scanned worktrees with per‑workspace UI metadata keyed by worktree path (fallback to branch when needed). + - Initialize defaults for new worktrees (e.g., a terminal tab) in UI state when appropriate. + - Cache the scan result as the "activation-time snapshot" for diff tracking. + - Start background tasks: periodic rescans (every 30s), port detection for terminals in the active worktree, update proxy targets. +3. Refresh + - Manual rescan via IPC and periodic rescan reconcile UI metadata with Git (remove orphans after a grace period; retain notes when possible). + - **Important**: The first rescan after activation produces diffs relative to the activation-time snapshot only. Therefore, `workspace-activate` must be called once before `workspace-rescan` for meaningful diffs. If the renderer triggers a rescan before activation finishes, diffs will be empty. + +## Worktree Strategy + +- Always treat Git as truth for current worktrees. +- Never load authoritative worktree lists from persistence. +- Maintain per‑worktree UI metadata keyed by worktree path (primary) and branch (secondary) to survive path changes or renames. + +## IPC Contracts (Conceptual) + +- Workspace + - workspace.activate: { workspaceId } → composed state (domain workspace + scanned worktrees + UI state) + - workspace.rescan: { workspaceId } → rescan result (diff + composed state) +- UI + - ui.workspace.get: { workspaceId } → current per‑workspace UI state + - ui.workspace.update: { workspaceId, patch } → update specific UI fields + - ui.set-active: { workspaceId, activeWorktreePath?, activeTabId? } → updates global active workspace and per-workspace active worktree/tab + - **Important**: Renderer must call `ui.set-active` when switching workspaces to ensure `lastActiveWorkspaceId` is persisted. This ensures the correct workspace is restored on next launch. +- Processes (domain) + - process.list/create/stop/stopAll following CLI type semantics + +Use existing type‑safe IPC conventions (object params; shared channel type definitions). Exact channel names and types should be captured in the shared IPC types file before implementing. + +## Migration Strategy (One‑Time) + +- Trigger: Detect legacy `~/.superset/config.json` and an empty `~/.superset/desktop/`. +- Mapping + - Desktop Workspace → Domain LocalWorkspace (id preserved; repoPath → path; type=local; environmentId=default). + - Worktrees: stop persisting worktree arrays as authoritative; create per‑workspace UI metadata keyed by worktree path (description, prUrl, merged, tabs, mosaic layout). + - Active selection: move to UI settings (lastActiveWorkspaceId) and per‑workspace UI (`activeWorktreePath`, `activeTabId`). + - Window/layout prefs: move to UI/window state. +- Versioning and Safety + - Initialize `db.version=1` and `ui.version=1`. + - Atomic writes with backup of legacy file. + - Validate schemas; skip/record invalid entries. + +## Risks & Mitigations + +- Worktree rename/path changes: primary key by path, secondary by branch; prompt on ambiguity. +- Large repos: throttle rescans; make resumable/cancellable; limit scope to worktrees rather than full repo. +- Partial writes: **Implemented** - UI store uses atomic write pattern (write to *.tmp, fsync, rename) for all persistence operations (window-state.json, settings.json, per-workspace UI state). This prevents data corruption on crash. +- Port detection flapping: debounce updates; only persist stable snapshots in UI or cache. + +## Milestones + +- M1: Establish Desktop domain store (separate root) and UI store scaffolding; no behavior change. +- M2: Compose workspace state from Git + UI (stop depending on persisted worktree arrays). +- M3: IPC endpoints for activation/rescan/UI updates exposed; renderer consumes composed state. +- M4: Migration path from legacy config with backups and versioning. +- M5: Background rescans + port/proxy refresh handling; logs and metrics. + +## Task Checklist (Agent‑Oriented) + +- [ ] Define Desktop domain store interfaces aligning with CLI types; point storage root to `~/.superset/desktop/db/`. +- [ ] Define UI store for `~/.superset/desktop/ui/` with schemas for window, settings, and per‑workspace UI. +- [ ] Implement composition logic: read domain workspace → scan Git → merge with UI metadata by worktree path. +- [ ] Add a periodic rescan strategy (interval + manual trigger) and reconciliation rules. +- [ ] Specify IPC channel contracts in shared IPC types for workspace activate/rescan and UI get/update. +- [ ] Implement migration runner (detect legacy file, map to new domain+UI slices, write backups, set versions). +- [ ] Add structured logs for scans, merges, and migrations; include a “dry run” mode for migration. +- [ ] Validate with sample repos and multi‑worktree setups; confirm no reliance on persisted worktree arrays. + +## Validation & Observability + +- Unit and integration checks for composition (new/missing/renamed worktrees). +- Migration dry‑run and post‑migration verification (counts, ids, schema validation). +- Log key events: activation, rescan diff, migration start/end, errors. +- Optional telemetry counters (worktrees detected, UI orphans pruned) if allowed by the project. + +## Open Questions + +- Should ports configuration be domain (shared) or UI (Desktop‑only)? For now, keep it in UI; revisit if multiple apps share it. +- Grace period policy for orphaned UI metadata (immediate prune vs delayed cleanup)? +- Desired default tab layout for newly detected worktrees? + +--- + +Implementation may proceed behind a feature flag or staged rollout per milestones above. This document intentionally avoids prescribing specific file edits; it defines outcomes, boundaries, and tasks for agents to execute. + diff --git a/apps/desktop/electron.vite.config.ts b/apps/desktop/electron.vite.config.ts index f45a88842bf..dd26b79825d 100644 --- a/apps/desktop/electron.vite.config.ts +++ b/apps/desktop/electron.vite.config.ts @@ -22,7 +22,12 @@ const tsconfigPaths = tsconfigPathsPlugin({ export default defineConfig({ main: { - plugins: [tsconfigPaths, externalizeDepsPlugin()], + plugins: [ + tsconfigPaths, + externalizeDepsPlugin({ + exclude: ["@superset/cli"], + }), + ], build: { rollupOptions: { @@ -35,6 +40,11 @@ export default defineConfig({ }, }, }, + resolve: { + alias: { + "@superset/cli": resolve(__dirname, "../../apps/cli/src"), + }, + }, }, preload: { diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 2ba6080ab12..a60ac8ef626 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -34,6 +34,7 @@ "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-label": "^2.1.8", "@superset/api": "workspace:*", + "@superset/cli": "workspace:*", "@superset/ui": "workspace:*", "@xterm/addon-fit": "^0.10.0", "@xterm/addon-search": "^0.15.0", @@ -41,10 +42,12 @@ "@xterm/addon-webgl": "^0.18.0", "@xterm/xterm": "^5.5.0", "clsx": "^2.1.1", + "dotenv": "^17.2.3", "electron-router-dom": "^2.1.0", "fast-glob": "^3.3.3", "framer-motion": "^12.23.24", "http-proxy": "^1.18.1", + "lowdb": "^7.0.1", "lucide-react": "^0.553.0", "node-pty": "1.1.0-beta30", "react": "^19.1.1", @@ -70,7 +73,6 @@ "@vitejs/plugin-react": "^5.0.1", "code-inspector-plugin": "^1.2.2", "cross-env": "^10.0.0", - "dotenv": "^17.2.3", "electron": "^39.1.2", "electron-builder": "^26.0.12", "electron-extension-installer": "^2.0.0", diff --git a/apps/desktop/src/main/index.ts b/apps/desktop/src/main/index.ts index ea0d4c5b8a1..a9af8a02959 100644 --- a/apps/desktop/src/main/index.ts +++ b/apps/desktop/src/main/index.ts @@ -1,9 +1,30 @@ // Load .env from monorepo root before any other imports -import { resolve } from "node:path"; +import { existsSync } from "node:fs"; +import { resolve, dirname } from "node:path"; import { config } from "dotenv"; -// Use override: true to ensure .env values take precedence over inherited env vars -config({ path: resolve(__dirname, "../../../../.env"), override: true }); +// Find .env file by searching upward from __dirname +// This is robust whether running from source or compiled code +function findEnvFile(): string | undefined { + let currentDir = __dirname; + for (let i = 0; i < 6; i++) { + const envPath = resolve(currentDir, ".env"); + if (existsSync(envPath)) { + return envPath; + } + currentDir = dirname(currentDir); + } + return undefined; +} + +const envPath = findEnvFile(); +if (envPath) { + // Use override: true to ensure .env values take precedence over inherited env vars + config({ path: envPath, override: true }); + console.log(`Loaded .env from ${envPath}`); +} else { + console.warn("No .env file found in parent directories"); +} import path from "node:path"; import { app } from "electron"; @@ -12,6 +33,7 @@ import { registerDeepLinkIpcs } from "main/lib/deep-link-ipcs"; import { deepLinkManager } from "main/lib/deep-link-manager"; import { registerPortIpcs } from "main/lib/port-ipcs"; import { getPort } from "main/lib/port-manager"; +import { registerUiIPCs } from "main/lib/ui-ipcs"; import windowManager from "main/lib/window-manager"; import { registerWorkspaceIPCs } from "main/lib/workspace-ipcs"; @@ -46,10 +68,15 @@ app.on("open-url", (event, url) => { await app.whenReady(); + // Initialize desktop stores (migration, versioning) before registering IPCs + const { DesktopStores } = await import("main/lib/desktop-stores"); + await DesktopStores.initialize(); + // Register IPC handlers once at startup (not per-window) registerWorkspaceIPCs(); registerPortIpcs(); registerDeepLinkIpcs(); + registerUiIPCs(); const { registerWindowIPCs } = await import("main/lib/window-ipcs"); registerWindowIPCs(); @@ -57,4 +84,12 @@ app.on("open-url", (event, url) => { () => windowManager.createWindow(), () => windowManager.restoreWindows(), ); + + // Stop all periodic rescans when app is quitting + app.on("before-quit", async () => { + const { workspaceRescanManager } = await import( + "main/lib/workspace-rescan" + ); + workspaceRescanManager.stopAll(); + }); })(); diff --git a/apps/desktop/src/main/lib/desktop-stores.ts b/apps/desktop/src/main/lib/desktop-stores.ts new file mode 100644 index 00000000000..77dc94e6620 --- /dev/null +++ b/apps/desktop/src/main/lib/desktop-stores.ts @@ -0,0 +1,141 @@ +import { ensureDesktopStorageDirs } from "./storage/config"; +import { DesktopLowdbAdapter } from "./storage/lowdb-adapter"; +import { + DesktopEnvironmentOrchestrator, + DesktopWorkspaceOrchestrator, + DesktopProcessOrchestrator, + DesktopChangeOrchestrator, +} from "./storage/orchestrators"; +import { DomainVersion } from "./storage/version"; +import { UiStore } from "./ui-store/store"; +import { WorkspaceComposer } from "./workspace-composition/composer"; +import { LegacyMigrator } from "./migration/migrator"; + +/** + * Desktop stores singleton + * Initializes and provides access to domain store, UI store, and composer + */ +class DesktopStores { + private static instance: DesktopStores; + private static initPromise: Promise | null = null; + private domainStorage: DesktopLowdbAdapter; + private uiStore: UiStore; + private composer: WorkspaceComposer; + private environmentOrchestrator: DesktopEnvironmentOrchestrator; + private workspaceOrchestrator: DesktopWorkspaceOrchestrator; + private processOrchestrator: DesktopProcessOrchestrator; + private changeOrchestrator: DesktopChangeOrchestrator; + + private constructor() { + // Initialize domain storage + this.domainStorage = new DesktopLowdbAdapter(); + + // Initialize UI store + this.uiStore = new UiStore(); + + // Initialize composer + this.composer = new WorkspaceComposer(this.uiStore); + + // Initialize orchestrators + this.environmentOrchestrator = new DesktopEnvironmentOrchestrator( + this.domainStorage, + ); + this.workspaceOrchestrator = new DesktopWorkspaceOrchestrator( + this.domainStorage, + ); + this.processOrchestrator = new DesktopProcessOrchestrator( + this.domainStorage, + ); + this.changeOrchestrator = new DesktopChangeOrchestrator(this.domainStorage); + } + + private async initializeAsync(): Promise { + try { + // Ensure storage directories exist first + await ensureDesktopStorageDirs(); + + // Then run migration if needed + await this.runMigrationIfNeeded(); + } catch (error) { + console.error("Failed to initialize Desktop stores:", error); + } + } + + private async runMigrationIfNeeded(): Promise { + const migrator = new LegacyMigrator(); + if (migrator.shouldMigrate()) { + console.log("[DesktopStores] Running migration from legacy config..."); + const result = await migrator.migrate( + this.environmentOrchestrator, + this.workspaceOrchestrator, + this.uiStore, + false, + ); + if (result.success) { + console.log( + `[DesktopStores] Migration completed: ${result.migrated.workspaces} workspaces migrated`, + ); + } else { + console.error(`[DesktopStores] Migration failed: ${result.error}`); + } + } + + // Initialize versions if not set + if (DomainVersion.read() === 0) { + DomainVersion.write(); + } + if (this.uiStore.readUiVersion() === 0) { + this.uiStore.writeUiVersion(); + } + } + + static getInstance(): DesktopStores { + if (!DesktopStores.instance) { + DesktopStores.instance = new DesktopStores(); + } + return DesktopStores.instance; + } + + /** + * Initialize async operations (migration, version writes) + * Must be called once after getInstance() and before using the stores + */ + static async initialize(): Promise { + if (!DesktopStores.initPromise) { + const instance = DesktopStores.getInstance(); + DesktopStores.initPromise = instance.initializeAsync(); + } + return DesktopStores.initPromise; + } + + getDomainStorage() { + return this.domainStorage; + } + + getUiStore() { + return this.uiStore; + } + + getComposer() { + return this.composer; + } + + getEnvironmentOrchestrator() { + return this.environmentOrchestrator; + } + + getWorkspaceOrchestrator() { + return this.workspaceOrchestrator; + } + + getProcessOrchestrator() { + return this.processOrchestrator; + } + + getChangeOrchestrator() { + return this.changeOrchestrator; + } +} + +export const desktopStores = DesktopStores.getInstance(); +export { DesktopStores }; diff --git a/apps/desktop/src/main/lib/migration/migrator.ts b/apps/desktop/src/main/lib/migration/migrator.ts new file mode 100644 index 00000000000..b921f69b19d --- /dev/null +++ b/apps/desktop/src/main/lib/migration/migrator.ts @@ -0,0 +1,156 @@ +import { existsSync, readFileSync, writeFileSync, copyFileSync } from "node:fs"; +import { join } from "node:path"; +import os from "node:os"; +import { randomUUID } from "node:crypto"; +import type { WorkspaceConfig } from "shared/types"; +import { DomainVersion } from "../storage/version"; +import { WorkspaceType } from "../types/cli-types"; +import type { + DesktopEnvironmentOrchestrator, + DesktopWorkspaceOrchestrator, +} from "../storage/orchestrators"; +import type { UiStore } from "../ui-store/store"; + +/** + * Migrator for legacy config.json to new Desktop persistence structure + */ +export class LegacyMigrator { + private readonly legacyConfigPath: string; + private readonly desktopDbDir: string; + + constructor() { + this.legacyConfigPath = join(os.homedir(), ".superset", "config.json"); + this.desktopDbDir = join(os.homedir(), ".superset", "desktop"); + } + + /** + * Check if migration is needed + */ + shouldMigrate(): boolean { + // Check if legacy config exists and Desktop db is empty + const legacyExists = existsSync(this.legacyConfigPath); + const desktopDbExists = existsSync( + join(this.desktopDbDir, "db", "workspaces.json"), + ); + + return legacyExists && !desktopDbExists; + } + + /** + * Perform migration from legacy config.json + */ + async migrate( + envOrch: DesktopEnvironmentOrchestrator, + workspaceOrch: DesktopWorkspaceOrchestrator, + uiStore: UiStore, + dryRun: boolean = false, + ): Promise<{ + success: boolean; + migrated: { + environments: number; + workspaces: number; + }; + error?: string; + }> { + try { + if (!this.shouldMigrate()) { + return { + success: true, + migrated: { environments: 0, workspaces: 0 }, + }; + } + + // Read legacy config + const legacyConfig: WorkspaceConfig = JSON.parse( + readFileSync(this.legacyConfigPath, "utf-8"), + ); + + if (dryRun) { + return { + success: true, + migrated: { + environments: 1, + workspaces: legacyConfig.workspaces.length, + }, + }; + } + + // Create backup of legacy config + const backupPath = `${this.legacyConfigPath}.backup.${Date.now()}`; + copyFileSync(this.legacyConfigPath, backupPath); + console.log(`[Migration] Created backup at ${backupPath}`); + + // Create default environment + const defaultEnv = await envOrch.create(); + + // Migrate workspaces + let migratedWorkspaces = 0; + + for (const legacyWs of legacyConfig.workspaces) { + // Create domain workspace (LocalWorkspace) + const domainWorkspace = await workspaceOrch.create( + defaultEnv.id, + WorkspaceType.LOCAL, + legacyWs.repoPath, + ); + + // Migrate worktree UI metadata + const worktrees: Record = {}; + for (const legacyWt of legacyWs.worktrees) { + worktrees[legacyWt.path] = { + path: legacyWt.path, + branch: legacyWt.branch, + description: legacyWt.description, + prUrl: legacyWt.prUrl, + merged: legacyWt.merged, + tabs: legacyWt.tabs, + mosaicTree: undefined, // Will be derived from tabs structure if needed + activeTabId: legacyWs.activeTabId, + updatedAt: legacyWs.updatedAt || new Date().toISOString(), + }; + } + + // Create workspace UI state + const uiState = { + workspaceId: domainWorkspace.id, + activeWorktreePath: + legacyWs.worktrees.find((wt) => wt.id === legacyWs.activeWorktreeId) + ?.path ?? null, + worktrees, + updatedAt: legacyWs.updatedAt || new Date().toISOString(), + }; + + uiStore.writeWorkspaceUiState(uiState); + migratedWorkspaces++; + } + + // Update settings + const settings = uiStore.readSettings(); + settings.lastActiveWorkspaceId = legacyConfig.activeWorkspaceId; + uiStore.writeSettings(settings); + + // Set versions + DomainVersion.write(); + uiStore.writeUiVersion(); + + console.log( + `[Migration] Migrated ${migratedWorkspaces} workspaces successfully`, + ); + + return { + success: true, + migrated: { + environments: 1, + workspaces: migratedWorkspaces, + }, + }; + } catch (error) { + console.error("[Migration] Error during migration:", error); + return { + success: false, + migrated: { environments: 0, workspaces: 0 }, + error: error instanceof Error ? error.message : "Unknown error", + }; + } + } +} diff --git a/apps/desktop/src/main/lib/storage/adapter.ts b/apps/desktop/src/main/lib/storage/adapter.ts new file mode 100644 index 00000000000..448bd3c53bc --- /dev/null +++ b/apps/desktop/src/main/lib/storage/adapter.ts @@ -0,0 +1,70 @@ +import type { DesktopDatabase, SerializedDesktopDatabase } from "./types"; + +/** + * Generic storage adapter interface for Desktop domain storage + * Collections are stored in separate files per the plan requirements + */ +export interface DesktopStorageAdapter { + /** + * Read the entire database (loads all collection files) + */ + read(): Promise; + + /** + * Write the entire database (writes all collection files) + */ + write(data: DesktopDatabase): Promise; + + /** + * Get a specific collection + */ + getCollection( + collection: K, + ): Promise; + + /** + * Update a specific collection + */ + updateCollection( + collection: K, + data: DesktopDatabase[K], + ): Promise; + + /** + * Get a single entity from a collection by ID + */ + get( + collection: K, + id: string, + ): Promise; + + /** + * Set a single entity in a collection + */ + set( + collection: K, + id: string, + value: DesktopDatabase[K][string], + ): Promise; + + /** + * Delete a single entity from a collection + */ + delete( + collection: K, + id: string, + ): Promise; + + /** + * Check if an entity exists in a collection + */ + has( + collection: K, + id: string, + ): Promise; + + /** + * Clear all data (useful for testing) + */ + clear(): Promise; +} diff --git a/apps/desktop/src/main/lib/storage/config.ts b/apps/desktop/src/main/lib/storage/config.ts new file mode 100644 index 00000000000..7fdf42da777 --- /dev/null +++ b/apps/desktop/src/main/lib/storage/config.ts @@ -0,0 +1,83 @@ +import { existsSync } from "node:fs"; +import { mkdir } from "node:fs/promises"; +import { homedir } from "node:os"; +import { join } from "node:path"; + +/** + * Get the Desktop storage directory path + * Default: ~/.superset/desktop/ + * Can be overridden with SUPERSET_DESKTOP_DATA_DIR environment variable + */ +export function getDesktopStorageDir(): string { + if (process.env.SUPERSET_DESKTOP_DATA_DIR) { + return process.env.SUPERSET_DESKTOP_DATA_DIR; + } + + return join(homedir(), ".superset", "desktop"); +} + +/** + * Get the Desktop domain database directory + * Default: ~/.superset/desktop/db/ + */ +export function getDesktopDbDir(): string { + return join(getDesktopStorageDir(), "db"); +} + +/** + * Get the Desktop UI storage directory + * Default: ~/.superset/desktop/ui/ + */ +export function getDesktopUiDir(): string { + return join(getDesktopStorageDir(), "ui"); +} + +/** + * Get the Desktop cache directory + * Default: ~/.superset/desktop/cache/ + */ +export function getDesktopCacheDir(): string { + return join(getDesktopStorageDir(), "cache"); +} + +/** + * Get the path to a specific domain collection file + * Collections are split by file per the plan requirements + */ +export function getDomainCollectionPath(collection: string): string { + return join(getDesktopDbDir(), `${collection}.json`); +} + +/** + * Get the path to the domain version file + */ +export function getDomainVersionPath(): string { + return join(getDesktopDbDir(), "db.version"); +} + +/** + * Get the path to the UI version file + */ +export function getUiVersionPath(): string { + return join(getDesktopUiDir(), "ui.version"); +} + +/** + * Ensure the Desktop storage directories exist + * Creates the directory structure if it doesn't exist + */ +export async function ensureDesktopStorageDirs(): Promise { + const dbDir = getDesktopDbDir(); + const uiDir = getDesktopUiDir(); + const cacheDir = getDesktopCacheDir(); + + if (!existsSync(dbDir)) { + await mkdir(dbDir, { recursive: true, mode: 0o700 }); + } + if (!existsSync(uiDir)) { + await mkdir(uiDir, { recursive: true, mode: 0o700 }); + } + if (!existsSync(cacheDir)) { + await mkdir(cacheDir, { recursive: true, mode: 0o700 }); + } +} diff --git a/apps/desktop/src/main/lib/storage/index.ts b/apps/desktop/src/main/lib/storage/index.ts new file mode 100644 index 00000000000..91adb8e6c92 --- /dev/null +++ b/apps/desktop/src/main/lib/storage/index.ts @@ -0,0 +1,5 @@ +export * from "./adapter"; +export * from "./config"; +export * from "./lowdb-adapter"; +export * from "./types"; +export * from "./orchestrators"; diff --git a/apps/desktop/src/main/lib/storage/lowdb-adapter.ts b/apps/desktop/src/main/lib/storage/lowdb-adapter.ts new file mode 100644 index 00000000000..d37cad3238d --- /dev/null +++ b/apps/desktop/src/main/lib/storage/lowdb-adapter.ts @@ -0,0 +1,215 @@ +import { existsSync } from "node:fs"; +import { mkdir } from "node:fs/promises"; +import { dirname } from "node:path"; +import { JSONFilePreset } from "lowdb/node"; +import type { DesktopStorageAdapter } from "./adapter"; +import { getDomainCollectionPath, getDesktopDbDir } from "./config"; +import { + createEmptyDesktopDatabase, + type DesktopDatabase, + type SerializedDesktopDatabase, +} from "./types"; + +/** + * Lowdb implementation of DesktopStorageAdapter + * Handles JSON file persistence with date serialization/deserialization + * Collections are stored in separate files per the plan requirements + */ +export class DesktopLowdbAdapter implements DesktopStorageAdapter { + private collections: Map< + keyof DesktopDatabase, + Awaited>>> + > = new Map(); + + /** + * Initialize a collection file + */ + private async initCollection( + collection: K, + ): Promise { + if (this.collections.has(collection)) return; + + const collectionPath = getDomainCollectionPath(collection); + + // Ensure the parent directory exists + const parentDir = dirname(collectionPath); + if (!existsSync(parentDir)) { + await mkdir(parentDir, { recursive: true, mode: 0o700 }); + } + + const db = await JSONFilePreset>(collectionPath, {}); + + this.collections.set(collection, db); + } + + /** + * Initialize all collections + */ + private async initAllCollections(): Promise { + const collections: Array = [ + "environments", + "workspaces", + "processes", + "changes", + "fileDiffs", + "agentSummaries", + ]; + + await Promise.all( + collections.map((collection) => this.initCollection(collection)), + ); + } + + /** + * Deserialize dates from ISO strings to Date objects + */ + private deserializeDates(obj: any): T { + if (obj === null || obj === undefined) return obj; + + if (typeof obj === "string" && this.isISODate(obj)) { + return new Date(obj) as any; + } + + if (Array.isArray(obj)) { + return obj.map((item) => this.deserializeDates(item)) as any; + } + + if (typeof obj === "object") { + const result: any = {}; + for (const [key, value] of Object.entries(obj)) { + result[key] = this.deserializeDates(value); + } + return result; + } + + return obj; + } + + /** + * Serialize dates to ISO strings + */ + private serializeDates(obj: T): any { + if (obj === null || obj === undefined) return obj; + + if (obj instanceof Date) { + return obj.toISOString(); + } + + if (Array.isArray(obj)) { + return obj.map((item) => this.serializeDates(item)); + } + + if (typeof obj === "object") { + const result: any = {}; + for (const [key, value] of Object.entries(obj)) { + result[key] = this.serializeDates(value); + } + return result; + } + + return obj; + } + + /** + * Check if a string is an ISO date format + */ + private isISODate(str: string): boolean { + const isoDateRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z$/; + return isoDateRegex.test(str); + } + + async read(): Promise { + await this.initAllCollections(); + + const result: any = {}; + for (const collection of this.collections.keys()) { + const db = this.collections.get(collection)!; + await db.read(); + result[collection] = this.deserializeDates(db.data); + } + + return result as DesktopDatabase; + } + + async write(data: DesktopDatabase): Promise { + await this.initAllCollections(); + + for (const [collection, db] of this.collections.entries()) { + const collectionData = data[collection]; + db.data = this.serializeDates(collectionData); + await db.write(); + } + } + + async getCollection( + collection: K, + ): Promise { + await this.initCollection(collection); + const db = this.collections.get(collection)!; + await db.read(); + return this.deserializeDates(db.data); + } + + async updateCollection( + collection: K, + data: DesktopDatabase[K], + ): Promise { + await this.initCollection(collection); + const db = this.collections.get(collection)!; + db.data = this.serializeDates(data); + await db.write(); + } + + async get( + collection: K, + id: string, + ): Promise { + await this.initCollection(collection); + const db = this.collections.get(collection)!; + await db.read(); + const item = db.data[id]; + return item ? this.deserializeDates(item) : undefined; + } + + async set( + collection: K, + id: string, + value: DesktopDatabase[K][string], + ): Promise { + await this.initCollection(collection); + const db = this.collections.get(collection)!; + await db.read(); + db.data[id] = this.serializeDates(value); + await db.write(); + } + + async delete( + collection: K, + id: string, + ): Promise { + await this.initCollection(collection); + const db = this.collections.get(collection)!; + await db.read(); + delete db.data[id]; + await db.write(); + } + + async has( + collection: K, + id: string, + ): Promise { + await this.initCollection(collection); + const db = this.collections.get(collection)!; + await db.read(); + return id in db.data; + } + + async clear(): Promise { + await this.initAllCollections(); + + for (const db of this.collections.values()) { + db.data = {}; + await db.write(); + } + } +} diff --git a/apps/desktop/src/main/lib/storage/orchestrators/change-orchestrator.ts b/apps/desktop/src/main/lib/storage/orchestrators/change-orchestrator.ts new file mode 100644 index 00000000000..9491d978184 --- /dev/null +++ b/apps/desktop/src/main/lib/storage/orchestrators/change-orchestrator.ts @@ -0,0 +1,65 @@ +import { randomUUID } from "node:crypto"; +import type { + Change, + ChangeOrchestrator as IChangeOrchestrator, +} from "../../types/cli-types"; +import type { DesktopStorageAdapter } from "../adapter"; + +/** + * Desktop Change orchestrator implementation + * Handles CRUD operations for changes with cascade deletes for file diffs + */ +export class DesktopChangeOrchestrator implements IChangeOrchestrator { + constructor(private readonly storage: DesktopStorageAdapter) {} + + async list(workspaceId: string): Promise { + const changes = await this.storage.getCollection("changes"); + return Object.values(changes).filter( + (change) => change.workspaceId === workspaceId, + ); + } + + async create(change: Omit): Promise { + const newChange: Change = { + ...change, + id: randomUUID(), + createdAt: new Date(), + }; + + await this.storage.set("changes", newChange.id, newChange); + return newChange; + } + + async update(id: string, updates: Partial): Promise { + const existing = await this.storage.get("changes", id); + if (!existing) { + throw new Error(`Change with id ${id} not found`); + } + + // Filter out immutable fields to prevent desync + const { + id: _, + workspaceId: __, + createdAt: ___, + ...updatesWithoutImmutable + } = updates; + + const updated = { ...existing, ...updatesWithoutImmutable }; + await this.storage.set("changes", id, updated); + } + + async delete(id: string): Promise { + // Cascade delete: remove all file diffs for this change + const fileDiffs = await this.storage.getCollection("fileDiffs"); + const diffIds = Object.entries(fileDiffs) + .filter(([_, diff]) => diff.changeId === id) + .map(([diffId]) => diffId); + + for (const diffId of diffIds) { + await this.storage.delete("fileDiffs", diffId); + } + + // Delete the change itself + await this.storage.delete("changes", id); + } +} diff --git a/apps/desktop/src/main/lib/storage/orchestrators/environment-orchestrator.ts b/apps/desktop/src/main/lib/storage/orchestrators/environment-orchestrator.ts new file mode 100644 index 00000000000..f88fca68c89 --- /dev/null +++ b/apps/desktop/src/main/lib/storage/orchestrators/environment-orchestrator.ts @@ -0,0 +1,112 @@ +import { randomUUID } from "node:crypto"; +import type { + Environment, + EnvironmentOrchestrator as IEnvironmentOrchestrator, +} from "../../types/cli-types"; +import type { DesktopStorageAdapter } from "../adapter"; + +/** + * Desktop Environment orchestrator implementation + * Handles CRUD operations for environments + */ +export class DesktopEnvironmentOrchestrator + implements IEnvironmentOrchestrator +{ + constructor(private readonly storage: DesktopStorageAdapter) {} + + async get(id: string): Promise { + const environment = await this.storage.get("environments", id); + if (!environment) { + throw new Error(`Environment with id ${id} not found`); + } + return environment; + } + + async list(): Promise { + const environments = await this.storage.getCollection("environments"); + return Object.values(environments); + } + + async create(): Promise { + const environment: Environment = { + id: randomUUID(), + }; + + await this.storage.set("environments", environment.id, environment); + return environment; + } + + async update(id: string, updates: Partial): Promise { + const existing = await this.get(id); + + // Filter out immutable id field to prevent desync + const { id: _, ...updatesWithoutImmutable } = updates; + + const updated = { ...existing, ...updatesWithoutImmutable }; + await this.storage.set("environments", id, updated); + } + + async delete(id: string): Promise { + // Cascade delete: remove all workspaces, processes, changes, etc. + const workspaces = await this.storage.getCollection("workspaces"); + const workspaceIds = Object.entries(workspaces) + .filter(([_, workspace]) => workspace.environmentId === id) + .map(([workspaceId]) => workspaceId); + + // Delete all child workspaces + for (const workspaceId of workspaceIds) { + await this.deleteWorkspaceCascade(workspaceId); + } + + // Delete the environment itself + await this.storage.delete("environments", id); + } + + /** + * Helper to cascade delete workspace and its children + */ + private async deleteWorkspaceCascade(workspaceId: string): Promise { + // Delete all processes for this workspace + const processes = await this.storage.getCollection("processes"); + const processIds = Object.entries(processes) + .filter(([_, process]) => process.workspaceId === workspaceId) + .map(([processId]) => processId); + + for (const processId of processIds) { + // Delete agent summaries for this process + const agentSummaries = await this.storage.getCollection("agentSummaries"); + const summaryIds = Object.entries(agentSummaries) + .filter(([_, summary]) => summary.agentId === processId) + .map(([summaryId]) => summaryId); + + for (const summaryId of summaryIds) { + await this.storage.delete("agentSummaries", summaryId); + } + + await this.storage.delete("processes", processId); + } + + // Delete all changes for this workspace + const changes = await this.storage.getCollection("changes"); + const changeIds = Object.entries(changes) + .filter(([_, change]) => change.workspaceId === workspaceId) + .map(([changeId]) => changeId); + + for (const changeId of changeIds) { + // Delete file diffs for this change + const fileDiffs = await this.storage.getCollection("fileDiffs"); + const diffIds = Object.entries(fileDiffs) + .filter(([_, diff]) => diff.changeId === changeId) + .map(([diffId]) => diffId); + + for (const diffId of diffIds) { + await this.storage.delete("fileDiffs", diffId); + } + + await this.storage.delete("changes", changeId); + } + + // Delete the workspace itself + await this.storage.delete("workspaces", workspaceId); + } +} diff --git a/apps/desktop/src/main/lib/storage/orchestrators/index.ts b/apps/desktop/src/main/lib/storage/orchestrators/index.ts new file mode 100644 index 00000000000..fc8d3039f60 --- /dev/null +++ b/apps/desktop/src/main/lib/storage/orchestrators/index.ts @@ -0,0 +1,4 @@ +export * from "./environment-orchestrator"; +export * from "./workspace-orchestrator"; +export * from "./process-orchestrator"; +export * from "./change-orchestrator"; diff --git a/apps/desktop/src/main/lib/storage/orchestrators/process-orchestrator.ts b/apps/desktop/src/main/lib/storage/orchestrators/process-orchestrator.ts new file mode 100644 index 00000000000..fb59aaddcb9 --- /dev/null +++ b/apps/desktop/src/main/lib/storage/orchestrators/process-orchestrator.ts @@ -0,0 +1,140 @@ +import { randomUUID } from "node:crypto"; +import { + type Agent, + type AgentType, + type ProcessOrchestrator as IProcessOrchestrator, + type Process, + ProcessType, + type Terminal, + type Workspace, +} from "../../types/cli-types"; +import type { DesktopStorageAdapter } from "../adapter"; + +/** + * Desktop Process orchestrator implementation + * Handles CRUD operations for processes (agents and terminals) + */ +export class DesktopProcessOrchestrator implements IProcessOrchestrator { + constructor(private readonly storage: DesktopStorageAdapter) {} + + async get(id: string): Promise { + const process = await this.storage.get("processes", id); + if (!process) { + throw new Error(`Process with id ${id} not found`); + } + return process; + } + + async list(workspaceId?: string): Promise { + const processes = await this.storage.getCollection("processes"); + const processList = Object.values(processes); + + if (workspaceId) { + return processList.filter((p) => p.workspaceId === workspaceId); + } + + return processList; + } + + async create( + type: ProcessType, + workspace: Workspace, + agentType?: AgentType, + ): Promise { + const now = new Date(); + const baseProcess = { + id: randomUUID(), + type, + workspaceId: workspace.id, + title: type === ProcessType.AGENT ? "Agent" : "Terminal", + createdAt: now, + updatedAt: now, + }; + + const process: Process | Agent | Terminal = + type === ProcessType.AGENT && agentType + ? ({ + ...baseProcess, + agentType, + status: "idle", + } as Agent) + : type === ProcessType.TERMINAL + ? (baseProcess as Terminal) + : baseProcess; + + await this.storage.set("processes", process.id, process); + return process; + } + + async update(id: string, updates: Partial): Promise { + const existing = await this.get(id); + + // Filter out immutable fields to prevent desync + const { + id: _, + workspaceId: __, + createdAt: ___, + ...updatesWithoutImmutable + } = updates; + + const updated = { + ...existing, + ...updatesWithoutImmutable, + updatedAt: new Date(), + }; + await this.storage.set("processes", id, updated); + } + + async stop(id: string): Promise { + const existing = await this.get(id); + const updated = { + ...existing, + endedAt: new Date(), + updatedAt: new Date(), + }; + + // Update status for agents + if ("status" in updated) { + (updated as Agent).status = "stopped"; + } + + await this.storage.set("processes", id, updated); + } + + async stopAll(): Promise { + const processes = await this.storage.getCollection("processes"); + const now = new Date(); + + for (const [id, process] of Object.entries(processes)) { + if (!process.endedAt) { + const updated = { + ...process, + endedAt: now, + updatedAt: now, + }; + + // Update status for agents + if ("status" in updated) { + (updated as Agent).status = "stopped"; + } + + await this.storage.set("processes", id, updated); + } + } + } + + async delete(id: string): Promise { + // Cascade delete: remove all agent summaries for this process + const agentSummaries = await this.storage.getCollection("agentSummaries"); + const summaryIds = Object.entries(agentSummaries) + .filter(([_, summary]) => summary.agentId === id) + .map(([summaryId]) => summaryId); + + for (const summaryId of summaryIds) { + await this.storage.delete("agentSummaries", summaryId); + } + + // Delete the process itself + await this.storage.delete("processes", id); + } +} diff --git a/apps/desktop/src/main/lib/storage/orchestrators/workspace-orchestrator.ts b/apps/desktop/src/main/lib/storage/orchestrators/workspace-orchestrator.ts new file mode 100644 index 00000000000..7975d06956e --- /dev/null +++ b/apps/desktop/src/main/lib/storage/orchestrators/workspace-orchestrator.ts @@ -0,0 +1,115 @@ +import { randomUUID } from "node:crypto"; +import type { + WorkspaceOrchestrator as IWorkspaceOrchestrator, + LocalWorkspace, + Workspace, + WorkspaceType, +} from "../../types/cli-types"; +import type { DesktopStorageAdapter } from "../adapter"; + +/** + * Desktop Workspace orchestrator implementation + * Handles CRUD operations for workspaces with cascade deletes + */ +export class DesktopWorkspaceOrchestrator implements IWorkspaceOrchestrator { + constructor(private readonly storage: DesktopStorageAdapter) {} + + async get(id: string): Promise { + const workspace = await this.storage.get("workspaces", id); + if (!workspace) { + throw new Error(`Workspace with id ${id} not found`); + } + return workspace; + } + + async list(environmentId?: string): Promise { + const workspaces = await this.storage.getCollection("workspaces"); + const workspaceList = Object.values(workspaces); + + if (environmentId) { + return workspaceList.filter((w) => w.environmentId === environmentId); + } + + return workspaceList; + } + + async create( + environmentId: string, + type: WorkspaceType, + path?: string, + ): Promise { + const workspace: Workspace | LocalWorkspace = + type === "local" && path + ? ({ + id: randomUUID(), + type, + environmentId, + path, + } as LocalWorkspace) + : { + id: randomUUID(), + type, + environmentId, + }; + + await this.storage.set("workspaces", workspace.id, workspace); + return workspace; + } + + async update(id: string, updates: Partial): Promise { + const existing = await this.get(id); + + // Filter out immutable fields to prevent desync + const { id: _, environmentId: __, ...updatesWithoutImmutable } = updates; + + const updated = { ...existing, ...updatesWithoutImmutable }; + await this.storage.set("workspaces", id, updated); + } + + async delete(id: string): Promise { + // Cascade delete: remove all processes and changes for this workspace + + // Delete all processes for this workspace + const processes = await this.storage.getCollection("processes"); + const processIds = Object.entries(processes) + .filter(([_, process]) => process.workspaceId === id) + .map(([processId]) => processId); + + for (const processId of processIds) { + // Delete agent summaries for this process + const agentSummaries = await this.storage.getCollection("agentSummaries"); + const summaryIds = Object.entries(agentSummaries) + .filter(([_, summary]) => summary.agentId === processId) + .map(([summaryId]) => summaryId); + + for (const summaryId of summaryIds) { + await this.storage.delete("agentSummaries", summaryId); + } + + await this.storage.delete("processes", processId); + } + + // Delete all changes for this workspace + const changes = await this.storage.getCollection("changes"); + const changeIds = Object.entries(changes) + .filter(([_, change]) => change.workspaceId === id) + .map(([changeId]) => changeId); + + for (const changeId of changeIds) { + // Delete file diffs for this change + const fileDiffs = await this.storage.getCollection("fileDiffs"); + const diffIds = Object.entries(fileDiffs) + .filter(([_, diff]) => diff.changeId === changeId) + .map(([diffId]) => diffId); + + for (const diffId of diffIds) { + await this.storage.delete("fileDiffs", diffId); + } + + await this.storage.delete("changes", changeId); + } + + // Delete the workspace itself + await this.storage.delete("workspaces", id); + } +} diff --git a/apps/desktop/src/main/lib/storage/types.ts b/apps/desktop/src/main/lib/storage/types.ts new file mode 100644 index 00000000000..3d001e45b96 --- /dev/null +++ b/apps/desktop/src/main/lib/storage/types.ts @@ -0,0 +1,63 @@ +import type { + AgentSummary, + Change, + Environment, + FileDiff, + Process, + Workspace, +} from "../types/cli-types"; + +/** + * Desktop domain database schema + * Collections are split by file per the plan requirements + * All entities stored as key-value records indexed by ID + */ +export interface DesktopDatabase { + environments: Record; + workspaces: Record; + processes: Record; + changes: Record; + fileDiffs: Record; + agentSummaries: Record; +} + +/** + * Serialized version of database for JSON storage + * Dates are converted to ISO strings for persistence + */ +export interface SerializedDesktopDatabase { + environments: Record; + workspaces: Record; + processes: Record; + changes: Record; + fileDiffs: Record; + agentSummaries: Record; +} + +// Serialized type helpers - convert Date fields to string +type Serialized = { + [K in keyof T]: T[K] extends Date + ? string + : T[K] extends Date | undefined + ? string | undefined + : T[K]; +}; + +export type SerializedEnvironment = Serialized; +export type SerializedWorkspace = Serialized; +export type SerializedProcess = Serialized; +export type SerializedChange = Serialized; +export type SerializedFileDiff = Serialized; +export type SerializedAgentSummary = Serialized; + +/** + * Empty database structure for initialization + */ +export const createEmptyDesktopDatabase = (): SerializedDesktopDatabase => ({ + environments: {}, + workspaces: {}, + processes: {}, + changes: {}, + fileDiffs: {}, + agentSummaries: {}, +}); diff --git a/apps/desktop/src/main/lib/storage/version.ts b/apps/desktop/src/main/lib/storage/version.ts new file mode 100644 index 00000000000..ed58445e25c --- /dev/null +++ b/apps/desktop/src/main/lib/storage/version.ts @@ -0,0 +1,54 @@ +import { existsSync, readFileSync, writeFileSync } from "node:fs"; +import { getDomainVersionPath } from "./config"; + +/** + * Domain database version management + */ +export class DomainVersion { + private static readonly CURRENT_VERSION = 1; + + /** + * Read current domain version + */ + static read(): number { + try { + const versionPath = getDomainVersionPath(); + if (!existsSync(versionPath)) { + return 0; + } + const content = readFileSync(versionPath, "utf-8"); + return Number.parseInt(content.trim(), 10); + } catch (error) { + console.error("Failed to read domain version:", error); + return 0; + } + } + + /** + * Write domain version + */ + static write(version: number = DomainVersion.CURRENT_VERSION): boolean { + try { + const versionPath = getDomainVersionPath(); + writeFileSync(versionPath, String(version), "utf-8"); + return true; + } catch (error) { + console.error("Failed to write domain version:", error); + return false; + } + } + + /** + * Get current version constant + */ + static getCurrentVersion(): number { + return DomainVersion.CURRENT_VERSION; + } + + /** + * Check if migration is needed + */ + static needsMigration(): boolean { + return DomainVersion.read() < DomainVersion.CURRENT_VERSION; + } +} diff --git a/apps/desktop/src/main/lib/terminal-ipcs.ts b/apps/desktop/src/main/lib/terminal-ipcs.ts index 94ff91611b3..54e34bcb982 100644 --- a/apps/desktop/src/main/lib/terminal-ipcs.ts +++ b/apps/desktop/src/main/lib/terminal-ipcs.ts @@ -10,7 +10,7 @@ let ipcHandlersRegistered = false; export function registerTerminalIPCs(window: BrowserWindowType) { // Initialize tmux manager (restore sessions) only once - if (!ipcHandlersRegistered) { + if (!ipcHandlersRegistered) { tmuxManager.initialize().catch((error) => { console.error("[Terminal IPC] Failed to initialize tmux manager:", error); }); @@ -44,14 +44,14 @@ export function registerTerminalIPCs(window: BrowserWindowType) { }, ); - // Send input to terminal (exit copy-mode first so we don't snap back) - ipcMain.on( - "terminal-input", - (_event, message: { id: string; data: string }) => { - tmuxManager.scrollFinish(message.id); - tmuxManager.write(message.id, message.data); - }, - ); + // Send input to terminal (exit copy-mode first so we don't snap back) + ipcMain.on( + "terminal-input", + (_event, message: { id: string; data: string }) => { + tmuxManager.scrollFinish(message.id); + tmuxManager.write(message.id, message.data); + }, + ); // Resize terminal with sequence tracking ipcMain.on( @@ -85,19 +85,18 @@ export function registerTerminalIPCs(window: BrowserWindowType) { }, ); - // Kill terminal (destroy tmux session completely) - ipcMain.on("terminal-kill", (_event, id: string) => { - tmuxManager.kill(id); - }); - - // Scroll tmux history by N lines (positive = down, negative = up) - ipcMain.on( - "terminal-scroll-lines", - (_event, message: { id: string; amount: number }) => { - tmuxManager.scrollLines(message.id, message.amount); - }, - ); + // Kill terminal (destroy tmux session completely) + ipcMain.on("terminal-kill", (_event, id: string) => { + tmuxManager.kill(id); + }); + // Scroll tmux history by N lines (positive = down, negative = up) + ipcMain.on( + "terminal-scroll-lines", + (_event, message: { id: string; amount: number }) => { + tmuxManager.scrollLines(message.id, message.amount); + }, + ); // Get terminal history ipcMain.handle("terminal-get-history", (_event, id: string) => { diff --git a/apps/desktop/src/main/lib/tmux-manager.ts b/apps/desktop/src/main/lib/tmux-manager.ts index da460bf81cd..f2935466ad5 100644 --- a/apps/desktop/src/main/lib/tmux-manager.ts +++ b/apps/desktop/src/main/lib/tmux-manager.ts @@ -93,11 +93,11 @@ class TmuxManager { /** * Initialize tmux session manager - restore sessions from disk */ - async initialize(): Promise { - // Ensure server-level settings (affect all sessions/panes) - this.applyServerSettings(); + async initialize(): Promise { + // Ensure server-level settings (affect all sessions/panes) + this.applyServerSettings(); - const savedSessions = this.loadSessionsFromDisk(); + const savedSessions = this.loadSessionsFromDisk(); // Verify each session exists in tmux and prepare for lazy reattach for (const metadata of savedSessions) { @@ -180,87 +180,87 @@ class TmuxManager { /** * Apply tmux settings to make session invisible and optimized */ - private applySessionSettings(sid: string): void { - // Keep settings minimal and focused on invisibility and correct behavior - const settings = [ - ["status", "off"], - ["set-titles", "off"], - ["allow-rename", "off"], - // Turn off tmux mouse so xterm selection remains native - ["mouse", "off"], - // Hide transient messages like copy-mode position overlays - ["display-time", "0"], - ["focus-events", "on"], - ["history-limit", "200000"], - ["remain-on-exit", "off"], - ["detach-on-destroy", "off"], - ["escape-time", "0"], - ["default-terminal", "xterm-256color"], - ]; - - for (const [option, value] of settings) { - spawnSync("tmux", [ - "-L", - this.TMUX_SOCKET, - "set", - "-t", - sid, - option, - value, - ]); - } - - // Server-level history-limit is applied in applyServerSettings() - - // Leave key bindings and prefixes at user defaults - - // Add terminal-overrides for true color support - spawnSync("tmux", [ - "-L", - this.TMUX_SOCKET, - "set", - "-t", - sid, - "-as", - "terminal-overrides", - ",*:Tc", - ]); - - // Do not alter default mouse key bindings – keep selection behavior in xterm - } - - /** - * Apply server/global settings that maximize scrollback across all sessions - */ - private applyServerSettings(): void { - try { - // Server-level hard cap for history size - spawnSync("tmux", [ - "-L", - this.TMUX_SOCKET, - "set", - "-s", - "history-limit", - "1000000", - ]); - } catch (e) { - console.warn("[TmuxManager] Failed to set server history-limit", e); - } - - try { - // Global default for future windows/panes - spawnSync("tmux", [ - "-L", - this.TMUX_SOCKET, - "set", - "-g", - "history-limit", - "1000000", - ]); - } catch (e) { - console.warn("[TmuxManager] Failed to set global history-limit", e); - } - } + private applySessionSettings(sid: string): void { + // Keep settings minimal and focused on invisibility and correct behavior + const settings = [ + ["status", "off"], + ["set-titles", "off"], + ["allow-rename", "off"], + // Turn off tmux mouse so xterm selection remains native + ["mouse", "off"], + // Hide transient messages like copy-mode position overlays + ["display-time", "0"], + ["focus-events", "on"], + ["history-limit", "200000"], + ["remain-on-exit", "off"], + ["detach-on-destroy", "off"], + ["escape-time", "0"], + ["default-terminal", "xterm-256color"], + ]; + + for (const [option, value] of settings) { + spawnSync("tmux", [ + "-L", + this.TMUX_SOCKET, + "set", + "-t", + sid, + option, + value, + ]); + } + + // Server-level history-limit is applied in applyServerSettings() + + // Leave key bindings and prefixes at user defaults + + // Add terminal-overrides for true color support + spawnSync("tmux", [ + "-L", + this.TMUX_SOCKET, + "set", + "-t", + sid, + "-as", + "terminal-overrides", + ",*:Tc", + ]); + + // Do not alter default mouse key bindings – keep selection behavior in xterm + } + + /** + * Apply server/global settings that maximize scrollback across all sessions + */ + private applyServerSettings(): void { + try { + // Server-level hard cap for history size + spawnSync("tmux", [ + "-L", + this.TMUX_SOCKET, + "set", + "-s", + "history-limit", + "1000000", + ]); + } catch (e) { + console.warn("[TmuxManager] Failed to set server history-limit", e); + } + + try { + // Global default for future windows/panes + spawnSync("tmux", [ + "-L", + this.TMUX_SOCKET, + "set", + "-g", + "history-limit", + "1000000", + ]); + } catch (e) { + console.warn("[TmuxManager] Failed to set global history-limit", e); + } + } /** * Create or reattach to a terminal session @@ -647,69 +647,77 @@ class TmuxManager { /** * Emit terminal data to all windows viewing this terminal */ - private emitMessage(sid: string, data: string): void { - // Strip mouse reporting enable sequences so xterm never flips into mouse mode - const sanitizeMouseSeq = (input: string): string => { - try { - return input.replace(/\x1b\[\?([0-9;]+)h/g, (_m, nums: string) => { - const blocked = new Set([9, 1000, 1002, 1003, 1005, 1006, 1015]); - const kept: number[] = []; - for (const part of String(nums).split(";")) { - const n = Number(part); - if (!blocked.has(n)) kept.push(n); - } - return kept.length ? `\x1b[?${kept.join(";")}h` : ""; - }); - } catch { - return input; - } - }; - - const windows = this.terminalWindows.get(sid); - if (windows && windows.size > 0) { - for (const window of windows) { - if (!window.isDestroyed()) { - window.webContents.send("terminal-on-data", { - id: sid, - data: sanitizeMouseSeq(data), - }); - } - } - } - } - - /** Scroll tmux history by amount (positive = down, negative = up) */ - scrollLines(sid: string, amount: number): void { - try { - const count = Math.max(1, Math.min(100, Math.abs(Math.trunc(amount)))); - const direction = amount > 0 ? "scroll-down" : "scroll-up"; - // Enter copy-mode if not already - spawnSync("tmux", ["-L", this.TMUX_SOCKET, "copy-mode", "-e", "-t", sid]); - // Repeat scroll efficiently - spawnSync("tmux", [ - "-L", - this.TMUX_SOCKET, - "send-keys", - "-t", - sid, - "-X", - "-N", - String(count), - direction, - ]); - } catch (e) { - console.warn("[TmuxManager] Failed to scroll lines:", sid, amount, e); - } - } - - /** Exit copy-mode after scrolling to restore normal cursor */ - scrollFinish(sid: string): void { - try { - spawnSync("tmux", ["-L", this.TMUX_SOCKET, "send-keys", "-t", sid, "-X", "cancel"]); - } catch (e) { - console.warn("[TmuxManager] Failed to cancel copy-mode:", sid, e); - } - } + private emitMessage(sid: string, data: string): void { + // Strip mouse reporting enable sequences so xterm never flips into mouse mode + const sanitizeMouseSeq = (input: string): string => { + try { + return input.replace(/\x1b\[\?([0-9;]+)h/g, (_m, nums: string) => { + const blocked = new Set([9, 1000, 1002, 1003, 1005, 1006, 1015]); + const kept: number[] = []; + for (const part of String(nums).split(";")) { + const n = Number(part); + if (!blocked.has(n)) kept.push(n); + } + return kept.length ? `\x1b[?${kept.join(";")}h` : ""; + }); + } catch { + return input; + } + }; + + const windows = this.terminalWindows.get(sid); + if (windows && windows.size > 0) { + for (const window of windows) { + if (!window.isDestroyed()) { + window.webContents.send("terminal-on-data", { + id: sid, + data: sanitizeMouseSeq(data), + }); + } + } + } + } + + /** Scroll tmux history by amount (positive = down, negative = up) */ + scrollLines(sid: string, amount: number): void { + try { + const count = Math.max(1, Math.min(100, Math.abs(Math.trunc(amount)))); + const direction = amount > 0 ? "scroll-down" : "scroll-up"; + // Enter copy-mode if not already + spawnSync("tmux", ["-L", this.TMUX_SOCKET, "copy-mode", "-e", "-t", sid]); + // Repeat scroll efficiently + spawnSync("tmux", [ + "-L", + this.TMUX_SOCKET, + "send-keys", + "-t", + sid, + "-X", + "-N", + String(count), + direction, + ]); + } catch (e) { + console.warn("[TmuxManager] Failed to scroll lines:", sid, amount, e); + } + } + + /** Exit copy-mode after scrolling to restore normal cursor */ + scrollFinish(sid: string): void { + try { + spawnSync("tmux", [ + "-L", + this.TMUX_SOCKET, + "send-keys", + "-t", + sid, + "-X", + "cancel", + ]); + } catch (e) { + console.warn("[TmuxManager] Failed to cancel copy-mode:", sid, e); + } + } /** * Load persisted sessions from disk diff --git a/apps/desktop/src/main/lib/types/cli-types.ts b/apps/desktop/src/main/lib/types/cli-types.ts new file mode 100644 index 00000000000..3a722f15efe --- /dev/null +++ b/apps/desktop/src/main/lib/types/cli-types.ts @@ -0,0 +1,34 @@ +/** + * Re-export CLI types for Desktop app + * Uses workspace import for proper monorepo resolution + */ +export type { + Environment, + EnvironmentOrchestrator, +} from "@superset/cli/types/environment"; + +export type { + Workspace, + LocalWorkspace, + WorkspaceType, + WorkspaceOrchestrator, +} from "@superset/cli/types/workspace"; + +export type { + Process, + ProcessType, + Terminal, + Agent, + AgentType, + ProcessOrchestrator, +} from "@superset/cli/types/process"; + +export type { + Change, + FileDiff, + AgentSummary, + ChangeOrchestrator, +} from "@superset/cli/types/change"; + +export { WorkspaceType } from "@superset/cli/types/workspace"; +export { ProcessType, AgentType } from "@superset/cli/types/process"; diff --git a/apps/desktop/src/main/lib/ui-ipcs.ts b/apps/desktop/src/main/lib/ui-ipcs.ts new file mode 100644 index 00000000000..b10e9b243e1 --- /dev/null +++ b/apps/desktop/src/main/lib/ui-ipcs.ts @@ -0,0 +1,198 @@ +import { ipcMain } from "electron"; +import { desktopStores } from "./desktop-stores"; +import type { WorktreeUiMetadata } from "./ui-store/types"; + +/** + * Register IPC handlers for UI operations + */ +export function registerUiIPCs(): void { + // Get workspace UI state + ipcMain.handle( + "ui-workspace-get", + async (_event, input: { workspaceId: string }) => { + try { + const uiStore = desktopStores.getUiStore(); + const uiState = uiStore.readWorkspaceUiState(input.workspaceId); + + if (!uiState) { + return { + success: false, + error: "Workspace UI state not found", + }; + } + + return { + success: true, + data: uiState, + }; + } catch (error) { + console.error("[UiIPC] Error getting workspace UI state:", error); + return { + success: false, + error: error instanceof Error ? error.message : "Unknown error", + }; + } + }, + ); + + // Update workspace UI state + ipcMain.handle( + "ui-workspace-update", + async ( + _event, + input: { + workspaceId: string; + patch: { + activeWorktreePath?: string | null; + worktrees?: Record; + }; + }, + ) => { + try { + const uiStore = desktopStores.getUiStore(); + const success = uiStore.updateWorkspaceUiState( + input.workspaceId, + input.patch, + ); + + return { + success, + error: success ? undefined : "Failed to update workspace UI state", + }; + } catch (error) { + console.error("[UiIPC] Error updating workspace UI state:", error); + return { + success: false, + error: error instanceof Error ? error.message : "Unknown error", + }; + } + }, + ); + + // Set active workspace/worktree/tab + ipcMain.handle( + "ui-set-active", + async ( + _event, + input: { + workspaceId: string; + activeWorktreePath?: string | null; + activeTabId?: string | null; + updateGlobalActiveWorkspace?: boolean; + }, + ) => { + try { + const uiStore = desktopStores.getUiStore(); + + // Update workspace UI state + const updates: { + activeWorktreePath?: string | null; + } = {}; + if (input.activeWorktreePath !== undefined) { + updates.activeWorktreePath = input.activeWorktreePath; + } + + const success = uiStore.updateWorkspaceUiState( + input.workspaceId, + updates, + ); + + // Update active tab if specified + if (input.activeTabId !== undefined && input.activeWorktreePath) { + const uiState = uiStore.readWorkspaceUiState(input.workspaceId); + if (uiState) { + const worktreeMetadata = + uiState.worktrees[input.activeWorktreePath]; + if (worktreeMetadata) { + uiStore.updateWorktreeMetadata( + input.workspaceId, + input.activeWorktreePath, + { + activeTabId: input.activeTabId, + }, + ); + } + } + } + + // Update global active workspace setting if requested + // This is now explicit instead of coupled to activeWorktreePath === null + if (input.updateGlobalActiveWorkspace) { + const settings = uiStore.readSettings(); + settings.lastActiveWorkspaceId = input.workspaceId; + uiStore.writeSettings(settings); + } + + return { + success, + error: success ? undefined : "Failed to set active state", + }; + } catch (error) { + console.error("[UiIPC] Error setting active state:", error); + return { + success: false, + error: error instanceof Error ? error.message : "Unknown error", + }; + } + }, + ); + + // Get settings + ipcMain.handle("ui-settings-get", async () => { + try { + const uiStore = desktopStores.getUiStore(); + const settings = uiStore.readSettings(); + + return { + success: true, + data: settings, + }; + } catch (error) { + console.error("[UiIPC] Error getting settings:", error); + return { + success: false, + error: error instanceof Error ? error.message : "Unknown error", + }; + } + }); + + // Update settings + ipcMain.handle( + "ui-settings-update", + async ( + _event, + input: { + lastActiveWorkspaceId?: string | null; + preferences?: Record; + }, + ) => { + try { + const uiStore = desktopStores.getUiStore(); + const settings = uiStore.readSettings(); + + if (input.lastActiveWorkspaceId !== undefined) { + settings.lastActiveWorkspaceId = input.lastActiveWorkspaceId; + } + if (input.preferences !== undefined) { + settings.preferences = { + ...settings.preferences, + ...input.preferences, + }; + } + + const success = uiStore.writeSettings(settings); + + return { + success, + error: success ? undefined : "Failed to update settings", + }; + } catch (error) { + console.error("[UiIPC] Error updating settings:", error); + return { + success: false, + error: error instanceof Error ? error.message : "Unknown error", + }; + } + }, + ); +} diff --git a/apps/desktop/src/main/lib/ui-store/index.ts b/apps/desktop/src/main/lib/ui-store/index.ts new file mode 100644 index 00000000000..3855748c736 --- /dev/null +++ b/apps/desktop/src/main/lib/ui-store/index.ts @@ -0,0 +1,2 @@ +export * from "./types"; +export * from "./store"; diff --git a/apps/desktop/src/main/lib/ui-store/store.ts b/apps/desktop/src/main/lib/ui-store/store.ts new file mode 100644 index 00000000000..4b203c2ed06 --- /dev/null +++ b/apps/desktop/src/main/lib/ui-store/store.ts @@ -0,0 +1,256 @@ +import { + existsSync, + readFileSync, + writeFileSync, + mkdirSync, + renameSync, + fsyncSync, + openSync, + closeSync, +} from "node:fs"; +import { join } from "node:path"; +import { getDesktopUiDir, getUiVersionPath } from "../storage/config"; +import type { + DesktopSettings, + WindowState, + WorkspaceUiState, + WorktreeUiMetadata, +} from "./types"; + +/** + * UI Store manager for Desktop app + * Handles persistence of Desktop-specific UI state + */ +export class UiStore { + private uiDir: string; + private windowStatePath: string; + private settingsPath: string; + private workspacesDir: string; + + constructor() { + this.uiDir = getDesktopUiDir(); + this.windowStatePath = join(this.uiDir, "window-state.json"); + this.settingsPath = join(this.uiDir, "settings.json"); + this.workspacesDir = join(this.uiDir, "workspaces"); + + this.ensureDirectoriesExist(); + } + + private ensureDirectoriesExist(): void { + if (!existsSync(this.uiDir)) { + mkdirSync(this.uiDir, { recursive: true, mode: 0o700 }); + } + if (!existsSync(this.workspacesDir)) { + mkdirSync(this.workspacesDir, { recursive: true, mode: 0o700 }); + } + } + + /** + * Atomically write data to a file + * Writes to a temp file, fsyncs, then renames to avoid partial writes + */ + private atomicWrite(filePath: string, data: string): void { + const tempPath = `${filePath}.tmp`; + + // Write to temp file + writeFileSync(tempPath, data, "utf-8"); + + // Fsync to ensure data is written to disk + const fd = openSync(tempPath, "r+"); + try { + fsyncSync(fd); + } finally { + closeSync(fd); + } + + // Atomic rename (overwrites existing file atomically on POSIX systems) + renameSync(tempPath, filePath); + } + + /** + * Read window state + */ + readWindowState(): WindowState[] { + try { + if (!existsSync(this.windowStatePath)) { + return []; + } + const content = readFileSync(this.windowStatePath, "utf-8"); + return JSON.parse(content) as WindowState[]; + } catch (error) { + console.error("Failed to read window state:", error); + return []; + } + } + + /** + * Write window state + */ + writeWindowState(state: WindowState[]): boolean { + try { + this.atomicWrite(this.windowStatePath, JSON.stringify(state, null, 2)); + return true; + } catch (error) { + console.error("Failed to write window state:", error); + return false; + } + } + + /** + * Read settings + */ + readSettings(): DesktopSettings { + try { + if (!existsSync(this.settingsPath)) { + return { lastActiveWorkspaceId: null }; + } + const content = readFileSync(this.settingsPath, "utf-8"); + return JSON.parse(content) as DesktopSettings; + } catch (error) { + console.error("Failed to read settings:", error); + return { lastActiveWorkspaceId: null }; + } + } + + /** + * Write settings + */ + writeSettings(settings: DesktopSettings): boolean { + try { + this.atomicWrite(this.settingsPath, JSON.stringify(settings, null, 2)); + return true; + } catch (error) { + console.error("Failed to write settings:", error); + return false; + } + } + + /** + * Read workspace UI state + */ + readWorkspaceUiState(workspaceId: string): WorkspaceUiState | null { + try { + const workspacePath = join(this.workspacesDir, `${workspaceId}.json`); + if (!existsSync(workspacePath)) { + return null; + } + const content = readFileSync(workspacePath, "utf-8"); + return JSON.parse(content) as WorkspaceUiState; + } catch (error) { + console.error( + `Failed to read workspace UI state for ${workspaceId}:`, + error, + ); + return null; + } + } + + /** + * Write workspace UI state + */ + writeWorkspaceUiState(state: WorkspaceUiState): boolean { + try { + const workspacePath = join( + this.workspacesDir, + `${state.workspaceId}.json`, + ); + this.atomicWrite(workspacePath, JSON.stringify(state, null, 2)); + return true; + } catch (error) { + console.error( + `Failed to write workspace UI state for ${state.workspaceId}:`, + error, + ); + return false; + } + } + + /** + * Update workspace UI state (merge with existing) + */ + updateWorkspaceUiState( + workspaceId: string, + updates: Partial, + ): boolean { + const existing = this.readWorkspaceUiState(workspaceId); + const updated: WorkspaceUiState = { + workspaceId, + activeWorktreePath: + updates.activeWorktreePath ?? existing?.activeWorktreePath ?? null, + worktrees: { ...existing?.worktrees, ...updates.worktrees }, + updatedAt: new Date().toISOString(), + }; + return this.writeWorkspaceUiState(updated); + } + + /** + * Update worktree UI metadata + */ + updateWorktreeMetadata( + workspaceId: string, + worktreePath: string, + metadata: Partial, + ): boolean { + const existing = this.readWorkspaceUiState(workspaceId); + const worktrees = existing?.worktrees ?? {}; + const existingMetadata = worktrees[worktreePath]; + + const updatedMetadata: WorktreeUiMetadata = { + path: worktreePath, + branch: metadata.branch ?? existingMetadata?.branch ?? "", + description: metadata.description ?? existingMetadata?.description, + prUrl: metadata.prUrl ?? existingMetadata?.prUrl, + merged: metadata.merged ?? existingMetadata?.merged, + tabs: metadata.tabs ?? existingMetadata?.tabs ?? [], + mosaicTree: metadata.mosaicTree ?? existingMetadata?.mosaicTree, + activeTabId: + metadata.activeTabId ?? existingMetadata?.activeTabId ?? null, + updatedAt: new Date().toISOString(), + }; + + return this.updateWorkspaceUiState(workspaceId, { + worktrees: { + ...worktrees, + [worktreePath]: updatedMetadata, + }, + }); + } + + /** + * Get UI version + */ + readUiVersion(): number { + try { + const versionPath = getUiVersionPath(); + if (!existsSync(versionPath)) { + return 0; + } + const content = readFileSync(versionPath, "utf-8"); + return Number.parseInt(content.trim(), 10); + } catch (error) { + console.error("Failed to read UI version:", error); + return 0; + } + } + + /** + * Write UI version + */ + writeUiVersion(version: number = 1): boolean { + try { + const versionPath = getUiVersionPath(); + this.atomicWrite(versionPath, String(version)); + return true; + } catch (error) { + console.error("Failed to write UI version:", error); + return false; + } + } + + /** + * Check if UI migration is needed + */ + needsMigration(): boolean { + return this.readUiVersion() < 1; + } +} diff --git a/apps/desktop/src/main/lib/ui-store/types.ts b/apps/desktop/src/main/lib/ui-store/types.ts new file mode 100644 index 00000000000..80d64d44db3 --- /dev/null +++ b/apps/desktop/src/main/lib/ui-store/types.ts @@ -0,0 +1,78 @@ +import type { Tab, MosaicNode } from "shared/types"; + +/** + * UI state types for Desktop app + * These are Desktop-specific and separate from domain state + */ + +/** + * Window state - persisted per window + */ +export interface WindowState { + id: string; + bounds?: { + x: number; + y: number; + width: number; + height: number; + }; + isMaximized?: boolean; + isFullScreen?: boolean; +} + +/** + * Desktop settings - global UI preferences + */ +export interface DesktopSettings { + lastActiveWorkspaceId: string | null; + preferences?: { + [key: string]: unknown; + }; +} + +/** + * Per-worktree UI metadata + * Keyed by worktree path (primary) and branch (secondary) + */ +export interface WorktreeUiMetadata { + /** Worktree path (primary key) */ + path: string; + /** Branch name (secondary key for fallback matching) */ + branch: string; + /** Optional description */ + description?: string; + /** Pull request URL if created */ + prUrl?: string; + /** Whether this worktree has been merged */ + merged?: boolean; + /** Tabs for this worktree */ + tabs: Tab[]; + /** Mosaic layout tree */ + mosaicTree?: MosaicNode; + /** Active tab ID */ + activeTabId: string | null; + /** Last updated timestamp */ + updatedAt: string; +} + +/** + * Per-workspace UI state + */ +export interface WorkspaceUiState { + workspaceId: string; + /** Active worktree path */ + activeWorktreePath: string | null; + /** Per-worktree UI metadata keyed by path */ + worktrees: Record; + /** Last updated timestamp */ + updatedAt: string; +} + +/** + * UI store structure + */ +export interface UiStore { + windowState: WindowState[]; + settings: DesktopSettings; + workspaces: Record; +} diff --git a/apps/desktop/src/main/lib/window-manager.ts b/apps/desktop/src/main/lib/window-manager.ts index 736cabd2991..1bdac755dad 100644 --- a/apps/desktop/src/main/lib/window-manager.ts +++ b/apps/desktop/src/main/lib/window-manager.ts @@ -7,9 +7,10 @@ class WindowManager { private windowWorkspaces: Map = new Map(); private restoredWindowIds: Set = new Set(); - async createWindow( - restoreState?: { workspaceId: string | null; bounds?: Electron.Rectangle }, - ): Promise { + async createWindow(restoreState?: { + workspaceId: string | null; + bounds?: Electron.Rectangle; + }): Promise { const window = await MainWindow(); // Restore window bounds if provided @@ -55,7 +56,7 @@ class WindowManager { // Save final state before closing (window is still valid here) // Get workspace ID from our map before window might be destroyed const workspaceId = this.windowWorkspaces.get(window) ?? null; - + try { if (!window.isDestroyed()) { const bounds = window.getBounds(); @@ -77,7 +78,10 @@ class WindowManager { } catch (error) { // Silently fail if window is destroyed - we'll clean up in closed handler if (!(error instanceof Error && error.message.includes("destroyed"))) { - console.error("[WindowManager] Failed to save window state on close:", error); + console.error( + "[WindowManager] Failed to save window state on close:", + error, + ); } } }); @@ -109,7 +113,10 @@ class WindowManager { return this.windowWorkspaces.get(window) ?? null; } - setWorkspaceForWindow(window: BrowserWindow, workspaceId: string | null): void { + setWorkspaceForWindow( + window: BrowserWindow, + workspaceId: string | null, + ): void { this.windowWorkspaces.set(window, workspaceId); // Persist the workspace association windowStateManager.saveWindowState(window, workspaceId); diff --git a/apps/desktop/src/main/lib/window-state-manager.ts b/apps/desktop/src/main/lib/window-state-manager.ts index bea74137411..e254ffacae8 100644 --- a/apps/desktop/src/main/lib/window-state-manager.ts +++ b/apps/desktop/src/main/lib/window-state-manager.ts @@ -132,7 +132,10 @@ class WindowStateManager { this.write(state); } catch (error) { - console.error("[WindowStateManager] Failed to save window state by ID:", error); + console.error( + "[WindowStateManager] Failed to save window state by ID:", + error, + ); } } @@ -157,4 +160,3 @@ class WindowStateManager { } export default WindowStateManager.getInstance(); - diff --git a/apps/desktop/src/main/lib/workspace-composition/composer.ts b/apps/desktop/src/main/lib/workspace-composition/composer.ts new file mode 100644 index 00000000000..a13e7a8cc90 --- /dev/null +++ b/apps/desktop/src/main/lib/workspace-composition/composer.ts @@ -0,0 +1,209 @@ +import { randomUUID } from "node:crypto"; +import type { LocalWorkspace } from "../types/cli-types"; +import worktreeManager from "../worktree-manager"; +import type { UiStore } from "../ui-store/store"; +import type { + ComposedWorkspaceState, + ComposedWorktree, + RescanResult, + ScannedWorktree, +} from "./types"; +import type { WorktreeUiMetadata } from "../ui-store/types"; + +/** + * Workspace state composer + * Composes domain workspace + Git scan + UI metadata + */ +export class WorkspaceComposer { + // Cache of last scanned worktrees per workspace path for rescan diffing + private lastScannedWorktrees: Map = new Map(); + + constructor(private readonly uiStore: UiStore) {} + + /** + * Scan Git for worktrees in a repository + */ + async scanWorktrees( + repoPath: string, + mainBranch: string, + updateCache: boolean = true, + ): Promise { + const gitWorktrees = worktreeManager.listWorktrees(repoPath); + const scanned: ScannedWorktree[] = []; + + for (const gitWorktree of gitWorktrees) { + // Get the actual current branch for this worktree + const currentBranch = + worktreeManager.getCurrentBranch(gitWorktree.path) || + gitWorktree.branch; + + // Check if this branch has been merged into main + const isMerged = + currentBranch !== mainBranch && + worktreeManager.isBranchMerged(repoPath, currentBranch, mainBranch); + + scanned.push({ + ...gitWorktree, + currentBranch, + merged: isMerged, + }); + } + + // Update cache for rescan diffing + if (updateCache) { + this.lastScannedWorktrees.set(repoPath, scanned); + } + + return scanned; + } + + /** + * Compose workspace state from domain + Git scan + UI + */ + async composeWorkspaceState( + workspace: LocalWorkspace, + mainBranch: string = "main", + ): Promise { + // Scan Git for worktrees + const scanned = await this.scanWorktrees(workspace.path, mainBranch); + + // Load UI state + const uiState = this.uiStore.readWorkspaceUiState(workspace.id); + + // Merge scanned worktrees with UI metadata + const composedWorktrees: ComposedWorktree[] = scanned.map((scannedWt) => { + // Try to find UI metadata by path (primary key) + let uiMetadata = uiState?.worktrees[scannedWt.path]; + + // Fallback to branch if path doesn't match (for renamed worktrees) + if (!uiMetadata) { + const worktreesByBranch = Object.values(uiState?.worktrees ?? {}).find( + (wt) => wt.branch === scannedWt.currentBranch, + ); + if (worktreesByBranch) { + uiMetadata = worktreesByBranch; + // Update path to match current Git state + uiMetadata.path = scannedWt.path; + } + } + + // Create default UI metadata if none exists + if (!uiMetadata) { + uiMetadata = { + path: scannedWt.path, + branch: scannedWt.currentBranch, + tabs: [], + activeTabId: null, + updatedAt: new Date().toISOString(), + }; + } + + // Merge: use Git scan as truth for branch/path, preserve UI metadata + return { + ...scannedWt, + ui: { + ...uiMetadata, + path: scannedWt.path, // Always use Git path + branch: scannedWt.currentBranch, // Always use Git branch + merged: scannedWt.merged ?? uiMetadata.merged, // Prefer Git scan + }, + }; + }); + + // Get active selection from UI state + const activeWorktreePath = uiState?.activeWorktreePath ?? null; + const activeWorktree = composedWorktrees.find( + (wt) => wt.path === activeWorktreePath, + ); + const activeTabId = activeWorktree?.ui.activeTabId ?? null; + + return { + workspace, + worktrees: composedWorktrees, + ui: { + activeWorktreePath, + activeTabId, + }, + }; + } + + /** + * Rescan workspace and return diff + */ + async rescanWorkspace( + workspace: LocalWorkspace, + mainBranch: string = "main", + ): Promise { + // Get previous scan from cache (or empty if first scan) + const previousScanned = this.lastScannedWorktrees.get(workspace.path) ?? []; + + // Perform new scan (this will update the cache) + const newScanned = await this.scanWorktrees(workspace.path, mainBranch); + + // Compare previous scan with new scan + const previousPaths = new Set(previousScanned.map((wt) => wt.path)); + const newPaths = new Set(newScanned.map((wt) => wt.path)); + + const added: ScannedWorktree[] = newScanned.filter( + (wt) => !previousPaths.has(wt.path), + ); + const removed: ScannedWorktree[] = previousScanned.filter( + (wt) => !newPaths.has(wt.path), + ); + + const changed: Array<{ old: ScannedWorktree; new: ScannedWorktree }> = []; + for (const newWt of newScanned) { + const oldWt = previousScanned.find((wt) => wt.path === newWt.path); + if ( + oldWt && + (oldWt.currentBranch !== newWt.currentBranch || + oldWt.merged !== newWt.merged) + ) { + changed.push({ + old: oldWt, + new: newWt, + }); + } + } + + // Re-compose state with new scan + const newState = await this.composeWorkspaceState(workspace, mainBranch); + + // Reconcile: remove orphaned UI metadata (after grace period) + // For now, we'll keep orphaned metadata but mark it + // TODO: Implement grace period logic + + return { + added, + removed, + changed, + state: newState, + }; + } + + /** + * Initialize default UI state for a new worktree + */ + initializeWorktreeDefaults( + workspaceId: string, + worktreePath: string, + branch: string, + ): WorktreeUiMetadata { + // Create a default terminal tab + const defaultTab: WorktreeUiMetadata["tabs"][0] = { + id: randomUUID(), + name: "Terminal", + type: "terminal", + cwd: worktreePath, + createdAt: new Date().toISOString(), + }; + + return { + path: worktreePath, + branch, + tabs: [defaultTab], + activeTabId: defaultTab.id, + updatedAt: new Date().toISOString(), + }; + } +} diff --git a/apps/desktop/src/main/lib/workspace-composition/index.ts b/apps/desktop/src/main/lib/workspace-composition/index.ts new file mode 100644 index 00000000000..5e7cd189916 --- /dev/null +++ b/apps/desktop/src/main/lib/workspace-composition/index.ts @@ -0,0 +1,2 @@ +export * from "./types"; +export * from "./composer"; diff --git a/apps/desktop/src/main/lib/workspace-composition/types.ts b/apps/desktop/src/main/lib/workspace-composition/types.ts new file mode 100644 index 00000000000..5d8728a6b00 --- /dev/null +++ b/apps/desktop/src/main/lib/workspace-composition/types.ts @@ -0,0 +1,54 @@ +import type { LocalWorkspace } from "../types/cli-types"; +import type { WorktreeInfo } from "../worktree-manager"; +import type { WorktreeUiMetadata } from "../ui-store/types"; + +/** + * Scanned worktree with Git information + */ +export interface ScannedWorktree extends WorktreeInfo { + /** Current branch (may differ from WorktreeInfo.branch) */ + currentBranch: string; + /** Whether this branch has been merged into main */ + merged?: boolean; +} + +/** + * Composed worktree - Git scan + UI metadata + */ +export interface ComposedWorktree extends ScannedWorktree { + /** UI metadata merged from persistence */ + ui: WorktreeUiMetadata; +} + +/** + * Composed workspace state + * Domain workspace + scanned worktrees + UI state + */ +export interface ComposedWorkspaceState { + /** Domain workspace (LocalWorkspace) */ + workspace: LocalWorkspace; + /** Scanned worktrees from Git merged with UI metadata */ + worktrees: ComposedWorktree[]; + /** UI state */ + ui: { + activeWorktreePath: string | null; + activeTabId: string | null; + }; +} + +/** + * Rescan result showing what changed + */ +export interface RescanResult { + /** New worktrees detected */ + added: ScannedWorktree[]; + /** Worktrees that no longer exist */ + removed: ScannedWorktree[]; + /** Worktrees that changed (branch, path, etc.) */ + changed: Array<{ + old: ScannedWorktree; + new: ScannedWorktree; + }>; + /** Composed state after rescan */ + state: ComposedWorkspaceState; +} diff --git a/apps/desktop/src/main/lib/workspace-ipcs.ts b/apps/desktop/src/main/lib/workspace-ipcs.ts index 4f44ca803f8..e00cc226bef 100644 --- a/apps/desktop/src/main/lib/workspace-ipcs.ts +++ b/apps/desktop/src/main/lib/workspace-ipcs.ts @@ -627,7 +627,9 @@ export function registerWorkspaceIPCs() { // Detect main branch instead of using workspace.branch // This ensures we compare against main/master, not a feature branch - const mainBranch = await worktreeManager.detectMainBranch(workspace.repoPath); + const mainBranch = await worktreeManager.detectMainBranch( + workspace.repoPath, + ); return await worktreeManager.getGitDiffFile( worktree.path, @@ -771,4 +773,153 @@ export function registerWorkspaceIPCs() { }; } }); + + // New architecture: Workspace activation + ipcMain.handle( + "workspace-activate", + async (_event, input: { workspaceId: string }) => { + try { + const { desktopStores } = await import("./desktop-stores"); + const { workspaceRescanManager } = await import("./workspace-rescan"); + const workspaceOrch = desktopStores.getWorkspaceOrchestrator(); + const composer = desktopStores.getComposer(); + + // Get domain workspace + const workspace = await workspaceOrch.get(input.workspaceId); + if (workspace.type !== "local") { + return { + success: false, + error: "Only local workspaces are supported", + }; + } + + // Detect main branch + const worktreeManager = (await import("./worktree-manager")).default; + const mainBranch = await worktreeManager.detectMainBranch( + workspace.path, + ); + + // Compose workspace state + const composed = await composer.composeWorkspaceState( + workspace, + mainBranch, + ); + + // Start periodic rescan for this workspace (5 minute interval) + workspaceRescanManager.startPeriodicRescan(input.workspaceId); + + return { + success: true, + data: { + workspace: { + id: workspace.id, + type: workspace.type, + environmentId: workspace.environmentId, + path: workspace.path, + }, + worktrees: composed.worktrees.map((wt) => ({ + path: wt.path, + branch: wt.branch, + currentBranch: wt.currentBranch, + bare: wt.bare, + merged: wt.merged, + ui: { + path: wt.ui.path, + branch: wt.ui.branch, + description: wt.ui.description, + prUrl: wt.ui.prUrl, + merged: wt.ui.merged, + tabs: wt.ui.tabs, + mosaicTree: wt.ui.mosaicTree, + activeTabId: wt.ui.activeTabId, + updatedAt: wt.ui.updatedAt, + }, + })), + ui: composed.ui, + }, + }; + } catch (error) { + console.error("[WorkspaceIPC] Error activating workspace:", error); + return { + success: false, + error: error instanceof Error ? error.message : "Unknown error", + }; + } + }, + ); + + // New architecture: Workspace rescan + ipcMain.handle( + "workspace-rescan", + async (_event, input: { workspaceId: string }) => { + try { + const { desktopStores } = await import("./desktop-stores"); + const workspaceOrch = desktopStores.getWorkspaceOrchestrator(); + const composer = desktopStores.getComposer(); + + // Get domain workspace + const workspace = await workspaceOrch.get(input.workspaceId); + if (workspace.type !== "local") { + return { + success: false, + error: "Only local workspaces are supported", + }; + } + + // Detect main branch + const worktreeManager = (await import("./worktree-manager")).default; + const mainBranch = await worktreeManager.detectMainBranch( + workspace.path, + ); + + // Rescan workspace + const rescanResult = await composer.rescanWorkspace( + workspace, + mainBranch, + ); + + return { + success: true, + data: { + added: rescanResult.added, + removed: rescanResult.removed, + changed: rescanResult.changed, + state: { + workspace: { + id: workspace.id, + type: workspace.type, + environmentId: workspace.environmentId, + path: workspace.path, + }, + worktrees: rescanResult.state.worktrees.map((wt) => ({ + path: wt.path, + branch: wt.branch, + currentBranch: wt.currentBranch, + bare: wt.bare, + merged: wt.merged, + ui: { + path: wt.ui.path, + branch: wt.ui.branch, + description: wt.ui.description, + prUrl: wt.ui.prUrl, + merged: wt.ui.merged, + tabs: wt.ui.tabs, + mosaicTree: wt.ui.mosaicTree, + activeTabId: wt.ui.activeTabId, + updatedAt: wt.ui.updatedAt, + }, + })), + ui: rescanResult.state.ui, + }, + }, + }; + } catch (error) { + console.error("[WorkspaceIPC] Error rescanning workspace:", error); + return { + success: false, + error: error instanceof Error ? error.message : "Unknown error", + }; + } + }, + ); } diff --git a/apps/desktop/src/main/lib/workspace-rescan.ts b/apps/desktop/src/main/lib/workspace-rescan.ts new file mode 100644 index 00000000000..f0634ef70a9 --- /dev/null +++ b/apps/desktop/src/main/lib/workspace-rescan.ts @@ -0,0 +1,134 @@ +import { desktopStores } from "./desktop-stores"; +import worktreeManager from "./worktree-manager"; + +/** + * Periodic rescan manager for workspaces + * Handles background rescans and reconciliation + */ +export class WorkspaceRescanManager { + private rescanIntervals: Map = new Map(); + private readonly DEFAULT_INTERVAL_MS = 5 * 60 * 1000; // 5 minutes + + /** + * Start periodic rescan for a workspace + */ + startPeriodicRescan( + workspaceId: string, + intervalMs: number = this.DEFAULT_INTERVAL_MS, + ): void { + // Stop existing rescan if any + this.stopPeriodicRescan(workspaceId); + + // Start new interval + const interval = setInterval(async () => { + await this.rescanWorkspace(workspaceId); + }, intervalMs); + + this.rescanIntervals.set(workspaceId, interval); + console.log( + `[RescanManager] Started periodic rescan for workspace ${workspaceId} (interval: ${intervalMs}ms)`, + ); + } + + /** + * Stop periodic rescan for a workspace + */ + stopPeriodicRescan(workspaceId: string): void { + const interval = this.rescanIntervals.get(workspaceId); + if (interval) { + clearInterval(interval); + this.rescanIntervals.delete(workspaceId); + console.log( + `[RescanManager] Stopped periodic rescan for workspace ${workspaceId}`, + ); + } + } + + /** + * Rescan a workspace and reconcile UI metadata + */ + async rescanWorkspace(workspaceId: string): Promise { + try { + const workspaceOrch = desktopStores.getWorkspaceOrchestrator(); + const composer = desktopStores.getComposer(); + const uiStore = desktopStores.getUiStore(); + + // Get domain workspace + const workspace = await workspaceOrch.get(workspaceId); + if (workspace.type !== "local") { + return; + } + + // Detect main branch + const mainBranch = await worktreeManager.detectMainBranch(workspace.path); + + // Perform rescan + const rescanResult = await composer.rescanWorkspace( + workspace, + mainBranch, + ); + + // Log changes + if ( + rescanResult.added.length > 0 || + rescanResult.removed.length > 0 || + rescanResult.changed.length > 0 + ) { + console.log( + `[RescanManager] Workspace ${workspaceId} changes:`, + `+${rescanResult.added.length}`, + `-${rescanResult.removed.length}`, + `~${rescanResult.changed.length}`, + ); + } + + // Reconcile: Update UI metadata for new/changed worktrees + for (const newWt of rescanResult.added) { + // Initialize defaults for new worktrees + const defaults = composer.initializeWorktreeDefaults( + workspaceId, + newWt.path, + newWt.currentBranch, + ); + uiStore.updateWorktreeMetadata(workspaceId, newWt.path, defaults); + } + + // Update changed worktrees (preserve UI metadata, update Git-derived fields) + for (const change of rescanResult.changed) { + const existingUi = + uiStore.readWorkspaceUiState(workspaceId)?.worktrees[change.new.path]; + if (existingUi) { + uiStore.updateWorktreeMetadata(workspaceId, change.new.path, { + branch: change.new.currentBranch, + merged: change.new.merged, + }); + } + } + + // Handle removed worktrees (orphaned UI metadata) + // For now, we keep orphaned metadata but mark it + // TODO: Implement grace period logic to remove after a delay + for (const removedWt of rescanResult.removed) { + console.log( + `[RescanManager] Worktree removed: ${removedWt.path} (UI metadata preserved)`, + ); + } + } catch (error) { + console.error( + `[RescanManager] Error rescanning workspace ${workspaceId}:`, + error, + ); + } + } + + /** + * Stop all periodic rescans + */ + stopAll(): void { + for (const workspaceId of this.rescanIntervals.keys()) { + this.stopPeriodicRescan(workspaceId); + } + } +} + +export const workspaceRescanManager = new WorkspaceRescanManager(); diff --git a/apps/desktop/src/main/lib/worktree-manager.ts b/apps/desktop/src/main/lib/worktree-manager.ts index 1df6166e1a3..9fcdb203cd9 100644 --- a/apps/desktop/src/main/lib/worktree-manager.ts +++ b/apps/desktop/src/main/lib/worktree-manager.ts @@ -854,7 +854,10 @@ class WorktreeManager { const oldPath = parts[2]; // For renamed files // Check if file should be excluded - if (this.shouldExcludeFile(filePath) || (oldPath && this.shouldExcludeFile(oldPath))) { + if ( + this.shouldExcludeFile(filePath) || + (oldPath && this.shouldExcludeFile(oldPath)) + ) { continue; } diff --git a/apps/desktop/src/renderer/contexts/AppProviders.tsx b/apps/desktop/src/renderer/contexts/AppProviders.tsx index fee2124f14f..120a74b2e50 100644 --- a/apps/desktop/src/renderer/contexts/AppProviders.tsx +++ b/apps/desktop/src/renderer/contexts/AppProviders.tsx @@ -15,7 +15,9 @@ interface AppProvidersProps { export function AppProviders({ children }: AppProvidersProps) { // Tab selection state needs to be lifted to AppProviders level // so WorkspaceProvider can use it - const [selectedWorktreeId, setSelectedWorktreeId] = useState(null); + const [selectedWorktreeId, setSelectedWorktreeId] = useState( + null, + ); const [selectedTabId, setSelectedTabId] = useState(null); return ( @@ -38,4 +40,3 @@ export function AppProviders({ children }: AppProvidersProps) { ); } - diff --git a/apps/desktop/src/renderer/contexts/SidebarContext.tsx b/apps/desktop/src/renderer/contexts/SidebarContext.tsx index 087e9a92873..da81e60268d 100644 --- a/apps/desktop/src/renderer/contexts/SidebarContext.tsx +++ b/apps/desktop/src/renderer/contexts/SidebarContext.tsx @@ -38,4 +38,3 @@ export function useSidebarContext() { } return context; } - diff --git a/apps/desktop/src/renderer/contexts/TabContext.tsx b/apps/desktop/src/renderer/contexts/TabContext.tsx index 11f25deab64..8559998b514 100644 --- a/apps/desktop/src/renderer/contexts/TabContext.tsx +++ b/apps/desktop/src/renderer/contexts/TabContext.tsx @@ -45,11 +45,7 @@ export function TabProvider({ setSelectedTabId, }); - return ( - - {children} - - ); + return {children}; } export function useTabContext() { @@ -59,4 +55,3 @@ export function useTabContext() { } return context; } - diff --git a/apps/desktop/src/renderer/contexts/TaskContext.tsx b/apps/desktop/src/renderer/contexts/TaskContext.tsx index 8b419f20fdd..faf90dc0dc1 100644 --- a/apps/desktop/src/renderer/contexts/TaskContext.tsx +++ b/apps/desktop/src/renderer/contexts/TaskContext.tsx @@ -50,9 +50,7 @@ export function TaskProvider({ children }: TaskProviderProps) { }); return ( - - {children} - + {children} ); } @@ -63,4 +61,3 @@ export function useTaskContext() { } return context; } - diff --git a/apps/desktop/src/renderer/contexts/WorkspaceContext.tsx b/apps/desktop/src/renderer/contexts/WorkspaceContext.tsx index acc634b050d..e5372d72a75 100644 --- a/apps/desktop/src/renderer/contexts/WorkspaceContext.tsx +++ b/apps/desktop/src/renderer/contexts/WorkspaceContext.tsx @@ -4,53 +4,53 @@ import type { Workspace } from "shared/types"; import { useWorkspace } from "../screens/main/hooks"; interface WorkspaceContextValue { - workspaces: Workspace[] | null; - currentWorkspace: Workspace | null; - setCurrentWorkspace: React.Dispatch>; - setWorkspaces: React.Dispatch>; - loading: boolean; - error: string | null; - showWorkspaceSelection: boolean; - setShowWorkspaceSelection: React.Dispatch>; - loadAllWorkspaces: () => Promise; - handleWorkspaceSelect: (workspaceId: string) => Promise; - handleWorkspaceSelectFromModal: (workspaceId: string) => Promise; - handleCreateWorkspaceFromModal: () => Promise; + workspaces: Workspace[] | null; + currentWorkspace: Workspace | null; + setCurrentWorkspace: React.Dispatch>; + setWorkspaces: React.Dispatch>; + loading: boolean; + error: string | null; + showWorkspaceSelection: boolean; + setShowWorkspaceSelection: React.Dispatch>; + loadAllWorkspaces: () => Promise; + handleWorkspaceSelect: (workspaceId: string) => Promise; + handleWorkspaceSelectFromModal: (workspaceId: string) => Promise; + handleCreateWorkspaceFromModal: () => Promise; } const WorkspaceContext = createContext( - undefined, + undefined, ); interface WorkspaceProviderProps { - children: React.ReactNode; - setSelectedWorktreeId?: (id: string | null) => void; - setSelectedTabId?: (id: string | null) => void; + children: React.ReactNode; + setSelectedWorktreeId?: (id: string | null) => void; + setSelectedTabId?: (id: string | null) => void; } export function WorkspaceProvider({ - children, - setSelectedWorktreeId, - setSelectedTabId, + children, + setSelectedWorktreeId, + setSelectedTabId, }: WorkspaceProviderProps) { - const workspaceData = useWorkspace({ - setSelectedWorktreeId, - setSelectedTabId, - }); + const workspaceData = useWorkspace({ + setSelectedWorktreeId, + setSelectedTabId, + }); - return ( - - {children} - - ); + return ( + + {children} + + ); } export function useWorkspaceContext() { - const context = useContext(WorkspaceContext); - if (context === undefined) { - throw new Error( - "useWorkspaceContext must be used within a WorkspaceProvider", - ); - } - return context; + const context = useContext(WorkspaceContext); + if (context === undefined) { + throw new Error( + "useWorkspaceContext must be used within a WorkspaceProvider", + ); + } + return context; } diff --git a/apps/desktop/src/renderer/contexts/WorktreeOperationsContext.tsx b/apps/desktop/src/renderer/contexts/WorktreeOperationsContext.tsx index 99769fa6d29..a41f814de5f 100644 --- a/apps/desktop/src/renderer/contexts/WorktreeOperationsContext.tsx +++ b/apps/desktop/src/renderer/contexts/WorktreeOperationsContext.tsx @@ -7,24 +7,35 @@ import { useTabContext } from "./TabContext"; interface WorktreeOperationsContextValue { handleWorktreeCreated: () => Promise; - handleWorktreeCreatedWithResult: () => Promise<{ id: string; worktrees?: Worktree[] } | null>; + handleWorktreeCreatedWithResult: () => Promise<{ + id: string; + worktrees?: Worktree[]; + } | null>; handleUpdateWorktree: (worktreeId: string, updatedWorktree: Worktree) => void; handleCreatePR: (selectedWorktreeId: string | null) => Promise; handleMergePR: (selectedWorktreeId: string | null) => Promise; handleDeleteWorktree: (worktreeId: string) => Promise; } -const WorktreeOperationsContext = createContext( - undefined, -); +const WorktreeOperationsContext = createContext< + WorktreeOperationsContextValue | undefined +>(undefined); interface WorktreeOperationsProviderProps { children: React.ReactNode; } -export function WorktreeOperationsProvider({ children }: WorktreeOperationsProviderProps) { - const { currentWorkspace, setCurrentWorkspace, setWorkspaces, loadAllWorkspaces } = useWorkspaceContext(); - const { selectedWorktreeId, setSelectedWorktreeId, setSelectedTabId } = useTabContext(); +export function WorktreeOperationsProvider({ + children, +}: WorktreeOperationsProviderProps) { + const { + currentWorkspace, + setCurrentWorkspace, + setWorkspaces, + loadAllWorkspaces, + } = useWorkspaceContext(); + const { selectedWorktreeId, setSelectedWorktreeId, setSelectedTabId } = + useTabContext(); const worktreeOperations = useWorktrees({ currentWorkspace, @@ -46,8 +57,9 @@ export function WorktreeOperationsProvider({ children }: WorktreeOperationsProvi export function useWorktreeOperationsContext() { const context = useContext(WorktreeOperationsContext); if (context === undefined) { - throw new Error("useWorktreeOperationsContext must be used within a WorktreeOperationsProvider"); + throw new Error( + "useWorktreeOperationsContext must be used within a WorktreeOperationsProvider", + ); } return context; } - diff --git a/apps/desktop/src/renderer/contexts/index.ts b/apps/desktop/src/renderer/contexts/index.ts index 42bd7c03468..c70a05fd1e8 100644 --- a/apps/desktop/src/renderer/contexts/index.ts +++ b/apps/desktop/src/renderer/contexts/index.ts @@ -2,7 +2,9 @@ export { AppProviders } from "./AppProviders"; export { WorkspaceProvider, useWorkspaceContext } from "./WorkspaceContext"; export { TabProvider, useTabContext } from "./TabContext"; export { SidebarProvider, useSidebarContext } from "./SidebarContext"; -export { WorktreeOperationsProvider, useWorktreeOperationsContext } from "./WorktreeOperationsContext"; +export { + WorktreeOperationsProvider, + useWorktreeOperationsContext, +} from "./WorktreeOperationsContext"; export { TaskProvider, useTaskContext } from "./TaskContext"; export { WorktreeProvider, useWorktree } from "./WorktreeContext"; - diff --git a/apps/desktop/src/renderer/lib/dnd.ts b/apps/desktop/src/renderer/lib/dnd.ts new file mode 100644 index 00000000000..b7433dfe2a5 --- /dev/null +++ b/apps/desktop/src/renderer/lib/dnd.ts @@ -0,0 +1,5 @@ +import { createDragDropManager } from "dnd-core"; +import { HTML5Backend } from "react-dnd-html5-backend"; + +// Single, shared DragDropManager for the entire renderer +export const dragDropManager = createDragDropManager(HTML5Backend); diff --git a/apps/desktop/src/renderer/screens/main/MainScreen.tsx b/apps/desktop/src/renderer/screens/main/MainScreen.tsx index 642199cd6a8..b5fae125c36 100644 --- a/apps/desktop/src/renderer/screens/main/MainScreen.tsx +++ b/apps/desktop/src/renderer/screens/main/MainScreen.tsx @@ -1,6 +1,6 @@ import { useState, useEffect } from "react"; import { DndProvider } from "react-dnd"; -import { HTML5Backend } from "react-dnd-html5-backend"; +import { dragDropManager } from "../../lib/dnd"; import { AppFrame } from "./components/AppFrame"; import { Background } from "./components/Background"; import { AddTaskModal } from "./components/Layout/AddTaskModal"; @@ -134,7 +134,7 @@ export function MainScreen() { }, [selectedTab, currentWorkspace, selectedWorktreeId]); return ( - + {/* Hover trigger area when sidebar is hidden */} diff --git a/apps/desktop/src/renderer/screens/main/components/AppFrame/AppFrame.tsx b/apps/desktop/src/renderer/screens/main/components/AppFrame/AppFrame.tsx index b31079f13bb..5bce819bb7c 100644 --- a/apps/desktop/src/renderer/screens/main/components/AppFrame/AppFrame.tsx +++ b/apps/desktop/src/renderer/screens/main/components/AppFrame/AppFrame.tsx @@ -3,9 +3,5 @@ interface AppFrameProps { } export function AppFrame({ children }: AppFrameProps) { - return ( -
- {children} -
- ); + return
{children}
; } diff --git a/apps/desktop/src/renderer/screens/main/components/DiffView/DiffContent.tsx b/apps/desktop/src/renderer/screens/main/components/DiffView/DiffContent.tsx index 83efbc0a4e9..16e81d0186e 100644 --- a/apps/desktop/src/renderer/screens/main/components/DiffView/DiffContent.tsx +++ b/apps/desktop/src/renderer/screens/main/components/DiffView/DiffContent.tsx @@ -155,14 +155,15 @@ export const DiffContent = memo(function DiffContent({ )} {file.status} diff --git a/apps/desktop/src/renderer/screens/main/components/DiffView/DiffContentArea.tsx b/apps/desktop/src/renderer/screens/main/components/DiffView/DiffContentArea.tsx index 56c41c6749f..678bba98b74 100644 --- a/apps/desktop/src/renderer/screens/main/components/DiffView/DiffContentArea.tsx +++ b/apps/desktop/src/renderer/screens/main/components/DiffView/DiffContentArea.tsx @@ -49,21 +49,31 @@ export function DiffContentArea({ // Load selected file immediately useEffect(() => { - if (selectedFile && loadFileContent && !loadedFiles.has(selectedFile) && !loadingFiles.has(selectedFile)) { + if ( + selectedFile && + loadFileContent && + !loadedFiles.has(selectedFile) && + !loadingFiles.has(selectedFile) + ) { loadFileContent(selectedFile); } }, [selectedFile, loadFileContent, loadedFiles, loadingFiles]); // Use intersection observer to load files when they come into view useEffect(() => { - if (viewMode !== "files" || !scrollContainerRef.current || !loadFileContent) return; + if (viewMode !== "files" || !scrollContainerRef.current || !loadFileContent) + return; const observer = new IntersectionObserver( (entries) => { for (const entry of entries) { if (entry.isIntersecting) { const fileId = entry.target.id.replace("file-diff-", ""); - if (fileId && !loadedFilesRef.current.has(fileId) && !loadingFilesRef.current.has(fileId)) { + if ( + fileId && + !loadedFilesRef.current.has(fileId) && + !loadingFilesRef.current.has(fileId) + ) { loadFileContentRef.current?.(fileId); } } @@ -361,4 +371,3 @@ export function DiffContentArea({ ); } - diff --git a/apps/desktop/src/renderer/screens/main/components/Layout/AddTaskModal.tsx b/apps/desktop/src/renderer/screens/main/components/Layout/AddTaskModal.tsx index bf3b1a4b5a1..09505c8dc0e 100644 --- a/apps/desktop/src/renderer/screens/main/components/Layout/AddTaskModal.tsx +++ b/apps/desktop/src/renderer/screens/main/components/Layout/AddTaskModal.tsx @@ -34,12 +34,12 @@ export const AddTaskModal: React.FC = ({ const [searchQuery, setSearchQuery] = useState(""); const [selectedTaskId, setSelectedTaskId] = useState(null); - const { tasks, isLoadingTasks, tasksError, refetch: refetchTasks } = useTaskData( - isOpen, - mode, - currentWorkspaceId ?? null, - worktrees, - ); + const { + tasks, + isLoadingTasks, + tasksError, + refetch: refetchTasks, + } = useTaskData(isOpen, mode, currentWorkspaceId ?? null, worktrees); const formState = useTaskForm(isOpen, mode, branches, worktrees); @@ -231,7 +231,7 @@ export const AddTaskModal: React.FC = ({ ) : ( <> {/* Show creating view when creating or when there's a status */} - {(isCreating || setupStatus) ? ( + {isCreating || setupStatus ? ( = ({ sourceBranch={formState.sourceBranch} onSourceBranchChange={formState.setSourceBranch} cloneTabsFromWorktreeId={formState.cloneTabsFromWorktreeId} - onCloneTabsFromWorktreeIdChange={formState.setCloneTabsFromWorktreeId} + onCloneTabsFromWorktreeIdChange={ + formState.setCloneTabsFromWorktreeId + } branches={branches} worktrees={worktrees} onSubmit={handleCreateTask} diff --git a/apps/desktop/src/renderer/screens/main/components/Layout/AddTaskModal/CreatingView.tsx b/apps/desktop/src/renderer/screens/main/components/Layout/AddTaskModal/CreatingView.tsx index 84d9f5a44a4..ddc0a1f4675 100644 --- a/apps/desktop/src/renderer/screens/main/components/Layout/AddTaskModal/CreatingView.tsx +++ b/apps/desktop/src/renderer/screens/main/components/Layout/AddTaskModal/CreatingView.tsx @@ -13,7 +13,7 @@ interface CreatingViewProps { function getStatusType(status?: string): "error" | "success" | "creating" { if (!status) return "creating"; - + const lowerStatus = status.toLowerCase(); if (lowerStatus.includes("failed") || lowerStatus.includes("error")) { return "error"; @@ -103,4 +103,3 @@ export const CreatingView: React.FC = ({ ); }; - diff --git a/apps/desktop/src/renderer/screens/main/components/Layout/AddTaskModal/TaskForm.tsx b/apps/desktop/src/renderer/screens/main/components/Layout/AddTaskModal/TaskForm.tsx index 07e46b6d640..845f469e5c5 100644 --- a/apps/desktop/src/renderer/screens/main/components/Layout/AddTaskModal/TaskForm.tsx +++ b/apps/desktop/src/renderer/screens/main/components/Layout/AddTaskModal/TaskForm.tsx @@ -80,7 +80,9 @@ export const TaskForm: React.FC = ({