@seedprotocol/sdk 0.2.40 → 0.2.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{Db-cdob2mux.js → Db-DFKHN8CX.js} +2 -2
- package/dist/{Db-cdob2mux.js.map → Db-DFKHN8CX.js.map} +1 -1
- package/dist/{Db-COy1_9em.js → Db-LQf3Azt5.js} +2 -2
- package/dist/{Db-COy1_9em.js.map → Db-LQf3Azt5.js.map} +1 -1
- package/dist/{Item-BJdhhsnY.js → Item-BixSOZAD.js} +2 -2
- package/dist/{Item-BJdhhsnY.js.map → Item-BixSOZAD.js.map} +1 -1
- package/dist/{ItemProperty-Cbavs-Gr.js → ItemProperty-DpGkb0Zb.js} +2 -2
- package/dist/{ItemProperty-Cbavs-Gr.js.map → ItemProperty-DpGkb0Zb.js.map} +1 -1
- package/dist/content-hash.js +27 -0
- package/dist/content-hash.js.map +1 -0
- package/dist/{index-CLRsROC5.js → index-DV2gvrCh.js} +2 -2
- package/dist/index-DV2gvrCh.js.map +1 -0
- package/dist/{index-BQZuIXkR.js → index-sqKT92c8.js} +11 -115
- package/dist/index-sqKT92c8.js.map +1 -0
- package/dist/main.js +1 -1
- package/dist/{seed.schema.config-C-b4V7VY.js → seed.schema.config-Ct1bu0Yc.js} +2 -2
- package/dist/{seed.schema.config-C-b4V7VY.js.map → seed.schema.config-Ct1bu0Yc.js.map} +1 -1
- package/dist/src/content-hash.ts +30 -0
- package/dist/types/__tests__/__mocks__/browser/project/schema.d.ts +52 -0
- package/dist/types/__tests__/__mocks__/browser/project/schema.d.ts.map +1 -0
- package/dist/types/__tests__/__mocks__/node/schema.d.ts +52 -0
- package/dist/types/__tests__/__mocks__/node/schema.d.ts.map +1 -0
- package/dist/types/__tests__/browser/db/drizzle.test.d.ts +2 -0
- package/dist/types/__tests__/browser/db/drizzle.test.d.ts.map +1 -0
- package/dist/types/__tests__/browser/property/propertyMachine.test.d.ts +2 -0
- package/dist/types/__tests__/browser/property/propertyMachine.test.d.ts.map +1 -0
- package/dist/types/__tests__/browser/react/index.test.d.ts +2 -0
- package/dist/types/__tests__/browser/react/index.test.d.ts.map +1 -0
- package/dist/types/__tests__/dist/exports.test.d.ts +2 -0
- package/dist/types/__tests__/dist/exports.test.d.ts.map +1 -0
- package/dist/types/__tests__/fs/index.test.d.ts +2 -0
- package/dist/types/__tests__/fs/index.test.d.ts.map +1 -0
- package/dist/types/__tests__/index.test.d.ts +2 -0
- package/dist/types/__tests__/index.test.d.ts.map +1 -0
- package/dist/types/__tests__/node/Item/Item.test.d.ts +2 -0
- package/dist/types/__tests__/node/Item/Item.test.d.ts.map +1 -0
- package/dist/types/__tests__/node/setup.d.ts +2 -0
- package/dist/types/__tests__/node/setup.d.ts.map +1 -0
- package/dist/types/__tests__/scripts/bin.test.d.ts +2 -0
- package/dist/types/__tests__/scripts/bin.test.d.ts.map +1 -0
- package/dist/types/__tests__/setup.d.ts +2 -0
- package/dist/types/__tests__/setup.d.ts.map +1 -0
- package/dist/types/src/events/files/index.d.ts.map +1 -1
- package/dist/types/src/workers/content-hash.d.ts +2 -0
- package/dist/types/src/workers/content-hash.d.ts.map +1 -0
- package/package.json +1 -1
- package/dist/index-BQZuIXkR.js.map +0 -1
- package/dist/index-CLRsROC5.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-BQZuIXkR.js","sources":["../../src/schema/property/index.ts","../../src/helpers/environment.ts","../../src/Item/index.ts","../../src/schema/model/index.ts","../../src/ItemProperty/index.ts","../../src/db/Db/index.ts","../../src/eventBus.ts","../../src/stores/modelClass.ts","../../src/helpers/index.ts","../../src/seedSchema/SeedSchema.ts","../../src/seedSchema/VersionSchema.ts","../../src/seedSchema/MetadataSchema.ts","../../src/seedSchema/AppStateSchema.ts","../../src/seedSchema/ConfigSchema.ts","../../src/seedSchema/ModelSchema.ts","../../src/seedSchema/ModelUidSchema.ts","../../src/seedSchema/PropertyUidSchema.ts","../../src/db/Db/BaseDb.ts","../../src/graphql/gql/graphql.ts","../../src/graphql/gql/gql.ts","../../src/Item/queries.ts","../../src/db/read/getSchemaUidForModel.ts","../../src/db/write/createSeed.ts","../../src/db/write/createVersion.ts","../../src/db/write/createMetadata.ts","../../src/db/write/createNewItem.ts","../../src/Item/service/actors/waitForDb.ts","../../src/db/read/getExistingItem.ts","../../src/Item/service/actors/initialize.ts","../../src/helpers/db.ts","../../src/db/read/getModelSchemas.ts","../../src/db/write/createSeeds.ts","../../src/helpers/getSchemaForItemProperty.ts","../../src/stores/eas.ts","../../src/events/item/syncDbWithEas.ts","../../src/services/global/actors/initialize.ts","../../src/services/global/actors/getSchemaForModel.ts","../../src/services/global/actors/addModelsToDb.ts","../../src/services/db/actors/checkStatus.ts","../../src/services/db/actors/connectToDb.ts","../../src/services/db/actors/validate.ts","../../src/helpers/files.ts","../../src/services/db/actors/migrate.ts","../../src/services/db/dbMachine.ts","../../src/services/internal/actors/validateInput.ts","../../src/services/internal/actors/prepareDb.ts","../../src/services/internal/helpers.ts","../../src/schema/file/queries.ts","../../src/db/read/getMetadata.ts","../../src/db/write/saveMetadata.ts","../../src/helpers/ArweaveClient/queries.ts","../../src/db/write/saveAppState.ts","../../src/helpers/ArweaveClient/index.ts","../../src/events/files/download.ts","../../src/events/files/index.ts","../../src/services/internal/actors/configureFs.ts","../../src/services/internal/actors/saveConfig.ts","../../src/services/internal/actors/loadAppDb.ts","../../src/services/internal/internalMachine.ts","../../src/services/allItems/actors/initialize.ts","../../src/services/allItems/actors/fetchDbData.ts","../../src/services/allItems/actors/fetchSeeds.ts","../../src/services/allItems/actors/fetchVersions.ts","../../src/services/allItems/actors/fetchRelatedItems.ts","../../src/services/allItems/actors/processItems.ts","../../src/services/allItems/itemMachineAll.ts","../../src/services/publish/actors/validateItemData.ts","../../src/services/publish/actors/createPublishAttempt.ts","../../src/helpers/updateMachineContext.ts","../../src/services/publish/actors/preparePublishRequestData.ts","../../src/services/publish/actors/upload.ts","../../src/services/publish/publishMachine.ts","../../src/services/global/actors/savePublishService.ts","../../src/services/global/globalMachine.ts","../../src/events/item/publish.ts","../../src/events/item/index.ts","../../src/events/index.ts","../../src/Item/service/actors/hydrateExistingItem.ts","../../src/Item/service/actors/hydrateNewItem.ts","../../src/Item/service/actors/fetchDataFromEas.ts","../../src/Item/service/actors/reload.ts","../../src/Item/service/itemMachineSingle.ts","../../src/db/read/getItemProperties.ts","../../src/db/read/subqueries/versionData.ts","../../src/db/read/getSeedData.ts","../../src/db/read/getItemData.ts","../../src/db/read/getItems.ts","../../src/ItemProperty/service/actors/resolveRemoteStorage.ts","../../src/ItemProperty/service/actors/waitForDb.ts","../../src/ItemProperty/service/actors/initialize.ts","../../src/db/read/getStorageTransactionIdForSeedUid.ts","../../src/db/read/getRelationValueData.ts","../../src/ItemProperty/service/actors/resolveRelatedValue.ts","../../src/db/write/updateMetadata.ts","../../src/ItemProperty/service/actors/hydrateFromDb.ts","../../src/db/read/getVersionData.ts","../../src/db/write/updateItemPropertyValue.ts","../../src/ItemProperty/service/actors/saveValueToDb/analyzeInput.ts","../../src/ItemProperty/service/actors/saveValueToDb/saveImageSrc.ts","../../src/ItemProperty/service/actors/saveValueToDb/saveRelation.ts","../../src/db/read/getItemProperty.ts","../../src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.ts","../../src/ItemProperty/service/propertyMachine.ts","../../src/db/read/getPropertyData.ts","../../src/ItemProperty/BaseItemProperty.ts","../../src/helpers/getSegmentedItemProperties.ts","../../src/db/read/getPublishUploads.ts","../../src/db/read/getItem.ts","../../src/db/read/getPublishPayload.ts","../../src/Item/BaseItem.ts","../../src/browser/Item/Item.ts","../../src/browser/react/services.ts","../../src/browser/react/item.ts","../../src/browser/ItemProperty/ItemProperty.ts","../../src/browser/react/property.ts","../../src/browser/react/db.ts","../../src/db/write/deleteItem.ts","../../src/browser/react/trash.ts","../../src/browser/index.ts","../../src/node/webpack/index.ts","../../src/services/events.ts","../../src/events/services/allItems.ts","../../src/events/services/index.ts","../../src/helpers/EasClient/index.ts","../../src/helpers/QueryClient/index.ts","../../src/helpers/FileManager/index.ts","../../src/client.ts","../../src/index.ts"],"sourcesContent":["import { Static, Type } from '@sinclair/typebox'\nimport { PropertyDataType, PropertyDefs, StorageType } from '@/types'\n\nexport const TPropertyDataType = Type.Union([\n Type.Literal('Text'),\n Type.Literal('Number'),\n Type.Literal('List'),\n Type.Literal('Relation'),\n Type.Literal('ImageSrc'),\n Type.Literal('FileSrc'),\n Type.Literal('Json'),\n Type.Literal('Blob'),\n])\n\nexport const TStorageType = Type.Union([\n Type.Literal('ItemStorage'), // Looks for a storageTransactionId property on the item\n Type.Literal('PropertyStorage'), // Looks for a storageTransactionId value on the property\n])\n\nexport const TProperty = Type.Object({\n id: Type.Optional(Type.Number()),\n name: Type.Optional(Type.String()),\n dataType: TPropertyDataType,\n ref: Type.Optional(Type.String()),\n modelId: Type.Optional(Type.Number()),\n refModelId: Type.Optional(Type.Number()),\n refValueType: Type.Optional(TPropertyDataType),\n storageType: Type.Optional(TStorageType),\n localStorageDir: Type.Optional(Type.String()),\n filenameSuffix: Type.Optional(Type.String()),\n})\n\nexport const TPropertyConstructor = Type.Function(\n [\n Type.Optional(Type.Union([Type.String(), TStorageType, Type.Undefined()])),\n Type.Optional(Type.Union([Type.String(), TPropertyDataType])),\n Type.Optional(Type.String()),\n ],\n TProperty,\n)\n\nexport const TPropertyDefs = Type.Record(\n TPropertyDataType,\n TPropertyConstructor,\n)\n\nexport const Property: PropertyDefs = {\n Text: (\n storageType?: StorageType,\n localStorageDir?: string,\n filenameSuffix?: string,\n ) => ({\n dataType: 'Text',\n storageType,\n localStorageDir,\n filenameSuffix,\n TObject: Type.String(),\n }),\n Json: () => ({ dataType: 'Json' }),\n Blob: () => ({ dataType: 'Blob' }),\n Number: () => ({ dataType: 'Number' }),\n List: (ref: string, refValueType?: PropertyDataType) => ({\n dataType: 'List',\n ref,\n refValueType,\n }),\n Relation: (ref, refValueType?: PropertyDataType) => ({\n dataType: 'Relation',\n ref,\n refValueType,\n }),\n ImageSrc: () => ({ dataType: 'ImageSrc' }),\n}\n\nexport const PropertyMetadataKey = Symbol('property')\n\nexport const PropertyConstructor = (propertyType: Static<typeof TProperty>) => {\n return function (parentClassPrototype: any, propertyKey: string) {\n const existingProperties =\n Reflect.getMetadata(PropertyMetadataKey, parentClassPrototype) || []\n\n existingProperties.push({ propertyKey, propertyType })\n // console.log('existingProperties', existingProperties)\n // console.log('propertyKey', propertyKey)\n // console.log('propertyType', propertyType)\n // console.log('PropertyMetadataKey', PropertyMetadataKey)\n // console.log('typeof target', typeof target)\n Reflect.defineMetadata(\n PropertyMetadataKey,\n existingProperties,\n parentClassPrototype,\n )\n // console.log(\n // `After adding ${propertyKey}:`,\n // Reflect.getMetadata(PropertyMetadataKey, parentClassPrototype),\n // )\n }\n}\n\nexport const Text = (\n storageType?: StorageType,\n srcDir?: string,\n filenameSuffix?: string,\n) => PropertyConstructor(Property.Text(storageType, srcDir, filenameSuffix))\nexport const Number = () => PropertyConstructor(Property.Number())\nexport const Json = () => PropertyConstructor(Property.Json())\nexport const Blob = () => PropertyConstructor(Property.Blob())\nexport const ImageSrc = () => PropertyConstructor(Property.ImageSrc())\nexport const Relation = (ref: string, refValueType?: PropertyDataType) =>\n PropertyConstructor(Property.Relation(ref, refValueType)) // Adjust for actual relation type\nexport const List = (ref: string, reValueType?: PropertyDataType) =>\n PropertyConstructor(Property.List(ref, reValueType)) // Adjust for actual list type","export const isNode = (): boolean => {\n return (\n typeof process !== 'undefined' &&\n process.versions != null &&\n process.versions.node != null\n )\n}\n\nexport const isBrowser = (): boolean => {\n return !isElectron() && typeof window !== 'undefined' && typeof window.document !== 'undefined'\n}\n\nexport const isReactNative = (): boolean => {\n return typeof navigator !== 'undefined' && navigator.product === 'ReactNative'\n}\n\nexport const isElectron = (): boolean => {\n return typeof process !== 'undefined' && process.versions != null && process.versions.electron != null;\n}\n\nexport const getEnvironment = (): string => {\n if (isBrowser()) {\n return 'browser'\n }\n\n if (isElectron()) {\n return 'electron'\n }\n\n if (isReactNative()) {\n return 'react-native'\n }\n\n return 'node'\n}\n","import { isBrowser } from '@/helpers/environment'\nimport { BaseItem } from '@/Item/BaseItem'\n\nlet Item: typeof BaseItem | undefined\n\n\nexport const initItem = async () => {\n if (isBrowser()) {\n Item = (await import('../browser/Item/Item')).Item\n }\n\n if (!isBrowser()) {\n Item = (await import('../node/Item/Item')).Item\n }\n}\n\nexport { Item }\n","import { PropertyMetadataKey, TProperty } from '../property'\nimport { TSchema, Type } from '@sinclair/typebox'\nimport { ModelConstructor, ModelValues } from '@/types'\nimport { Item } from '@/Item'\nimport { IItem } from '@/interfaces/IItem'\n\nexport const TModelValues = Type.Record(Type.String(), Type.Any())\n\nexport const TModelSchema = Type.Record(Type.String(), TProperty)\nexport const TModelClass = Type.Object({\n schema: TModelSchema,\n create: Type.Function(\n [TModelValues],\n Type.Promise(Type.Record(Type.String(), Type.Any())),\n ),\n})\n\nexport const TModelConstructor = Type.Function([TModelSchema], TModelClass)\n\nexport abstract class IModelClass {\n static originalConstructor: new () => any\n\n static async create(values: ModelValues<any>): Promise<IItem<any>> {\n const item = new Item<any>(values)\n return item\n }\n\n static getOriginalClass(): new () => any {\n return this.originalConstructor\n }\n}\n\nexport const Model: ModelConstructor = <\n T extends { new(...args: any[]): IModelClass },\n>(\n constructor: T,\n) => {\n class ModelClass extends constructor {\n private static _schema: Record<string, TSchema> = {}\n static originalConstructor = constructor\n\n static _initializeSchema() {\n const properties =\n Reflect.getMetadata(PropertyMetadataKey, this.prototype) || []\n\n properties.forEach(\n ({\n propertyKey,\n propertyType,\n }: {\n propertyKey: string\n propertyType: TSchema\n }) => {\n // console.log(\n // `setting ${propertyKey} to ${JSON.stringify(propertyType)}`,\n // )\n this._schema[propertyKey] = propertyType\n },\n )\n }\n\n static async create(values: ModelValues<any>): Promise<Item<any>> {\n const item = new Item<any>(values)\n return item\n }\n\n static getOriginalClass(): T {\n return this.originalConstructor\n }\n\n static get schema() {\n return this._schema\n }\n\n get schema() {\n return this.constructor.prototype._schema\n }\n }\n\n ModelClass._initializeSchema()\n\n return ModelClass as T & IModelClass\n}\n","import { isBrowser } from '@/helpers/environment'\nimport { BaseItemProperty } from '@/ItemProperty/BaseItemProperty'\n\nlet ItemProperty: typeof BaseItemProperty | undefined\n\nexport const initItemProperty = async () => {\n\n if (isBrowser()) {\n ItemProperty = (await import('../browser/ItemProperty/ItemProperty')).ItemProperty\n }\n\n if (!isBrowser()) {\n ItemProperty = (await import('../node/ItemProperty/ItemProperty')).ItemProperty\n }\n}\n\nexport { ItemProperty }","import { isBrowser } from '@/helpers/environment'\nimport { BaseDb } from './BaseDb'\n\nlet Db: typeof BaseDb | undefined\n\nexport const initDb = async () => {\n if (isBrowser()) {\n Db = (await import('../../browser/db/Db')).Db\n }\n\n if (!isBrowser()) {\n Db = (await import('../../node/db/Db')).Db\n }\n\n // TODO: Add config for React Native\n}\n\nexport { Db }\n","import EventEmitter from 'eventemitter3'\n\nconst eventEmitter = new EventEmitter()\n\nexport { eventEmitter }\n","import { ModelClassType } from '@/types'\n\nconst modelStore = new Map<string, ModelClassType>()\n\nexport const getModels = (): Record<string, ModelClassType> => {\n return Object.fromEntries(modelStore)\n}\n\nexport const getModel = (modelName: string): ModelClassType | undefined => {\n return modelStore.get(modelName)\n}\n\nexport const getModelNames = (): string[] => {\n return Array.from(modelStore.keys())\n}\n\nexport const setModel = (modelName: string, model: ModelClassType) => {\n modelStore.set(modelName, model)\n}\n","import { customAlphabet } from 'nanoid'\nimport * as nanoIdDictionary from 'nanoid-dictionary'\nimport { fs } from '@zenfs/core'\nimport debug from 'debug'\nimport { GetCorrectId } from '@/types/helpers'\nimport { GetCorrectIdReturn } from '@/types/helpers'\n\nexport * from './ArweaveClient/BaseArweaveClient'\nexport * from './EasClient/BaseEasClient'\nexport * from './QueryClient/BaseQueryClient'\nexport * from './FileManager/BaseFileManager'\nconst logger = debug('app:shared:helpers')\n\n\nconst { alphanumeric } = nanoIdDictionary\n\nexport const generateId = (): string => {\n return customAlphabet(alphanumeric, 10)()\n}\n\nexport const toSnakeCase = (str: string) => {\n return str.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase()\n}\n\nexport const identifyString = (str: string) => {\n try {\n JSON.parse(str)\n return 'json'\n } catch (e) {\n // Not JSON\n }\n\n if (!str) {\n return\n }\n\n if (str.trim().startsWith('<') && str.trim().endsWith('>')) {\n return 'html'\n }\n\n // Simple markdown checks (very naive)\n if (/^#{1,6}\\s|^-{3,}|\\*{3,}|^-{1,2}\\s|\\*\\s/.test(str)) {\n return 'markdown'\n }\n\n if (/^data:image\\/[a-zA-Z]+;base64,[A-Za-z0-9+/]+={0,2}$/.test(str)) {\n return 'base64'\n }\n\n // Default to plain text if unsure\n return 'text'\n}\n\nexport const getMimeType = (base64: string) => {\n if (!base64) {\n return null\n }\n const result = base64.match(/^data:([a-zA-Z0-9]+\\/[a-zA-Z0-9-.+]+).*,/)\n\n if (result && result.length > 1) {\n return result[1]\n } else {\n return null // MIME type could not be determined\n }\n}\n\nexport const getCorrectId: GetCorrectId = (localIdOrUid: string) => {\n const id: GetCorrectIdReturn = {\n localId: undefined,\n uid: undefined,\n }\n if (!localIdOrUid) {\n return id\n }\n if (localIdOrUid.length === 10) {\n id.localId = localIdOrUid\n }\n if (localIdOrUid.startsWith('0x') && localIdOrUid.length === 66) {\n id.uid = localIdOrUid\n }\n return id\n}\n\nexport const getDataTypeFromString = (\n data: string,\n): 'imageBase64' | 'base64' | 'url' | null => {\n const nonImageBase64Regex =\n /^(?!data:image\\/(?:jpeg|png|gif|bmp|webp);base64,)[A-Za-z0-9+/=]+$/\n\n if (nonImageBase64Regex.test(data)) {\n return 'base64'\n }\n\n // Regular expression for base64 (simple version, checking for base64 format)\n const imageBase64Regex = /^data:image\\/[a-zA-Z]+;base64,[A-Za-z0-9+/]+={0,2}$/\n\n if (imageBase64Regex.test(data)) {\n return 'imageBase64'\n }\n\n // Regular expression for URL (simple version, checking for common URL format)\n const urlRegex =\n /^(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)?[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$/\n\n if (urlRegex.test(data)) {\n return 'url'\n }\n\n return null\n}\n\nexport const convertTxIdToImageSrc = async (\n txId: string,\n): Promise<string | undefined> => {\n const imageFilePath = `/files/images/${txId}`\n const fileExists = await fs.promises.exists(imageFilePath)\n if (!fileExists) {\n logger(`[ItemView] [updateImageSrc] ${imageFilePath} does not exist`)\n return\n }\n const uint = await fs.promises.readFile(imageFilePath)\n\n const imageBlob = new Blob([uint])\n\n return URL.createObjectURL(imageBlob)\n}\n\nexport const getExecutionTime = async (task, args) => {\n const start = Date.now()\n await task(...args)\n return Date.now() - start\n}\n\nexport const capitalizeFirstLetter = (string: string) =>\n string.charAt(0).toUpperCase() + string.slice(1)\n\nexport const parseEasRelationPropertyName = (easPropertyName: string) => {\n // Split the input string on the first underscore\n const [singularProperty, modelName, idSegment] = easPropertyName.split('_')\n\n // If there are any other parts, assume it is a list (e.g., has 'ids' or other suffix)\n const isList = idSegment === 'ids'\n\n // Create the final property name by pluralizing the singular part\n const propertyName = singularProperty.endsWith('s')\n ? singularProperty\n : singularProperty + 's'\n\n return {\n propertyName, // Plural form of the property name\n modelName, // Model name extracted from the second part\n isList, // True if the property is a list (e.g., 'ids' is present)\n }\n}\n\nexport const getContentHash = async (\n base64: string | null | undefined,\n uint: Uint8Array | undefined,\n): Promise<string> => {\n let data\n\n if (base64 && !uint) {\n const encoder = new TextEncoder()\n data = encoder.encode(base64)\n }\n\n if (uint) {\n data = uint\n }\n\n // Hash the data with SHA-256\n const hashBuffer = await crypto.subtle.digest('SHA-256', data as Uint8Array)\n\n // Convert the ArrayBuffer to a hex string\n const hashArray = Array.from(new Uint8Array(hashBuffer))\n return hashArray.map((b) => b.toString(16).padStart(2, '0')).join('')\n}\n\nexport const isBinary = (arrayBuffer: ArrayBuffer): boolean => {\n const view = new Uint8Array(arrayBuffer);\n\n let nonTextCount = 0;\n const threshold = 0.2; // Adjust as needed (e.g., 20% non-text implies binary)\n\n for (let i = 0; i < view.length; i++) {\n const byte = view[i];\n\n // ASCII printable characters (32-126) and common whitespace (9, 10, 13)\n if (\n (byte >= 32 && byte <= 126) || // Printable ASCII\n byte === 9 || byte === 10 || byte === 13 // Tab, LF, CR\n ) {\n continue;\n }\n\n nonTextCount++;\n if (nonTextCount / view.length > threshold) {\n return true; // More than threshold are non-text bytes\n }\n }\n\n return false; // Fewer than threshold are non-text bytes\n}\n","import { int, sqliteTable, text } from 'drizzle-orm/sqlite-core'\n\nexport const seeds = sqliteTable(\n 'seeds',\n {\n localId: text('local_id').unique(),\n uid: text('uid'),\n schemaUid: text('schema_uid'),\n type: text('type'),\n attestationRaw: text('attestation_raw'),\n attestationCreatedAt: int('attestation_created_at'),\n createdAt: int('created_at'),\n updatedAt: int('updated_at'),\n _markedForDeletion: int('_marked_for_deletion'),\n },\n // {\n // triggers: [\n // sql<string>`CREATE TRIGGER IF NOT EXISTS seeds_created_at_trigger\n // BEFORE INSERT\n // ON seeds\n // FOR EACH ROW\n // BEGIN\n // SELECT strftime('%s', 'now') * 1000 INTO NEW.created_at;\n // END;`,\n // ],\n // },\n)\n\nexport type SeedType = seeds.$inferSelect\n","import { int, sqliteTable, text } from 'drizzle-orm/sqlite-core'\n\nexport const versions = sqliteTable('versions', {\n localId: text('local_id').unique(),\n uid: text('uid'),\n seedLocalId: text('seed_local_id'),\n seedUid: text('seed_uid'),\n seedType: text('seed_type'),\n note: text('note'),\n createdAt: int('created_at'),\n updatedAt: int('updated_at'),\n attestationCreatedAt: int('attestation_created_at'),\n attestationRaw: text('attestation_raw'),\n})\n\nexport type VersionsType = versions.$inferSelect\n","import { int, sqliteTable, text } from 'drizzle-orm/sqlite-core'\n\nexport const metadata = sqliteTable('metadata', {\n localId: text('local_id').unique(),\n uid: text('uid'),\n propertyName: text('property_name'),\n propertyValue: text('property_value'),\n schemaUid: text('schema_uid'),\n modelType: text('model_type'),\n seedLocalId: text('seed_local_id'),\n seedUid: text('seed_uid'),\n versionLocalId: text('version_local_id'),\n versionUid: text('version_uid'),\n easDataType: text('eas_data_type'),\n refValueType: text('ref_value_type'),\n refModelUid: text('ref_schema_uid'),\n refSeedType: text('ref_seed_type'),\n refResolvedValue: text('ref_resolved_value'),\n refResolvedDisplayValue: text('ref_resolved_display_value'),\n localStorageDir: text('local_storage_dir'),\n attestationRaw: text('attestation_raw'),\n attestationCreatedAt: int('attestation_created_at'),\n contentHash: text('content_hash'),\n createdAt: int('created_at'),\n updatedAt: int('updated_at'),\n})\n\nexport type MetadataType = metadata.$inferSelect\n","import { int, sqliteTable, text } from 'drizzle-orm/sqlite-core'\n\nexport const appState = sqliteTable('appState', {\n key: text('key').unique(),\n value: text('value'),\n createdAt: int('created_at'),\n updatedAt: int('updated_at'),\n})\n\nexport type appStateType = appState.$inferSelect\n","import { blob, int, sqliteTable, text, check, } from 'drizzle-orm/sqlite-core'\nimport { sql } from 'drizzle-orm'\n\nexport const config = sqliteTable('config', {\n id: int('id').primaryKey({ autoIncrement: true }),\n key: text('key').notNull(),\n text: text('text'),\n json: text('json', {mode: 'json'}),\n blob: blob('blob', {mode: 'buffer'}),\n}, () => {\n return {\n // Add a custom check constraint\n atLeastOneNotNull: check('hasValue', sql`key IS NOT NULL OR text IS NOT NULL OR json IS NOT NULL OR blob IS NOT NULL`),\n }\n})","import { int, sqliteTable, text, unique } from 'drizzle-orm/sqlite-core'\nimport { relations } from 'drizzle-orm'\n\nexport const models = sqliteTable('models', {\n id: int('id').primaryKey({ autoIncrement: true }),\n name: text('name').notNull(),\n})\n\nexport const modelsRelations = relations(models, ({ many }) => ({\n properties: many(properties),\n}))\n\nexport type NewModelRecord = typeof models.$inferInsert\nexport type ModelRecordType = typeof models.$inferSelect\n\nexport const properties = sqliteTable(\n 'properties',\n {\n id: int('id').primaryKey({ autoIncrement: true }),\n name: text('name').notNull(),\n dataType: text('data_type').notNull(),\n readEndpoint: text('read_endpoint'),\n updateEndpoint: text('update_endpoint'),\n modelId: int('model_id')\n .notNull()\n .references(() => models.id),\n refModelId: int('ref_model_id').references(() => models.id),\n refValueType: text('ref_value_type'),\n },\n (table) => {\n return {\n uniqueNameModelId: unique('unique_name_model_id').on(\n table.name,\n table.modelId,\n ),\n }\n },\n)\n\nexport const propertiesRelations = relations(properties, ({ one }) => ({\n model: one(models),\n refModel: one(models),\n}))\n\nexport type NewPropertyRecord = typeof properties.$inferInsert\nexport type PropertyType = typeof properties.$inferSelect\n","import { int, sqliteTable, text } from 'drizzle-orm/sqlite-core'\nimport { relations } from 'drizzle-orm'\nimport { models } from './ModelSchema'\n\nexport const modelUids = sqliteTable('model_uids', {\n id: int('id').primaryKey({ autoIncrement: true }),\n uid: text('uid').notNull(),\n modelId: int('model_id')\n .notNull()\n .unique()\n .references(() => models.id),\n})\n\nexport const modelRelations = relations(modelUids, ({ many, one }) => ({\n model: one(models),\n}))\n","import { int, sqliteTable, text } from 'drizzle-orm/sqlite-core'\nimport { relations } from 'drizzle-orm'\nimport { models, properties } from './ModelSchema'\n\nexport const propertyUids = sqliteTable('property_uids', {\n id: int('id').primaryKey({ autoIncrement: true }),\n uid: text('uid').notNull(),\n propertyId: int('property_id')\n .notNull()\n .unique()\n .references(() => models.id),\n})\n\nexport const propertyUidRelations = relations(propertyUids, ({ one }) => ({\n property: one(properties),\n}))\n","import { IDb } from '@/interfaces/IDb'\nimport { BaseSQLiteDatabase } from 'drizzle-orm/sqlite-core'\n\nexport abstract class BaseDb implements IDb {\n\n constructor() {\n }\n\n static PlatformClass: typeof BaseDb\n\n static setPlatformClass(platformClass: typeof BaseDb) {\n this.PlatformClass = platformClass\n }\n\n static getAppDb(): BaseSQLiteDatabase {\n return this.PlatformClass.getAppDb()\n }\n\n static isAppDbReady(): boolean {\n return this.PlatformClass.isAppDbReady()\n }\n\n static prepareDb(filesDir: string): Promise<BaseSQLiteDatabase> {\n return this.PlatformClass.prepareDb(filesDir)\n }\n\n static connectToDb(pathToDir: string, dbName: string): Promise<unknown> {\n return this.PlatformClass.connectToDb(pathToDir, dbName)\n }\n\n static async migrate(pathToDbDir: string, dbName: string, dbId: string): Promise<void> {\n return this.PlatformClass.migrate(pathToDbDir, dbName, dbId)\n }\n\n}","/* eslint-disable */\nimport { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';\nexport type Maybe<T> = T | null;\nexport type InputMaybe<T> = Maybe<T>;\nexport type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };\nexport type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };\nexport type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };\nexport type MakeEmpty<T extends { [key: string]: unknown }, K extends keyof T> = { [_ in K]?: never };\nexport type Incremental<T> = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never };\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n ID: { input: string; output: string; }\n String: { input: string; output: string; }\n Boolean: { input: boolean; output: boolean; }\n Int: { input: number; output: number; }\n Float: { input: number; output: number; }\n};\n\nexport type AffectedRowsOutput = {\n __typename?: 'AffectedRowsOutput';\n count: Scalars['Int']['output'];\n};\n\nexport type AggregateAttestation = {\n __typename?: 'AggregateAttestation';\n _avg?: Maybe<AttestationAvgAggregate>;\n _count?: Maybe<AttestationCountAggregate>;\n _max?: Maybe<AttestationMaxAggregate>;\n _min?: Maybe<AttestationMinAggregate>;\n _sum?: Maybe<AttestationSumAggregate>;\n};\n\nexport type AggregateEnsName = {\n __typename?: 'AggregateEnsName';\n _avg?: Maybe<EnsNameAvgAggregate>;\n _count?: Maybe<EnsNameCountAggregate>;\n _max?: Maybe<EnsNameMaxAggregate>;\n _min?: Maybe<EnsNameMinAggregate>;\n _sum?: Maybe<EnsNameSumAggregate>;\n};\n\nexport type AggregateOffchainRevocation = {\n __typename?: 'AggregateOffchainRevocation';\n _avg?: Maybe<OffchainRevocationAvgAggregate>;\n _count?: Maybe<OffchainRevocationCountAggregate>;\n _max?: Maybe<OffchainRevocationMaxAggregate>;\n _min?: Maybe<OffchainRevocationMinAggregate>;\n _sum?: Maybe<OffchainRevocationSumAggregate>;\n};\n\nexport type AggregateSchema = {\n __typename?: 'AggregateSchema';\n _avg?: Maybe<SchemaAvgAggregate>;\n _count?: Maybe<SchemaCountAggregate>;\n _max?: Maybe<SchemaMaxAggregate>;\n _min?: Maybe<SchemaMinAggregate>;\n _sum?: Maybe<SchemaSumAggregate>;\n};\n\nexport type AggregateSchemaName = {\n __typename?: 'AggregateSchemaName';\n _avg?: Maybe<SchemaNameAvgAggregate>;\n _count?: Maybe<SchemaNameCountAggregate>;\n _max?: Maybe<SchemaNameMaxAggregate>;\n _min?: Maybe<SchemaNameMinAggregate>;\n _sum?: Maybe<SchemaNameSumAggregate>;\n};\n\nexport type AggregateServiceStat = {\n __typename?: 'AggregateServiceStat';\n _count?: Maybe<ServiceStatCountAggregate>;\n _max?: Maybe<ServiceStatMaxAggregate>;\n _min?: Maybe<ServiceStatMinAggregate>;\n};\n\nexport type AggregateTimestamp = {\n __typename?: 'AggregateTimestamp';\n _avg?: Maybe<TimestampAvgAggregate>;\n _count?: Maybe<TimestampCountAggregate>;\n _max?: Maybe<TimestampMaxAggregate>;\n _min?: Maybe<TimestampMinAggregate>;\n _sum?: Maybe<TimestampSumAggregate>;\n};\n\n/** Representation of a value transfer between wallets, in both winson and ar. */\nexport type Amount = {\n __typename?: 'Amount';\n /** Amount as an AR string e.g. \\`\"0.000000000001\"\\`. */\n ar: Scalars['String']['output'];\n /** Amount as a winston string e.g. \\`\"1000000000000\"\\`. */\n winston: Scalars['String']['output'];\n};\n\nexport type Attestation = {\n __typename?: 'Attestation';\n attester: Scalars['String']['output'];\n data: Scalars['String']['output'];\n decodedDataJson: Scalars['String']['output'];\n expirationTime: Scalars['Int']['output'];\n id: Scalars['String']['output'];\n ipfsHash: Scalars['String']['output'];\n isOffchain: Scalars['Boolean']['output'];\n recipient: Scalars['String']['output'];\n refUID: Scalars['String']['output'];\n revocable: Scalars['Boolean']['output'];\n revocationTime: Scalars['Int']['output'];\n revoked: Scalars['Boolean']['output'];\n schema: Schema;\n schemaId: Scalars['String']['output'];\n time: Scalars['Int']['output'];\n timeCreated: Scalars['Int']['output'];\n txid: Scalars['String']['output'];\n};\n\nexport type AttestationAvgAggregate = {\n __typename?: 'AttestationAvgAggregate';\n expirationTime?: Maybe<Scalars['Float']['output']>;\n revocationTime?: Maybe<Scalars['Float']['output']>;\n time?: Maybe<Scalars['Float']['output']>;\n timeCreated?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type AttestationAvgOrderByAggregateInput = {\n expirationTime?: InputMaybe<SortOrder>;\n revocationTime?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n timeCreated?: InputMaybe<SortOrder>;\n};\n\nexport type AttestationCountAggregate = {\n __typename?: 'AttestationCountAggregate';\n _all: Scalars['Int']['output'];\n attester: Scalars['Int']['output'];\n data: Scalars['Int']['output'];\n decodedDataJson: Scalars['Int']['output'];\n expirationTime: Scalars['Int']['output'];\n id: Scalars['Int']['output'];\n ipfsHash: Scalars['Int']['output'];\n isOffchain: Scalars['Int']['output'];\n recipient: Scalars['Int']['output'];\n refUID: Scalars['Int']['output'];\n revocable: Scalars['Int']['output'];\n revocationTime: Scalars['Int']['output'];\n revoked: Scalars['Int']['output'];\n schemaId: Scalars['Int']['output'];\n time: Scalars['Int']['output'];\n timeCreated: Scalars['Int']['output'];\n txid: Scalars['Int']['output'];\n};\n\nexport type AttestationCountOrderByAggregateInput = {\n attester?: InputMaybe<SortOrder>;\n data?: InputMaybe<SortOrder>;\n decodedDataJson?: InputMaybe<SortOrder>;\n expirationTime?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n ipfsHash?: InputMaybe<SortOrder>;\n isOffchain?: InputMaybe<SortOrder>;\n recipient?: InputMaybe<SortOrder>;\n refUID?: InputMaybe<SortOrder>;\n revocable?: InputMaybe<SortOrder>;\n revocationTime?: InputMaybe<SortOrder>;\n revoked?: InputMaybe<SortOrder>;\n schemaId?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n timeCreated?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport type AttestationCreateInput = {\n attester: Scalars['String']['input'];\n data: Scalars['String']['input'];\n decodedDataJson?: InputMaybe<Scalars['String']['input']>;\n expirationTime: Scalars['Int']['input'];\n id: Scalars['String']['input'];\n ipfsHash: Scalars['String']['input'];\n isOffchain: Scalars['Boolean']['input'];\n recipient: Scalars['String']['input'];\n refUID: Scalars['String']['input'];\n revocable: Scalars['Boolean']['input'];\n revocationTime: Scalars['Int']['input'];\n revoked: Scalars['Boolean']['input'];\n schema: SchemaCreateNestedOneWithoutAttestationsInput;\n time: Scalars['Int']['input'];\n timeCreated: Scalars['Int']['input'];\n txid: Scalars['String']['input'];\n};\n\nexport type AttestationCreateManyInput = {\n attester: Scalars['String']['input'];\n data: Scalars['String']['input'];\n decodedDataJson?: InputMaybe<Scalars['String']['input']>;\n expirationTime: Scalars['Int']['input'];\n id: Scalars['String']['input'];\n ipfsHash: Scalars['String']['input'];\n isOffchain: Scalars['Boolean']['input'];\n recipient: Scalars['String']['input'];\n refUID: Scalars['String']['input'];\n revocable: Scalars['Boolean']['input'];\n revocationTime: Scalars['Int']['input'];\n revoked: Scalars['Boolean']['input'];\n schemaId: Scalars['String']['input'];\n time: Scalars['Int']['input'];\n timeCreated: Scalars['Int']['input'];\n txid: Scalars['String']['input'];\n};\n\nexport type AttestationCreateManySchemaInput = {\n attester: Scalars['String']['input'];\n data: Scalars['String']['input'];\n decodedDataJson?: InputMaybe<Scalars['String']['input']>;\n expirationTime: Scalars['Int']['input'];\n id: Scalars['String']['input'];\n ipfsHash: Scalars['String']['input'];\n isOffchain: Scalars['Boolean']['input'];\n recipient: Scalars['String']['input'];\n refUID: Scalars['String']['input'];\n revocable: Scalars['Boolean']['input'];\n revocationTime: Scalars['Int']['input'];\n revoked: Scalars['Boolean']['input'];\n time: Scalars['Int']['input'];\n timeCreated: Scalars['Int']['input'];\n txid: Scalars['String']['input'];\n};\n\nexport type AttestationCreateManySchemaInputEnvelope = {\n data: Array<AttestationCreateManySchemaInput>;\n skipDuplicates?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\nexport type AttestationCreateNestedManyWithoutSchemaInput = {\n connect?: InputMaybe<Array<AttestationWhereUniqueInput>>;\n connectOrCreate?: InputMaybe<Array<AttestationCreateOrConnectWithoutSchemaInput>>;\n create?: InputMaybe<Array<AttestationCreateWithoutSchemaInput>>;\n createMany?: InputMaybe<AttestationCreateManySchemaInputEnvelope>;\n};\n\nexport type AttestationCreateOrConnectWithoutSchemaInput = {\n create: AttestationCreateWithoutSchemaInput;\n where: AttestationWhereUniqueInput;\n};\n\nexport type AttestationCreateWithoutSchemaInput = {\n attester: Scalars['String']['input'];\n data: Scalars['String']['input'];\n decodedDataJson?: InputMaybe<Scalars['String']['input']>;\n expirationTime: Scalars['Int']['input'];\n id: Scalars['String']['input'];\n ipfsHash: Scalars['String']['input'];\n isOffchain: Scalars['Boolean']['input'];\n recipient: Scalars['String']['input'];\n refUID: Scalars['String']['input'];\n revocable: Scalars['Boolean']['input'];\n revocationTime: Scalars['Int']['input'];\n revoked: Scalars['Boolean']['input'];\n time: Scalars['Int']['input'];\n timeCreated: Scalars['Int']['input'];\n txid: Scalars['String']['input'];\n};\n\nexport type AttestationGroupBy = {\n __typename?: 'AttestationGroupBy';\n _avg?: Maybe<AttestationAvgAggregate>;\n _count?: Maybe<AttestationCountAggregate>;\n _max?: Maybe<AttestationMaxAggregate>;\n _min?: Maybe<AttestationMinAggregate>;\n _sum?: Maybe<AttestationSumAggregate>;\n attester: Scalars['String']['output'];\n data: Scalars['String']['output'];\n decodedDataJson: Scalars['String']['output'];\n expirationTime: Scalars['Int']['output'];\n id: Scalars['String']['output'];\n ipfsHash: Scalars['String']['output'];\n isOffchain: Scalars['Boolean']['output'];\n recipient: Scalars['String']['output'];\n refUID: Scalars['String']['output'];\n revocable: Scalars['Boolean']['output'];\n revocationTime: Scalars['Int']['output'];\n revoked: Scalars['Boolean']['output'];\n schemaId: Scalars['String']['output'];\n time: Scalars['Int']['output'];\n timeCreated: Scalars['Int']['output'];\n txid: Scalars['String']['output'];\n};\n\nexport type AttestationListRelationFilter = {\n every?: InputMaybe<AttestationWhereInput>;\n none?: InputMaybe<AttestationWhereInput>;\n some?: InputMaybe<AttestationWhereInput>;\n};\n\nexport type AttestationMaxAggregate = {\n __typename?: 'AttestationMaxAggregate';\n attester?: Maybe<Scalars['String']['output']>;\n data?: Maybe<Scalars['String']['output']>;\n decodedDataJson?: Maybe<Scalars['String']['output']>;\n expirationTime?: Maybe<Scalars['Int']['output']>;\n id?: Maybe<Scalars['String']['output']>;\n ipfsHash?: Maybe<Scalars['String']['output']>;\n isOffchain?: Maybe<Scalars['Boolean']['output']>;\n recipient?: Maybe<Scalars['String']['output']>;\n refUID?: Maybe<Scalars['String']['output']>;\n revocable?: Maybe<Scalars['Boolean']['output']>;\n revocationTime?: Maybe<Scalars['Int']['output']>;\n revoked?: Maybe<Scalars['Boolean']['output']>;\n schemaId?: Maybe<Scalars['String']['output']>;\n time?: Maybe<Scalars['Int']['output']>;\n timeCreated?: Maybe<Scalars['Int']['output']>;\n txid?: Maybe<Scalars['String']['output']>;\n};\n\nexport type AttestationMaxOrderByAggregateInput = {\n attester?: InputMaybe<SortOrder>;\n data?: InputMaybe<SortOrder>;\n decodedDataJson?: InputMaybe<SortOrder>;\n expirationTime?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n ipfsHash?: InputMaybe<SortOrder>;\n isOffchain?: InputMaybe<SortOrder>;\n recipient?: InputMaybe<SortOrder>;\n refUID?: InputMaybe<SortOrder>;\n revocable?: InputMaybe<SortOrder>;\n revocationTime?: InputMaybe<SortOrder>;\n revoked?: InputMaybe<SortOrder>;\n schemaId?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n timeCreated?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport type AttestationMinAggregate = {\n __typename?: 'AttestationMinAggregate';\n attester?: Maybe<Scalars['String']['output']>;\n data?: Maybe<Scalars['String']['output']>;\n decodedDataJson?: Maybe<Scalars['String']['output']>;\n expirationTime?: Maybe<Scalars['Int']['output']>;\n id?: Maybe<Scalars['String']['output']>;\n ipfsHash?: Maybe<Scalars['String']['output']>;\n isOffchain?: Maybe<Scalars['Boolean']['output']>;\n recipient?: Maybe<Scalars['String']['output']>;\n refUID?: Maybe<Scalars['String']['output']>;\n revocable?: Maybe<Scalars['Boolean']['output']>;\n revocationTime?: Maybe<Scalars['Int']['output']>;\n revoked?: Maybe<Scalars['Boolean']['output']>;\n schemaId?: Maybe<Scalars['String']['output']>;\n time?: Maybe<Scalars['Int']['output']>;\n timeCreated?: Maybe<Scalars['Int']['output']>;\n txid?: Maybe<Scalars['String']['output']>;\n};\n\nexport type AttestationMinOrderByAggregateInput = {\n attester?: InputMaybe<SortOrder>;\n data?: InputMaybe<SortOrder>;\n decodedDataJson?: InputMaybe<SortOrder>;\n expirationTime?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n ipfsHash?: InputMaybe<SortOrder>;\n isOffchain?: InputMaybe<SortOrder>;\n recipient?: InputMaybe<SortOrder>;\n refUID?: InputMaybe<SortOrder>;\n revocable?: InputMaybe<SortOrder>;\n revocationTime?: InputMaybe<SortOrder>;\n revoked?: InputMaybe<SortOrder>;\n schemaId?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n timeCreated?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport type AttestationOrderByRelationAggregateInput = {\n _count?: InputMaybe<SortOrder>;\n};\n\nexport type AttestationOrderByWithAggregationInput = {\n _avg?: InputMaybe<AttestationAvgOrderByAggregateInput>;\n _count?: InputMaybe<AttestationCountOrderByAggregateInput>;\n _max?: InputMaybe<AttestationMaxOrderByAggregateInput>;\n _min?: InputMaybe<AttestationMinOrderByAggregateInput>;\n _sum?: InputMaybe<AttestationSumOrderByAggregateInput>;\n attester?: InputMaybe<SortOrder>;\n data?: InputMaybe<SortOrder>;\n decodedDataJson?: InputMaybe<SortOrder>;\n expirationTime?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n ipfsHash?: InputMaybe<SortOrder>;\n isOffchain?: InputMaybe<SortOrder>;\n recipient?: InputMaybe<SortOrder>;\n refUID?: InputMaybe<SortOrder>;\n revocable?: InputMaybe<SortOrder>;\n revocationTime?: InputMaybe<SortOrder>;\n revoked?: InputMaybe<SortOrder>;\n schemaId?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n timeCreated?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport type AttestationOrderByWithRelationInput = {\n attester?: InputMaybe<SortOrder>;\n data?: InputMaybe<SortOrder>;\n decodedDataJson?: InputMaybe<SortOrder>;\n expirationTime?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n ipfsHash?: InputMaybe<SortOrder>;\n isOffchain?: InputMaybe<SortOrder>;\n recipient?: InputMaybe<SortOrder>;\n refUID?: InputMaybe<SortOrder>;\n revocable?: InputMaybe<SortOrder>;\n revocationTime?: InputMaybe<SortOrder>;\n revoked?: InputMaybe<SortOrder>;\n schema?: InputMaybe<SchemaOrderByWithRelationInput>;\n schemaId?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n timeCreated?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport enum AttestationScalarFieldEnum {\n Attester = 'attester',\n Data = 'data',\n DecodedDataJson = 'decodedDataJson',\n ExpirationTime = 'expirationTime',\n Id = 'id',\n IpfsHash = 'ipfsHash',\n IsOffchain = 'isOffchain',\n Recipient = 'recipient',\n RefUid = 'refUID',\n Revocable = 'revocable',\n RevocationTime = 'revocationTime',\n Revoked = 'revoked',\n SchemaId = 'schemaId',\n Time = 'time',\n TimeCreated = 'timeCreated',\n Txid = 'txid'\n}\n\nexport type AttestationScalarWhereInput = {\n AND?: InputMaybe<Array<AttestationScalarWhereInput>>;\n NOT?: InputMaybe<Array<AttestationScalarWhereInput>>;\n OR?: InputMaybe<Array<AttestationScalarWhereInput>>;\n attester?: InputMaybe<StringFilter>;\n data?: InputMaybe<StringFilter>;\n decodedDataJson?: InputMaybe<StringFilter>;\n expirationTime?: InputMaybe<IntFilter>;\n id?: InputMaybe<StringFilter>;\n ipfsHash?: InputMaybe<StringFilter>;\n isOffchain?: InputMaybe<BoolFilter>;\n recipient?: InputMaybe<StringFilter>;\n refUID?: InputMaybe<StringFilter>;\n revocable?: InputMaybe<BoolFilter>;\n revocationTime?: InputMaybe<IntFilter>;\n revoked?: InputMaybe<BoolFilter>;\n schemaId?: InputMaybe<StringFilter>;\n time?: InputMaybe<IntFilter>;\n timeCreated?: InputMaybe<IntFilter>;\n txid?: InputMaybe<StringFilter>;\n};\n\nexport type AttestationScalarWhereWithAggregatesInput = {\n AND?: InputMaybe<Array<AttestationScalarWhereWithAggregatesInput>>;\n NOT?: InputMaybe<Array<AttestationScalarWhereWithAggregatesInput>>;\n OR?: InputMaybe<Array<AttestationScalarWhereWithAggregatesInput>>;\n attester?: InputMaybe<StringWithAggregatesFilter>;\n data?: InputMaybe<StringWithAggregatesFilter>;\n decodedDataJson?: InputMaybe<StringWithAggregatesFilter>;\n expirationTime?: InputMaybe<IntWithAggregatesFilter>;\n id?: InputMaybe<StringWithAggregatesFilter>;\n ipfsHash?: InputMaybe<StringWithAggregatesFilter>;\n isOffchain?: InputMaybe<BoolWithAggregatesFilter>;\n recipient?: InputMaybe<StringWithAggregatesFilter>;\n refUID?: InputMaybe<StringWithAggregatesFilter>;\n revocable?: InputMaybe<BoolWithAggregatesFilter>;\n revocationTime?: InputMaybe<IntWithAggregatesFilter>;\n revoked?: InputMaybe<BoolWithAggregatesFilter>;\n schemaId?: InputMaybe<StringWithAggregatesFilter>;\n time?: InputMaybe<IntWithAggregatesFilter>;\n timeCreated?: InputMaybe<IntWithAggregatesFilter>;\n txid?: InputMaybe<StringWithAggregatesFilter>;\n};\n\nexport type AttestationSumAggregate = {\n __typename?: 'AttestationSumAggregate';\n expirationTime?: Maybe<Scalars['Int']['output']>;\n revocationTime?: Maybe<Scalars['Int']['output']>;\n time?: Maybe<Scalars['Int']['output']>;\n timeCreated?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type AttestationSumOrderByAggregateInput = {\n expirationTime?: InputMaybe<SortOrder>;\n revocationTime?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n timeCreated?: InputMaybe<SortOrder>;\n};\n\nexport type AttestationUpdateInput = {\n attester?: InputMaybe<StringFieldUpdateOperationsInput>;\n data?: InputMaybe<StringFieldUpdateOperationsInput>;\n decodedDataJson?: InputMaybe<StringFieldUpdateOperationsInput>;\n expirationTime?: InputMaybe<IntFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n ipfsHash?: InputMaybe<StringFieldUpdateOperationsInput>;\n isOffchain?: InputMaybe<BoolFieldUpdateOperationsInput>;\n recipient?: InputMaybe<StringFieldUpdateOperationsInput>;\n refUID?: InputMaybe<StringFieldUpdateOperationsInput>;\n revocable?: InputMaybe<BoolFieldUpdateOperationsInput>;\n revocationTime?: InputMaybe<IntFieldUpdateOperationsInput>;\n revoked?: InputMaybe<BoolFieldUpdateOperationsInput>;\n schema?: InputMaybe<SchemaUpdateOneRequiredWithoutAttestationsNestedInput>;\n time?: InputMaybe<IntFieldUpdateOperationsInput>;\n timeCreated?: InputMaybe<IntFieldUpdateOperationsInput>;\n txid?: InputMaybe<StringFieldUpdateOperationsInput>;\n};\n\nexport type AttestationUpdateManyMutationInput = {\n attester?: InputMaybe<StringFieldUpdateOperationsInput>;\n data?: InputMaybe<StringFieldUpdateOperationsInput>;\n decodedDataJson?: InputMaybe<StringFieldUpdateOperationsInput>;\n expirationTime?: InputMaybe<IntFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n ipfsHash?: InputMaybe<StringFieldUpdateOperationsInput>;\n isOffchain?: InputMaybe<BoolFieldUpdateOperationsInput>;\n recipient?: InputMaybe<StringFieldUpdateOperationsInput>;\n refUID?: InputMaybe<StringFieldUpdateOperationsInput>;\n revocable?: InputMaybe<BoolFieldUpdateOperationsInput>;\n revocationTime?: InputMaybe<IntFieldUpdateOperationsInput>;\n revoked?: InputMaybe<BoolFieldUpdateOperationsInput>;\n time?: InputMaybe<IntFieldUpdateOperationsInput>;\n timeCreated?: InputMaybe<IntFieldUpdateOperationsInput>;\n txid?: InputMaybe<StringFieldUpdateOperationsInput>;\n};\n\nexport type AttestationUpdateManyWithWhereWithoutSchemaInput = {\n data: AttestationUpdateManyMutationInput;\n where: AttestationScalarWhereInput;\n};\n\nexport type AttestationUpdateManyWithoutSchemaNestedInput = {\n connect?: InputMaybe<Array<AttestationWhereUniqueInput>>;\n connectOrCreate?: InputMaybe<Array<AttestationCreateOrConnectWithoutSchemaInput>>;\n create?: InputMaybe<Array<AttestationCreateWithoutSchemaInput>>;\n createMany?: InputMaybe<AttestationCreateManySchemaInputEnvelope>;\n delete?: InputMaybe<Array<AttestationWhereUniqueInput>>;\n deleteMany?: InputMaybe<Array<AttestationScalarWhereInput>>;\n disconnect?: InputMaybe<Array<AttestationWhereUniqueInput>>;\n set?: InputMaybe<Array<AttestationWhereUniqueInput>>;\n update?: InputMaybe<Array<AttestationUpdateWithWhereUniqueWithoutSchemaInput>>;\n updateMany?: InputMaybe<Array<AttestationUpdateManyWithWhereWithoutSchemaInput>>;\n upsert?: InputMaybe<Array<AttestationUpsertWithWhereUniqueWithoutSchemaInput>>;\n};\n\nexport type AttestationUpdateWithWhereUniqueWithoutSchemaInput = {\n data: AttestationUpdateWithoutSchemaInput;\n where: AttestationWhereUniqueInput;\n};\n\nexport type AttestationUpdateWithoutSchemaInput = {\n attester?: InputMaybe<StringFieldUpdateOperationsInput>;\n data?: InputMaybe<StringFieldUpdateOperationsInput>;\n decodedDataJson?: InputMaybe<StringFieldUpdateOperationsInput>;\n expirationTime?: InputMaybe<IntFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n ipfsHash?: InputMaybe<StringFieldUpdateOperationsInput>;\n isOffchain?: InputMaybe<BoolFieldUpdateOperationsInput>;\n recipient?: InputMaybe<StringFieldUpdateOperationsInput>;\n refUID?: InputMaybe<StringFieldUpdateOperationsInput>;\n revocable?: InputMaybe<BoolFieldUpdateOperationsInput>;\n revocationTime?: InputMaybe<IntFieldUpdateOperationsInput>;\n revoked?: InputMaybe<BoolFieldUpdateOperationsInput>;\n time?: InputMaybe<IntFieldUpdateOperationsInput>;\n timeCreated?: InputMaybe<IntFieldUpdateOperationsInput>;\n txid?: InputMaybe<StringFieldUpdateOperationsInput>;\n};\n\nexport type AttestationUpsertWithWhereUniqueWithoutSchemaInput = {\n create: AttestationCreateWithoutSchemaInput;\n update: AttestationUpdateWithoutSchemaInput;\n where: AttestationWhereUniqueInput;\n};\n\nexport type AttestationWhereInput = {\n AND?: InputMaybe<Array<AttestationWhereInput>>;\n NOT?: InputMaybe<Array<AttestationWhereInput>>;\n OR?: InputMaybe<Array<AttestationWhereInput>>;\n attester?: InputMaybe<StringFilter>;\n data?: InputMaybe<StringFilter>;\n decodedDataJson?: InputMaybe<StringFilter>;\n expirationTime?: InputMaybe<IntFilter>;\n id?: InputMaybe<StringFilter>;\n ipfsHash?: InputMaybe<StringFilter>;\n isOffchain?: InputMaybe<BoolFilter>;\n recipient?: InputMaybe<StringFilter>;\n refUID?: InputMaybe<StringFilter>;\n revocable?: InputMaybe<BoolFilter>;\n revocationTime?: InputMaybe<IntFilter>;\n revoked?: InputMaybe<BoolFilter>;\n schema?: InputMaybe<SchemaRelationFilter>;\n schemaId?: InputMaybe<StringFilter>;\n time?: InputMaybe<IntFilter>;\n timeCreated?: InputMaybe<IntFilter>;\n txid?: InputMaybe<StringFilter>;\n};\n\nexport type AttestationWhereUniqueInput = {\n id?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type Block = {\n __typename?: 'Block';\n /** The block height. */\n height: Scalars['Int']['output'];\n /** The block ID. */\n id: Scalars['ID']['output'];\n /** The previous block ID. */\n previous: Scalars['ID']['output'];\n /** The block timestamp (UTC). */\n timestamp: Scalars['Int']['output'];\n};\n\n/**\n * Paginated result set using the GraphQL cursor spec,\n * see: https://relay.dev/graphql/connections.htm.\n */\nexport type BlockConnection = {\n __typename?: 'BlockConnection';\n edges: Array<BlockEdge>;\n pageInfo: PageInfo;\n};\n\n/** Paginated result set using the GraphQL cursor spec. */\nexport type BlockEdge = {\n __typename?: 'BlockEdge';\n /**\n * The cursor value for fetching the next page.\n *\n * Pass this to the \\`after\\` parameter in \\`blocks(after: $cursor)\\`, the next page will start from the next item after this.\n */\n cursor: Scalars['String']['output'];\n /** A block object. */\n node: Block;\n};\n\n/** Find blocks within a given range */\nexport type BlockFilter = {\n /** Maximum block height to filter to */\n max?: InputMaybe<Scalars['Int']['input']>;\n /** Minimum block height to filter from */\n min?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type BoolFieldUpdateOperationsInput = {\n set?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\nexport type BoolFilter = {\n equals?: InputMaybe<Scalars['Boolean']['input']>;\n not?: InputMaybe<NestedBoolFilter>;\n};\n\nexport type BoolWithAggregatesFilter = {\n _count?: InputMaybe<NestedIntFilter>;\n _max?: InputMaybe<NestedBoolFilter>;\n _min?: InputMaybe<NestedBoolFilter>;\n equals?: InputMaybe<Scalars['Boolean']['input']>;\n not?: InputMaybe<NestedBoolWithAggregatesFilter>;\n};\n\n/**\n * The data bundle containing the current data item.\n * See: https://github.com/ArweaveTeam/arweave-standards/blob/master/ans/ANS-104.md.\n */\nexport type Bundle = {\n __typename?: 'Bundle';\n /** ID of the containing data bundle. */\n id: Scalars['ID']['output'];\n};\n\nexport type EnsName = {\n __typename?: 'EnsName';\n id: Scalars['String']['output'];\n name: Scalars['String']['output'];\n timestamp: Scalars['Int']['output'];\n};\n\nexport type EnsNameAvgAggregate = {\n __typename?: 'EnsNameAvgAggregate';\n timestamp?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type EnsNameAvgOrderByAggregateInput = {\n timestamp?: InputMaybe<SortOrder>;\n};\n\nexport type EnsNameCountAggregate = {\n __typename?: 'EnsNameCountAggregate';\n _all: Scalars['Int']['output'];\n id: Scalars['Int']['output'];\n name: Scalars['Int']['output'];\n timestamp: Scalars['Int']['output'];\n};\n\nexport type EnsNameCountOrderByAggregateInput = {\n id?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n};\n\nexport type EnsNameCreateInput = {\n id: Scalars['String']['input'];\n name: Scalars['String']['input'];\n timestamp: Scalars['Int']['input'];\n};\n\nexport type EnsNameCreateManyInput = {\n id: Scalars['String']['input'];\n name: Scalars['String']['input'];\n timestamp: Scalars['Int']['input'];\n};\n\nexport type EnsNameGroupBy = {\n __typename?: 'EnsNameGroupBy';\n _avg?: Maybe<EnsNameAvgAggregate>;\n _count?: Maybe<EnsNameCountAggregate>;\n _max?: Maybe<EnsNameMaxAggregate>;\n _min?: Maybe<EnsNameMinAggregate>;\n _sum?: Maybe<EnsNameSumAggregate>;\n id: Scalars['String']['output'];\n name: Scalars['String']['output'];\n timestamp: Scalars['Int']['output'];\n};\n\nexport type EnsNameMaxAggregate = {\n __typename?: 'EnsNameMaxAggregate';\n id?: Maybe<Scalars['String']['output']>;\n name?: Maybe<Scalars['String']['output']>;\n timestamp?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type EnsNameMaxOrderByAggregateInput = {\n id?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n};\n\nexport type EnsNameMinAggregate = {\n __typename?: 'EnsNameMinAggregate';\n id?: Maybe<Scalars['String']['output']>;\n name?: Maybe<Scalars['String']['output']>;\n timestamp?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type EnsNameMinOrderByAggregateInput = {\n id?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n};\n\nexport type EnsNameOrderByWithAggregationInput = {\n _avg?: InputMaybe<EnsNameAvgOrderByAggregateInput>;\n _count?: InputMaybe<EnsNameCountOrderByAggregateInput>;\n _max?: InputMaybe<EnsNameMaxOrderByAggregateInput>;\n _min?: InputMaybe<EnsNameMinOrderByAggregateInput>;\n _sum?: InputMaybe<EnsNameSumOrderByAggregateInput>;\n id?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n};\n\nexport type EnsNameOrderByWithRelationInput = {\n id?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n};\n\nexport enum EnsNameScalarFieldEnum {\n Id = 'id',\n Name = 'name',\n Timestamp = 'timestamp'\n}\n\nexport type EnsNameScalarWhereWithAggregatesInput = {\n AND?: InputMaybe<Array<EnsNameScalarWhereWithAggregatesInput>>;\n NOT?: InputMaybe<Array<EnsNameScalarWhereWithAggregatesInput>>;\n OR?: InputMaybe<Array<EnsNameScalarWhereWithAggregatesInput>>;\n id?: InputMaybe<StringWithAggregatesFilter>;\n name?: InputMaybe<StringWithAggregatesFilter>;\n timestamp?: InputMaybe<IntWithAggregatesFilter>;\n};\n\nexport type EnsNameSumAggregate = {\n __typename?: 'EnsNameSumAggregate';\n timestamp?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type EnsNameSumOrderByAggregateInput = {\n timestamp?: InputMaybe<SortOrder>;\n};\n\nexport type EnsNameUpdateInput = {\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n name?: InputMaybe<StringFieldUpdateOperationsInput>;\n timestamp?: InputMaybe<IntFieldUpdateOperationsInput>;\n};\n\nexport type EnsNameUpdateManyMutationInput = {\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n name?: InputMaybe<StringFieldUpdateOperationsInput>;\n timestamp?: InputMaybe<IntFieldUpdateOperationsInput>;\n};\n\nexport type EnsNameWhereInput = {\n AND?: InputMaybe<Array<EnsNameWhereInput>>;\n NOT?: InputMaybe<Array<EnsNameWhereInput>>;\n OR?: InputMaybe<Array<EnsNameWhereInput>>;\n id?: InputMaybe<StringFilter>;\n name?: InputMaybe<StringFilter>;\n timestamp?: InputMaybe<IntFilter>;\n};\n\nexport type EnsNameWhereUniqueInput = {\n id?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type IntFieldUpdateOperationsInput = {\n decrement?: InputMaybe<Scalars['Int']['input']>;\n divide?: InputMaybe<Scalars['Int']['input']>;\n increment?: InputMaybe<Scalars['Int']['input']>;\n multiply?: InputMaybe<Scalars['Int']['input']>;\n set?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type IntFilter = {\n equals?: InputMaybe<Scalars['Int']['input']>;\n gt?: InputMaybe<Scalars['Int']['input']>;\n gte?: InputMaybe<Scalars['Int']['input']>;\n in?: InputMaybe<Array<Scalars['Int']['input']>>;\n lt?: InputMaybe<Scalars['Int']['input']>;\n lte?: InputMaybe<Scalars['Int']['input']>;\n not?: InputMaybe<NestedIntFilter>;\n notIn?: InputMaybe<Array<Scalars['Int']['input']>>;\n};\n\nexport type IntWithAggregatesFilter = {\n _avg?: InputMaybe<NestedFloatFilter>;\n _count?: InputMaybe<NestedIntFilter>;\n _max?: InputMaybe<NestedIntFilter>;\n _min?: InputMaybe<NestedIntFilter>;\n _sum?: InputMaybe<NestedIntFilter>;\n equals?: InputMaybe<Scalars['Int']['input']>;\n gt?: InputMaybe<Scalars['Int']['input']>;\n gte?: InputMaybe<Scalars['Int']['input']>;\n in?: InputMaybe<Array<Scalars['Int']['input']>>;\n lt?: InputMaybe<Scalars['Int']['input']>;\n lte?: InputMaybe<Scalars['Int']['input']>;\n not?: InputMaybe<NestedIntWithAggregatesFilter>;\n notIn?: InputMaybe<Array<Scalars['Int']['input']>>;\n};\n\n/** Basic metadata about the transaction data payload. */\nexport type MetaData = {\n __typename?: 'MetaData';\n /** Size of the associated data in bytes. */\n size: Scalars['String']['output'];\n /** Type is derrived from the \\`content-type\\` tag on a transaction. */\n type?: Maybe<Scalars['String']['output']>;\n};\n\nexport type Mutation = {\n __typename?: 'Mutation';\n createManyAttestation: AffectedRowsOutput;\n createManyEnsName: AffectedRowsOutput;\n createManyOffchainRevocation: AffectedRowsOutput;\n createManySchema: AffectedRowsOutput;\n createManySchemaName: AffectedRowsOutput;\n createManyServiceStat: AffectedRowsOutput;\n createManyTimestamp: AffectedRowsOutput;\n createOneAttestation: Attestation;\n createOneEnsName: EnsName;\n createOneOffchainRevocation: OffchainRevocation;\n createOneSchema: Schema;\n createOneSchemaName: SchemaName;\n createOneServiceStat: ServiceStat;\n createOneTimestamp: Timestamp;\n deleteManyAttestation: AffectedRowsOutput;\n deleteManyEnsName: AffectedRowsOutput;\n deleteManyOffchainRevocation: AffectedRowsOutput;\n deleteManySchema: AffectedRowsOutput;\n deleteManySchemaName: AffectedRowsOutput;\n deleteManyServiceStat: AffectedRowsOutput;\n deleteManyTimestamp: AffectedRowsOutput;\n deleteOneAttestation?: Maybe<Attestation>;\n deleteOneEnsName?: Maybe<EnsName>;\n deleteOneOffchainRevocation?: Maybe<OffchainRevocation>;\n deleteOneSchema?: Maybe<Schema>;\n deleteOneSchemaName?: Maybe<SchemaName>;\n deleteOneServiceStat?: Maybe<ServiceStat>;\n deleteOneTimestamp?: Maybe<Timestamp>;\n updateManyAttestation: AffectedRowsOutput;\n updateManyEnsName: AffectedRowsOutput;\n updateManyOffchainRevocation: AffectedRowsOutput;\n updateManySchema: AffectedRowsOutput;\n updateManySchemaName: AffectedRowsOutput;\n updateManyServiceStat: AffectedRowsOutput;\n updateManyTimestamp: AffectedRowsOutput;\n updateOneAttestation?: Maybe<Attestation>;\n updateOneEnsName?: Maybe<EnsName>;\n updateOneOffchainRevocation?: Maybe<OffchainRevocation>;\n updateOneSchema?: Maybe<Schema>;\n updateOneSchemaName?: Maybe<SchemaName>;\n updateOneServiceStat?: Maybe<ServiceStat>;\n updateOneTimestamp?: Maybe<Timestamp>;\n upsertOneAttestation: Attestation;\n upsertOneEnsName: EnsName;\n upsertOneOffchainRevocation: OffchainRevocation;\n upsertOneSchema: Schema;\n upsertOneSchemaName: SchemaName;\n upsertOneServiceStat: ServiceStat;\n upsertOneTimestamp: Timestamp;\n};\n\n\nexport type MutationCreateManyAttestationArgs = {\n data: Array<AttestationCreateManyInput>;\n skipDuplicates?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type MutationCreateManyEnsNameArgs = {\n data: Array<EnsNameCreateManyInput>;\n skipDuplicates?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type MutationCreateManyOffchainRevocationArgs = {\n data: Array<OffchainRevocationCreateManyInput>;\n skipDuplicates?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type MutationCreateManySchemaArgs = {\n data: Array<SchemaCreateManyInput>;\n skipDuplicates?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type MutationCreateManySchemaNameArgs = {\n data: Array<SchemaNameCreateManyInput>;\n skipDuplicates?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type MutationCreateManyServiceStatArgs = {\n data: Array<ServiceStatCreateManyInput>;\n skipDuplicates?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type MutationCreateManyTimestampArgs = {\n data: Array<TimestampCreateManyInput>;\n skipDuplicates?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type MutationCreateOneAttestationArgs = {\n data: AttestationCreateInput;\n};\n\n\nexport type MutationCreateOneEnsNameArgs = {\n data: EnsNameCreateInput;\n};\n\n\nexport type MutationCreateOneOffchainRevocationArgs = {\n data: OffchainRevocationCreateInput;\n};\n\n\nexport type MutationCreateOneSchemaArgs = {\n data: SchemaCreateInput;\n};\n\n\nexport type MutationCreateOneSchemaNameArgs = {\n data: SchemaNameCreateInput;\n};\n\n\nexport type MutationCreateOneServiceStatArgs = {\n data: ServiceStatCreateInput;\n};\n\n\nexport type MutationCreateOneTimestampArgs = {\n data: TimestampCreateInput;\n};\n\n\nexport type MutationDeleteManyAttestationArgs = {\n where?: InputMaybe<AttestationWhereInput>;\n};\n\n\nexport type MutationDeleteManyEnsNameArgs = {\n where?: InputMaybe<EnsNameWhereInput>;\n};\n\n\nexport type MutationDeleteManyOffchainRevocationArgs = {\n where?: InputMaybe<OffchainRevocationWhereInput>;\n};\n\n\nexport type MutationDeleteManySchemaArgs = {\n where?: InputMaybe<SchemaWhereInput>;\n};\n\n\nexport type MutationDeleteManySchemaNameArgs = {\n where?: InputMaybe<SchemaNameWhereInput>;\n};\n\n\nexport type MutationDeleteManyServiceStatArgs = {\n where?: InputMaybe<ServiceStatWhereInput>;\n};\n\n\nexport type MutationDeleteManyTimestampArgs = {\n where?: InputMaybe<TimestampWhereInput>;\n};\n\n\nexport type MutationDeleteOneAttestationArgs = {\n where: AttestationWhereUniqueInput;\n};\n\n\nexport type MutationDeleteOneEnsNameArgs = {\n where: EnsNameWhereUniqueInput;\n};\n\n\nexport type MutationDeleteOneOffchainRevocationArgs = {\n where: OffchainRevocationWhereUniqueInput;\n};\n\n\nexport type MutationDeleteOneSchemaArgs = {\n where: SchemaWhereUniqueInput;\n};\n\n\nexport type MutationDeleteOneSchemaNameArgs = {\n where: SchemaNameWhereUniqueInput;\n};\n\n\nexport type MutationDeleteOneServiceStatArgs = {\n where: ServiceStatWhereUniqueInput;\n};\n\n\nexport type MutationDeleteOneTimestampArgs = {\n where: TimestampWhereUniqueInput;\n};\n\n\nexport type MutationUpdateManyAttestationArgs = {\n data: AttestationUpdateManyMutationInput;\n where?: InputMaybe<AttestationWhereInput>;\n};\n\n\nexport type MutationUpdateManyEnsNameArgs = {\n data: EnsNameUpdateManyMutationInput;\n where?: InputMaybe<EnsNameWhereInput>;\n};\n\n\nexport type MutationUpdateManyOffchainRevocationArgs = {\n data: OffchainRevocationUpdateManyMutationInput;\n where?: InputMaybe<OffchainRevocationWhereInput>;\n};\n\n\nexport type MutationUpdateManySchemaArgs = {\n data: SchemaUpdateManyMutationInput;\n where?: InputMaybe<SchemaWhereInput>;\n};\n\n\nexport type MutationUpdateManySchemaNameArgs = {\n data: SchemaNameUpdateManyMutationInput;\n where?: InputMaybe<SchemaNameWhereInput>;\n};\n\n\nexport type MutationUpdateManyServiceStatArgs = {\n data: ServiceStatUpdateManyMutationInput;\n where?: InputMaybe<ServiceStatWhereInput>;\n};\n\n\nexport type MutationUpdateManyTimestampArgs = {\n data: TimestampUpdateManyMutationInput;\n where?: InputMaybe<TimestampWhereInput>;\n};\n\n\nexport type MutationUpdateOneAttestationArgs = {\n data: AttestationUpdateInput;\n where: AttestationWhereUniqueInput;\n};\n\n\nexport type MutationUpdateOneEnsNameArgs = {\n data: EnsNameUpdateInput;\n where: EnsNameWhereUniqueInput;\n};\n\n\nexport type MutationUpdateOneOffchainRevocationArgs = {\n data: OffchainRevocationUpdateInput;\n where: OffchainRevocationWhereUniqueInput;\n};\n\n\nexport type MutationUpdateOneSchemaArgs = {\n data: SchemaUpdateInput;\n where: SchemaWhereUniqueInput;\n};\n\n\nexport type MutationUpdateOneSchemaNameArgs = {\n data: SchemaNameUpdateInput;\n where: SchemaNameWhereUniqueInput;\n};\n\n\nexport type MutationUpdateOneServiceStatArgs = {\n data: ServiceStatUpdateInput;\n where: ServiceStatWhereUniqueInput;\n};\n\n\nexport type MutationUpdateOneTimestampArgs = {\n data: TimestampUpdateInput;\n where: TimestampWhereUniqueInput;\n};\n\n\nexport type MutationUpsertOneAttestationArgs = {\n create: AttestationCreateInput;\n update: AttestationUpdateInput;\n where: AttestationWhereUniqueInput;\n};\n\n\nexport type MutationUpsertOneEnsNameArgs = {\n create: EnsNameCreateInput;\n update: EnsNameUpdateInput;\n where: EnsNameWhereUniqueInput;\n};\n\n\nexport type MutationUpsertOneOffchainRevocationArgs = {\n create: OffchainRevocationCreateInput;\n update: OffchainRevocationUpdateInput;\n where: OffchainRevocationWhereUniqueInput;\n};\n\n\nexport type MutationUpsertOneSchemaArgs = {\n create: SchemaCreateInput;\n update: SchemaUpdateInput;\n where: SchemaWhereUniqueInput;\n};\n\n\nexport type MutationUpsertOneSchemaNameArgs = {\n create: SchemaNameCreateInput;\n update: SchemaNameUpdateInput;\n where: SchemaNameWhereUniqueInput;\n};\n\n\nexport type MutationUpsertOneServiceStatArgs = {\n create: ServiceStatCreateInput;\n update: ServiceStatUpdateInput;\n where: ServiceStatWhereUniqueInput;\n};\n\n\nexport type MutationUpsertOneTimestampArgs = {\n create: TimestampCreateInput;\n update: TimestampUpdateInput;\n where: TimestampWhereUniqueInput;\n};\n\nexport type NestedBoolFilter = {\n equals?: InputMaybe<Scalars['Boolean']['input']>;\n not?: InputMaybe<NestedBoolFilter>;\n};\n\nexport type NestedBoolWithAggregatesFilter = {\n _count?: InputMaybe<NestedIntFilter>;\n _max?: InputMaybe<NestedBoolFilter>;\n _min?: InputMaybe<NestedBoolFilter>;\n equals?: InputMaybe<Scalars['Boolean']['input']>;\n not?: InputMaybe<NestedBoolWithAggregatesFilter>;\n};\n\nexport type NestedFloatFilter = {\n equals?: InputMaybe<Scalars['Float']['input']>;\n gt?: InputMaybe<Scalars['Float']['input']>;\n gte?: InputMaybe<Scalars['Float']['input']>;\n in?: InputMaybe<Array<Scalars['Float']['input']>>;\n lt?: InputMaybe<Scalars['Float']['input']>;\n lte?: InputMaybe<Scalars['Float']['input']>;\n not?: InputMaybe<NestedFloatFilter>;\n notIn?: InputMaybe<Array<Scalars['Float']['input']>>;\n};\n\nexport type NestedIntFilter = {\n equals?: InputMaybe<Scalars['Int']['input']>;\n gt?: InputMaybe<Scalars['Int']['input']>;\n gte?: InputMaybe<Scalars['Int']['input']>;\n in?: InputMaybe<Array<Scalars['Int']['input']>>;\n lt?: InputMaybe<Scalars['Int']['input']>;\n lte?: InputMaybe<Scalars['Int']['input']>;\n not?: InputMaybe<NestedIntFilter>;\n notIn?: InputMaybe<Array<Scalars['Int']['input']>>;\n};\n\nexport type NestedIntWithAggregatesFilter = {\n _avg?: InputMaybe<NestedFloatFilter>;\n _count?: InputMaybe<NestedIntFilter>;\n _max?: InputMaybe<NestedIntFilter>;\n _min?: InputMaybe<NestedIntFilter>;\n _sum?: InputMaybe<NestedIntFilter>;\n equals?: InputMaybe<Scalars['Int']['input']>;\n gt?: InputMaybe<Scalars['Int']['input']>;\n gte?: InputMaybe<Scalars['Int']['input']>;\n in?: InputMaybe<Array<Scalars['Int']['input']>>;\n lt?: InputMaybe<Scalars['Int']['input']>;\n lte?: InputMaybe<Scalars['Int']['input']>;\n not?: InputMaybe<NestedIntWithAggregatesFilter>;\n notIn?: InputMaybe<Array<Scalars['Int']['input']>>;\n};\n\nexport type NestedStringFilter = {\n contains?: InputMaybe<Scalars['String']['input']>;\n endsWith?: InputMaybe<Scalars['String']['input']>;\n equals?: InputMaybe<Scalars['String']['input']>;\n gt?: InputMaybe<Scalars['String']['input']>;\n gte?: InputMaybe<Scalars['String']['input']>;\n in?: InputMaybe<Array<Scalars['String']['input']>>;\n lt?: InputMaybe<Scalars['String']['input']>;\n lte?: InputMaybe<Scalars['String']['input']>;\n not?: InputMaybe<NestedStringFilter>;\n notIn?: InputMaybe<Array<Scalars['String']['input']>>;\n startsWith?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type NestedStringWithAggregatesFilter = {\n _count?: InputMaybe<NestedIntFilter>;\n _max?: InputMaybe<NestedStringFilter>;\n _min?: InputMaybe<NestedStringFilter>;\n contains?: InputMaybe<Scalars['String']['input']>;\n endsWith?: InputMaybe<Scalars['String']['input']>;\n equals?: InputMaybe<Scalars['String']['input']>;\n gt?: InputMaybe<Scalars['String']['input']>;\n gte?: InputMaybe<Scalars['String']['input']>;\n in?: InputMaybe<Array<Scalars['String']['input']>>;\n lt?: InputMaybe<Scalars['String']['input']>;\n lte?: InputMaybe<Scalars['String']['input']>;\n not?: InputMaybe<NestedStringWithAggregatesFilter>;\n notIn?: InputMaybe<Array<Scalars['String']['input']>>;\n startsWith?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type OffchainRevocation = {\n __typename?: 'OffchainRevocation';\n from: Scalars['String']['output'];\n id: Scalars['String']['output'];\n timestamp: Scalars['Int']['output'];\n txid: Scalars['String']['output'];\n uid: Scalars['String']['output'];\n};\n\nexport type OffchainRevocationAvgAggregate = {\n __typename?: 'OffchainRevocationAvgAggregate';\n timestamp?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type OffchainRevocationAvgOrderByAggregateInput = {\n timestamp?: InputMaybe<SortOrder>;\n};\n\nexport type OffchainRevocationCountAggregate = {\n __typename?: 'OffchainRevocationCountAggregate';\n _all: Scalars['Int']['output'];\n from: Scalars['Int']['output'];\n id: Scalars['Int']['output'];\n timestamp: Scalars['Int']['output'];\n txid: Scalars['Int']['output'];\n uid: Scalars['Int']['output'];\n};\n\nexport type OffchainRevocationCountOrderByAggregateInput = {\n from?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n uid?: InputMaybe<SortOrder>;\n};\n\nexport type OffchainRevocationCreateInput = {\n from: Scalars['String']['input'];\n id?: InputMaybe<Scalars['String']['input']>;\n timestamp: Scalars['Int']['input'];\n txid: Scalars['String']['input'];\n uid: Scalars['String']['input'];\n};\n\nexport type OffchainRevocationCreateManyInput = {\n from: Scalars['String']['input'];\n id?: InputMaybe<Scalars['String']['input']>;\n timestamp: Scalars['Int']['input'];\n txid: Scalars['String']['input'];\n uid: Scalars['String']['input'];\n};\n\nexport type OffchainRevocationGroupBy = {\n __typename?: 'OffchainRevocationGroupBy';\n _avg?: Maybe<OffchainRevocationAvgAggregate>;\n _count?: Maybe<OffchainRevocationCountAggregate>;\n _max?: Maybe<OffchainRevocationMaxAggregate>;\n _min?: Maybe<OffchainRevocationMinAggregate>;\n _sum?: Maybe<OffchainRevocationSumAggregate>;\n from: Scalars['String']['output'];\n id: Scalars['String']['output'];\n timestamp: Scalars['Int']['output'];\n txid: Scalars['String']['output'];\n uid: Scalars['String']['output'];\n};\n\nexport type OffchainRevocationMaxAggregate = {\n __typename?: 'OffchainRevocationMaxAggregate';\n from?: Maybe<Scalars['String']['output']>;\n id?: Maybe<Scalars['String']['output']>;\n timestamp?: Maybe<Scalars['Int']['output']>;\n txid?: Maybe<Scalars['String']['output']>;\n uid?: Maybe<Scalars['String']['output']>;\n};\n\nexport type OffchainRevocationMaxOrderByAggregateInput = {\n from?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n uid?: InputMaybe<SortOrder>;\n};\n\nexport type OffchainRevocationMinAggregate = {\n __typename?: 'OffchainRevocationMinAggregate';\n from?: Maybe<Scalars['String']['output']>;\n id?: Maybe<Scalars['String']['output']>;\n timestamp?: Maybe<Scalars['Int']['output']>;\n txid?: Maybe<Scalars['String']['output']>;\n uid?: Maybe<Scalars['String']['output']>;\n};\n\nexport type OffchainRevocationMinOrderByAggregateInput = {\n from?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n uid?: InputMaybe<SortOrder>;\n};\n\nexport type OffchainRevocationOrderByWithAggregationInput = {\n _avg?: InputMaybe<OffchainRevocationAvgOrderByAggregateInput>;\n _count?: InputMaybe<OffchainRevocationCountOrderByAggregateInput>;\n _max?: InputMaybe<OffchainRevocationMaxOrderByAggregateInput>;\n _min?: InputMaybe<OffchainRevocationMinOrderByAggregateInput>;\n _sum?: InputMaybe<OffchainRevocationSumOrderByAggregateInput>;\n from?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n uid?: InputMaybe<SortOrder>;\n};\n\nexport type OffchainRevocationOrderByWithRelationInput = {\n from?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n uid?: InputMaybe<SortOrder>;\n};\n\nexport enum OffchainRevocationScalarFieldEnum {\n From = 'from',\n Id = 'id',\n Timestamp = 'timestamp',\n Txid = 'txid',\n Uid = 'uid'\n}\n\nexport type OffchainRevocationScalarWhereWithAggregatesInput = {\n AND?: InputMaybe<Array<OffchainRevocationScalarWhereWithAggregatesInput>>;\n NOT?: InputMaybe<Array<OffchainRevocationScalarWhereWithAggregatesInput>>;\n OR?: InputMaybe<Array<OffchainRevocationScalarWhereWithAggregatesInput>>;\n from?: InputMaybe<StringWithAggregatesFilter>;\n id?: InputMaybe<StringWithAggregatesFilter>;\n timestamp?: InputMaybe<IntWithAggregatesFilter>;\n txid?: InputMaybe<StringWithAggregatesFilter>;\n uid?: InputMaybe<StringWithAggregatesFilter>;\n};\n\nexport type OffchainRevocationSumAggregate = {\n __typename?: 'OffchainRevocationSumAggregate';\n timestamp?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type OffchainRevocationSumOrderByAggregateInput = {\n timestamp?: InputMaybe<SortOrder>;\n};\n\nexport type OffchainRevocationUpdateInput = {\n from?: InputMaybe<StringFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n timestamp?: InputMaybe<IntFieldUpdateOperationsInput>;\n txid?: InputMaybe<StringFieldUpdateOperationsInput>;\n uid?: InputMaybe<StringFieldUpdateOperationsInput>;\n};\n\nexport type OffchainRevocationUpdateManyMutationInput = {\n from?: InputMaybe<StringFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n timestamp?: InputMaybe<IntFieldUpdateOperationsInput>;\n txid?: InputMaybe<StringFieldUpdateOperationsInput>;\n uid?: InputMaybe<StringFieldUpdateOperationsInput>;\n};\n\nexport type OffchainRevocationWhereInput = {\n AND?: InputMaybe<Array<OffchainRevocationWhereInput>>;\n NOT?: InputMaybe<Array<OffchainRevocationWhereInput>>;\n OR?: InputMaybe<Array<OffchainRevocationWhereInput>>;\n from?: InputMaybe<StringFilter>;\n id?: InputMaybe<StringFilter>;\n timestamp?: InputMaybe<IntFilter>;\n txid?: InputMaybe<StringFilter>;\n uid?: InputMaybe<StringFilter>;\n};\n\nexport type OffchainRevocationWhereUniqueInput = {\n id?: InputMaybe<Scalars['String']['input']>;\n};\n\n/** Representation of a transaction owner. */\nexport type Owner = {\n __typename?: 'Owner';\n /** The owner's wallet address. */\n address: Scalars['String']['output'];\n /** The owner's public key as a base64url encoded string. */\n key: Scalars['String']['output'];\n};\n\n/** Paginated page info using the GraphQL cursor spec. */\nexport type PageInfo = {\n __typename?: 'PageInfo';\n hasNextPage: Scalars['Boolean']['output'];\n};\n\n/**\n * The parent transaction for bundled transactions,\n * see: https://github.com/ArweaveTeam/arweave-standards/blob/master/ans/ANS-102.md.\n */\nexport type Parent = {\n __typename?: 'Parent';\n id: Scalars['ID']['output'];\n};\n\nexport type Query = {\n __typename?: 'Query';\n aggregateAttestation: AggregateAttestation;\n aggregateEnsName: AggregateEnsName;\n aggregateOffchainRevocation: AggregateOffchainRevocation;\n aggregateSchema: AggregateSchema;\n aggregateSchemaName: AggregateSchemaName;\n aggregateServiceStat: AggregateServiceStat;\n aggregateTimestamp: AggregateTimestamp;\n attestation?: Maybe<Attestation>;\n attestations: Array<Attestation>;\n block?: Maybe<Block>;\n blocks: BlockConnection;\n ensName?: Maybe<EnsName>;\n ensNames: Array<EnsName>;\n findFirstAttestation?: Maybe<Attestation>;\n findFirstAttestationOrThrow?: Maybe<Attestation>;\n findFirstEnsName?: Maybe<EnsName>;\n findFirstEnsNameOrThrow?: Maybe<EnsName>;\n findFirstOffchainRevocation?: Maybe<OffchainRevocation>;\n findFirstOffchainRevocationOrThrow?: Maybe<OffchainRevocation>;\n findFirstSchema?: Maybe<Schema>;\n findFirstSchemaName?: Maybe<SchemaName>;\n findFirstSchemaNameOrThrow?: Maybe<SchemaName>;\n findFirstSchemaOrThrow?: Maybe<Schema>;\n findFirstServiceStat?: Maybe<ServiceStat>;\n findFirstServiceStatOrThrow?: Maybe<ServiceStat>;\n findFirstTimestamp?: Maybe<Timestamp>;\n findFirstTimestampOrThrow?: Maybe<Timestamp>;\n getAttestation?: Maybe<Attestation>;\n getEnsName?: Maybe<EnsName>;\n getOffchainRevocation?: Maybe<OffchainRevocation>;\n getSchema?: Maybe<Schema>;\n getSchemaName?: Maybe<SchemaName>;\n getServiceStat?: Maybe<ServiceStat>;\n getTimestamp?: Maybe<Timestamp>;\n groupByAttestation: Array<AttestationGroupBy>;\n groupByEnsName: Array<EnsNameGroupBy>;\n groupByOffchainRevocation: Array<OffchainRevocationGroupBy>;\n groupBySchema: Array<SchemaGroupBy>;\n groupBySchemaName: Array<SchemaNameGroupBy>;\n groupByServiceStat: Array<ServiceStatGroupBy>;\n groupByTimestamp: Array<TimestampGroupBy>;\n offchainRevocation?: Maybe<OffchainRevocation>;\n offchainRevocations: Array<OffchainRevocation>;\n schema?: Maybe<Schema>;\n schemaName?: Maybe<SchemaName>;\n schemaNames: Array<SchemaName>;\n schemata: Array<Schema>;\n serviceStat?: Maybe<ServiceStat>;\n serviceStats: Array<ServiceStat>;\n timestamp?: Maybe<Timestamp>;\n timestamps: Array<Timestamp>;\n /** Get a transaction by its id */\n transaction?: Maybe<Transaction>;\n /** Get a paginated set of matching transactions using filters. */\n transactions: TransactionConnection;\n};\n\n\nexport type QueryAggregateAttestationArgs = {\n cursor?: InputMaybe<AttestationWhereUniqueInput>;\n orderBy?: InputMaybe<Array<AttestationOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<AttestationWhereInput>;\n};\n\n\nexport type QueryAggregateEnsNameArgs = {\n cursor?: InputMaybe<EnsNameWhereUniqueInput>;\n orderBy?: InputMaybe<Array<EnsNameOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<EnsNameWhereInput>;\n};\n\n\nexport type QueryAggregateOffchainRevocationArgs = {\n cursor?: InputMaybe<OffchainRevocationWhereUniqueInput>;\n orderBy?: InputMaybe<Array<OffchainRevocationOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<OffchainRevocationWhereInput>;\n};\n\n\nexport type QueryAggregateSchemaArgs = {\n cursor?: InputMaybe<SchemaWhereUniqueInput>;\n orderBy?: InputMaybe<Array<SchemaOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<SchemaWhereInput>;\n};\n\n\nexport type QueryAggregateSchemaNameArgs = {\n cursor?: InputMaybe<SchemaNameWhereUniqueInput>;\n orderBy?: InputMaybe<Array<SchemaNameOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<SchemaNameWhereInput>;\n};\n\n\nexport type QueryAggregateServiceStatArgs = {\n cursor?: InputMaybe<ServiceStatWhereUniqueInput>;\n orderBy?: InputMaybe<Array<ServiceStatOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<ServiceStatWhereInput>;\n};\n\n\nexport type QueryAggregateTimestampArgs = {\n cursor?: InputMaybe<TimestampWhereUniqueInput>;\n orderBy?: InputMaybe<Array<TimestampOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<TimestampWhereInput>;\n};\n\n\nexport type QueryAttestationArgs = {\n where: AttestationWhereUniqueInput;\n};\n\n\nexport type QueryAttestationsArgs = {\n cursor?: InputMaybe<AttestationWhereUniqueInput>;\n distinct?: InputMaybe<Array<AttestationScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<AttestationOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<AttestationWhereInput>;\n};\n\n\nexport type QueryBlockArgs = {\n id: Scalars['String']['input'];\n};\n\n\nexport type QueryBlocksArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n height?: InputMaybe<BlockFilter>;\n ids?: InputMaybe<Array<Scalars['ID']['input']>>;\n sort?: InputMaybe<SortOrder>;\n};\n\n\nexport type QueryEnsNameArgs = {\n where: EnsNameWhereUniqueInput;\n};\n\n\nexport type QueryEnsNamesArgs = {\n cursor?: InputMaybe<EnsNameWhereUniqueInput>;\n distinct?: InputMaybe<Array<EnsNameScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<EnsNameOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<EnsNameWhereInput>;\n};\n\n\nexport type QueryFindFirstAttestationArgs = {\n cursor?: InputMaybe<AttestationWhereUniqueInput>;\n distinct?: InputMaybe<Array<AttestationScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<AttestationOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<AttestationWhereInput>;\n};\n\n\nexport type QueryFindFirstAttestationOrThrowArgs = {\n cursor?: InputMaybe<AttestationWhereUniqueInput>;\n distinct?: InputMaybe<Array<AttestationScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<AttestationOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<AttestationWhereInput>;\n};\n\n\nexport type QueryFindFirstEnsNameArgs = {\n cursor?: InputMaybe<EnsNameWhereUniqueInput>;\n distinct?: InputMaybe<Array<EnsNameScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<EnsNameOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<EnsNameWhereInput>;\n};\n\n\nexport type QueryFindFirstEnsNameOrThrowArgs = {\n cursor?: InputMaybe<EnsNameWhereUniqueInput>;\n distinct?: InputMaybe<Array<EnsNameScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<EnsNameOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<EnsNameWhereInput>;\n};\n\n\nexport type QueryFindFirstOffchainRevocationArgs = {\n cursor?: InputMaybe<OffchainRevocationWhereUniqueInput>;\n distinct?: InputMaybe<Array<OffchainRevocationScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<OffchainRevocationOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<OffchainRevocationWhereInput>;\n};\n\n\nexport type QueryFindFirstOffchainRevocationOrThrowArgs = {\n cursor?: InputMaybe<OffchainRevocationWhereUniqueInput>;\n distinct?: InputMaybe<Array<OffchainRevocationScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<OffchainRevocationOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<OffchainRevocationWhereInput>;\n};\n\n\nexport type QueryFindFirstSchemaArgs = {\n cursor?: InputMaybe<SchemaWhereUniqueInput>;\n distinct?: InputMaybe<Array<SchemaScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<SchemaOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<SchemaWhereInput>;\n};\n\n\nexport type QueryFindFirstSchemaNameArgs = {\n cursor?: InputMaybe<SchemaNameWhereUniqueInput>;\n distinct?: InputMaybe<Array<SchemaNameScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<SchemaNameOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<SchemaNameWhereInput>;\n};\n\n\nexport type QueryFindFirstSchemaNameOrThrowArgs = {\n cursor?: InputMaybe<SchemaNameWhereUniqueInput>;\n distinct?: InputMaybe<Array<SchemaNameScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<SchemaNameOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<SchemaNameWhereInput>;\n};\n\n\nexport type QueryFindFirstSchemaOrThrowArgs = {\n cursor?: InputMaybe<SchemaWhereUniqueInput>;\n distinct?: InputMaybe<Array<SchemaScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<SchemaOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<SchemaWhereInput>;\n};\n\n\nexport type QueryFindFirstServiceStatArgs = {\n cursor?: InputMaybe<ServiceStatWhereUniqueInput>;\n distinct?: InputMaybe<Array<ServiceStatScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<ServiceStatOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<ServiceStatWhereInput>;\n};\n\n\nexport type QueryFindFirstServiceStatOrThrowArgs = {\n cursor?: InputMaybe<ServiceStatWhereUniqueInput>;\n distinct?: InputMaybe<Array<ServiceStatScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<ServiceStatOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<ServiceStatWhereInput>;\n};\n\n\nexport type QueryFindFirstTimestampArgs = {\n cursor?: InputMaybe<TimestampWhereUniqueInput>;\n distinct?: InputMaybe<Array<TimestampScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<TimestampOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<TimestampWhereInput>;\n};\n\n\nexport type QueryFindFirstTimestampOrThrowArgs = {\n cursor?: InputMaybe<TimestampWhereUniqueInput>;\n distinct?: InputMaybe<Array<TimestampScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<TimestampOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<TimestampWhereInput>;\n};\n\n\nexport type QueryGetAttestationArgs = {\n where: AttestationWhereUniqueInput;\n};\n\n\nexport type QueryGetEnsNameArgs = {\n where: EnsNameWhereUniqueInput;\n};\n\n\nexport type QueryGetOffchainRevocationArgs = {\n where: OffchainRevocationWhereUniqueInput;\n};\n\n\nexport type QueryGetSchemaArgs = {\n where: SchemaWhereUniqueInput;\n};\n\n\nexport type QueryGetSchemaNameArgs = {\n where: SchemaNameWhereUniqueInput;\n};\n\n\nexport type QueryGetServiceStatArgs = {\n where: ServiceStatWhereUniqueInput;\n};\n\n\nexport type QueryGetTimestampArgs = {\n where: TimestampWhereUniqueInput;\n};\n\n\nexport type QueryGroupByAttestationArgs = {\n by: Array<AttestationScalarFieldEnum>;\n having?: InputMaybe<AttestationScalarWhereWithAggregatesInput>;\n orderBy?: InputMaybe<Array<AttestationOrderByWithAggregationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<AttestationWhereInput>;\n};\n\n\nexport type QueryGroupByEnsNameArgs = {\n by: Array<EnsNameScalarFieldEnum>;\n having?: InputMaybe<EnsNameScalarWhereWithAggregatesInput>;\n orderBy?: InputMaybe<Array<EnsNameOrderByWithAggregationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<EnsNameWhereInput>;\n};\n\n\nexport type QueryGroupByOffchainRevocationArgs = {\n by: Array<OffchainRevocationScalarFieldEnum>;\n having?: InputMaybe<OffchainRevocationScalarWhereWithAggregatesInput>;\n orderBy?: InputMaybe<Array<OffchainRevocationOrderByWithAggregationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<OffchainRevocationWhereInput>;\n};\n\n\nexport type QueryGroupBySchemaArgs = {\n by: Array<SchemaScalarFieldEnum>;\n having?: InputMaybe<SchemaScalarWhereWithAggregatesInput>;\n orderBy?: InputMaybe<Array<SchemaOrderByWithAggregationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<SchemaWhereInput>;\n};\n\n\nexport type QueryGroupBySchemaNameArgs = {\n by: Array<SchemaNameScalarFieldEnum>;\n having?: InputMaybe<SchemaNameScalarWhereWithAggregatesInput>;\n orderBy?: InputMaybe<Array<SchemaNameOrderByWithAggregationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<SchemaNameWhereInput>;\n};\n\n\nexport type QueryGroupByServiceStatArgs = {\n by: Array<ServiceStatScalarFieldEnum>;\n having?: InputMaybe<ServiceStatScalarWhereWithAggregatesInput>;\n orderBy?: InputMaybe<Array<ServiceStatOrderByWithAggregationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<ServiceStatWhereInput>;\n};\n\n\nexport type QueryGroupByTimestampArgs = {\n by: Array<TimestampScalarFieldEnum>;\n having?: InputMaybe<TimestampScalarWhereWithAggregatesInput>;\n orderBy?: InputMaybe<Array<TimestampOrderByWithAggregationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<TimestampWhereInput>;\n};\n\n\nexport type QueryOffchainRevocationArgs = {\n where: OffchainRevocationWhereUniqueInput;\n};\n\n\nexport type QueryOffchainRevocationsArgs = {\n cursor?: InputMaybe<OffchainRevocationWhereUniqueInput>;\n distinct?: InputMaybe<Array<OffchainRevocationScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<OffchainRevocationOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<OffchainRevocationWhereInput>;\n};\n\n\nexport type QuerySchemaArgs = {\n where: SchemaWhereUniqueInput;\n};\n\n\nexport type QuerySchemaNameArgs = {\n where: SchemaNameWhereUniqueInput;\n};\n\n\nexport type QuerySchemaNamesArgs = {\n cursor?: InputMaybe<SchemaNameWhereUniqueInput>;\n distinct?: InputMaybe<Array<SchemaNameScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<SchemaNameOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<SchemaNameWhereInput>;\n};\n\n\nexport type QuerySchemataArgs = {\n cursor?: InputMaybe<SchemaWhereUniqueInput>;\n distinct?: InputMaybe<Array<SchemaScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<SchemaOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<SchemaWhereInput>;\n};\n\n\nexport type QueryServiceStatArgs = {\n where: ServiceStatWhereUniqueInput;\n};\n\n\nexport type QueryServiceStatsArgs = {\n cursor?: InputMaybe<ServiceStatWhereUniqueInput>;\n distinct?: InputMaybe<Array<ServiceStatScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<ServiceStatOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<ServiceStatWhereInput>;\n};\n\n\nexport type QueryTimestampArgs = {\n where: TimestampWhereUniqueInput;\n};\n\n\nexport type QueryTimestampsArgs = {\n cursor?: InputMaybe<TimestampWhereUniqueInput>;\n distinct?: InputMaybe<Array<TimestampScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<TimestampOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<TimestampWhereInput>;\n};\n\n\nexport type QueryTransactionArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type QueryTransactionsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n block?: InputMaybe<BlockFilter>;\n bundledIn?: InputMaybe<Array<Scalars['ID']['input']>>;\n first?: InputMaybe<Scalars['Int']['input']>;\n ids?: InputMaybe<Array<Scalars['ID']['input']>>;\n owners?: InputMaybe<Array<Scalars['String']['input']>>;\n recipients?: InputMaybe<Array<Scalars['String']['input']>>;\n sort?: InputMaybe<SortOrder>;\n tags?: InputMaybe<Array<TagFilter>>;\n};\n\nexport enum QueryMode {\n Default = 'default',\n Insensitive = 'insensitive'\n}\n\nexport type Schema = {\n __typename?: 'Schema';\n _count?: Maybe<SchemaCount>;\n attestations: Array<Attestation>;\n creator: Scalars['String']['output'];\n id: Scalars['String']['output'];\n index: Scalars['String']['output'];\n resolver: Scalars['String']['output'];\n revocable: Scalars['Boolean']['output'];\n schema: Scalars['String']['output'];\n schemaNames: Array<SchemaName>;\n time: Scalars['Int']['output'];\n txid: Scalars['String']['output'];\n};\n\n\nexport type SchemaAttestationsArgs = {\n cursor?: InputMaybe<AttestationWhereUniqueInput>;\n distinct?: InputMaybe<Array<AttestationScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<AttestationOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<AttestationWhereInput>;\n};\n\n\nexport type SchemaSchemaNamesArgs = {\n cursor?: InputMaybe<SchemaNameWhereUniqueInput>;\n distinct?: InputMaybe<Array<SchemaNameScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<SchemaNameOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<SchemaNameWhereInput>;\n};\n\nexport type SchemaAvgAggregate = {\n __typename?: 'SchemaAvgAggregate';\n time?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type SchemaAvgOrderByAggregateInput = {\n time?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaCount = {\n __typename?: 'SchemaCount';\n attestations: Scalars['Int']['output'];\n schemaNames: Scalars['Int']['output'];\n};\n\nexport type SchemaCountAggregate = {\n __typename?: 'SchemaCountAggregate';\n _all: Scalars['Int']['output'];\n creator: Scalars['Int']['output'];\n id: Scalars['Int']['output'];\n index: Scalars['Int']['output'];\n resolver: Scalars['Int']['output'];\n revocable: Scalars['Int']['output'];\n schema: Scalars['Int']['output'];\n time: Scalars['Int']['output'];\n txid: Scalars['Int']['output'];\n};\n\nexport type SchemaCountOrderByAggregateInput = {\n creator?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n index?: InputMaybe<SortOrder>;\n resolver?: InputMaybe<SortOrder>;\n revocable?: InputMaybe<SortOrder>;\n schema?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaCreateInput = {\n attestations?: InputMaybe<AttestationCreateNestedManyWithoutSchemaInput>;\n creator: Scalars['String']['input'];\n id: Scalars['String']['input'];\n index: Scalars['String']['input'];\n resolver: Scalars['String']['input'];\n revocable: Scalars['Boolean']['input'];\n schema: Scalars['String']['input'];\n schemaNames?: InputMaybe<SchemaNameCreateNestedManyWithoutSchemaInput>;\n time: Scalars['Int']['input'];\n txid: Scalars['String']['input'];\n};\n\nexport type SchemaCreateManyInput = {\n creator: Scalars['String']['input'];\n id: Scalars['String']['input'];\n index: Scalars['String']['input'];\n resolver: Scalars['String']['input'];\n revocable: Scalars['Boolean']['input'];\n schema: Scalars['String']['input'];\n time: Scalars['Int']['input'];\n txid: Scalars['String']['input'];\n};\n\nexport type SchemaCreateNestedOneWithoutAttestationsInput = {\n connect?: InputMaybe<SchemaWhereUniqueInput>;\n connectOrCreate?: InputMaybe<SchemaCreateOrConnectWithoutAttestationsInput>;\n create?: InputMaybe<SchemaCreateWithoutAttestationsInput>;\n};\n\nexport type SchemaCreateNestedOneWithoutSchemaNamesInput = {\n connect?: InputMaybe<SchemaWhereUniqueInput>;\n connectOrCreate?: InputMaybe<SchemaCreateOrConnectWithoutSchemaNamesInput>;\n create?: InputMaybe<SchemaCreateWithoutSchemaNamesInput>;\n};\n\nexport type SchemaCreateOrConnectWithoutAttestationsInput = {\n create: SchemaCreateWithoutAttestationsInput;\n where: SchemaWhereUniqueInput;\n};\n\nexport type SchemaCreateOrConnectWithoutSchemaNamesInput = {\n create: SchemaCreateWithoutSchemaNamesInput;\n where: SchemaWhereUniqueInput;\n};\n\nexport type SchemaCreateWithoutAttestationsInput = {\n creator: Scalars['String']['input'];\n id: Scalars['String']['input'];\n index: Scalars['String']['input'];\n resolver: Scalars['String']['input'];\n revocable: Scalars['Boolean']['input'];\n schema: Scalars['String']['input'];\n schemaNames?: InputMaybe<SchemaNameCreateNestedManyWithoutSchemaInput>;\n time: Scalars['Int']['input'];\n txid: Scalars['String']['input'];\n};\n\nexport type SchemaCreateWithoutSchemaNamesInput = {\n attestations?: InputMaybe<AttestationCreateNestedManyWithoutSchemaInput>;\n creator: Scalars['String']['input'];\n id: Scalars['String']['input'];\n index: Scalars['String']['input'];\n resolver: Scalars['String']['input'];\n revocable: Scalars['Boolean']['input'];\n schema: Scalars['String']['input'];\n time: Scalars['Int']['input'];\n txid: Scalars['String']['input'];\n};\n\nexport type SchemaGroupBy = {\n __typename?: 'SchemaGroupBy';\n _avg?: Maybe<SchemaAvgAggregate>;\n _count?: Maybe<SchemaCountAggregate>;\n _max?: Maybe<SchemaMaxAggregate>;\n _min?: Maybe<SchemaMinAggregate>;\n _sum?: Maybe<SchemaSumAggregate>;\n creator: Scalars['String']['output'];\n id: Scalars['String']['output'];\n index: Scalars['String']['output'];\n resolver: Scalars['String']['output'];\n revocable: Scalars['Boolean']['output'];\n schema: Scalars['String']['output'];\n time: Scalars['Int']['output'];\n txid: Scalars['String']['output'];\n};\n\nexport type SchemaMaxAggregate = {\n __typename?: 'SchemaMaxAggregate';\n creator?: Maybe<Scalars['String']['output']>;\n id?: Maybe<Scalars['String']['output']>;\n index?: Maybe<Scalars['String']['output']>;\n resolver?: Maybe<Scalars['String']['output']>;\n revocable?: Maybe<Scalars['Boolean']['output']>;\n schema?: Maybe<Scalars['String']['output']>;\n time?: Maybe<Scalars['Int']['output']>;\n txid?: Maybe<Scalars['String']['output']>;\n};\n\nexport type SchemaMaxOrderByAggregateInput = {\n creator?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n index?: InputMaybe<SortOrder>;\n resolver?: InputMaybe<SortOrder>;\n revocable?: InputMaybe<SortOrder>;\n schema?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaMinAggregate = {\n __typename?: 'SchemaMinAggregate';\n creator?: Maybe<Scalars['String']['output']>;\n id?: Maybe<Scalars['String']['output']>;\n index?: Maybe<Scalars['String']['output']>;\n resolver?: Maybe<Scalars['String']['output']>;\n revocable?: Maybe<Scalars['Boolean']['output']>;\n schema?: Maybe<Scalars['String']['output']>;\n time?: Maybe<Scalars['Int']['output']>;\n txid?: Maybe<Scalars['String']['output']>;\n};\n\nexport type SchemaMinOrderByAggregateInput = {\n creator?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n index?: InputMaybe<SortOrder>;\n resolver?: InputMaybe<SortOrder>;\n revocable?: InputMaybe<SortOrder>;\n schema?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaName = {\n __typename?: 'SchemaName';\n attesterAddress: Scalars['String']['output'];\n id: Scalars['String']['output'];\n isCreator: Scalars['Boolean']['output'];\n name: Scalars['String']['output'];\n schema: Schema;\n schemaId: Scalars['String']['output'];\n time: Scalars['Int']['output'];\n};\n\nexport type SchemaNameAvgAggregate = {\n __typename?: 'SchemaNameAvgAggregate';\n time?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type SchemaNameAvgOrderByAggregateInput = {\n time?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaNameCountAggregate = {\n __typename?: 'SchemaNameCountAggregate';\n _all: Scalars['Int']['output'];\n attesterAddress: Scalars['Int']['output'];\n id: Scalars['Int']['output'];\n isCreator: Scalars['Int']['output'];\n name: Scalars['Int']['output'];\n schemaId: Scalars['Int']['output'];\n time: Scalars['Int']['output'];\n};\n\nexport type SchemaNameCountOrderByAggregateInput = {\n attesterAddress?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n isCreator?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n schemaId?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaNameCreateInput = {\n attesterAddress: Scalars['String']['input'];\n id?: InputMaybe<Scalars['String']['input']>;\n isCreator: Scalars['Boolean']['input'];\n name: Scalars['String']['input'];\n schema: SchemaCreateNestedOneWithoutSchemaNamesInput;\n time: Scalars['Int']['input'];\n};\n\nexport type SchemaNameCreateManyInput = {\n attesterAddress: Scalars['String']['input'];\n id?: InputMaybe<Scalars['String']['input']>;\n isCreator: Scalars['Boolean']['input'];\n name: Scalars['String']['input'];\n schemaId: Scalars['String']['input'];\n time: Scalars['Int']['input'];\n};\n\nexport type SchemaNameCreateManySchemaInput = {\n attesterAddress: Scalars['String']['input'];\n id?: InputMaybe<Scalars['String']['input']>;\n isCreator: Scalars['Boolean']['input'];\n name: Scalars['String']['input'];\n time: Scalars['Int']['input'];\n};\n\nexport type SchemaNameCreateManySchemaInputEnvelope = {\n data: Array<SchemaNameCreateManySchemaInput>;\n skipDuplicates?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\nexport type SchemaNameCreateNestedManyWithoutSchemaInput = {\n connect?: InputMaybe<Array<SchemaNameWhereUniqueInput>>;\n connectOrCreate?: InputMaybe<Array<SchemaNameCreateOrConnectWithoutSchemaInput>>;\n create?: InputMaybe<Array<SchemaNameCreateWithoutSchemaInput>>;\n createMany?: InputMaybe<SchemaNameCreateManySchemaInputEnvelope>;\n};\n\nexport type SchemaNameCreateOrConnectWithoutSchemaInput = {\n create: SchemaNameCreateWithoutSchemaInput;\n where: SchemaNameWhereUniqueInput;\n};\n\nexport type SchemaNameCreateWithoutSchemaInput = {\n attesterAddress: Scalars['String']['input'];\n id?: InputMaybe<Scalars['String']['input']>;\n isCreator: Scalars['Boolean']['input'];\n name: Scalars['String']['input'];\n time: Scalars['Int']['input'];\n};\n\nexport type SchemaNameGroupBy = {\n __typename?: 'SchemaNameGroupBy';\n _avg?: Maybe<SchemaNameAvgAggregate>;\n _count?: Maybe<SchemaNameCountAggregate>;\n _max?: Maybe<SchemaNameMaxAggregate>;\n _min?: Maybe<SchemaNameMinAggregate>;\n _sum?: Maybe<SchemaNameSumAggregate>;\n attesterAddress: Scalars['String']['output'];\n id: Scalars['String']['output'];\n isCreator: Scalars['Boolean']['output'];\n name: Scalars['String']['output'];\n schemaId: Scalars['String']['output'];\n time: Scalars['Int']['output'];\n};\n\nexport type SchemaNameListRelationFilter = {\n every?: InputMaybe<SchemaNameWhereInput>;\n none?: InputMaybe<SchemaNameWhereInput>;\n some?: InputMaybe<SchemaNameWhereInput>;\n};\n\nexport type SchemaNameMaxAggregate = {\n __typename?: 'SchemaNameMaxAggregate';\n attesterAddress?: Maybe<Scalars['String']['output']>;\n id?: Maybe<Scalars['String']['output']>;\n isCreator?: Maybe<Scalars['Boolean']['output']>;\n name?: Maybe<Scalars['String']['output']>;\n schemaId?: Maybe<Scalars['String']['output']>;\n time?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type SchemaNameMaxOrderByAggregateInput = {\n attesterAddress?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n isCreator?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n schemaId?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaNameMinAggregate = {\n __typename?: 'SchemaNameMinAggregate';\n attesterAddress?: Maybe<Scalars['String']['output']>;\n id?: Maybe<Scalars['String']['output']>;\n isCreator?: Maybe<Scalars['Boolean']['output']>;\n name?: Maybe<Scalars['String']['output']>;\n schemaId?: Maybe<Scalars['String']['output']>;\n time?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type SchemaNameMinOrderByAggregateInput = {\n attesterAddress?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n isCreator?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n schemaId?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaNameOrderByRelationAggregateInput = {\n _count?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaNameOrderByWithAggregationInput = {\n _avg?: InputMaybe<SchemaNameAvgOrderByAggregateInput>;\n _count?: InputMaybe<SchemaNameCountOrderByAggregateInput>;\n _max?: InputMaybe<SchemaNameMaxOrderByAggregateInput>;\n _min?: InputMaybe<SchemaNameMinOrderByAggregateInput>;\n _sum?: InputMaybe<SchemaNameSumOrderByAggregateInput>;\n attesterAddress?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n isCreator?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n schemaId?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaNameOrderByWithRelationInput = {\n attesterAddress?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n isCreator?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n schema?: InputMaybe<SchemaOrderByWithRelationInput>;\n schemaId?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n};\n\nexport enum SchemaNameScalarFieldEnum {\n AttesterAddress = 'attesterAddress',\n Id = 'id',\n IsCreator = 'isCreator',\n Name = 'name',\n SchemaId = 'schemaId',\n Time = 'time'\n}\n\nexport type SchemaNameScalarWhereInput = {\n AND?: InputMaybe<Array<SchemaNameScalarWhereInput>>;\n NOT?: InputMaybe<Array<SchemaNameScalarWhereInput>>;\n OR?: InputMaybe<Array<SchemaNameScalarWhereInput>>;\n attesterAddress?: InputMaybe<StringFilter>;\n id?: InputMaybe<StringFilter>;\n isCreator?: InputMaybe<BoolFilter>;\n name?: InputMaybe<StringFilter>;\n schemaId?: InputMaybe<StringFilter>;\n time?: InputMaybe<IntFilter>;\n};\n\nexport type SchemaNameScalarWhereWithAggregatesInput = {\n AND?: InputMaybe<Array<SchemaNameScalarWhereWithAggregatesInput>>;\n NOT?: InputMaybe<Array<SchemaNameScalarWhereWithAggregatesInput>>;\n OR?: InputMaybe<Array<SchemaNameScalarWhereWithAggregatesInput>>;\n attesterAddress?: InputMaybe<StringWithAggregatesFilter>;\n id?: InputMaybe<StringWithAggregatesFilter>;\n isCreator?: InputMaybe<BoolWithAggregatesFilter>;\n name?: InputMaybe<StringWithAggregatesFilter>;\n schemaId?: InputMaybe<StringWithAggregatesFilter>;\n time?: InputMaybe<IntWithAggregatesFilter>;\n};\n\nexport type SchemaNameSumAggregate = {\n __typename?: 'SchemaNameSumAggregate';\n time?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type SchemaNameSumOrderByAggregateInput = {\n time?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaNameUpdateInput = {\n attesterAddress?: InputMaybe<StringFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n isCreator?: InputMaybe<BoolFieldUpdateOperationsInput>;\n name?: InputMaybe<StringFieldUpdateOperationsInput>;\n schema?: InputMaybe<SchemaUpdateOneRequiredWithoutSchemaNamesNestedInput>;\n time?: InputMaybe<IntFieldUpdateOperationsInput>;\n};\n\nexport type SchemaNameUpdateManyMutationInput = {\n attesterAddress?: InputMaybe<StringFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n isCreator?: InputMaybe<BoolFieldUpdateOperationsInput>;\n name?: InputMaybe<StringFieldUpdateOperationsInput>;\n time?: InputMaybe<IntFieldUpdateOperationsInput>;\n};\n\nexport type SchemaNameUpdateManyWithWhereWithoutSchemaInput = {\n data: SchemaNameUpdateManyMutationInput;\n where: SchemaNameScalarWhereInput;\n};\n\nexport type SchemaNameUpdateManyWithoutSchemaNestedInput = {\n connect?: InputMaybe<Array<SchemaNameWhereUniqueInput>>;\n connectOrCreate?: InputMaybe<Array<SchemaNameCreateOrConnectWithoutSchemaInput>>;\n create?: InputMaybe<Array<SchemaNameCreateWithoutSchemaInput>>;\n createMany?: InputMaybe<SchemaNameCreateManySchemaInputEnvelope>;\n delete?: InputMaybe<Array<SchemaNameWhereUniqueInput>>;\n deleteMany?: InputMaybe<Array<SchemaNameScalarWhereInput>>;\n disconnect?: InputMaybe<Array<SchemaNameWhereUniqueInput>>;\n set?: InputMaybe<Array<SchemaNameWhereUniqueInput>>;\n update?: InputMaybe<Array<SchemaNameUpdateWithWhereUniqueWithoutSchemaInput>>;\n updateMany?: InputMaybe<Array<SchemaNameUpdateManyWithWhereWithoutSchemaInput>>;\n upsert?: InputMaybe<Array<SchemaNameUpsertWithWhereUniqueWithoutSchemaInput>>;\n};\n\nexport type SchemaNameUpdateWithWhereUniqueWithoutSchemaInput = {\n data: SchemaNameUpdateWithoutSchemaInput;\n where: SchemaNameWhereUniqueInput;\n};\n\nexport type SchemaNameUpdateWithoutSchemaInput = {\n attesterAddress?: InputMaybe<StringFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n isCreator?: InputMaybe<BoolFieldUpdateOperationsInput>;\n name?: InputMaybe<StringFieldUpdateOperationsInput>;\n time?: InputMaybe<IntFieldUpdateOperationsInput>;\n};\n\nexport type SchemaNameUpsertWithWhereUniqueWithoutSchemaInput = {\n create: SchemaNameCreateWithoutSchemaInput;\n update: SchemaNameUpdateWithoutSchemaInput;\n where: SchemaNameWhereUniqueInput;\n};\n\nexport type SchemaNameWhereInput = {\n AND?: InputMaybe<Array<SchemaNameWhereInput>>;\n NOT?: InputMaybe<Array<SchemaNameWhereInput>>;\n OR?: InputMaybe<Array<SchemaNameWhereInput>>;\n attesterAddress?: InputMaybe<StringFilter>;\n id?: InputMaybe<StringFilter>;\n isCreator?: InputMaybe<BoolFilter>;\n name?: InputMaybe<StringFilter>;\n schema?: InputMaybe<SchemaRelationFilter>;\n schemaId?: InputMaybe<StringFilter>;\n time?: InputMaybe<IntFilter>;\n};\n\nexport type SchemaNameWhereUniqueInput = {\n id?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type SchemaOrderByWithAggregationInput = {\n _avg?: InputMaybe<SchemaAvgOrderByAggregateInput>;\n _count?: InputMaybe<SchemaCountOrderByAggregateInput>;\n _max?: InputMaybe<SchemaMaxOrderByAggregateInput>;\n _min?: InputMaybe<SchemaMinOrderByAggregateInput>;\n _sum?: InputMaybe<SchemaSumOrderByAggregateInput>;\n creator?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n index?: InputMaybe<SortOrder>;\n resolver?: InputMaybe<SortOrder>;\n revocable?: InputMaybe<SortOrder>;\n schema?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaOrderByWithRelationInput = {\n attestations?: InputMaybe<AttestationOrderByRelationAggregateInput>;\n creator?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n index?: InputMaybe<SortOrder>;\n resolver?: InputMaybe<SortOrder>;\n revocable?: InputMaybe<SortOrder>;\n schema?: InputMaybe<SortOrder>;\n schemaNames?: InputMaybe<SchemaNameOrderByRelationAggregateInput>;\n time?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaRelationFilter = {\n is?: InputMaybe<SchemaWhereInput>;\n isNot?: InputMaybe<SchemaWhereInput>;\n};\n\nexport enum SchemaScalarFieldEnum {\n Creator = 'creator',\n Id = 'id',\n Index = 'index',\n Resolver = 'resolver',\n Revocable = 'revocable',\n Schema = 'schema',\n Time = 'time',\n Txid = 'txid'\n}\n\nexport type SchemaScalarWhereWithAggregatesInput = {\n AND?: InputMaybe<Array<SchemaScalarWhereWithAggregatesInput>>;\n NOT?: InputMaybe<Array<SchemaScalarWhereWithAggregatesInput>>;\n OR?: InputMaybe<Array<SchemaScalarWhereWithAggregatesInput>>;\n creator?: InputMaybe<StringWithAggregatesFilter>;\n id?: InputMaybe<StringWithAggregatesFilter>;\n index?: InputMaybe<StringWithAggregatesFilter>;\n resolver?: InputMaybe<StringWithAggregatesFilter>;\n revocable?: InputMaybe<BoolWithAggregatesFilter>;\n schema?: InputMaybe<StringWithAggregatesFilter>;\n time?: InputMaybe<IntWithAggregatesFilter>;\n txid?: InputMaybe<StringWithAggregatesFilter>;\n};\n\nexport type SchemaSumAggregate = {\n __typename?: 'SchemaSumAggregate';\n time?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type SchemaSumOrderByAggregateInput = {\n time?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaUpdateInput = {\n attestations?: InputMaybe<AttestationUpdateManyWithoutSchemaNestedInput>;\n creator?: InputMaybe<StringFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n index?: InputMaybe<StringFieldUpdateOperationsInput>;\n resolver?: InputMaybe<StringFieldUpdateOperationsInput>;\n revocable?: InputMaybe<BoolFieldUpdateOperationsInput>;\n schema?: InputMaybe<StringFieldUpdateOperationsInput>;\n schemaNames?: InputMaybe<SchemaNameUpdateManyWithoutSchemaNestedInput>;\n time?: InputMaybe<IntFieldUpdateOperationsInput>;\n txid?: InputMaybe<StringFieldUpdateOperationsInput>;\n};\n\nexport type SchemaUpdateManyMutationInput = {\n creator?: InputMaybe<StringFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n index?: InputMaybe<StringFieldUpdateOperationsInput>;\n resolver?: InputMaybe<StringFieldUpdateOperationsInput>;\n revocable?: InputMaybe<BoolFieldUpdateOperationsInput>;\n schema?: InputMaybe<StringFieldUpdateOperationsInput>;\n time?: InputMaybe<IntFieldUpdateOperationsInput>;\n txid?: InputMaybe<StringFieldUpdateOperationsInput>;\n};\n\nexport type SchemaUpdateOneRequiredWithoutAttestationsNestedInput = {\n connect?: InputMaybe<SchemaWhereUniqueInput>;\n connectOrCreate?: InputMaybe<SchemaCreateOrConnectWithoutAttestationsInput>;\n create?: InputMaybe<SchemaCreateWithoutAttestationsInput>;\n update?: InputMaybe<SchemaUpdateWithoutAttestationsInput>;\n upsert?: InputMaybe<SchemaUpsertWithoutAttestationsInput>;\n};\n\nexport type SchemaUpdateOneRequiredWithoutSchemaNamesNestedInput = {\n connect?: InputMaybe<SchemaWhereUniqueInput>;\n connectOrCreate?: InputMaybe<SchemaCreateOrConnectWithoutSchemaNamesInput>;\n create?: InputMaybe<SchemaCreateWithoutSchemaNamesInput>;\n update?: InputMaybe<SchemaUpdateWithoutSchemaNamesInput>;\n upsert?: InputMaybe<SchemaUpsertWithoutSchemaNamesInput>;\n};\n\nexport type SchemaUpdateWithoutAttestationsInput = {\n creator?: InputMaybe<StringFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n index?: InputMaybe<StringFieldUpdateOperationsInput>;\n resolver?: InputMaybe<StringFieldUpdateOperationsInput>;\n revocable?: InputMaybe<BoolFieldUpdateOperationsInput>;\n schema?: InputMaybe<StringFieldUpdateOperationsInput>;\n schemaNames?: InputMaybe<SchemaNameUpdateManyWithoutSchemaNestedInput>;\n time?: InputMaybe<IntFieldUpdateOperationsInput>;\n txid?: InputMaybe<StringFieldUpdateOperationsInput>;\n};\n\nexport type SchemaUpdateWithoutSchemaNamesInput = {\n attestations?: InputMaybe<AttestationUpdateManyWithoutSchemaNestedInput>;\n creator?: InputMaybe<StringFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n index?: InputMaybe<StringFieldUpdateOperationsInput>;\n resolver?: InputMaybe<StringFieldUpdateOperationsInput>;\n revocable?: InputMaybe<BoolFieldUpdateOperationsInput>;\n schema?: InputMaybe<StringFieldUpdateOperationsInput>;\n time?: InputMaybe<IntFieldUpdateOperationsInput>;\n txid?: InputMaybe<StringFieldUpdateOperationsInput>;\n};\n\nexport type SchemaUpsertWithoutAttestationsInput = {\n create: SchemaCreateWithoutAttestationsInput;\n update: SchemaUpdateWithoutAttestationsInput;\n};\n\nexport type SchemaUpsertWithoutSchemaNamesInput = {\n create: SchemaCreateWithoutSchemaNamesInput;\n update: SchemaUpdateWithoutSchemaNamesInput;\n};\n\nexport type SchemaWhereInput = {\n AND?: InputMaybe<Array<SchemaWhereInput>>;\n NOT?: InputMaybe<Array<SchemaWhereInput>>;\n OR?: InputMaybe<Array<SchemaWhereInput>>;\n attestations?: InputMaybe<AttestationListRelationFilter>;\n creator?: InputMaybe<StringFilter>;\n id?: InputMaybe<StringFilter>;\n index?: InputMaybe<StringFilter>;\n resolver?: InputMaybe<StringFilter>;\n revocable?: InputMaybe<BoolFilter>;\n schema?: InputMaybe<StringFilter>;\n schemaNames?: InputMaybe<SchemaNameListRelationFilter>;\n time?: InputMaybe<IntFilter>;\n txid?: InputMaybe<StringFilter>;\n};\n\nexport type SchemaWhereUniqueInput = {\n id?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type ServiceStat = {\n __typename?: 'ServiceStat';\n name: Scalars['String']['output'];\n value: Scalars['String']['output'];\n};\n\nexport type ServiceStatCountAggregate = {\n __typename?: 'ServiceStatCountAggregate';\n _all: Scalars['Int']['output'];\n name: Scalars['Int']['output'];\n value: Scalars['Int']['output'];\n};\n\nexport type ServiceStatCountOrderByAggregateInput = {\n name?: InputMaybe<SortOrder>;\n value?: InputMaybe<SortOrder>;\n};\n\nexport type ServiceStatCreateInput = {\n name: Scalars['String']['input'];\n value: Scalars['String']['input'];\n};\n\nexport type ServiceStatCreateManyInput = {\n name: Scalars['String']['input'];\n value: Scalars['String']['input'];\n};\n\nexport type ServiceStatGroupBy = {\n __typename?: 'ServiceStatGroupBy';\n _count?: Maybe<ServiceStatCountAggregate>;\n _max?: Maybe<ServiceStatMaxAggregate>;\n _min?: Maybe<ServiceStatMinAggregate>;\n name: Scalars['String']['output'];\n value: Scalars['String']['output'];\n};\n\nexport type ServiceStatMaxAggregate = {\n __typename?: 'ServiceStatMaxAggregate';\n name?: Maybe<Scalars['String']['output']>;\n value?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ServiceStatMaxOrderByAggregateInput = {\n name?: InputMaybe<SortOrder>;\n value?: InputMaybe<SortOrder>;\n};\n\nexport type ServiceStatMinAggregate = {\n __typename?: 'ServiceStatMinAggregate';\n name?: Maybe<Scalars['String']['output']>;\n value?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ServiceStatMinOrderByAggregateInput = {\n name?: InputMaybe<SortOrder>;\n value?: InputMaybe<SortOrder>;\n};\n\nexport type ServiceStatOrderByWithAggregationInput = {\n _count?: InputMaybe<ServiceStatCountOrderByAggregateInput>;\n _max?: InputMaybe<ServiceStatMaxOrderByAggregateInput>;\n _min?: InputMaybe<ServiceStatMinOrderByAggregateInput>;\n name?: InputMaybe<SortOrder>;\n value?: InputMaybe<SortOrder>;\n};\n\nexport type ServiceStatOrderByWithRelationInput = {\n name?: InputMaybe<SortOrder>;\n value?: InputMaybe<SortOrder>;\n};\n\nexport enum ServiceStatScalarFieldEnum {\n Name = 'name',\n Value = 'value'\n}\n\nexport type ServiceStatScalarWhereWithAggregatesInput = {\n AND?: InputMaybe<Array<ServiceStatScalarWhereWithAggregatesInput>>;\n NOT?: InputMaybe<Array<ServiceStatScalarWhereWithAggregatesInput>>;\n OR?: InputMaybe<Array<ServiceStatScalarWhereWithAggregatesInput>>;\n name?: InputMaybe<StringWithAggregatesFilter>;\n value?: InputMaybe<StringWithAggregatesFilter>;\n};\n\nexport type ServiceStatUpdateInput = {\n name?: InputMaybe<StringFieldUpdateOperationsInput>;\n value?: InputMaybe<StringFieldUpdateOperationsInput>;\n};\n\nexport type ServiceStatUpdateManyMutationInput = {\n name?: InputMaybe<StringFieldUpdateOperationsInput>;\n value?: InputMaybe<StringFieldUpdateOperationsInput>;\n};\n\nexport type ServiceStatWhereInput = {\n AND?: InputMaybe<Array<ServiceStatWhereInput>>;\n NOT?: InputMaybe<Array<ServiceStatWhereInput>>;\n OR?: InputMaybe<Array<ServiceStatWhereInput>>;\n name?: InputMaybe<StringFilter>;\n value?: InputMaybe<StringFilter>;\n};\n\nexport type ServiceStatWhereUniqueInput = {\n name?: InputMaybe<Scalars['String']['input']>;\n};\n\n/** Optionally reverse the result sort order from `HEIGHT_DESC` (default) to `HEIGHT_ASC`. */\nexport enum SortOrder {\n /** Results are sorted by the transaction block height in ascending order, with the oldest transactions appearing first, and the most recent and pending/unconfirmed appearing last. */\n HeightAsc = 'HEIGHT_ASC',\n /** Results are sorted by the transaction block height in descending order, with the most recent and unconfirmed/pending transactions appearing first. */\n HeightDesc = 'HEIGHT_DESC',\n Asc = 'asc',\n Desc = 'desc'\n}\n\nexport type StringFieldUpdateOperationsInput = {\n set?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type StringFilter = {\n contains?: InputMaybe<Scalars['String']['input']>;\n endsWith?: InputMaybe<Scalars['String']['input']>;\n equals?: InputMaybe<Scalars['String']['input']>;\n gt?: InputMaybe<Scalars['String']['input']>;\n gte?: InputMaybe<Scalars['String']['input']>;\n in?: InputMaybe<Array<Scalars['String']['input']>>;\n lt?: InputMaybe<Scalars['String']['input']>;\n lte?: InputMaybe<Scalars['String']['input']>;\n mode?: InputMaybe<QueryMode>;\n not?: InputMaybe<NestedStringFilter>;\n notIn?: InputMaybe<Array<Scalars['String']['input']>>;\n startsWith?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type StringWithAggregatesFilter = {\n _count?: InputMaybe<NestedIntFilter>;\n _max?: InputMaybe<NestedStringFilter>;\n _min?: InputMaybe<NestedStringFilter>;\n contains?: InputMaybe<Scalars['String']['input']>;\n endsWith?: InputMaybe<Scalars['String']['input']>;\n equals?: InputMaybe<Scalars['String']['input']>;\n gt?: InputMaybe<Scalars['String']['input']>;\n gte?: InputMaybe<Scalars['String']['input']>;\n in?: InputMaybe<Array<Scalars['String']['input']>>;\n lt?: InputMaybe<Scalars['String']['input']>;\n lte?: InputMaybe<Scalars['String']['input']>;\n mode?: InputMaybe<QueryMode>;\n not?: InputMaybe<NestedStringWithAggregatesFilter>;\n notIn?: InputMaybe<Array<Scalars['String']['input']>>;\n startsWith?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type Tag = {\n __typename?: 'Tag';\n /** UTF-8 tag name */\n name: Scalars['String']['output'];\n /** UTF-8 tag value */\n value: Scalars['String']['output'];\n};\n\n/** Find transactions with the folowing tag name and value */\nexport type TagFilter = {\n /** The tag name */\n name: Scalars['String']['input'];\n /** The operator to apply to to the tag filter. Defaults to EQ (equal). */\n op?: InputMaybe<TagOperator>;\n /**\n * An array of values to match against. If multiple values are passed then transactions with _any_ matching tag value from the set will be returned.\n *\n * e.g.\n *\n * \\`{name: \"app-name\", values: [\"app-1\"]}\\`\n *\n * Returns all transactions where the \\`app-name\\` tag has a value of \\`app-1\\`.\n *\n * \\`{name: \"app-name\", values: [\"app-1\", \"app-2\", \"app-3\"]}\\`\n *\n * Returns all transactions where the \\`app-name\\` tag has a value of either \\`app-1\\` _or_ \\`app-2\\` _or_ \\`app-3\\`.\n */\n values: Array<Scalars['String']['input']>;\n};\n\n/** The operator to apply to a tag value. */\nexport enum TagOperator {\n /** Equal */\n Eq = 'EQ'\n}\n\nexport type Timestamp = {\n __typename?: 'Timestamp';\n from: Scalars['String']['output'];\n id: Scalars['String']['output'];\n timestamp: Scalars['Int']['output'];\n tree: Scalars['String']['output'];\n txid: Scalars['String']['output'];\n};\n\nexport type TimestampAvgAggregate = {\n __typename?: 'TimestampAvgAggregate';\n timestamp?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type TimestampAvgOrderByAggregateInput = {\n timestamp?: InputMaybe<SortOrder>;\n};\n\nexport type TimestampCountAggregate = {\n __typename?: 'TimestampCountAggregate';\n _all: Scalars['Int']['output'];\n from: Scalars['Int']['output'];\n id: Scalars['Int']['output'];\n timestamp: Scalars['Int']['output'];\n tree: Scalars['Int']['output'];\n txid: Scalars['Int']['output'];\n};\n\nexport type TimestampCountOrderByAggregateInput = {\n from?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n tree?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport type TimestampCreateInput = {\n from: Scalars['String']['input'];\n id: Scalars['String']['input'];\n timestamp: Scalars['Int']['input'];\n tree?: InputMaybe<Scalars['String']['input']>;\n txid: Scalars['String']['input'];\n};\n\nexport type TimestampCreateManyInput = {\n from: Scalars['String']['input'];\n id: Scalars['String']['input'];\n timestamp: Scalars['Int']['input'];\n tree?: InputMaybe<Scalars['String']['input']>;\n txid: Scalars['String']['input'];\n};\n\nexport type TimestampGroupBy = {\n __typename?: 'TimestampGroupBy';\n _avg?: Maybe<TimestampAvgAggregate>;\n _count?: Maybe<TimestampCountAggregate>;\n _max?: Maybe<TimestampMaxAggregate>;\n _min?: Maybe<TimestampMinAggregate>;\n _sum?: Maybe<TimestampSumAggregate>;\n from: Scalars['String']['output'];\n id: Scalars['String']['output'];\n timestamp: Scalars['Int']['output'];\n tree: Scalars['String']['output'];\n txid: Scalars['String']['output'];\n};\n\nexport type TimestampMaxAggregate = {\n __typename?: 'TimestampMaxAggregate';\n from?: Maybe<Scalars['String']['output']>;\n id?: Maybe<Scalars['String']['output']>;\n timestamp?: Maybe<Scalars['Int']['output']>;\n tree?: Maybe<Scalars['String']['output']>;\n txid?: Maybe<Scalars['String']['output']>;\n};\n\nexport type TimestampMaxOrderByAggregateInput = {\n from?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n tree?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport type TimestampMinAggregate = {\n __typename?: 'TimestampMinAggregate';\n from?: Maybe<Scalars['String']['output']>;\n id?: Maybe<Scalars['String']['output']>;\n timestamp?: Maybe<Scalars['Int']['output']>;\n tree?: Maybe<Scalars['String']['output']>;\n txid?: Maybe<Scalars['String']['output']>;\n};\n\nexport type TimestampMinOrderByAggregateInput = {\n from?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n tree?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport type TimestampOrderByWithAggregationInput = {\n _avg?: InputMaybe<TimestampAvgOrderByAggregateInput>;\n _count?: InputMaybe<TimestampCountOrderByAggregateInput>;\n _max?: InputMaybe<TimestampMaxOrderByAggregateInput>;\n _min?: InputMaybe<TimestampMinOrderByAggregateInput>;\n _sum?: InputMaybe<TimestampSumOrderByAggregateInput>;\n from?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n tree?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport type TimestampOrderByWithRelationInput = {\n from?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n tree?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport enum TimestampScalarFieldEnum {\n From = 'from',\n Id = 'id',\n Timestamp = 'timestamp',\n Tree = 'tree',\n Txid = 'txid'\n}\n\nexport type TimestampScalarWhereWithAggregatesInput = {\n AND?: InputMaybe<Array<TimestampScalarWhereWithAggregatesInput>>;\n NOT?: InputMaybe<Array<TimestampScalarWhereWithAggregatesInput>>;\n OR?: InputMaybe<Array<TimestampScalarWhereWithAggregatesInput>>;\n from?: InputMaybe<StringWithAggregatesFilter>;\n id?: InputMaybe<StringWithAggregatesFilter>;\n timestamp?: InputMaybe<IntWithAggregatesFilter>;\n tree?: InputMaybe<StringWithAggregatesFilter>;\n txid?: InputMaybe<StringWithAggregatesFilter>;\n};\n\nexport type TimestampSumAggregate = {\n __typename?: 'TimestampSumAggregate';\n timestamp?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type TimestampSumOrderByAggregateInput = {\n timestamp?: InputMaybe<SortOrder>;\n};\n\nexport type TimestampUpdateInput = {\n from?: InputMaybe<StringFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n timestamp?: InputMaybe<IntFieldUpdateOperationsInput>;\n tree?: InputMaybe<StringFieldUpdateOperationsInput>;\n txid?: InputMaybe<StringFieldUpdateOperationsInput>;\n};\n\nexport type TimestampUpdateManyMutationInput = {\n from?: InputMaybe<StringFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n timestamp?: InputMaybe<IntFieldUpdateOperationsInput>;\n tree?: InputMaybe<StringFieldUpdateOperationsInput>;\n txid?: InputMaybe<StringFieldUpdateOperationsInput>;\n};\n\nexport type TimestampWhereInput = {\n AND?: InputMaybe<Array<TimestampWhereInput>>;\n NOT?: InputMaybe<Array<TimestampWhereInput>>;\n OR?: InputMaybe<Array<TimestampWhereInput>>;\n from?: InputMaybe<StringFilter>;\n id?: InputMaybe<StringFilter>;\n timestamp?: InputMaybe<IntFilter>;\n tree?: InputMaybe<StringFilter>;\n txid?: InputMaybe<StringFilter>;\n};\n\nexport type TimestampWhereUniqueInput = {\n id?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type Transaction = {\n __typename?: 'Transaction';\n anchor: Scalars['String']['output'];\n /** Transactions with a null block are recent and unconfirmed, if they aren't mined into a block within 60 minutes they will be removed from results. */\n block?: Maybe<Block>;\n /**\n * For bundled data items this references the containing bundle ID.\n * See: https://github.com/ArweaveTeam/arweave-standards/blob/master/ans/ANS-104.md\n */\n bundledIn?: Maybe<Bundle>;\n data: MetaData;\n fee: Amount;\n id: Scalars['ID']['output'];\n owner: Owner;\n /**\n * @deprecated Don't use, kept for backwards compatability only!\n * @deprecated Use `bundledIn`\n */\n parent?: Maybe<Parent>;\n quantity: Amount;\n recipient: Scalars['String']['output'];\n signature: Scalars['String']['output'];\n tags: Array<Tag>;\n};\n\n/**\n * Paginated result set using the GraphQL cursor spec,\n * see: https://relay.dev/graphql/connections.htm.\n */\nexport type TransactionConnection = {\n __typename?: 'TransactionConnection';\n edges: Array<TransactionEdge>;\n pageInfo: PageInfo;\n};\n\n/** Paginated result set using the GraphQL cursor spec. */\nexport type TransactionEdge = {\n __typename?: 'TransactionEdge';\n /**\n * The cursor value for fetching the next page.\n *\n * Pass this to the \\`after\\` parameter in \\`transactions(after: $cursor)\\`, the next page will start from the next item after this.\n */\n cursor: Scalars['String']['output'];\n /** A transaction object. */\n node: Transaction;\n};\n\nexport type GetTransactionTagsQueryVariables = Exact<{\n transactionId: Scalars['ID']['input'];\n}>;\n\n\nexport type GetTransactionTagsQuery = { __typename?: 'Query', tags?: { __typename?: 'Transaction', id: string, tags: Array<{ __typename?: 'Tag', name: string, value: string }> } | null };\n\nexport type AttestationFieldsFragment = { __typename?: 'Attestation', id: string, decodedDataJson: string, attester: string, refUID: string, revoked: boolean, schemaId: string, txid: string, timeCreated: number, time: number, isOffchain: boolean, schema: { __typename?: 'Schema', schemaNames: Array<{ __typename?: 'SchemaName', name: string }> } } & { ' $fragmentName'?: 'AttestationFieldsFragment' };\n\nexport type SchemaFieldsFragment = { __typename?: 'Schema', id: string, resolver: string, revocable: boolean, schema: string, index: string, time: number, txid: string, creator: string, schemaNames: Array<{ __typename?: 'SchemaName', name: string }> } & { ' $fragmentName'?: 'SchemaFieldsFragment' };\n\nexport type GetSchemasQueryVariables = Exact<{\n where: SchemaWhereInput;\n}>;\n\n\nexport type GetSchemasQuery = { __typename?: 'Query', schemas: Array<{ __typename?: 'Schema', id: string, schema: string, schemaNames: Array<{ __typename?: 'SchemaName', name: string }> }> };\n\nexport type GetSeedsQueryVariables = Exact<{\n where: AttestationWhereInput;\n}>;\n\n\nexport type GetSeedsQuery = { __typename?: 'Query', itemSeeds: Array<{ __typename?: 'Attestation', id: string, decodedDataJson: string, attester: string, refUID: string, revoked: boolean, schemaId: string, timeCreated: number, isOffchain: boolean, schema: { __typename?: 'Schema', schemaNames: Array<{ __typename?: 'SchemaName', name: string }> } }> };\n\nexport type GetSeedIdsQueryVariables = Exact<{\n where: AttestationWhereInput;\n}>;\n\n\nexport type GetSeedIdsQuery = { __typename?: 'Query', itemSeedIds: Array<{ __typename?: 'Attestation', id: string }> };\n\nexport type GetStorageTransactionIdQueryVariables = Exact<{\n where: AttestationWhereInput;\n}>;\n\n\nexport type GetStorageTransactionIdQuery = { __typename?: 'Query', storageTransactionId: Array<{ __typename?: 'Attestation', id: string, decodedDataJson: string }> };\n\nexport type GetVersionsQueryVariables = Exact<{\n where: AttestationWhereInput;\n}>;\n\n\nexport type GetVersionsQuery = { __typename?: 'Query', itemVersions: Array<(\n { __typename?: 'Attestation' }\n & { ' $fragmentRefs'?: { 'AttestationFieldsFragment': AttestationFieldsFragment } }\n )> };\n\nexport type GetPropertiesQueryVariables = Exact<{\n where: AttestationWhereInput;\n}>;\n\n\nexport type GetPropertiesQuery = { __typename?: 'Query', itemProperties: Array<(\n { __typename?: 'Attestation' }\n & { ' $fragmentRefs'?: { 'AttestationFieldsFragment': AttestationFieldsFragment } }\n )> };\n\nexport type GetAllPropertiesForAllVersionsQueryVariables = Exact<{\n where: AttestationWhereInput;\n}>;\n\n\nexport type GetAllPropertiesForAllVersionsQuery = { __typename?: 'Query', allProperties: Array<(\n { __typename?: 'Attestation' }\n & { ' $fragmentRefs'?: { 'AttestationFieldsFragment': AttestationFieldsFragment } }\n )> };\n\nexport type GetFilesMetadataQueryVariables = Exact<{\n where: AttestationWhereInput;\n}>;\n\n\nexport type GetFilesMetadataQuery = { __typename?: 'Query', filesMetadata: Array<(\n { __typename?: 'Attestation' }\n & { ' $fragmentRefs'?: { 'AttestationFieldsFragment': AttestationFieldsFragment } }\n )> };\n\nexport type GetArweaveTransactionsQueryVariables = Exact<{\n owners?: InputMaybe<Array<Scalars['String']['input']> | Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n after?: InputMaybe<Scalars['String']['input']>;\n}>;\n\n\nexport type GetArweaveTransactionsQuery = { __typename?: 'Query', transactions: { __typename?: 'TransactionConnection', edges: Array<{ __typename?: 'TransactionEdge', cursor: string, node: { __typename?: 'Transaction', id: string, anchor: string, signature: string, block?: { __typename?: 'Block', id: string, height: number } | null, data: { __typename?: 'MetaData', size: string, type?: string | null }, tags: Array<{ __typename?: 'Tag', name: string, value: string }> } }>, pageInfo: { __typename?: 'PageInfo', hasNextPage: boolean } } };\n\nexport type GetImageSeedsQueryVariables = Exact<{\n where: AttestationWhereInput;\n}>;\n\n\nexport type GetImageSeedsQuery = { __typename?: 'Query', imageSeeds: Array<{ __typename?: 'Attestation', id: string, decodedDataJson: string, attester: string, refUID: string, revoked: boolean, schemaId: string, txid: string, timeCreated: number, time: number, isOffchain: boolean, schema: { __typename?: 'Schema', schemaNames: Array<{ __typename?: 'SchemaName', name: string }> } }> };\n\nexport type GetImageVersionsQueryVariables = Exact<{\n where: AttestationWhereInput;\n}>;\n\n\nexport type GetImageVersionsQuery = { __typename?: 'Query', imageVersions: Array<(\n { __typename?: 'Attestation' }\n & { ' $fragmentRefs'?: { 'AttestationFieldsFragment': AttestationFieldsFragment } }\n )> };\n\nexport type GetSchemaUidsQueryVariables = Exact<{\n where: SchemaWhereInput;\n}>;\n\n\nexport type GetSchemaUidsQuery = { __typename?: 'Query', schemaUids: Array<{ __typename?: 'Schema', id: string, schema: string, schemaNames: Array<{ __typename?: 'SchemaName', name: string }> }> };\n\nexport const AttestationFieldsFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"attestationFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Attestation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"decodedDataJson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"attester\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schema\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaNames\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"refUID\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"revoked\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"txid\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"time\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOffchain\"}}]}}]} as unknown as DocumentNode<AttestationFieldsFragment, unknown>;\nexport const SchemaFieldsFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Schema\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"resolver\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"revocable\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schema\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"index\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaNames\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"time\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"txid\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"creator\"}}]}}]} as unknown as DocumentNode<SchemaFieldsFragment, unknown>;\nexport const GetTransactionTagsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetTransactionTags\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"transactionId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"tags\"},\"name\":{\"kind\":\"Name\",\"value\":\"transaction\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"transactionId\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tags\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"}}]}}]}}]}}]} as unknown as DocumentNode<GetTransactionTagsQuery, GetTransactionTagsQueryVariables>;\nexport const GetSchemasDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetSchemas\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"SchemaWhereInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"schemas\"},\"name\":{\"kind\":\"Name\",\"value\":\"schemata\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schema\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaNames\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}}]}}]}}]} as unknown as DocumentNode<GetSchemasQuery, GetSchemasQueryVariables>;\nexport const GetSeedsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetSeeds\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AttestationWhereInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"itemSeeds\"},\"name\":{\"kind\":\"Name\",\"value\":\"attestations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"desc\"}}]}]}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"decodedDataJson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"attester\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schema\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaNames\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"refUID\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"revoked\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOffchain\"}}]}}]}}]} as unknown as DocumentNode<GetSeedsQuery, GetSeedsQueryVariables>;\nexport const GetSeedIdsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetSeedIds\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AttestationWhereInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"itemSeedIds\"},\"name\":{\"kind\":\"Name\",\"value\":\"attestations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"desc\"}}]}]}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}}]} as unknown as DocumentNode<GetSeedIdsQuery, GetSeedIdsQueryVariables>;\nexport const GetStorageTransactionIdDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetStorageTransactionId\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AttestationWhereInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"storageTransactionId\"},\"name\":{\"kind\":\"Name\",\"value\":\"attestations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"desc\"}}]}]}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"decodedDataJson\"}}]}}]}}]} as unknown as DocumentNode<GetStorageTransactionIdQuery, GetStorageTransactionIdQueryVariables>;\nexport const GetVersionsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetVersions\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AttestationWhereInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"itemVersions\"},\"name\":{\"kind\":\"Name\",\"value\":\"attestations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"desc\"}}]}]}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"attestationFields\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"attestationFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Attestation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"decodedDataJson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"attester\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schema\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaNames\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"refUID\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"revoked\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"txid\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"time\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOffchain\"}}]}}]} as unknown as DocumentNode<GetVersionsQuery, GetVersionsQueryVariables>;\nexport const GetPropertiesDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetProperties\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AttestationWhereInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"itemProperties\"},\"name\":{\"kind\":\"Name\",\"value\":\"attestations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"desc\"}}]}]}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"attestationFields\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"attestationFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Attestation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"decodedDataJson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"attester\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schema\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaNames\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"refUID\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"revoked\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"txid\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"time\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOffchain\"}}]}}]} as unknown as DocumentNode<GetPropertiesQuery, GetPropertiesQueryVariables>;\nexport const GetAllPropertiesForAllVersionsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetAllPropertiesForAllVersions\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AttestationWhereInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"allProperties\"},\"name\":{\"kind\":\"Name\",\"value\":\"attestations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"desc\"}}]}]}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"attestationFields\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"attestationFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Attestation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"decodedDataJson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"attester\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schema\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaNames\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"refUID\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"revoked\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"txid\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"time\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOffchain\"}}]}}]} as unknown as DocumentNode<GetAllPropertiesForAllVersionsQuery, GetAllPropertiesForAllVersionsQueryVariables>;\nexport const GetFilesMetadataDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetFilesMetadata\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AttestationWhereInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"filesMetadata\"},\"name\":{\"kind\":\"Name\",\"value\":\"attestations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"desc\"}}]}]}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"attestationFields\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"attestationFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Attestation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"decodedDataJson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"attester\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schema\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaNames\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"refUID\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"revoked\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"txid\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"time\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOffchain\"}}]}}]} as unknown as DocumentNode<GetFilesMetadataQuery, GetFilesMetadataQueryVariables>;\nexport const GetArweaveTransactionsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetArweaveTransactions\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"owners\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"transactions\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"owners\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"owners\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"edges\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"node\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"anchor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"signature\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"block\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"height\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"data\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tags\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"}}]}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}}]}}]}}]} as unknown as DocumentNode<GetArweaveTransactionsQuery, GetArweaveTransactionsQueryVariables>;\nexport const GetImageSeedsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetImageSeeds\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AttestationWhereInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"imageSeeds\"},\"name\":{\"kind\":\"Name\",\"value\":\"attestations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"desc\"}}]}]}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"decodedDataJson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"attester\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schema\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaNames\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"refUID\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"revoked\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"txid\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"time\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOffchain\"}}]}}]}}]} as unknown as DocumentNode<GetImageSeedsQuery, GetImageSeedsQueryVariables>;\nexport const GetImageVersionsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetImageVersions\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AttestationWhereInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"imageVersions\"},\"name\":{\"kind\":\"Name\",\"value\":\"attestations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"desc\"}}]}]}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"attestationFields\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"attestationFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Attestation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"decodedDataJson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"attester\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schema\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaNames\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"refUID\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"revoked\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"txid\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"time\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOffchain\"}}]}}]} as unknown as DocumentNode<GetImageVersionsQuery, GetImageVersionsQueryVariables>;\nexport const GetSchemaUidsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetSchemaUids\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"SchemaWhereInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"schemaUids\"},\"name\":{\"kind\":\"Name\",\"value\":\"schemata\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schema\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaNames\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}}]}}]}}]} as unknown as DocumentNode<GetSchemaUidsQuery, GetSchemaUidsQueryVariables>;","/* eslint-disable */\nimport * as types from './graphql';\nimport { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';\n\n/**\n * Map of all GraphQL operations in the project.\n *\n * This map has several performance disadvantages:\n * 1. It is not tree-shakeable, so it will include all operations in the project.\n * 2. It is not minifiable, so the string of a GraphQL query will be multiple times inside the bundle.\n * 3. It does not support dead code elimination, so it will add unused operations.\n *\n * Therefore it is highly recommended to use the babel or swc plugin for production.\n * Learn more about it here: https://the-guild.dev/graphql/codegen/plugins/presets/preset-client#reducing-bundle-size\n */\nconst documents = {\n \"\\n query GetTransactionTags($transactionId: ID!) {\\n tags: transaction(id: $transactionId) {\\n id\\n tags {\\n name\\n value\\n }\\n }\\n }\\n\": types.GetTransactionTagsDocument,\n \"\\n fragment attestationFields on Attestation {\\n id\\n decodedDataJson\\n attester\\n schema {\\n schemaNames {\\n name\\n }\\n }\\n refUID\\n revoked\\n schemaId\\n txid\\n timeCreated\\n time\\n isOffchain\\n }\\n\": types.AttestationFieldsFragmentDoc,\n \"\\n fragment schemaFields on Schema {\\n id\\n resolver\\n revocable\\n schema\\n index\\n schemaNames {\\n name\\n }\\n time\\n txid\\n creator\\n }\\n\": types.SchemaFieldsFragmentDoc,\n \"\\n query GetSchemas($where: SchemaWhereInput!) {\\n schemas: schemata(where: $where) {\\n id\\n schema\\n schemaNames {\\n name\\n }\\n }\\n }\\n\": types.GetSchemasDocument,\n \"\\n query GetSeeds($where: AttestationWhereInput!) {\\n itemSeeds: attestations(where: $where, orderBy: [{ timeCreated: desc }]) {\\n id\\n decodedDataJson\\n attester\\n schema {\\n schemaNames {\\n name\\n }\\n }\\n refUID\\n revoked\\n schemaId\\n timeCreated\\n isOffchain\\n }\\n }\\n\": types.GetSeedsDocument,\n \"\\n query GetSeedIds($where: AttestationWhereInput!) {\\n itemSeedIds: attestations(where: $where, orderBy: [{ timeCreated: desc }]) {\\n id\\n }\\n }\\n\": types.GetSeedIdsDocument,\n \"\\n query GetStorageTransactionId($where: AttestationWhereInput!) {\\n storageTransactionId: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n id\\n decodedDataJson\\n }\\n }\\n\": types.GetStorageTransactionIdDocument,\n \"\\n query GetVersions($where: AttestationWhereInput!) {\\n itemVersions: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\": types.GetVersionsDocument,\n \"\\n query GetProperties($where: AttestationWhereInput!) {\\n itemProperties: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\": types.GetPropertiesDocument,\n \"\\n query GetAllPropertiesForAllVersions($where: AttestationWhereInput!) {\\n allProperties: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\": types.GetAllPropertiesForAllVersionsDocument,\n \"\\n query GetFilesMetadata($where: AttestationWhereInput!) {\\n filesMetadata: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\": types.GetFilesMetadataDocument,\n \"\\n query GetArweaveTransactions(\\n $owners: [String!]\\n $first: Int\\n $after: String\\n ) {\\n transactions(owners: $owners, first: $first, after: $after) {\\n edges {\\n cursor\\n node {\\n id\\n anchor\\n signature\\n block {\\n id\\n height\\n }\\n data {\\n size\\n type\\n }\\n tags {\\n name\\n value\\n }\\n }\\n }\\n pageInfo {\\n hasNextPage\\n }\\n }\\n }\\n\": types.GetArweaveTransactionsDocument,\n \"\\n query GetImageSeeds($where: AttestationWhereInput!) {\\n imageSeeds: attestations(where: $where, orderBy: [{ timeCreated: desc }]) {\\n id\\n decodedDataJson\\n attester\\n schema {\\n schemaNames {\\n name\\n }\\n }\\n refUID\\n revoked\\n schemaId\\n txid\\n timeCreated\\n time\\n isOffchain\\n }\\n }\\n\": types.GetImageSeedsDocument,\n \"\\n query GetImageVersions($where: AttestationWhereInput!) {\\n imageVersions: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\": types.GetImageVersionsDocument,\n \"\\n query GetSchemaUids($where: SchemaWhereInput!) {\\n schemaUids: schemata(where: $where) {\\n id\\n schema\\n schemaNames {\\n name\\n }\\n }\\n }\\n\": types.GetSchemaUidsDocument,\n};\n\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n *\n *\n * @example\n * ```ts\n * const query = graphql(`query GetUser($id: ID!) { user(id: $id) { name } }`);\n * ```\n *\n * The query argument is unknown!\n * Please regenerate the types.\n */\nexport function graphql(source: string): unknown;\n\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetTransactionTags($transactionId: ID!) {\\n tags: transaction(id: $transactionId) {\\n id\\n tags {\\n name\\n value\\n }\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetTransactionTags($transactionId: ID!) {\\n tags: transaction(id: $transactionId) {\\n id\\n tags {\\n name\\n value\\n }\\n }\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n fragment attestationFields on Attestation {\\n id\\n decodedDataJson\\n attester\\n schema {\\n schemaNames {\\n name\\n }\\n }\\n refUID\\n revoked\\n schemaId\\n txid\\n timeCreated\\n time\\n isOffchain\\n }\\n\"): (typeof documents)[\"\\n fragment attestationFields on Attestation {\\n id\\n decodedDataJson\\n attester\\n schema {\\n schemaNames {\\n name\\n }\\n }\\n refUID\\n revoked\\n schemaId\\n txid\\n timeCreated\\n time\\n isOffchain\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n fragment schemaFields on Schema {\\n id\\n resolver\\n revocable\\n schema\\n index\\n schemaNames {\\n name\\n }\\n time\\n txid\\n creator\\n }\\n\"): (typeof documents)[\"\\n fragment schemaFields on Schema {\\n id\\n resolver\\n revocable\\n schema\\n index\\n schemaNames {\\n name\\n }\\n time\\n txid\\n creator\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetSchemas($where: SchemaWhereInput!) {\\n schemas: schemata(where: $where) {\\n id\\n schema\\n schemaNames {\\n name\\n }\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetSchemas($where: SchemaWhereInput!) {\\n schemas: schemata(where: $where) {\\n id\\n schema\\n schemaNames {\\n name\\n }\\n }\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetSeeds($where: AttestationWhereInput!) {\\n itemSeeds: attestations(where: $where, orderBy: [{ timeCreated: desc }]) {\\n id\\n decodedDataJson\\n attester\\n schema {\\n schemaNames {\\n name\\n }\\n }\\n refUID\\n revoked\\n schemaId\\n timeCreated\\n isOffchain\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetSeeds($where: AttestationWhereInput!) {\\n itemSeeds: attestations(where: $where, orderBy: [{ timeCreated: desc }]) {\\n id\\n decodedDataJson\\n attester\\n schema {\\n schemaNames {\\n name\\n }\\n }\\n refUID\\n revoked\\n schemaId\\n timeCreated\\n isOffchain\\n }\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetSeedIds($where: AttestationWhereInput!) {\\n itemSeedIds: attestations(where: $where, orderBy: [{ timeCreated: desc }]) {\\n id\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetSeedIds($where: AttestationWhereInput!) {\\n itemSeedIds: attestations(where: $where, orderBy: [{ timeCreated: desc }]) {\\n id\\n }\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetStorageTransactionId($where: AttestationWhereInput!) {\\n storageTransactionId: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n id\\n decodedDataJson\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetStorageTransactionId($where: AttestationWhereInput!) {\\n storageTransactionId: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n id\\n decodedDataJson\\n }\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetVersions($where: AttestationWhereInput!) {\\n itemVersions: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetVersions($where: AttestationWhereInput!) {\\n itemVersions: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetProperties($where: AttestationWhereInput!) {\\n itemProperties: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetProperties($where: AttestationWhereInput!) {\\n itemProperties: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetAllPropertiesForAllVersions($where: AttestationWhereInput!) {\\n allProperties: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetAllPropertiesForAllVersions($where: AttestationWhereInput!) {\\n allProperties: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetFilesMetadata($where: AttestationWhereInput!) {\\n filesMetadata: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetFilesMetadata($where: AttestationWhereInput!) {\\n filesMetadata: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetArweaveTransactions(\\n $owners: [String!]\\n $first: Int\\n $after: String\\n ) {\\n transactions(owners: $owners, first: $first, after: $after) {\\n edges {\\n cursor\\n node {\\n id\\n anchor\\n signature\\n block {\\n id\\n height\\n }\\n data {\\n size\\n type\\n }\\n tags {\\n name\\n value\\n }\\n }\\n }\\n pageInfo {\\n hasNextPage\\n }\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetArweaveTransactions(\\n $owners: [String!]\\n $first: Int\\n $after: String\\n ) {\\n transactions(owners: $owners, first: $first, after: $after) {\\n edges {\\n cursor\\n node {\\n id\\n anchor\\n signature\\n block {\\n id\\n height\\n }\\n data {\\n size\\n type\\n }\\n tags {\\n name\\n value\\n }\\n }\\n }\\n pageInfo {\\n hasNextPage\\n }\\n }\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetImageSeeds($where: AttestationWhereInput!) {\\n imageSeeds: attestations(where: $where, orderBy: [{ timeCreated: desc }]) {\\n id\\n decodedDataJson\\n attester\\n schema {\\n schemaNames {\\n name\\n }\\n }\\n refUID\\n revoked\\n schemaId\\n txid\\n timeCreated\\n time\\n isOffchain\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetImageSeeds($where: AttestationWhereInput!) {\\n imageSeeds: attestations(where: $where, orderBy: [{ timeCreated: desc }]) {\\n id\\n decodedDataJson\\n attester\\n schema {\\n schemaNames {\\n name\\n }\\n }\\n refUID\\n revoked\\n schemaId\\n txid\\n timeCreated\\n time\\n isOffchain\\n }\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetImageVersions($where: AttestationWhereInput!) {\\n imageVersions: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetImageVersions($where: AttestationWhereInput!) {\\n imageVersions: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetSchemaUids($where: SchemaWhereInput!) {\\n schemaUids: schemata(where: $where) {\\n id\\n schema\\n schemaNames {\\n name\\n }\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetSchemaUids($where: SchemaWhereInput!) {\\n schemaUids: schemata(where: $where) {\\n id\\n schema\\n schemaNames {\\n name\\n }\\n }\\n }\\n\"];\n\nexport function graphql(source: string) {\n return (documents as any)[source] ?? {};\n}\n\nexport type DocumentType<TDocumentNode extends DocumentNode<any, any>> = TDocumentNode extends DocumentNode< infer TType, any> ? TType : never;","import { graphql } from '@/graphql/gql'\nimport { TypedDocumentNode } from '@graphql-typed-document-node/core'\nimport { Attestation } from '@/graphql/gql/graphql'\n\nexport const GET_SCHEMAS = graphql(/* GraphQL */ `\n query GetSchemas($where: SchemaWhereInput!) {\n schemas: schemata(where: $where) {\n id\n schema\n schemaNames {\n name\n }\n }\n }\n`)\n\nexport const GET_SCHEMA_BY_NAME = graphql(/* GraphQL */ `\n query GetSchemaByName($where: SchemaWhereInput!) {\n schema: schemata(where: $where) {\n id\n schema\n schemaNames {\n name\n }\n }\n }\n`) as TypedDocumentNode<{ schema: Attestation }>\n\nexport const GET_SEEDS = graphql(/* GraphQL */ `\n query GetSeeds($where: AttestationWhereInput!) {\n itemSeeds: attestations(where: $where, orderBy: [{ timeCreated: desc }]) {\n id\n decodedDataJson\n attester\n schema {\n schemaNames {\n name\n }\n }\n refUID\n revoked\n schemaId\n timeCreated\n isOffchain\n }\n }\n`) as TypedDocumentNode<{ itemSeeds: Attestation[] }>\n\nexport const GET_SEED_IDS = graphql(/* GraphQL */ `\n query GetSeedIds($where: AttestationWhereInput!) {\n itemSeedIds: attestations(where: $where, orderBy: [{ timeCreated: desc }]) {\n id\n }\n }\n`) as TypedDocumentNode<{ itemSeedIds: Attestation[] }>\n\nexport const GET_STORAGE_TRANSACTION_ID = graphql(/* GraphQL */ `\n query GetStorageTransactionId($where: AttestationWhereInput!) {\n storageTransactionId: attestations(\n where: $where\n orderBy: [{ timeCreated: desc }]\n ) {\n id\n decodedDataJson\n }\n }\n`) as TypedDocumentNode<{ storageTransactionId: Attestation[] }>\n\nexport const GET_VERSIONS = graphql(/* GraphQL */ `\n query GetVersions($where: AttestationWhereInput!) {\n itemVersions: attestations(\n where: $where\n orderBy: [{ timeCreated: desc }]\n ) {\n ...attestationFields\n }\n }\n`) as TypedDocumentNode<{ itemVersions: Attestation[] }>\n\nexport const GET_PROPERTIES = graphql(/* GraphQL */ `\n query GetProperties($where: AttestationWhereInput!) {\n itemProperties: attestations(\n where: $where\n orderBy: [{ timeCreated: desc }]\n ) {\n ...attestationFields\n }\n }\n`) as TypedDocumentNode<{ itemProperties: Attestation[] }>\n\nexport const GET_ALL_PROPERTIES_FOR_ALL_VERSIONS = graphql(/* GraphQL */ `\n query GetAllPropertiesForAllVersions($where: AttestationWhereInput!) {\n allProperties: attestations(\n where: $where\n orderBy: [{ timeCreated: desc }]\n ) {\n ...attestationFields\n }\n }\n`) as TypedDocumentNode<{ allProperties: Attestation[] }>\n","import { GET_SCHEMAS } from '@/Item/queries'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\n\n\nexport const getSchemaUidForModel = async (\n modelName: string,\n): Promise<string> => {\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const modeType = modelName.toLowerCase()\n\n const modelSchemaQuery = await queryClient.fetchQuery({\n queryKey: [`getPropertySchema${modelName}`],\n queryFn: async () =>\n easClient.request(GET_SCHEMAS, {\n where: {\n schemaNames: {\n some: {\n name: {\n equals: modeType,\n },\n },\n },\n },\n }),\n })\n\n const foundSchema = modelSchemaQuery.schemas[0]\n return foundSchema.id\n}\n","import { generateId } from '@/helpers'\nimport { seeds } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { getSchemaUidForModel } from '@/db/read/getSchemaUidForModel'\n\ntype CreateSeedProps = {\n type: string\n seedUid?: string\n}\n\nexport const createSeed = async ({ type, seedUid }: CreateSeedProps): Promise<string> => {\n const schemaUid = await getSchemaUidForModel(type)\n\n if (!schemaUid) {\n throw new Error(`No schema found for model type: ${type}`)\n }\n\n const appDb = BaseDb.getAppDb()\n\n const newSeedLocalId = generateId()\n\n await appDb.insert(seeds).values({\n localId: newSeedLocalId,\n type,\n uid: seedUid,\n createdAt: Date.now(),\n schemaUid,\n })\n\n return newSeedLocalId\n} ","import { generateId } from '@/helpers'\nimport { versions } from '@/seedSchema'\nimport { BaseDb } from '../Db/BaseDb'\n\ntype CreateVersionProps = {\n seedLocalId?: string\n seedUid?: string\n seedType?: string\n uid?: string\n}\ntype CreateVersion = (props: CreateVersionProps) => Promise<string>\n\nexport const createVersion: CreateVersion = async ({\n seedLocalId,\n seedUid,\n seedType,\n uid,\n}) => {\n const appDb = BaseDb.getAppDb()\n\n const newVersionLocalId = generateId()\n\n await appDb.insert(versions).values({\n localId: newVersionLocalId,\n createdAt: Date.now(),\n seedLocalId,\n seedUid: seedUid ?? 'NULL',\n seedType,\n uid: uid || 'NULL',\n })\n\n return newVersionLocalId\n}\n","import { metadata, MetadataType } from '@/seedSchema'\nimport { generateId } from '@/helpers'\nimport { PropertyType } from '@/types'\nimport { BaseDb } from '../Db/BaseDb'\n\ntype CreateMetadata = (\n metadataValues: Partial<MetadataType>,\n propertyRecordSchema?: PropertyType | undefined,\n) => Promise<MetadataType>\n\nexport const createMetadata: CreateMetadata = async (\n metadataValues,\n propertyRecordSchema?,\n) => {\n const appDb = BaseDb.getAppDb()\n\n metadataValues.localId = generateId()\n\n if (!metadataValues.modelType && metadataValues.modelName) {\n metadataValues.modelType = metadataValues.modelName.toLowerCase()\n }\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.localStorageDir &&\n propertyRecordSchema.storageType === 'ItemStorage'\n ) {\n metadataValues.refResolvedValue = `${metadataValues.seedUid || metadataValues.seedLocalId}${propertyRecordSchema.filenameSuffix}`\n metadataValues.refValueType = 'file'\n }\n\n return appDb\n .insert(metadata)\n .values({\n ...metadataValues,\n createdAt: Date.now(),\n updatedAt: Date.now(),\n })\n .returning()\n}\n","import { ModelValues } from '@/types'\nimport { getModel } from '@/stores/modelClass'\nimport { createSeed } from './createSeed'\nimport { createVersion } from './createVersion'\nimport { createMetadata } from './createMetadata'\n\ntype CreateNewItemProps = Partial<ModelValues<any>> & {\n modelName: string\n}\n\ntype CreateNewItemReturnType = {\n modelName: string\n seedLocalId: string\n versionLocalId: string\n}\n\nexport const createNewItem = async ({\n modelName,\n ...propertyData\n}: CreateNewItemProps): Promise<CreateNewItemReturnType> => {\n if (!modelName) {\n throw new Error('A model name is required for createNewItem')\n }\n\n const seedType = modelName.toLowerCase()\n\n const newSeedId = await createSeed({ type: seedType })\n\n const newVersionId = await createVersion({ seedLocalId: newSeedId })\n\n const propertySchemas = getModel(modelName)?.schema\n\n for (const [propertyName, propertyValue] of Object.entries(propertyData)) {\n let propertyRecordSchema\n\n if (propertySchemas && propertySchemas[propertyName]) {\n propertyRecordSchema = propertySchemas[propertyName]\n }\n\n await createMetadata(\n {\n seedLocalId: newSeedId,\n versionLocalId: newVersionId,\n propertyName,\n propertyValue,\n modelName,\n },\n propertyRecordSchema,\n )\n }\n\n return {\n modelName,\n seedLocalId: newSeedId,\n versionLocalId: newVersionId,\n }\n} ","import { EventObject, fromCallback } from 'xstate'\nimport { itemMachineSingle } from '@/Item/service/itemMachineSingle'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\nexport const waitForDb = fromCallback<EventObject, typeof itemMachineSingle>(\n ({ sendBack }) => {\n const _waitForDb = new Promise<void>((resolve) => {\n const interval = setInterval(() => {\n const appDb = BaseDb.getAppDb()\n\n if (appDb) {\n clearInterval(interval)\n resolve()\n }\n }, 100)\n })\n\n _waitForDb.then(() => {\n sendBack({ type: 'waitForDbSuccess' })\n })\n },\n)\n","import { BaseDb } from '@/db/Db/BaseDb'\nimport { seeds } from '@/seedSchema'\nimport { and, eq, isNotNull, not, or } from 'drizzle-orm'\n\ntype GetExistingItemProps = {\n seedLocalId: string\n seedUid: string\n}\n\ntype GetExistingItemReturn = {\n seedLocalId: string\n seedUid: string\n createdAt: string\n}\n\nexport const getExistingItem = async ({\n seedLocalId,\n seedUid,\n}: GetExistingItemProps): Promise<GetExistingItemReturn | undefined> => {\n const appDb = BaseDb.getAppDb()\n\n const rows = await appDb\n .select({\n seedLocalId: seeds.localId,\n seedUid: seeds.uid,\n createdAt: seeds.createdAt,\n })\n .from(seeds)\n .where(\n or(\n and(\n isNotNull(seeds.uid),\n not(eq(seeds.uid, '')),\n not(eq(seeds.uid, 'undefined')),\n not(eq(seeds.uid, 'null')),\n not(eq(seeds.uid, 'false')),\n not(eq(seeds.uid, '0')),\n eq(seeds.uid, seedUid)\n ),\n and(\n isNotNull(seeds.localId),\n not(eq(seeds.localId, '')),\n not(eq(seeds.localId, 'undefined')),\n not(eq(seeds.localId, 'null')),\n not(eq(seeds.localId, 'false')),\n not(eq(seeds.localId, '0')),\n eq(seeds.localId, seedLocalId)\n )\n )\n )\n\n if (!rows || rows.length === 0) {\n return undefined\n }\n\n const matchingRow = rows.find(row => row.seedUid === seedUid) ||\n rows.find(row => row.seedLocalId === seedLocalId)\n\n return matchingRow\n} ","import { EventObject, fromCallback } from 'xstate'\nimport pluralize from 'pluralize'\nimport { getExistingItem } from '@/db/read/getExistingItem'\nimport { FromCallbackInput, ItemMachineContext } from '@/types'\n\nexport const initialize = fromCallback<\n EventObject,\n FromCallbackInput<ItemMachineContext<any>>\n>(\n ({ sendBack, input: { context } }) => {\n const { seedLocalId, seedUid, ModelClass } = context\n\n if (!ModelClass) {\n throw new Error('ModelClass is required')\n }\n\n const modelName = ModelClass.originalConstructor.name\n const modelNamePlural = pluralize(modelName)\n const modelTableName = modelNamePlural.toLowerCase()\n\n const _intialize = async (): Promise<void> => {\n const existingItem = await getExistingItem({ seedUid, seedLocalId })\n\n if (existingItem) {\n sendBack({\n type: 'hasExistingItem',\n modelName,\n modelTableName,\n modelNamePlural,\n existingItem,\n })\n return\n }\n\n sendBack({\n type: 'isNewItem',\n modelName,\n modelTableName,\n modelNamePlural,\n })\n }\n\n _intialize().then(() => {\n sendBack({ type: 'initializeSuccess' })\n return\n })\n },\n)\n","import {\n appState,\n models as modelsTable,\n NewModelRecord,\n NewPropertyRecord,\n properties,\n} from '@/seedSchema'\nimport { SqliteRemoteDatabase } from 'drizzle-orm/sqlite-proxy'\nimport { DbQueryResult, ModelDefinitions, ResultObject } from '@/types'\nimport type { BetterSQLite3Database } from 'drizzle-orm/better-sqlite3'\nimport { SQLiteTableWithColumns } from 'drizzle-orm/sqlite-core'\nimport { and, eq, isNull, SQL } from 'drizzle-orm'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\nexport const escapeSqliteString = (value: string): string => {\n if (typeof value !== 'string') {\n throw new Error(\n `Value must be a string, instead got: ${JSON.stringify(value)}`,\n )\n }\n return value.replace(/'/g, \"''\")\n}\nexport const getObjectForRow = (row: any): ResultObject => {\n const obj: ResultObject = {}\n\n row.columnNames.forEach((colName, index) => {\n const value = row.row[index]\n if (typeof value !== 'string') {\n obj[colName] = row.row[index]\n return\n }\n\n // Try to parse the value as JSON\n try {\n obj[colName] = JSON.parse(value)\n } catch (e) {\n // If it fails, just set the value as a string\n obj[colName] = value\n }\n })\n\n return obj\n}\nexport const getSqlResultObject = (\n queryResult: DbQueryResult,\n): ResultObject | ResultObject[] | undefined => {\n if (!queryResult || !queryResult.rows || queryResult.rows.length === 0) {\n return\n }\n\n let obj: ResultObject | ResultObject[] | undefined\n\n if (queryResult.rows.length === 1) {\n obj = getObjectForRow(queryResult.rows[0])\n }\n\n if (queryResult.rows.length > 1) {\n obj = queryResult.rows.reduce((acc, row) => {\n const rowObj = getObjectForRow(row)\n\n acc.push(rowObj)\n return acc\n }, [] as ResultObject[])\n }\n\n return obj\n}\nexport const createOrUpdate = async <T>(\n db: BetterSQLite3Database | SqliteRemoteDatabase,\n table: SQLiteTableWithColumns<any>,\n values: Partial<Record<keyof T, T[keyof T]>>,\n) => {\n const startTime = Date.now()\n\n const valueFilters: SQL[] = []\n\n const propertiesToExcludeFromDb = ['ref']\n\n const safeValues = Object.keys(values).reduce(\n (acc, key) => {\n if (!propertiesToExcludeFromDb.includes(key)) {\n acc[key] = values[key as string & keyof T]\n }\n return acc\n },\n {} as Record<string, unknown>,\n )\n\n for (const [key, value] of Object.entries(safeValues)) {\n let finalValue = value\n if (key === 'TObject') {\n continue\n }\n if (typeof value === 'object') {\n finalValue = JSON.stringify(value)\n }\n const column = table[key]\n if (!column) {\n throw new Error(`Column not found for ${key}`)\n }\n if (typeof finalValue === 'undefined') {\n finalValue = null\n }\n if (finalValue === null) {\n valueFilters.push(isNull(table[key]))\n continue\n }\n valueFilters.push(eq(table[key], finalValue))\n }\n\n const doneWithFilters = Date.now()\n\n // console.log('valueFilters:', valueFilters)\n\n // for ( const filter of valueFilters ) {\n // console.log('filter:', Object.keys(filter))\n // }\n\n // Build a query to find the record based on properties\n const existingRecords = await db\n .select()\n .from(table)\n .where(and(...valueFilters))\n\n const doneWithExistingRecords = Date.now()\n\n if (existingRecords.length > 1) {\n throw new Error('Multiple records found')\n }\n\n if (existingRecords.length > 0) {\n // If record exists, update it\n await db\n .update(table)\n .set(safeValues)\n .where(and(...valueFilters))\n\n const doneWithUpdate = Date.now()\n\n return existingRecords[0] as T\n } else {\n // If no record exists, create a new one\n const newRecord = await db.insert(table).values(safeValues).returning()\n return newRecord[0] as T\n }\n}\nexport const addModelsToInternalDb = async (\n db: BetterSQLite3Database<any> | SqliteRemoteDatabase<any>,\n models: ModelDefinitions,\n) => {\n for (const [modelName, modelClass] of Object.entries(models)) {\n const modelRecord = await createOrUpdate<NewModelRecord>(db, modelsTable, {\n name: modelName,\n })\n\n for (let [propertyName, propertyValues] of Object.entries(\n modelClass.schema,\n )) {\n if (!propertyValues) {\n throw new Error(`Property values not found for ${propertyName}`)\n }\n propertyValues.name = propertyName\n propertyValues.modelId = modelRecord.id!\n for (let [key, value] of Object.entries(propertyValues)) {\n if (key === 'ref') {\n const refModel = await createOrUpdate<NewModelRecord>(\n db,\n modelsTable,\n {\n name: value,\n },\n )\n // delete propertyValues.ref\n propertyValues.refModelId = refModel.id\n }\n }\n\n const propertyRecord = await createOrUpdate<NewPropertyRecord>(\n db,\n properties,\n propertyValues,\n )\n }\n }\n}\nexport const getAddressesFromDb = async (): Promise<string[]> => {\n const appDb = BaseDb.getAppDb()\n\n if (!appDb) {\n return new Promise((resolve) => {\n setTimeout(async () => {\n const addresses = await getAddressesFromDb()\n resolve(addresses)\n }, 500)\n })\n }\n\n const appStatesRecords = await appDb\n .select()\n .from(appState)\n .where(eq(appState.key, 'addresses'))\n .limit(1)\n\n if (!appStatesRecords || appStatesRecords.length === 0) {\n throw new Error('No appStatesRecords for addresses found')\n }\n\n const addressRecord = appStatesRecords[0]\n\n const addressArrayString = addressRecord.value\n\n if (!addressArrayString) {\n throw new Error('No addresses found')\n }\n\n return JSON.parse(addressArrayString)\n}\n","import { getModels } from '@/stores/modelClass'\nimport { GetSchemasQuery, Schema } from '@/graphql/gql/graphql'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { models as modelsTable, modelUids } from '@/seedSchema'\nimport { eq } from 'drizzle-orm'\nimport pluralize from 'pluralize'\nimport { toSnakeCase } from '@/helpers'\nimport { GET_SCHEMAS } from '@/Item/queries'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\n\n\ntype GetModelSchemasReturn = {\n modelSchemas: GetSchemasQuery\n schemaStringToModelRecord: Map<string, Schema>\n modelRecords: Record<string, unknown>\n}\n\ntype GetModelSchemas = () => Promise<GetModelSchemasReturn>\n\nexport const getModelSchemas: GetModelSchemas = async () => {\n const models = getModels()\n const modelRecords = [] as Record<string, unknown>[]\n\n const schemaStringToModelRecord = new Map<string, Schema>()\n\n const appDb = BaseDb.getAppDb()\n\n const OR: Record<string, unknown>[] = []\n\n for (const [modelName, _] of Object.entries(models)) {\n const foundModelQuery = await appDb\n .select({\n id: modelsTable.id,\n name: modelsTable.name,\n uid: modelUids.uid,\n })\n .from(modelsTable)\n .leftJoin(modelUids, eq(modelsTable.id, modelUids.modelId))\n .where(eq(modelsTable.name, modelName))\n .limit(1)\n\n const foundModel: Schema = { ...foundModelQuery[0] }\n\n if (!foundModel) {\n console.error(\n `[item/events] [syncDbWithEas] model ${modelName} not found in SDK DB`,\n )\n return\n }\n\n foundModel.tableName = pluralize(foundModel.name).toLowerCase()\n\n modelRecords!.push(foundModel)\n\n if (modelName === 'Seed' || modelName === 'Version') {\n continue\n }\n\n const schemaString = `bytes32 ${toSnakeCase(modelName)}`\n\n OR.push({\n schema: {\n equals: `bytes32 ${toSnakeCase(modelName)}`,\n },\n })\n\n schemaStringToModelRecord.set(schemaString, foundModel)\n }\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const modelSchemas = await queryClient.fetchQuery({\n queryKey: [`getSchemasAllModels`],\n queryFn: async () =>\n easClient.request(GET_SCHEMAS, {\n where: {\n OR,\n },\n }),\n })\n\n return {\n modelSchemas,\n schemaStringToModelRecord,\n modelRecords,\n }\n}\n","import { seeds, SeedType } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\ntype CreateSeeds = (newSeeds: Partial<SeedType>[]) => Promise<string[]>\n\nexport const createSeeds: CreateSeeds = async (\n newSeeds: Partial<SeedType>[],\n) => {\n const appDb = BaseDb.getAppDb()\n\n const results = await appDb\n .insert(seeds)\n .values(newSeeds)\n .returning({ uid: seeds.uid })\n\n const newUids = results.reduce((acc, result) => {\n if (result.uid) {\n acc.push(result.uid)\n }\n return acc\n }, [] as string[])\n\n return newUids\n}\n","import { Schema, SchemaWhereInput } from '@/graphql/gql/graphql'\nimport { toSnakeCase, BaseEasClient, BaseQueryClient } from '@/helpers'\nimport { GET_SCHEMAS } from '@/Item/queries'\nimport { TypedData } from '@ethereum-attestation-service/eas-sdk/dist/offchain/typed-data-handler'\n\n\ntype GetSchemaForPropertyProps = {\n schemaUid?: string\n propertyName: string\n easDataType?: TypedData['type']\n}\ntype GetSchemaForProperty = (\n props: GetSchemaForPropertyProps,\n) => Promise<Schema | void>\nexport const getSchemaForItemProperty: GetSchemaForProperty = async ({\n schemaUid,\n propertyName,\n easDataType,\n}): Promise<Schema | void> => {\n const propertyNameSnakeCase = toSnakeCase(propertyName)\n const isMissingSchemaUid =\n !schemaUid || schemaUid === 'null' || schemaUid === 'undefined'\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n let queryParams: { where: SchemaWhereInput } = {\n where: {\n id: {\n equals: schemaUid,\n },\n },\n }\n\n if (easDataType) {\n queryParams = {\n where: {\n schema: {\n equals: `${easDataType} ${propertyNameSnakeCase}`,\n },\n },\n }\n }\n\n if (!easDataType && isMissingSchemaUid) {\n queryParams = {\n where: {\n schemaNames: {\n some: {\n name: {\n equals: propertyNameSnakeCase,\n },\n },\n },\n },\n }\n }\n\n const foundPropertySchema = await queryClient.fetchQuery({\n queryKey: [`getPropertySchema${propertyName}`],\n queryFn: async () => easClient.request(GET_SCHEMAS, queryParams),\n networkMode: 'offlineFirst',\n })\n\n if (foundPropertySchema && foundPropertySchema.schemas.length > 0) {\n return foundPropertySchema.schemas[0] as Schema\n }\n}\n","import { toSnakeCase } from '@/helpers'\nimport { getSchemaForItemProperty } from '@/helpers/getSchemaForItemProperty'\n\nconst schemaUidForSchemaDefinition = new Map<string, string>()\n\nexport const setSchemaUidForSchemaDefinition = ({ text, schemaUid }) => {\n const propertySnakeCase = toSnakeCase(text)\n schemaUidForSchemaDefinition.set(propertySnakeCase, schemaUid)\n}\n\nexport const getSchemaUidForSchemaDefinition = (schemaText: string) => {\n const textSnakeCase = toSnakeCase(schemaText)\n if (!schemaUidForSchemaDefinition.has(textSnakeCase)) {\n return\n }\n return schemaUidForSchemaDefinition.get(textSnakeCase)\n}\n\nexport const fetchSchemaUids = async () => {\n const versionSchemaUid = await getSchemaForItemProperty({\n propertyName: 'version',\n easDataType: 'bytes32',\n })\n if (versionSchemaUid) {\n setSchemaUidForSchemaDefinition({\n text: 'version',\n schemaUid: versionSchemaUid,\n })\n }\n const imageSchemaUid = await getSchemaForItemProperty({\n propertyName: 'image',\n easDataType: 'bytes32',\n })\n if (imageSchemaUid) {\n setSchemaUidForSchemaDefinition({\n text: 'image',\n schemaUid: imageSchemaUid,\n })\n }\n}\n","import { camelCase, DebouncedFunc, startCase, throttle } from 'lodash-es'\nimport { Attestation, SchemaWhereInput } from '@/graphql/gql/graphql'\nimport {\n metadata,\n MetadataType,\n modelUids,\n properties,\n propertyUids,\n seeds,\n SeedType,\n versions,\n} from '@/seedSchema'\nimport { and, eq, inArray, sql } from 'drizzle-orm'\nimport {\n generateId,\n parseEasRelationPropertyName,\n toSnakeCase,\n} from '@/helpers'\nimport {\n GET_PROPERTIES,\n GET_SCHEMAS,\n GET_SEEDS,\n GET_VERSIONS,\n} from '@/Item/queries'\nimport { INTERNAL_DATA_TYPES } from '@/helpers/constants'\nimport { escapeSqliteString, getAddressesFromDb } from '@/helpers/db'\nimport { eventEmitter } from '@/eventBus'\nimport { getModelNames, getModels } from '@/stores/modelClass'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { getModelSchemas } from '@/db/read/getModelSchemas'\nimport { ModelSchema, PropertyType } from '@/types'\nimport { createSeeds } from '@/db/write/createSeeds'\nimport { setSchemaUidForSchemaDefinition } from '@/stores/eas'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\n\n\n\n\nconst relationValuesToExclude = [\n '0x0000000000000000000000000000000000000000000000000000000000000020',\n]\n\nconst processPropertiesFoundInDb = async ({ foundModel }) => {\n const appDb = BaseDb.getAppDb()\n\n const foundPropertiesDb = await appDb\n .select({\n id: properties.id,\n name: properties.name,\n dataType: properties.dataType,\n uid: propertyUids.uid,\n })\n .from(properties)\n .fullJoin(propertyUids, eq(properties.id, propertyUids.propertyId))\n .where(eq(properties.modelId, foundModel.id))\n\n if (!foundPropertiesDb || foundPropertiesDb.length === 0) {\n return\n }\n\n if (foundPropertiesDb && foundPropertiesDb.length > 0) {\n const queryVariables: { where: SchemaWhereInput } = {\n where: {\n OR: [],\n },\n }\n\n for (const foundPropertyDb of foundPropertiesDb) {\n if (foundPropertyDb.name && foundPropertyDb.dataType) {\n const easDatatype = INTERNAL_DATA_TYPES[foundPropertyDb.dataType].eas\n\n let easPropertyName = toSnakeCase(foundPropertyDb.name)\n\n if (foundPropertyDb.dataType === 'Relation') {\n easPropertyName += '_id'\n }\n\n queryVariables.where.OR!.push({\n schema: {\n equals: `${easDatatype} ${easPropertyName}`,\n },\n })\n }\n }\n\n const modelName = foundModel.name\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const foundPropertySchemas = await queryClient.fetchQuery({\n queryKey: [`getPropertySchemas${modelName}`],\n queryFn: async () => easClient.request(GET_SCHEMAS, queryVariables),\n })\n\n const tempExclusions = ['html', 'json']\n\n for (const foundProperty of foundPropertiesDb) {\n if (tempExclusions.includes(foundProperty.name)) {\n continue\n }\n const easDatatype = INTERNAL_DATA_TYPES[foundProperty.dataType].eas\n\n let easPropertyName = toSnakeCase(foundProperty.name)\n\n if (foundProperty.dataType === 'Relation') {\n easPropertyName += '_id'\n }\n\n const regex = new RegExp(`${easDatatype} ${easPropertyName}`)\n const propertySchema = foundPropertySchemas.schemas.find((s) =>\n regex.test(s.schema),\n )\n\n if (!propertySchema) {\n // TODO: We should create the schema here?\n continue\n }\n await appDb\n .insert(propertyUids)\n .values({\n propertyId: foundProperty.id,\n uid: propertySchema.id,\n })\n .onConflictDoNothing()\n }\n }\n}\n\nconst getSeedsFromSchemaUids = async ({ schemaUids, addresses }) => {\n const AND = [\n {\n OR: [] as Record<string, unknown>[],\n },\n ]\n\n for (const schemaUid of schemaUids) {\n AND[0].OR.push({\n decodedDataJson: {\n contains: schemaUid,\n },\n })\n }\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { itemSeeds } = await queryClient.fetchQuery({\n queryKey: [`getSeedsForAllModels`],\n queryFn: async () =>\n easClient.request(GET_SEEDS, {\n where: {\n attester: {\n in: addresses,\n },\n schemaId: {\n in: schemaUids,\n },\n AND,\n },\n }),\n })\n\n return itemSeeds\n}\n\nconst seedUidToLocalId = new Map<string, string>()\nconst seedUidToModelType = new Map<string, string>()\nconst relatedSeedUids = new Set<string>()\n\nconst versionUidToLocalId = new Map<string, string>()\nconst versionUidToSeedUid = new Map<string, string>()\n\nconst propertyUidToLocalId = new Map<string, string>()\n\ntype SaveEasSeedsToDbProps = {\n itemSeeds: Attestation[]\n}\n\ntype SaveEasSeedsToDbReturn = {\n seedUids: string[]\n}\n\ntype SaveEasSeedsToDb = (\n props: SaveEasSeedsToDbProps,\n) => Promise<SaveEasSeedsToDbReturn>\n\nconst saveEasSeedsToDb: SaveEasSeedsToDb = async ({ itemSeeds }) => {\n const appDb = BaseDb.getAppDb()\n\n const seedUids = itemSeeds.map((seed) => seed.id)\n\n const existingSeedRecordsRows: SeedType[] = await appDb\n .select()\n .from(seeds)\n .where(inArray(seeds.uid, seedUids))\n\n const existingSeedUids = new Set<string>()\n\n if (existingSeedRecordsRows && existingSeedRecordsRows.length > 0) {\n for (const row of existingSeedRecordsRows) {\n existingSeedUids.add(row.uid)\n seedUidToLocalId.set(row.uid, row.localId)\n seedUidToModelType.set(row.uid, row.type)\n }\n }\n\n const newSeeds = itemSeeds.filter((seed) => !existingSeedUids.has(seed.id))\n\n if (newSeeds.length === 0) {\n return { seedUidToLocalId, seedUids }\n }\n\n const newSeedsData: Partial<SeedType>[] = []\n\n for (let i = 0; i < newSeeds.length; i++) {\n const seed = newSeeds[i]\n seedUidToModelType.set(seed.id, seed.schema.schemaNames[0].name)\n const seedLocalId = generateId()\n seedUidToLocalId.set(seed.id, seedLocalId)\n\n const attestationRaw = escapeSqliteString(JSON.stringify(seed))\n\n newSeedsData.push({\n localId: seedLocalId,\n uid: seed.id,\n schemaUid: seed.schemaId,\n type: seed.schema.schemaNames[0].name,\n createdAt: Date.now(),\n attestationCreatedAt: seed.timeCreated * 1000,\n attestationRaw,\n })\n\n seedUidToLocalId.set(seed.id, seedLocalId)\n }\n\n const newSeedUids = await createSeeds(newSeedsData)\n\n return { seedUids: newSeedUids }\n}\n\ntype SaveEasVersionsToDbParams = {\n itemVersions: Attestation[]\n}\n\ntype SaveEasVersionsToDb = (\n props: SaveEasVersionsToDbParams,\n) => Promise<Record<string, unknown>>\n\nconst saveEasVersionsToDb: SaveEasVersionsToDb = async ({ itemVersions }) => {\n const versionUids = itemVersions.map((version) => version.id)\n\n const appDb = BaseDb.getAppDb()\n\n const existingVersionRecordsRows: MetadataType[] = await appDb\n .select()\n .from(versions)\n .where(inArray(versions.uid, versionUids))\n\n const existingVersionUids = new Set<string>()\n\n if (existingVersionRecordsRows && existingVersionRecordsRows.length > 0) {\n for (const row of existingVersionRecordsRows) {\n existingVersionUids.add(row.uid)\n versionUidToLocalId.set(row.uid, row.localId)\n versionUidToSeedUid.set(row.uid, row.seedUid)\n }\n }\n\n const newVersions = itemVersions.filter(\n (version) => !existingVersionUids.has(version.id),\n )\n\n if (newVersions.length === 0) {\n return { versionUidToLocalId, versionUids }\n }\n\n let insertVersionsQuery = `INSERT INTO versions (local_id, uid, seed_uid, seed_local_id, seed_type, created_at,\n attestation_created_at,\n attestation_raw)\n VALUES `\n\n for (let i = 0; i < newVersions.length; i++) {\n const version = newVersions[i]\n versionUidToSeedUid.set(version.id, version.refUID)\n const versionLocalId = generateId()\n versionUidToLocalId.set(version.id, versionLocalId)\n\n const seedUid = versionUidToSeedUid.get(version.id)\n const seedLocalId = seedUidToLocalId.get(seedUid!)\n const seedType = seedUidToModelType.get(seedUid!)\n const attestationRaw = escapeSqliteString(JSON.stringify(version))\n\n const valuesString = `('${versionLocalId}', '${version.id}', '${seedUid}', '${seedLocalId}', '${seedType}', ${Date.now()}, ${version.timeCreated * 1000}, '${attestationRaw}')`\n\n if (i < newVersions.length - 1) {\n insertVersionsQuery += valuesString + ', '\n }\n\n if (i === newVersions.length - 1) {\n insertVersionsQuery += valuesString + ';'\n }\n\n versionUidToLocalId.set(version.id, versionLocalId)\n }\n\n await appDb.run(sql.raw(insertVersionsQuery))\n\n return { versionUids }\n}\n\nconst createMetadataRecordsForStorageTransactionId = async (\n storageTransactionIdProperty: Attestation,\n modelSchema: ModelSchema,\n) => {\n const attestationData = JSON.parse(\n storageTransactionIdProperty.decodedDataJson,\n )[0].value\n const propertyName = camelCase(attestationData.name)\n const propertyValue = attestationData.value\n\n const itemStorageProperties = new Map<string, PropertyType>()\n\n for (const [_propertyName, propertyDef] of Object.entries(modelSchema)) {\n if (propertyDef?.storageType && propertyDef.storageType === 'ItemStorage') {\n itemStorageProperties.set(_propertyName, propertyDef)\n }\n }\n\n if (itemStorageProperties.size === 0) {\n return\n }\n\n const appDb = BaseDb.getAppDb()\n\n for (const [_propertyName, propertyDef] of itemStorageProperties.entries()) {\n const existingMetadataRecordRows = await appDb\n .select()\n .from(metadata)\n .where(\n and(\n eq(metadata.propertyName, _propertyName),\n eq(metadata.propertyValue, propertyValue),\n eq(metadata.versionUid, storageTransactionIdProperty.refUID),\n ),\n )\n\n if (existingMetadataRecordRows && existingMetadataRecordRows.length > 0) {\n continue\n }\n\n const seedUid = versionUidToSeedUid.get(\n storageTransactionIdProperty.refUID,\n ) as string\n const seedLocalId = seedUidToLocalId.get(seedUid)\n const versionUid = storageTransactionIdProperty.refUID\n const versionLocalId = versionUidToLocalId.get(versionUid)\n\n const propertyLocalId = generateId()\n await appDb.insert(metadata).values({\n localId: propertyLocalId,\n propertyName: _propertyName,\n propertyValue,\n localStorageDir: propertyDef.localStorageDir,\n seedLocalId,\n seedUid,\n versionLocalId,\n versionUid,\n refValueType: 'file',\n refResolvedValue: `${propertyValue}${propertyDef.filenameSuffix}`,\n modelType: seedUidToModelType.get(seedUid),\n createdAt: Date.now(),\n updatedAt: Date.now(),\n })\n }\n}\n\ntype SaveEasPropertiesToDbParams = {\n itemProperties: Attestation[]\n itemSeeds: Attestation[]\n}\n\ntype SaveEasPropertiesToDb = (\n props: SaveEasPropertiesToDbParams,\n) => Promise<Record<string, unknown>>\n\nlet isSavingToDb = false\n\nconst saveEasPropertiesToDb: SaveEasPropertiesToDb = async ({\n itemProperties,\n itemSeeds,\n}) => {\n if (isSavingToDb) {\n return\n }\n isSavingToDb = true\n\n const propertyUids = itemProperties.map((property) => property.id)\n\n const models = getModels()\n\n const appDb = BaseDb.getAppDb()\n\n const existingMetadataRecordsRows: MetadataType[] = await appDb\n .select()\n .from(metadata)\n .where(inArray(metadata.uid, propertyUids))\n\n const existingPropertyRecordsUids = new Set<string>()\n\n if (existingMetadataRecordsRows && existingMetadataRecordsRows.length > 0) {\n for (const row of existingMetadataRecordsRows) {\n existingPropertyRecordsUids.add(row.uid)\n propertyUidToLocalId.set(row.uid, row.localId)\n }\n }\n\n const newProperties = itemProperties.filter(\n (property) => !existingPropertyRecordsUids.has(property.id),\n )\n\n if (newProperties.length === 0) {\n return { propertyUidToLocalId, propertyUids }\n }\n\n let insertPropertiesQuery = `INSERT INTO metadata (local_id, uid, schema_uid, property_name, property_value,\n eas_data_type, version_uid, version_local_id, seed_uid,\n seed_local_id, model_type, ref_value_type, ref_seed_type,\n ref_schema_uid,\n created_at, attestation_created_at, attestation_raw,\n local_storage_dir, ref_resolved_value)\n VALUES `\n\n for (let i = 0; i < newProperties.length; i++) {\n const property = newProperties[i]\n const propertyLocalId = generateId()\n const metadata = JSON.parse(property.decodedDataJson)[0].value\n\n let propertyNameSnake = metadata.name\n\n if (!propertyNameSnake) {\n console.warn(\n '[item/events] [syncDbWithEas] no propertyName found for property: ',\n property,\n )\n continue\n }\n\n let isRelation = false\n let refValueType\n let refSeedType\n let refSchemaUid\n let refResolvedValue\n let isList = false\n const schemaUid = property.schemaId\n\n setSchemaUidForSchemaDefinition({\n text: propertyNameSnake,\n schemaUid,\n })\n\n if (\n (propertyNameSnake.endsWith('_id') ||\n propertyNameSnake.endsWith('_ids')) &&\n propertyNameSnake !== 'storage_transaction_id' &&\n propertyNameSnake !== 'storage_provider_transaction_id'\n ) {\n isRelation = true\n\n if (Array.isArray(metadata.value)) {\n isList = true\n refValueType = 'list'\n\n const result = parseEasRelationPropertyName(propertyNameSnake)\n\n if (result) {\n propertyNameSnake = result.propertyName\n refSeedType = result.modelName\n }\n\n metadata.value.forEach((value) => {\n relatedSeedUids.add(value)\n })\n }\n\n if (!isList) {\n if (relationValuesToExclude.includes(metadata.value)) {\n continue\n }\n relatedSeedUids.add(metadata.value)\n }\n }\n\n let propertyValue = metadata.value\n\n if (typeof propertyValue !== 'string') {\n propertyValue = JSON.stringify(propertyValue)\n }\n\n if (isRelation && !isList) {\n const relatedSeed = itemSeeds.find(\n (seed: Attestation) => seed.id === metadata.value,\n )\n if (relatedSeed && relatedSeed.schema && relatedSeed.schema.schemaNames) {\n refSeedType = relatedSeed.schema.schemaNames[0].name\n refSchemaUid = relatedSeed.schemaId\n }\n }\n\n if (isRelation && isList) {\n const relatedSeeds = itemSeeds.filter((seed: Attestation) =>\n metadata.value.includes(seed.id),\n )\n if (relatedSeeds && relatedSeeds.length > 0) {\n refSeedType = relatedSeeds[0].schema.schemaNames[0].name\n refSchemaUid = relatedSeeds[0].schemaId\n }\n }\n\n const propertyName = camelCase(propertyNameSnake)\n propertyValue = escapeSqliteString(propertyValue)\n const easDataType = metadata.type\n const versionUid = property.refUID\n const versionLocalId = versionUidToLocalId.get(versionUid)\n const attestationCreatedAt = property.timeCreated * 1000\n const attestationRaw = escapeSqliteString(JSON.stringify(property))\n const seedUid = versionUidToSeedUid.get(versionUid)\n const seedLocalId = seedUidToLocalId.get(seedUid!)\n const modelType = seedUidToModelType.get(seedUid!)\n\n let localStorageDir\n const modelName = startCase(modelType)\n const ModelClass = models[modelName]\n const modelSchema = ModelClass.schema\n\n if (propertyNameSnake === 'storage_transaction_id') {\n await createMetadataRecordsForStorageTransactionId(property, modelSchema)\n }\n\n const valuesString = `('${propertyLocalId}', '${property.id}', \n '${property.schemaId}', '${propertyName}', \n '${propertyValue}', '${easDataType}', '${versionUid}', \n '${versionLocalId}', '${seedUid}', '${seedLocalId}', \n '${modelType}', ${refValueType ? `'${refValueType}'` : 'NULL'}, \n ${refSeedType ? `'${refSeedType}'` : 'NULL'},\n ${refSchemaUid ? `'${refSchemaUid}'` : 'NULL'},\n ${Date.now()}, ${attestationCreatedAt}, '${attestationRaw}',\n ${localStorageDir ? `'${localStorageDir}'` : 'NULL'},\n ${refResolvedValue ? `'${refResolvedValue}'` : 'NULL'})`\n\n if (i < newProperties.length - 1) {\n insertPropertiesQuery += valuesString + ', '\n }\n\n if (i === newProperties.length - 1) {\n insertPropertiesQuery += valuesString + ';'\n }\n\n propertyUidToLocalId.set(property.id, propertyLocalId)\n }\n\n if (insertPropertiesQuery.endsWith('VALUES ')) {\n return { propertyUids }\n }\n\n if (insertPropertiesQuery.endsWith(', ')) {\n insertPropertiesQuery = insertPropertiesQuery.slice(0, -2) + ';'\n }\n\n await appDb.run(sql.raw(insertPropertiesQuery))\n\n isSavingToDb = false\n\n return { propertyUids }\n}\n\nconst getRelatedSeedsAndVersions = async () => {\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { itemSeeds } = await easClient.request(GET_SEEDS, {\n where: {\n id: {\n in: Array.from(relatedSeedUids),\n },\n },\n })\n\n await saveEasSeedsToDb({ itemSeeds })\n\n const { itemVersions } = await easClient.request(GET_VERSIONS, {\n where: {\n refUID: {\n in: Array.from(relatedSeedUids),\n },\n },\n })\n\n await saveEasVersionsToDb({ itemVersions })\n\n const relatedVersionUids = itemVersions.map((v) => v.id)\n\n const { itemProperties } = await easClient.request(GET_PROPERTIES, {\n where: {\n refUID: {\n in: relatedVersionUids,\n },\n },\n })\n\n await saveEasPropertiesToDb({\n itemProperties,\n itemSeeds,\n })\n}\n\nconst syncDbWithEasHandler: DebouncedFunc<any> = throttle(\n async (_) => {\n const appDb = BaseDb.getAppDb()\n\n const { modelSchemas, schemaStringToModelRecord } = await getModelSchemas()\n\n if (\n !modelSchemas ||\n !modelSchemas.schemas ||\n modelSchemas.schemas.length === 0\n ) {\n throw new Error(`No schemas found for models`)\n }\n\n const schemaUids: string[] = []\n\n for (const modelSchema of modelSchemas.schemas) {\n const foundModel = schemaStringToModelRecord.get(modelSchema.schema)\n\n if (!foundModel) {\n throw new Error(`Model not found for schema ${modelSchema.schema}`)\n }\n\n schemaUids.push(modelSchema.id)\n\n await appDb\n .insert(modelUids)\n .values({\n modelId: foundModel.id,\n uid: modelSchema.id,\n })\n .onConflictDoNothing()\n\n await processPropertiesFoundInDb({\n foundModel,\n })\n }\n\n const addresses = await getAddressesFromDb()\n\n const itemSeeds = await getSeedsFromSchemaUids({\n schemaUids: schemaUids,\n addresses,\n })\n\n // const seedDbRecords = new Map<string, Record<string, unknown>>()\n\n const { seedUids } = await saveEasSeedsToDb({\n itemSeeds,\n })\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { itemVersions } = await queryClient.fetchQuery({\n queryKey: [`getVersionsForAllModels`],\n queryFn: async () =>\n easClient.request(GET_VERSIONS, {\n where: {\n refUID: {\n in: seedUids,\n },\n },\n }),\n })\n\n const { versionUids } = await saveEasVersionsToDb({\n itemVersions,\n })\n\n const { itemProperties } = await queryClient.fetchQuery({\n queryKey: [`getPropertiesForAllModels`],\n queryFn: async () =>\n easClient.request(GET_PROPERTIES, {\n where: {\n refUID: {\n in: versionUids,\n },\n },\n }),\n })\n\n const { propertyUids } = saveEasPropertiesToDb({\n itemProperties,\n itemSeeds,\n })\n\n await getRelatedSeedsAndVersions()\n\n for (const modelName of getModelNames()) {\n eventEmitter.emit('item.requestAll', { modelName })\n }\n },\n 30000,\n {\n leading: true,\n trailing: false,\n },\n)\n\nexport { syncDbWithEasHandler }\n","import { EventObject, fromCallback, Subscription } from 'xstate'\nimport { getEnvironment } from '@/helpers/environment'\nimport {\n GLOBAL_INITIALIZING_CREATE_ALL_ITEMS_SERVICES,\n GLOBAL_INITIALIZING_INTERNAL_SERVICE_READY,\n GLOBAL_INITIALIZING_SEND_CONFIG,\n} from '@/services/internal/constants'\nimport debug from 'debug'\nimport { FromCallbackInput, GlobalMachineContext } from '@/types'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { appState } from '@/seedSchema'\nimport { like } from 'drizzle-orm'\nimport { fetchSchemaUids } from '@/stores/eas'\n\nconst logger = debug('app:services:global:actors:initialize')\n\nexport const initialize = fromCallback<\n EventObject,\n FromCallbackInput<GlobalMachineContext, EventObject>\n>(({ sendBack, input: { event, context } }) => {\n const { internalService, models, endpoints, arweaveDomain, addresses, } = context\n\n if (!internalService) {\n throw new Error('internalService is required')\n }\n\n if (!models) {\n throw new Error('models is required')\n }\n\n\n let environment = getEnvironment()\n\n let internalSubscription: Subscription | undefined\n let easSubscription: Subscription | undefined\n\n const _initFileSystem = async (): Promise<void> => {\n return\n // return new Promise((resolve) => {\n // })\n }\n\n const _initInternal = async (): Promise<void> => {\n return new Promise((resolve) => {\n internalSubscription = internalService.subscribe((snapshot) => {\n logger('[sdk] [internal] snapshot', snapshot)\n if (snapshot.value === 'ready') {\n resolve()\n }\n })\n internalService.send({\n type: 'init',\n endpoints,\n addresses,\n arweaveDomain,\n })\n })\n }\n\n const _initAllItemsServices = async (): Promise<void> => {\n const appDb = BaseDb.getAppDb()\n\n const rows = await appDb\n .select()\n .from(appState)\n .where(like(appState.key, 'snapshot__%'))\n\n const payloadObj = {\n create: {},\n restore: {},\n }\n\n const modelNamesRestored: string[] = []\n\n if (rows && rows.length > 0) {\n for (const row of rows) {\n const modelName = row.key.replace('snapshot__', '')\n payloadObj.restore[modelName] = JSON.parse(row.value)\n modelNamesRestored.push(modelName)\n }\n }\n for (const [modelName, ModelClass] of Object.entries(models)) {\n if (!modelNamesRestored.includes(modelName)) {\n payloadObj.create[modelName] = ModelClass\n }\n }\n sendBack({\n type: GLOBAL_INITIALIZING_CREATE_ALL_ITEMS_SERVICES,\n ...payloadObj,\n })\n }\n\n const _initEas = async (): Promise<void> => {\n await fetchSchemaUids()\n }\n\n _initFileSystem().then(() => {\n logger('[global/actors] File system initialized')\n })\n\n _initInternal()\n .then(() => {\n return _initAllItemsServices()\n })\n .then(() => {\n return _initEas()\n })\n .then(() => {\n logger('[global/actors] Internal initialized')\n sendBack({ type: GLOBAL_INITIALIZING_INTERNAL_SERVICE_READY })\n internalSubscription?.unsubscribe()\n })\n\n // _initEas().then(() => {\n // logger('EAS initialized')\n // })\n\n sendBack({ type: GLOBAL_INITIALIZING_SEND_CONFIG, environment })\n\n return () => {\n internalSubscription?.unsubscribe()\n easSubscription?.unsubscribe()\n }\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport {\n FromCallbackInput,\n GetSchemaForModelEvent,\n GlobalMachineContext,\n} from '@/types'\nimport debug from 'debug'\n\nconst logger = debug('app:services:global:actors:getSchemaForModel')\n\nexport const getSchemaForModel = fromCallback<\n EventObject,\n FromCallbackInput<GlobalMachineContext, GetSchemaForModelEvent>\n>(({ sendBack, input: { context, event } }) => {\n const { modelName } = event\n\n if (!modelName) {\n console.warn('No modelName found')\n return\n }\n\n const { models } = context\n\n if (!models) {\n console.warn('No models found')\n return\n }\n\n const model = Object.entries(models).find(\n ([modelNameFromConfig]) => modelNameFromConfig === modelName,\n )\n\n if (!model) {\n throw new Error(`Model ${modelName} not found`)\n }\n\n logger('[service/actor] [getSchemaForModel] model:', model)\n\n sendBack({ type: 'schemaForModel', schema: model.schema })\n\n return () => {}\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { models as modelsTable, modelUids } from '@/seedSchema'\nimport { eq } from 'drizzle-orm'\nimport { toSnakeCase, BaseEasClient, BaseQueryClient } from '@/helpers'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { GLOBAL_ADDING_MODELS_TO_DB_SUCCESS } from '@/services/internal/constants'\nimport { eventEmitter } from '@/eventBus'\nimport { FromCallbackInput, GlobalMachineContext } from '@/types'\nimport debug from 'debug'\nimport { GET_SCHEMAS } from '@/Item/queries'\n\nconst logger = debug('app:services:global:actors:addModelsToDb')\n\nexport const addModelsToDb = fromCallback<\n EventObject,\n FromCallbackInput<GlobalMachineContext>\n>(({ sendBack, input: { context } }) => {\n const { models } = context\n\n const _addModelsToDb = async () => {\n const appDb = BaseDb.getAppDb()\n\n if (!models) {\n return\n }\n\n const { models: SeedModels } = await import(\n '@/db/configs/seed.schema.config'\n )\n\n const allModels = {\n ...SeedModels,\n ...models,\n }\n\n let hasModelsInDb = false\n const schemaDefsByModelName = new Map<\n string,\n {\n dbId: number\n schemaDef: string\n }\n >()\n\n for (const [modelName, _] of Object.entries(allModels)) {\n logger(\n '[helpers/db] [addModelsToInternalDb] starting modelName:',\n modelName,\n )\n\n let foundModel\n\n const foundModelsQuery = await appDb\n .select()\n .from(modelsTable)\n .where(eq(modelsTable.name, modelName))\n\n if (!foundModelsQuery || foundModelsQuery.length === 0) {\n await appDb.insert(modelsTable).values({\n name: modelName,\n })\n\n logger('[global/actors] [addModelsToDb] inserted model:', modelName)\n const foundModels = await appDb\n .select({\n id: modelsTable.id,\n name: modelsTable.name,\n uid: modelUids.uid,\n })\n .from(modelsTable)\n .leftJoin(modelUids, eq(modelsTable.id, modelUids.modelId))\n .where(eq(modelsTable.name, modelName))\n .limit(1)\n\n foundModel = foundModels[0]\n }\n\n if (foundModelsQuery && foundModelsQuery.length > 0) {\n foundModel = foundModelsQuery[0]\n }\n\n if (!foundModel) {\n hasModelsInDb = false\n break\n }\n\n schemaDefsByModelName.set(modelName, {\n dbId: foundModel.id,\n schemaDef: `bytes32 ${toSnakeCase(modelName)}`,\n })\n }\n\n if (!hasModelsInDb) {\n return false\n }\n\n const schemaDefs = Array.from(schemaDefsByModelName.values()).map(\n ({ schemaDef }) => schemaDef,\n )\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { schemas } = await queryClient.fetchQuery({\n queryKey: [`getSchemasVersion`],\n queryFn: async () =>\n easClient.request(GET_SCHEMAS, {\n where: {\n schema: {\n in: schemaDefs,\n },\n },\n }),\n })\n\n if (!schemas || schemas.length === 0) {\n throw new Error(`No schemas found`)\n }\n\n for (const schema of schemas) {\n const modelId = Array.from(schemaDefsByModelName.values()).find(\n ({ schemaDef }) => schemaDef === schema.schema,\n )?.dbId\n\n if (!modelId) {\n throw new Error(`No modelId found for schema ${schema.schema}`)\n }\n\n await appDb\n .insert(modelUids)\n .values({\n modelId,\n uid: schema.id,\n })\n .onConflictDoNothing()\n }\n }\n\n _addModelsToDb().then((hasModelsInDb) => {\n sendBack({ type: GLOBAL_ADDING_MODELS_TO_DB_SUCCESS })\n if (hasModelsInDb) {\n }\n for (const [modelName, model] of Object.entries(models)) {\n const service = context[`${modelName}Service`]\n service.send({ type: 'modelsFound' })\n }\n eventEmitter.emit('syncDbWithEas')\n return\n })\n\n return () => { }\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { DbServiceContext, FromCallbackInput } from '@/types'\nimport {\n BROWSER_FS_TOP_DIR,\n DB_CHECK_STATUS_EXISTS,\n DB_CHECK_STATUS_UPDATE_PATHS,\n} from '@/services/internal/constants'\nimport debug from 'debug'\n\nconst logger = debug('app:services:db:actors:checkStatus')\n\nexport const checkStatus = fromCallback<\n EventObject,\n FromCallbackInput<DbServiceContext>\n>(({ sendBack, input: { context } }) => {\n const { dbName } = context\n\n logger('[db/actors] checkStatus context', context)\n const pathToDir = `${BROWSER_FS_TOP_DIR}`\n const pathToDbDir = `${pathToDir}/db`\n const pathToDb = `${pathToDbDir}/${dbName}.sqlite3`\n\n sendBack({\n type: DB_CHECK_STATUS_UPDATE_PATHS,\n pathToDb,\n pathToDir,\n pathToDbDir,\n })\n\n const _checkStatus = async (): Promise<void> => {\n // logger('[db/actors] _checkStatus pathToDb', pathToDb)\n // const exists = await fs.promises.exists(pathToJournal)\n // if (exists) {\n // sendBack({\n // type: DB_CHECK_STATUS_EXISTS,\n // })\n // return\n // }\n //\n // return new Promise((resolve) => {\n // sendBack({ type: DB_CHECK_STATUS_DOES_NOT_EXIST })\n //\n // })\n }\n\n _checkStatus().then(() => {\n sendBack({ type: DB_CHECK_STATUS_EXISTS })\n return\n })\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { DbServiceContext, FromCallbackInput } from '@/types'\nimport { getSqliteWasmClient } from '@/db/sqlWasmClient'\nimport { DB_CREATING_SUCCESS } from '@/services/internal/constants'\nimport debug from 'debug'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\nconst logger = debug('app:services:db:actors:connectToDb')\n\nexport const connectToDb = fromCallback<\n EventObject,\n FromCallbackInput<DbServiceContext>\n>(({ sendBack, input: { context } }) => {\n logger('[db/actors] connectToDb context', context)\n\n const { dbName, pathToDir } = context\n\n if (!pathToDir || !dbName) {\n throw new Error('pathToDir and dbName are required')\n }\n\n let isConnecting = false\n let dbId: string | undefined\n\n const _connectToDb = async (): Promise<void> => {\n if (isConnecting) {\n return\n }\n isConnecting = true\n const dbId = await BaseDb.connectToDb(pathToDir, dbName)\n if (dbId) {\n sendBack({ type: DB_CREATING_SUCCESS, dbId, })\n }\n isConnecting = false\n }\n\n _connectToDb().then(() => {\n return\n })\n\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { DbServiceContext, FromCallbackInput } from '@/types/machines'\nimport { fs } from '@zenfs/core'\nimport {\n DB_VALIDATING_SUCCESS,\n DB_VALIDATING_WAIT,\n} from '@/services/internal/constants'\n\nexport const validate = fromCallback<\n EventObject,\n FromCallbackInput<DbServiceContext>\n>(({ sendBack, input: { context } }) => {\n const { pathToDir, pathToDb } = context\n\n const pathsToCheck = [\n pathToDir,\n `${pathToDir}/db`,\n `${pathToDir}/db/meta`,\n `${pathToDir}/db/meta/_journal.json`,\n ]\n\n const _validate = async (): Promise<boolean> => {\n // If any of the necessary files don't exist, we wipe them all and recreate\n let exists = false\n\n for (const path of pathsToCheck) {\n exists = await fs.promises.exists(path)\n if (!exists) {\n sendBack({\n type: DB_VALIDATING_WAIT,\n })\n return false\n }\n }\n return exists\n }\n\n _validate().then(() => {\n sendBack({ type: DB_VALIDATING_SUCCESS, pathToDb, pathToDir })\n return\n })\n})\n","import { fs } from '@zenfs/core'\nimport * as fsNode from 'node:fs'\n// import * as retry from 'async-es/retry'\n\nexport const listFilesInOPFSRoot = async () => {\n // Get the root directory handle\n const rootDirHandle = await navigator.storage.getDirectory()\n\n // Initialize an array to hold the file names\n let fileNames = []\n\n // Create an async iterator to loop through directory entries\n for await (const entry of rootDirHandle.values()) {\n if (entry.kind === 'file') {\n fileNames.push(entry.name)\n }\n }\n\n return fileNames\n}\n\n/**\n * Waits for a file to exist at the specified path.\n * @param {string} filePath - The path of the file to check.\n * @param {number} interval - The interval in milliseconds between checks (default: 500ms).\n * @param {number} timeout - The timeout in milliseconds to wait for the file to exist (default: 10s).\n * @returns {Promise<boolean>} - Resolves to true if the file exists within the timeout period, otherwise false.\n */\nexport const waitForFile = (\n filePath: string,\n interval: number = 500,\n timeout: number = 10000,\n): Promise<boolean> => {\n return new Promise((resolve, reject) => {\n const startTime = Date.now()\n\n const _interval = setInterval(() => {\n if (fs.existsSync(filePath) && fsNode.existsSync(filePath)) {\n clearInterval(_interval)\n resolve(true)\n }\n if (Date.now() - startTime >= timeout) {\n clearInterval(_interval)\n reject(new Error('Timeout exceeded while waiting for file'))\n }\n }, interval)\n\n // retry(\n // {\n // times: Math.ceil(timeout / interval),\n // interval: interval,\n // },\n // (callback: Function) => {\n // if (fs.existsSync(filePath) && fsNode.existsSync(filePath)) {\n // return callback(null, true) // File exists, finish with success\n // }\n // if (Date.now() - startTime >= timeout) {\n // return callback(new Error('Timeout exceeded while waiting for file'))\n // }\n // callback(new Error('File does not exist yet')) // Retry with this error\n // },\n // (err: Error, result: boolean) => {\n // if (err) {\n // return resolve(false) // Resolve as false if timeout or error occurs\n // }\n // resolve(result) // Resolve as true if file exists\n // },\n // )\n })\n}\n","import { EventObject, fromCallback } from 'xstate'\nimport { DbServiceContext, FromCallbackInput, SqliteWasmResult } from '@/types'\nimport {\n BROWSER_FS_TOP_DIR,\n DB_MIGRATING_SUCCESS,\n} from '@/services/internal/constants'\nimport debug from 'debug'\nimport { waitForFile } from '@/helpers/files'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport fs from '@zenfs/core'\n\nconst logger = debug('app:services:db:actors:migrate')\n\n\n\nexport const migrate = fromCallback<\n EventObject,\n FromCallbackInput<DbServiceContext>\n>(({ sendBack, input: { context } }) => {\n const { pathToDbDir, dbId, dbName } = context\n\n logger('[db/actors] migrate context', context)\n\n let journalExists = false\n\n // const _initFs = async (): Promise<void> => {\n // const handle = await navigator.storage.getDirectory()\n // // await configure({ backend: WebAccess, handle })\n // await configureSingle({\n // backend: WebAccess,\n // handle,\n // })\n // }\n //\n // _initFs()\n\n const _checkForFiles = async (): Promise<void> => {\n const journalPath = `/${pathToDbDir}/meta/_journal.json`\n\n journalExists = await fs.promises.exists(journalPath)\n\n\n if (!journalExists) {\n await waitForFile(journalPath)\n // const handle = await navigator.storage.getDirectory()\n //\n // await configureSingle({\n // backend: WebAccess,\n // handle,\n // })\n\n // window.location.reload()\n\n // setTimeout(() => {\n // _checkForFiles().then(() => {\n // return\n // })\n // }, 500)\n }\n }\n\n const _migrate = async (): Promise<void> => {\n await BaseDb.migrate(pathToDbDir, dbName, dbId)\n }\n\n _checkForFiles()\n .then(() => {\n if (journalExists) {\n return _migrate()\n }\n })\n .then(() => {\n sendBack({ type: DB_MIGRATING_SUCCESS, dbName })\n })\n\n return () => { }\n})\n","import { assign, setup } from 'xstate'\nimport {\n DB_CHECK_STATUS_EXISTS,\n DB_CHECK_STATUS_UPDATE_PATHS,\n DB_CREATING_SUCCESS,\n DB_MIGRATING_SUCCESS,\n DB_MIGRATING_WAIT,\n DB_VALIDATING_SUCCESS,\n DB_VALIDATING_WAIT,\n DB_WAITING_FOR_FILES_RECEIVED,\n DbState,\n MachineIds,\n} from '../internal/constants'\nimport debug from 'debug'\nimport { DbServiceContext } from '@/types'\nimport { checkStatus } from '@/services/db/actors/checkStatus'\nimport { connectToDb } from '@/services/db/actors/connectToDb'\nimport { validate } from '@/services/db/actors/validate'\nimport { migrate } from '@/services/db/actors/migrate'\n\nconst logger = debug('app:services:db:machine')\n\nconst {\n CHECKING_STATUS,\n VALIDATING,\n WAITING_FOR_FILES,\n CONNECTING_TO_DB,\n MIGRATING,\n} = DbState\n\nconst dbMachine = setup({\n types: {\n context: {} as Partial<DbServiceContext>,\n input: {} as Partial<DbServiceContext> | undefined,\n },\n actors: {\n checkStatus,\n validate,\n connectToDb,\n migrate,\n },\n}).createMachine({\n id: MachineIds.DB,\n initial: CHECKING_STATUS,\n context: ({ input }) => input as DbServiceContext,\n on: {\n [DB_WAITING_FOR_FILES_RECEIVED]: {\n actions: assign({\n hasFiles: ({ event }) => {\n logger('[db/machine] DB_WAITING_FOR_FILES_RECEIVED event:', event)\n return true\n },\n }),\n },\n updateHasFiles: {\n target: `.${CHECKING_STATUS}`,\n actions: assign({\n hasFiles: ({ context, event }) => {\n logger('[db/machine] updateHasFiles event:', event)\n logger('[db/machine] updateHasFiles context:', context)\n return event.hasFiles\n },\n }),\n },\n },\n // always: {\n // target: `.${CHECKING_STATUS}`,\n // guard: ({ context, event }) => context.hasFiles && event.type === 'updateHasFiles',\n // },\n states: {\n idle: {\n on: {\n start: CHECKING_STATUS,\n },\n meta: {\n displayText: 'DB starting ...',\n percentComplete: 0,\n },\n },\n [CHECKING_STATUS]: {\n on: {\n [DB_CHECK_STATUS_UPDATE_PATHS]: {\n actions: assign({\n pathToDb: ({ event }) => event.pathToDb,\n pathToDir: ({ event }) => event.pathToDir,\n pathToDbDir: ({ event }) => event.pathToDbDir,\n }),\n },\n [DB_CHECK_STATUS_EXISTS]: CONNECTING_TO_DB,\n },\n invoke: {\n src: 'checkStatus',\n input: ({ context, event }) => ({ context, event }),\n },\n meta: {\n displayText: 'Checking DB status',\n percentComplete: 60,\n },\n },\n [CONNECTING_TO_DB]: {\n on: {\n [DB_CREATING_SUCCESS]: {\n target: VALIDATING,\n actions: assign({\n dbId: ({ event }) => event.dbId,\n }),\n },\n },\n invoke: {\n src: 'connectToDb',\n input: ({ context }) => ({ context }),\n },\n meta: {\n displayText: 'Connecting to local DB',\n percentComplete: 70,\n },\n },\n [VALIDATING]: {\n on: {\n [DB_VALIDATING_SUCCESS]: {\n target: MIGRATING,\n // guard: ({ context }) => context.hasFiles,\n },\n [DB_VALIDATING_WAIT]: {\n target: WAITING_FOR_FILES,\n // guard: ({ context }) => !context.hasFiles,\n },\n },\n invoke: {\n src: 'validate',\n input: ({ context }) => ({ context }),\n },\n meta: {\n displayText: 'Validating DB',\n percentComplete: 80,\n },\n },\n // Here we're waiting for migration and schema files to be downloaded\n [WAITING_FOR_FILES]: {\n on: {\n [DB_WAITING_FOR_FILES_RECEIVED]: {\n target: MIGRATING,\n actions: assign({\n hasFiles: true,\n }),\n },\n [DB_MIGRATING_SUCCESS]: 'ready',\n },\n },\n [MIGRATING]: {\n on: {\n [DB_MIGRATING_WAIT]: WAITING_FOR_FILES,\n [DB_MIGRATING_SUCCESS]: {\n target: 'ready',\n },\n },\n invoke: {\n src: 'migrate',\n input: ({ context }) => ({ context }),\n },\n meta: {\n displayText: 'Migrating DB',\n percentComplete: 90,\n },\n },\n ready: {\n target: 'idle',\n meta: {\n displayText: 'Wrapping up the db ...',\n percentComplete: 100,\n },\n },\n },\n})\n\nexport { dbMachine }\n","import { EventObject, fromCallback } from 'xstate'\nimport { INTERNAL_VALIDATING_INPUT_SUCCESS, ARWEAVE_HOST } from '@/services/internal/constants'\nimport { FromCallbackInput, InternalMachineContext } from '@/types'\nimport { isBrowser, isNode } from '@/helpers/environment'\n\nexport const validateInput = fromCallback<\n EventObject,\n FromCallbackInput<InternalMachineContext>\n>(\n ({ sendBack, input: { context } }) => {\n\n const { endpoints, addresses, arweaveDomain } = context\n let { filesDir } = context\n\n if (!endpoints || !endpoints.filePaths || !endpoints.files) {\n throw new Error('validateInput called with invalid endpoints')\n }\n\n if (!addresses || !addresses.length) {\n throw new Error('validateInput called with invalid addresses')\n }\n\n if (!filesDir) {\n if (isBrowser()) {\n filesDir = '/'\n }\n\n if (!isBrowser()) {\n throw new Error('validateInput called with invalid filesDir')\n }\n }\n\n const _validateInput = async (): Promise<void> => {\n sendBack({\n type: INTERNAL_VALIDATING_INPUT_SUCCESS,\n endpoints,\n addresses,\n filesDir,\n arweaveDomain: arweaveDomain || ARWEAVE_HOST,\n })\n }\n\n _validateInput().then(() => {\n return\n })\n },\n)\n","import { BaseDb } from '@/db/Db/BaseDb'\nimport { InternalMachineContext } from '@/types'\nimport { FromCallbackInput } from '@/types'\nimport { EventObject, fromCallback } from 'xstate'\n\n\nexport const prepareDb = fromCallback<\n EventObject,\n FromCallbackInput<InternalMachineContext>\n>(({ sendBack, input: { context } }) => {\n const { filesDir } = context\n\n if (!filesDir) {\n throw new Error('filesDir is required')\n }\n\n const _prepareDb = async (): Promise<void> => {\n const manager = await BaseDb.prepareDb(filesDir)\n if (manager) {\n sendBack({ type: 'prepareDbSuccess', manager })\n }\n\n }\n\n _prepareDb().then(() => {\n return\n })\n\n})\n","import { fs } from '@zenfs/core'\nimport path from 'path'\nimport { Endpoints } from '@/types'\nimport { BROWSER_FS_TOP_DIR } from '@/services/internal/constants'\nimport debug from 'debug'\n\nconst logger = debug('app:services:internal:helpers')\n\n/**\n * Recursively create directories if they don't exist.\n * @param {string} dirPath - The directory path to create.\n */\nexport const createDirectories = async (dirPath: string) => {\n const dirPathExists = await fs.promises.exists(dirPath)\n if (dirPathExists) {\n return\n }\n\n const parentDir = path.dirname(dirPath)\n const parentDirExists = await fs.promises.exists(parentDir)\n if (!parentDirExists) {\n await createDirectories(parentDir)\n }\n\n await fs.promises.mkdir(dirPath, { recursive: true })\n}\n\nlet busy = false\n\nexport const downloadFile = async (url: string, localFilePath: string) => {\n try {\n const response = await fetch(url)\n const fileData = await response.text().catch((error) => {\n console.error(`Failed to parse text from ${url}:`, error)\n })\n if (!fileData) {\n console.error(`No file data from ${url}`)\n return\n }\n const localDirPath = path.dirname(localFilePath)\n\n if (busy) {\n return\n }\n\n busy = true\n\n await createDirectories(localDirPath)\n\n const filename = path.basename(localFilePath)\n\n const regex = /(\\d+)[\\w_]+\\.(sql|json)$/\n\n const match = filename.match(regex)\n\n let migrationNumber\n\n if (match && match.length > 1) {\n migrationNumber = match[1]\n }\n\n if (migrationNumber) {\n const filesInDir = await fs.promises.readdir(localDirPath)\n for (const file of filesInDir) {\n if (file === filename) {\n continue\n }\n const innerMatch = file.match(regex)\n let existingFileMigrationNumber\n if (innerMatch && innerMatch.length > 1) {\n existingFileMigrationNumber = innerMatch[1]\n }\n if (\n migrationNumber &&\n existingFileMigrationNumber &&\n existingFileMigrationNumber === migrationNumber\n ) {\n await fs.promises.unlink(path.join(localDirPath, file))\n }\n }\n }\n\n // if (filename === '_journal.json') {\n // const exists = await fs.promises.exists(localFilePath)\n // if (exists) {\n // await fs.promises.rm(localFilePath)\n // }\n // await fs.promises.writeFile(localFilePath, fileData)\n // }\n //\n // if (filename !== '_journal.json') {\n // await fs.promises.writeFile(localFilePath, fileData)\n // }\n await fs.promises.writeFile(localFilePath, fileData)\n } catch (error) {\n if (JSON.stringify(error).includes('File exists')) {\n const fileData = await fs.promises.readFile(localFilePath, 'utf-8')\n }\n logger(`[Error] Failed to download file from ${url}:`, error)\n }\n\n busy = false\n}\n\nexport const fetchDirectory = async (url: string) => {\n const response = await fetch(url)\n return response.json()\n}\n\nexport const fetchFilesRecursively = async (\n url: string,\n localPath: string,\n fileList: string[],\n) => {\n for (const file of fileList) {\n try {\n const fileUrl = `${url}/${file}`\n const fileLocalPath = path.join(localPath, file)\n\n // logger(`[fetchFilesRecursively] fileUrl: ${fileUrl}`)\n // logger(`[fetchFilesRecursively] fileLocalPath: ${fileLocalPath}`)\n\n await downloadFile(fileUrl, fileLocalPath)\n } catch (error) {\n console.error(`Failed to fetch files from ${url}:`, error)\n }\n }\n}\n\nexport const confirmFilesExist = async (filePaths: string[]) => {\n let everythingDownloaded = false\n\n for (const filePath of filePaths) {\n const fullPath = path.join(BROWSER_FS_TOP_DIR, filePath)\n everythingDownloaded = await fs.promises.exists(fullPath)\n }\n\n if (!everythingDownloaded) {\n setTimeout(async () => {\n await confirmFilesExist(filePaths)\n }, 500)\n }\n}\n\nconst filesToExclude = ['.DS_Store']\n\nexport const syncDbFiles = async ({ filePaths, files }: Endpoints) => {\n let fileList = await fetchDirectory(filePaths)\n fileList = fileList.filter((file: string) => !filesToExclude.includes(file))\n await fetchFilesRecursively(files, BROWSER_FS_TOP_DIR, fileList)\n await confirmFilesExist(fileList)\n logger('[syncDbFiles] Files synced!')\n}\n","import { graphql } from '@/graphql/gql'\n\nexport const GET_FILES_METADATA = graphql(/* GraphQL */ `\n query GetFilesMetadata($where: AttestationWhereInput!) {\n filesMetadata: attestations(\n where: $where\n orderBy: [{ timeCreated: desc }]\n ) {\n ...attestationFields\n }\n }\n`)\n\nexport const GET_ARWEAVE_TRANSACTIONS = graphql(/* GraphQL */ `\n query GetArweaveTransactions(\n $owners: [String!]\n $first: Int\n $after: String\n ) {\n transactions(owners: $owners, first: $first, after: $after) {\n edges {\n cursor\n node {\n id\n anchor\n signature\n block {\n id\n height\n }\n data {\n size\n type\n }\n tags {\n name\n value\n }\n }\n }\n pageInfo {\n hasNextPage\n }\n }\n }\n`)\n","import { BaseDb } from '@/db/Db/BaseDb'\nimport { and, eq, SQL } from 'drizzle-orm'\nimport { metadata, MetadataType } from '@/seedSchema'\n\ntype GetMetadataProps =\n | {\n storageTransactionId?: string\n }\n | undefined\n\ntype GetMetadata = (\n props: GetMetadataProps,\n) => Promise<MetadataType | undefined>\n\nexport const getMetadata: GetMetadata = async (props) => {\n const appDb = BaseDb.getAppDb()\n\n let storageTransactionId: string | undefined\n if (props) {\n storageTransactionId = props.storageTransactionId\n }\n\n const whereClauses: SQL[] = []\n\n if (storageTransactionId) {\n whereClauses.push(eq(metadata.propertyName, 'storageTransactionId'))\n whereClauses.push(eq(metadata.propertyValue, storageTransactionId))\n }\n\n const metadataRows = await appDb\n .select()\n .from(metadata)\n .where(and(...whereClauses))\n\n if (!metadataRows || metadataRows.length === 0) {\n return\n }\n\n return metadataRows[0]\n}\n","import { metadata, MetadataType } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { eq } from 'drizzle-orm'\n\nexport const saveMetadata = async (\n metadataRecord: Partial<MetadataType>,\n metadataValues: Partial<MetadataType>,\n) => {\n const appDb = BaseDb.getAppDb()\n\n await appDb\n .update(metadata)\n .set({\n ...metadataValues,\n updatedAt: Date.now(),\n })\n .where(eq(metadata.localId, metadataRecord.localId))\n}\n","import { graphql } from '@/graphql/gql'\nimport { TypedDocumentNode } from '@graphql-typed-document-node/core'\nimport { Tag } from '@/graphql/gql/graphql'\n\nexport const GET_TRANSACTION_TAGS = graphql(/* GraphQL */ `\n query GetTransactionTags($transactionId: ID!) {\n tags: transaction(id: $transactionId) {\n id\n tags {\n name\n value\n }\n }\n }\n`) as TypedDocumentNode<{ tags: Tag[] }>\n","import { BaseDb } from '@/db/Db/BaseDb'\nimport { appState } from '@/seedSchema'\n\nexport const saveAppState = async (key: string, value: string) => {\n const appDb = BaseDb.getAppDb()\n\n await appDb\n .insert(appState)\n .values({\n key,\n value,\n })\n .onConflictDoUpdate({\n target: appState.key,\n set: {\n value,\n },\n })\n}\n","import { ARWEAVE_HOST } from '@/services/internal/constants'\nimport { BaseArweaveClient } from './BaseArweaveClient'\nimport Arweave from 'arweave'\nimport { isBrowser } from '../environment'\n\nlet ArweaveClient: typeof BaseArweaveClient | undefined\n\nexport const initArweaveClient = async () => {\n if (isBrowser()) {\n ArweaveClient = (await import('../../browser/helpers/ArweaveClient')).ArweaveClient\n }\n\n if (!isBrowser()) {\n ArweaveClient = (await import('../../node/helpers/ArweaveClient')).ArweaveClient\n }\n}\n\n\nlet domain = 'arweave.net'\n\nexport const getArweave = (): Arweave | undefined => {\n if (\n typeof window === 'undefined' ||\n !Arweave ||\n (!Object.keys(Arweave).includes('init') &&\n !Object.keys(Arweave).includes('default'))\n ) {\n return\n }\n\n if (process.env.NODE_ENV === 'production') {\n if (Object.keys(Arweave).includes('default')) {\n return Arweave.default.init({\n host: ARWEAVE_HOST,\n protocol: 'https',\n })\n }\n\n return Arweave.init({\n host: ARWEAVE_HOST,\n protocol: 'https',\n })\n }\n\n // return Arweave.init({\n // host : 'localhost',\n // port : 1984,\n // protocol : 'http',\n // },)\n\n if (Object.keys(Arweave).includes('default')) {\n return Arweave.default.init({\n host: domain,\n protocol: 'https',\n })\n }\n\n return Arweave.init({\n host: domain,\n protocol: 'https',\n })\n}\n\nexport const setArweaveDomain = (newDomain: string): void => {\n domain = newDomain\n}\n\nexport { ArweaveClient }","import { syncDbFiles } from '@/services/internal/helpers'\nimport { eventEmitter } from '@/eventBus'\nimport { fs } from '@zenfs/core'\nimport { ARWEAVE_HOST } from '@/services/internal/constants'\nimport { appState } from '@/seedSchema'\nimport { eq } from 'drizzle-orm'\nimport { getAddressesFromDb } from '@/helpers/db'\nimport {\n getDataTypeFromString,\n getMimeType,\n identifyString,\n isBinary,\n} from '@/helpers'\nimport { GET_FILES_METADATA } from '@/schema/file/queries'\nimport debug from 'debug'\nimport { getGlobalService } from '@/services'\nimport { waitFor } from 'xstate'\nimport { getMetadata } from '@/db/read/getMetadata'\nimport { saveMetadata } from '@/db/write/saveMetadata'\nimport { GET_TRANSACTION_TAGS } from '@/helpers/ArweaveClient/queries'\nimport { saveAppState } from '@/db/write/saveAppState'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { BaseEasClient, BaseQueryClient, BaseArweaveClient } from '@/helpers'\nimport { getArweave } from '@/helpers/ArweaveClient'\n\n\nconst logger = debug('app:files:download')\n\nexport const downloadAllFilesRequestHandler = async ({\n endpoints,\n eventId,\n}) => {\n await syncDbFiles(endpoints)\n\n eventEmitter.emit('fs.downloadAll.success', { eventId })\n eventEmitter.emit('fs.downloadAllBinary.request', { endpoints })\n}\n\nexport const downloadAllFilesBinaryRequestHandler = async () => {\n let addresses: string[] | undefined\n\n if (BaseDb.isAppDbReady()) {\n addresses = await getAddressesFromDb()\n }\n\n if (!BaseDb.isAppDbReady()) {\n const globalService = getGlobalService()\n const internalService = globalService.getSnapshot().context.internalService\n if (internalService) {\n await waitFor(internalService, (snapshot) => snapshot.value === 'ready')\n addresses = await getAddressesFromDb()\n }\n }\n\n if (!addresses || addresses.length === 0) {\n return\n }\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { filesMetadata } = await queryClient.fetchQuery({\n queryKey: ['getFilesMetadata', ...addresses],\n queryFn: async () =>\n easClient.request(GET_FILES_METADATA, {\n where: {\n attester: {\n in: addresses,\n },\n schema: {\n is: {\n id: {\n equals:\n '0x55fdefb36fcbbaebeb7d6b41dc3a1a9666e4e42154267c889de064faa7ede517',\n },\n },\n },\n },\n }),\n })\n\n if (!(await fs.promises.exists('/files'))) {\n await fs.promises.mkdir('/files', { recursive: true })\n }\n\n if (!(await fs.promises.exists('/files/html'))) {\n await fs.promises.mkdir('/files/html', { recursive: true })\n }\n\n if (!(await fs.promises.exists('/files/json'))) {\n await fs.promises.mkdir('/files/json', { recursive: true })\n }\n\n if (!(await fs.promises.exists('/files/images'))) {\n await fs.promises.mkdir('/files/images', { recursive: true })\n }\n\n const appDb = BaseDb.getAppDb()\n\n if (!appDb) {\n console.warn('[fetchAll/actors] [fetchAllBinaryData] seedDb not available')\n return []\n }\n\n for (const fileMetadata of filesMetadata) {\n const json = JSON.parse(fileMetadata.decodedDataJson)\n const transactionId = json[0].value.value\n\n const excludedTransactionsQuery = await appDb\n .select()\n .from(appState)\n .where(eq(appState.key, 'excludedTransactions'))\n\n let excludedTransactions = new Set<string>()\n\n if (excludedTransactionsQuery && excludedTransactionsQuery.length === 1) {\n const valueString = excludedTransactionsQuery[0].value\n if (valueString) {\n const excludedTransactionsArray = JSON.parse(valueString)\n excludedTransactions = new Set(excludedTransactionsArray)\n }\n }\n\n if (excludedTransactions.has(transactionId)) {\n continue\n }\n\n const arweave = getArweave()\n\n if (!arweave) {\n console.warn(\n '[fetchAll/actors] [fetchAllBinaryData] arweave not available',\n )\n return []\n }\n\n try {\n const res = await fetch(\n `https://${ARWEAVE_HOST}/tx/${transactionId}/status`,\n )\n\n if (res.status !== 200) {\n logger(\n `[fetchAll/actors] [fetchAllBinaryData] error fetching transaction data for ${transactionId}`,\n )\n\n excludedTransactions.add(transactionId)\n\n await saveAppState(\n 'excludedTransactions',\n JSON.stringify(Array.from(excludedTransactions)),\n )\n\n continue\n }\n\n const arweaveClient = BaseArweaveClient.getArweaveClient()\n\n const { tags: tagsResult } = await queryClient.fetchQuery({\n queryKey: ['getTransactionTags', transactionId],\n queryFn: async () =>\n arweaveClient.request(GET_TRANSACTION_TAGS, {\n transactionId,\n }),\n })\n\n const tags = tagsResult.tags || []\n\n if (tagsResult.tags && tagsResult.tags.length > 0) {\n for (const { name, value } of tags) {\n if (name === 'Content-SHA-256') {\n const metadataRecord = await getMetadata({\n storageTransactionId: transactionId,\n })\n\n if (metadataRecord) {\n await saveMetadata(metadataRecord, {\n contentHash: value,\n })\n }\n }\n }\n }\n\n const data = await queryClient.fetchQuery({\n queryKey: ['fetchTransaction', transactionId],\n queryFn: async () => {\n const response = await fetch(\n `https://${ARWEAVE_HOST}/raw/${transactionId}`,\n )\n\n const arrayBuffer = await response.arrayBuffer()\n if (isBinary(arrayBuffer)) {\n return arrayBuffer\n }\n\n const decoder = new TextDecoder('utf-8')\n const text = decoder.decode(arrayBuffer)\n\n return text\n },\n networkMode: 'offlineFirst',\n })\n\n let dataString\n let arrayBuffer\n\n if (data instanceof ArrayBuffer) {\n arrayBuffer = data\n }\n\n if (typeof data === 'string') {\n dataString = data\n }\n\n // const dataString = await arweave.transactions.getData(transactionId, {\n // decode: true,\n // string: true,\n // })\n\n if (!dataString && !arrayBuffer) {\n logger(\n `[fetchAll/actors] [fetchAllBinaryData] transaction ${transactionId} data not found`,\n )\n }\n\n if (dataString && dataString.startsWith('===FILE_SEPARATOR===')) {\n const dataStringParts = dataString\n .split('===FILE_SEPARATOR===')\n .slice(1)\n\n if (dataStringParts.length % 2 !== 0) {\n throw new Error('Input array must have an even number of elements.')\n }\n\n for (let i = 0; i < dataStringParts.length; i += 2) {\n const contentType = dataStringParts[i]\n const content = dataStringParts[i + 1]\n if (contentType === 'html') {\n const fileName = `${transactionId}.html`\n fs.writeFileSync(`/files/html/${fileName}`, content)\n }\n if (contentType === 'json') {\n const fileName = `${transactionId}.json`\n fs.writeFileSync(`/files/json/${fileName}`, content)\n }\n }\n\n continue\n }\n\n if (!dataString && arrayBuffer) {\n await fs.writeFileSync(\n `/files/images/${transactionId}`,\n new Uint8Array(arrayBuffer),\n )\n continue\n }\n\n if (!dataString) {\n continue\n }\n\n let contentType = identifyString(dataString)\n if (\n contentType !== 'json' &&\n contentType !== 'base64' &&\n contentType !== 'html'\n ) {\n const possibleImageType = getDataTypeFromString(dataString)\n if (!possibleImageType) {\n logger(\n `[fetchAll/actors] [fetchAllBinaryData] transaction ${transactionId} data not in expected format: ${possibleImageType}`,\n )\n continue\n }\n\n contentType = possibleImageType\n }\n\n if (contentType === 'url') {\n const url = dataString as string\n const response = await fetch(url)\n if (!response.ok) {\n throw new Error(`Failed to fetch image: ${response.statusText}`)\n }\n\n // Get the image as a Blob\n const blob = await response.blob()\n const buffer = await blob.arrayBuffer()\n const bufferUint8Array = new Uint8Array(buffer)\n\n // Extract the file extension from the URL\n const extensionMatch = url.match(/\\.(jpg|jpeg|png|gif|bmp|webp|svg)$/i)\n if (!extensionMatch) {\n throw new Error(\n 'Unable to determine the file extension from the URL.',\n )\n }\n const fileExtension = extensionMatch[0] // e.g., \".jpg\"\n\n // Set the file name (you can customize this)\n // const fileNameFromUrl = `${transactionId}${fileExtension}`\n\n await fs.promises.writeFile(\n `/files/images/${transactionId}`,\n bufferUint8Array,\n {\n encoding: 'binary',\n },\n )\n\n continue\n }\n\n const mimeType = getMimeType(dataString as string)\n let fileExtension = mimeType\n\n if (fileExtension && fileExtension?.startsWith('image')) {\n fileExtension = fileExtension.replace('image/', '')\n }\n\n let fileName = transactionId\n\n if (contentType === 'base64') {\n if (fileExtension) {\n fileName += `.${fileExtension}`\n }\n\n // Remove the Base64 header if it exists (e.g., \"data:image/png;base64,\")\n const base64Data = dataString.split(',').pop() || ''\n\n // Decode the Base64 string to binary\n const binaryString = atob(base64Data)\n const length = binaryString.length\n const binaryData = new Uint8Array(length)\n\n for (let i = 0; i < length; i++) {\n binaryData[i] = binaryString.charCodeAt(i)\n }\n\n await fs.promises.writeFile(`/files/images/${fileName}`, binaryData, {\n encoding: 'binary',\n })\n\n // if (dataUint8Array && dataUint8Array instanceof Uint8Array) {\n // await fs.promises.writeFile(\n // `/files/images/${fileName}`,\n // dataUint8Array,\n // )\n // }\n }\n\n if (contentType === 'html') {\n fileName += '.html'\n await fs.promises.writeFile(`/files/html/${fileName}`, dataString)\n }\n\n if (contentType === 'json') {\n fileName += '.json'\n await fs.promises.writeFile(`/files/json/${fileName}`, dataString)\n }\n } catch (error) {\n logger(error)\n }\n }\n}\n","import { eventEmitter } from '@/eventBus'\nimport { configureSingle } from '@zenfs/core'\nimport { WebAccess } from '@zenfs/dom'\nimport {\n downloadAllFilesBinaryRequestHandler,\n downloadAllFilesRequestHandler,\n} from './download'\nimport { spawn, Worker as ThreadsWorker } from 'threads'\nimport ContentHashWorker from 'web-worker:../../workers/content-hash.js'\n\nconst worker = new ContentHashWorker()\nconsole.log('[tryContentHash] worker', worker)\n\nlet isInitialized = false\n\nconst resizeTest = async () => {\n const tools = await spawn(new ThreadsWorker('./workers/image-resize.js', {_baseUrl: import.meta.url, type: 'module'}), {\n timeout : 13000,\n })\n console.log('tools', tools,)\n const result = await tools.imageResize({\n filePath: '/files/images/ct8cKLWzzjO4mduHBbxryAobJhHK2sasyB8nfS9_2aQ.png',\n width: 300,\n height: 300,\n })\n console.log('result', result)\n}\n\nconst tryContentHash = async () => {\n\n\n worker.onmessage = (e) => {\n console.log('[tryContentHash] message', e)\n }\n\n worker.postMessage({\n trackingId: '123',\n base64: 'Hello, world!',\n })\n}\n\nconst fsInitHandler = async (_) => {\n if (isInitialized) {\n eventEmitter.emit('fs.init.response', { success: true })\n return\n }\n\n try {\n const handle = await navigator.storage.getDirectory()\n // await configure({ backend: WebAccess, handle })\n await configureSingle({\n backend: WebAccess,\n handle,\n })\n\n isInitialized = true\n\n console.log('[fsInitHandler] just initialized fs')\n await resizeTest()\n await tryContentHash()\n\n eventEmitter.emit('fs.init.response', { success: true })\n } catch (e) {\n if (!isInitialized) {\n console.error('[fs.init] error initializing fs', e)\n eventEmitter.emit('fs.init.response', {\n success: false,\n error: e,\n })\n }\n // TODO: We can ignore this for now but should figure out if this is being called excessively\n }\n}\n\nlet areReady = false\n\nexport const setupFsListeners = () => {\n eventEmitter.addListener(\n 'fs.downloadAll.request',\n downloadAllFilesRequestHandler,\n )\n eventEmitter.addListener(\n 'fs.downloadAllBinary.request',\n downloadAllFilesBinaryRequestHandler,\n )\n eventEmitter.addListener('fs.init', fsInitHandler)\n areReady = true\n}\n\nexport const areFsListenersReady = () => {\n return areReady\n}\n\nexport const isFsInitialized = () => {\n return isInitialized\n}\n","import { EventObject, fromCallback } from 'xstate'\nimport { areFsListenersReady, isFsInitialized } from '@/events/files'\nimport { waitForEvent } from '@/events'\nimport {\n BROWSER_FS_TOP_DIR,\n DB_WAITING_FOR_FILES_RECEIVED,\n INTERNAL_CONFIGURING_FS_SUCCESS,\n} from '@/services/internal/constants'\nimport { fs } from '@zenfs/core'\nimport debug from 'debug'\nimport { FromCallbackInput, InternalMachineContext } from '@/types'\n\nconst logger = debug('app:internal:actors:configureFs')\n\nexport const configureFs = fromCallback<\n EventObject,\n FromCallbackInput<InternalMachineContext>\n>(({ sendBack, input: { context } }) => {\n const { endpoints, appDbService, filesDir, } = context\n\n logger('[internal/actors] [configureFs] Configuring FS')\n\n const _configureFs = async (): Promise<void> => {\n logger('[internal/actors] [configureFs] calling _configureFs')\n\n logger(\n '[internal/actors] [configureFs] areFsListenersReady:',\n areFsListenersReady(),\n )\n logger(\n '[internal/actors] [configureFs] isFsInitialized:',\n isFsInitialized(),\n )\n\n await waitForEvent({\n req: {\n eventLabel: 'fs.downloadAll.request',\n data: { endpoints },\n },\n res: {\n eventLabel: 'fs.downloadAll.success',\n },\n })\n\n const journalPath = `${filesDir || BROWSER_FS_TOP_DIR}/db/meta/_journal.json`\n\n const journalExists = await fs.promises.exists(journalPath)\n\n if (journalExists) {\n appDbService.send({ type: DB_WAITING_FOR_FILES_RECEIVED })\n }\n\n // return new Promise<void>((resolve) => {\n // const interval = setInterval(() => {\n // journalExistsSync = fs.existsSync(journalPath)\n // logger(\n // '[internal/actors] [configureFs] journalExistsSync:',\n // journalExistsSync,\n // )\n // if (journalExistsSync) {\n // service.send({ type: DB_WAITING_FOR_FILES_RECEIVED })\n // clearInterval(interval)\n // resolve()\n // }\n // }, 200)\n // })\n\n logger('[internal/actors] [configureFs] fs configured!')\n }\n\n // Some of our dependencies use fs sync functions, which don't work with\n // OPFS. ZenFS creates an async cache of all files so that the sync functions\n // work, but we have to wait for it to be built. Otherwise things like\n // drizzleMigrate will fail since they can't see the migration files yet.\n _configureFs().then(() => {\n sendBack({ type: INTERNAL_CONFIGURING_FS_SUCCESS })\n return\n })\n\n return () => { }\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { INTERNAL_SAVING_CONFIG_SUCCESS } from '@/services/internal/constants'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport debug from 'debug'\nimport { FromCallbackInput, InternalMachineContext } from '@/types'\nimport { appState } from '@/seedSchema'\n\nconst logger = debug('app:services:internal:actors:saveConfig')\n\nexport const saveConfig = fromCallback<\n EventObject,\n FromCallbackInput<InternalMachineContext>\n>(({ sendBack, input: { context } }) => {\n if (typeof window === 'undefined') {\n console.error('seedInitBrowser called from non-browser context')\n sendBack({\n type: 'error',\n error: 'Browser method called from non-browser context',\n })\n }\n\n const { endpoints, addresses, arweaveDomain } = context\n\n if (!endpoints) {\n throw new Error('saveConfig called with invalid endpoints')\n }\n\n const _saveConfig = async (): Promise<void> => {\n // logger('[sdk] [internal/actors] starting _saveConfig')\n const appDb = BaseDb.getAppDb()\n if (!appDb) {\n throw new Error('App DB not found')\n }\n const endpointsValueString = JSON.stringify(endpoints)\n const addressesValueString = JSON.stringify(addresses)\n // TODO: Figure out how to define on conflict with multiple rows added\n try {\n // logger('[sdk] [internal/actors] Saving endpoints to db')\n await appDb\n .insert(appState)\n .values({\n key: 'endpoints',\n value: endpointsValueString,\n })\n .onConflictDoUpdate({\n target: appState.key,\n set: {\n value: endpointsValueString,\n },\n })\n // logger('[sdk] [internal/actors] Saving addresses to db')\n await appDb\n .insert(appState)\n .values({\n key: 'addresses',\n value: addressesValueString,\n })\n .onConflictDoUpdate({\n target: appState.key,\n set: {\n value: addressesValueString,\n },\n })\n await appDb\n .insert(appState)\n .values({\n key: 'arweaveDomain',\n value: arweaveDomain || 'arweave.net',\n })\n .onConflictDoUpdate({\n target: appState.key,\n set: {\n value: arweaveDomain || 'arweave.net',\n },\n })\n logger('[sdk] [internal/actors] Should be done saving')\n } catch (error) {\n console.error('Error saving config:', error)\n }\n }\n\n _saveConfig().then(() => {\n logger('[sdk] [internal/actors] Successfully saved config')\n return sendBack({ type: INTERNAL_SAVING_CONFIG_SUCCESS })\n })\n\n return () => { }\n})\n","import { EventObject, fromCallback, Subscription } from 'xstate'\nimport {\n DB_NAME_APP,\n DB_ON_SNAPSHOT,\n INTERNAL_LOADING_APP_DB_SUCCESS,\n} from '@/services/internal/constants'\nimport debug from 'debug'\nimport { FromCallbackInput, InternalMachineContext } from '@/types'\n\nconst logger = debug('app:services:internal:actors:loadAppDb')\n\nexport const loadAppDb = fromCallback<\n EventObject,\n FromCallbackInput<InternalMachineContext>\n>(({ sendBack, input: { context } }) => {\n const { appDbService } = context\n\n let subscription: Subscription | undefined\n\n const _loadAppDb = async (): Promise<void> => {\n return new Promise((resolve) => {\n if (appDbService.getSnapshot().value === 'ready') {\n return resolve()\n }\n subscription = appDbService.subscribe({\n next: (snapshot) => {\n if (snapshot.value === 'ready') {\n return resolve()\n }\n\n sendBack({ type: DB_ON_SNAPSHOT, dbName: DB_NAME_APP, snapshot })\n },\n })\n })\n }\n\n _loadAppDb().then(() => {\n sendBack({ type: INTERNAL_LOADING_APP_DB_SUCCESS })\n logger('[sdk] [internal/actors] Successfully loaded app DB')\n })\n\n return () => {\n if (subscription) {\n subscription.unsubscribe()\n }\n }\n})\n","import { assign, setup } from 'xstate'\nimport { createBrowserInspector } from '@statelyai/inspect'\nimport {\n DB_NAME_APP,\n INTERNAL_CONFIGURING_FS_SUCCESS,\n INTERNAL_LOADING_APP_DB_SUCCESS,\n INTERNAL_SAVING_CONFIG_SUCCESS,\n INTERNAL_VALIDATING_INPUT_SUCCESS,\n InternalState,\n MachineIds,\n} from './constants'\nimport { dbMachine } from '@/services/db/dbMachine'\nimport debug from 'debug'\nimport { validateInput } from '@/services/internal/actors/validateInput'\nimport { prepareDb } from '@/services/internal/actors/prepareDb'\nimport { configureFs } from '@/services/internal/actors/configureFs'\nimport { saveConfig } from '@/services/internal/actors/saveConfig'\nimport { loadAppDb } from '@/services/internal/actors/loadAppDb'\nimport { InternalMachineContext } from '@/types'\n\nconst logger = debug('app:services:internal:machine')\n\nconst { inspect } = createBrowserInspector({\n autoStart: false,\n})\n\nconst {\n IDLE,\n VALIDATING_INPUT,\n SAVING_CONFIG,\n CONFIGURING_FS,\n LOADING_APP_DB,\n} = InternalState\n\n// Create the state machine\nexport const internalMachine = setup({\n types: {\n context: {} as Partial<InternalMachineContext>,\n input: {} as Partial<InternalMachineContext> | undefined,\n },\n actors: {\n prepareDb,\n validateInput,\n configureFs,\n loadAppDb,\n saveConfig,\n },\n}).createMachine({\n id: MachineIds.INTERNAL,\n initial: IDLE,\n context: ({ input }) => {\n return {\n ...input,\n error: undefined,\n hasFiles: false,\n }\n },\n states: {\n [IDLE]: {\n on: {\n reValidate: VALIDATING_INPUT,\n init: {\n target: VALIDATING_INPUT,\n actions: [\n assign({\n appDbService: ({ spawn }) =>\n spawn(dbMachine, {\n input: {\n dbName: DB_NAME_APP,\n },\n }),\n }),\n ],\n },\n },\n meta: {\n displayText: 'Waiting for something to happen ...',\n percentComplete: 0,\n },\n },\n [VALIDATING_INPUT]: {\n on: {\n [INTERNAL_VALIDATING_INPUT_SUCCESS]: {\n target: 'preparingDb',\n actions: assign({\n endpoints: ({ event }) => event.endpoints,\n addresses: ({ event }) => event.addresses,\n filesDir: ({ event }) => event.filesDir,\n arweaveDomain: ({ event }) => event.arweaveDomain,\n }),\n },\n },\n invoke: {\n src: 'validateInput',\n input: ({ context, event }) => ({ context, event }),\n },\n meta: {\n displayText: 'Validating input',\n percentComplete: 20,\n },\n tags: ['loading'],\n },\n preparingDb: {\n on: {\n prepareDbSuccess: {\n target: CONFIGURING_FS,\n },\n },\n invoke: {\n src: 'prepareDb',\n input: ({ context, event }) => ({ context, event }),\n },\n },\n [CONFIGURING_FS]: {\n on: {\n [INTERNAL_CONFIGURING_FS_SUCCESS]: {\n target: LOADING_APP_DB,\n actions: assign({ hasFiles: true }),\n },\n },\n invoke: {\n src: 'configureFs',\n input: ({ context, event }) => ({ context, event }),\n },\n meta: {\n displayText: 'Downloading app files',\n percentComplete: 30,\n },\n tags: ['loading'],\n },\n [LOADING_APP_DB]: {\n on: {\n [INTERNAL_LOADING_APP_DB_SUCCESS]: {\n target: SAVING_CONFIG,\n actions: () => {\n logger('[sdk] [internal/index] App DB loaded!')\n },\n },\n },\n invoke: {\n src: 'loadAppDb',\n input: ({ context, event }) => ({ context, event }),\n },\n },\n // Save developer's config to DB\n [SAVING_CONFIG]: {\n on: {\n [INTERNAL_SAVING_CONFIG_SUCCESS]: 'ready',\n },\n invoke: {\n src: 'saveConfig',\n input: ({ context, event }) => ({ context, event }),\n },\n meta: {\n displayText: 'Saving configuration',\n percentComplete: 80,\n },\n tags: ['loading'],\n },\n ready: {\n entry: () => {\n logger('[sdk] [internal/index] Ready!')\n },\n meta: {\n displayText: \"Crossing the t's ...\",\n percentComplete: 90,\n },\n },\n error: {\n on: {\n retry: {\n target: CONFIGURING_FS,\n actions: assign({ error: undefined }),\n },\n },\n entry: () => {\n logger('[sdk] [internal/index] Error!')\n },\n meta: {\n displayText: 'Whoops! Something went wrong.',\n percentComplete: null,\n },\n tags: ['error'],\n },\n },\n})\n\n// const internalService = createActor(internalMachine, {\n// input: {},\n// inspect: (inspEvent) => {\n// if (inspEvent.type === '@xstate.snapshot') {\n// if (\n// inspEvent.event &&\n// inspEvent.event.snapshot &&\n// inspEvent.event.snapshot.value\n// ) {\n// logger(\n// `[internalService] ${inspEvent.event.snapshot.value}`,\n// inspEvent,\n// )\n// return\n// }\n//\n// if (inspEvent.snapshot && inspEvent.snapshot.value) {\n// logger(`[internalService] ${inspEvent.snapshot.value}`, inspEvent)\n// return\n// }\n//\n// // logger(`[internalService] Uncaught event`, inspEvent)\n// }\n// },\n// })\n\n// internalService.subscribe((snapshot) => {\n// globalService.send({ type: INTERNAL_SERVICE_SNAPSHOT, snapshot })\n// })\n//\n// internalService.on(CHILD_SNAPSHOT, (emitted) => {\n// globalService.send({ ...emitted })\n// })\n\n// internalService.start()\n","import { EventObject, fromCallback } from 'xstate'\nimport { GET_SCHEMAS } from '@/Item/queries'\nimport pluralize from 'pluralize'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\nimport { toSnakeCase } from '@/helpers'\nimport {\n models as modelsTable,\n modelUids,\n properties,\n propertyUids,\n} from '@/seedSchema'\nimport { eq } from 'drizzle-orm'\nimport { SchemaWhereInput } from '@/graphql/gql/graphql'\nimport { INTERNAL_DATA_TYPES } from '@/helpers/constants'\nimport { getAddressesFromDb } from '@/helpers/db'\nimport { eventEmitter } from '@/eventBus'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\nimport { AllItemsMachineContext, FromCallbackInput } from '@/types'\n\n\ntype Times = {\n initialize?: {\n start: number | null\n end: number | null\n }\n fetchDbData?: {\n start: number | null\n end: number | null\n }\n fetchSeeds?: {\n start: number | null\n end: number | null\n }\n fetchVersions?: {\n start: number | null\n end: number | null\n }\n fetchRelatedItems?: {\n start: number | null\n end: number | null\n }\n processItems?: {\n start: number | null\n end: number | null\n }\n}\n\ntype InternalDataType = keyof typeof INTERNAL_DATA_TYPES;\n\nexport const initialize = fromCallback<\n EventObject,\n FromCallbackInput<AllItemsMachineContext>\n>(({ sendBack, input: { context } }) => {\n const { modelName, modelAddedToDb, ModelClass, times } = context\n\n const newTimes: Times = {\n initialize: {\n start: Date.now(),\n end: null,\n },\n }\n\n let modelNameLowercase: string | undefined\n let modelNamePlural: string | undefined\n let queryVariables: Record<string, unknown> | undefined\n let appDb\n\n const _initialize = async () => {\n appDb = BaseDb.getAppDb()\n\n // const rows = await getItemsDataFromDb(modelName)\n //\n // if (rows && rows.length > 0) {\n // for (const itemData of rows) {\n // const {\n // versionLocalId,\n // versionUid,\n // createdAt,\n // seedLocalId,\n // seedUid,\n // attestationCreatedAt,\n // } = itemData\n //\n // eventEmitter.emit('item.create.request', {\n // itemData: {\n // versionLocalId,\n // versionUid,\n // createdAt,\n // seedLocalId,\n // seedUid,\n // attestationCreatedAt,\n // },\n // ModelClass,\n // })\n // }\n // }\n\n modelNameLowercase = modelName.toLowerCase()\n modelNamePlural = pluralize(modelNameLowercase!)\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const modelSchemas = await queryClient.fetchQuery({\n queryKey: [`getSchemas${modelName}`],\n queryFn: async () =>\n easClient.request(GET_SCHEMAS, {\n where: {\n schema: {\n equals: `bytes32 ${toSnakeCase(modelName)}`,\n },\n },\n }),\n })\n\n if (\n !modelSchemas ||\n !modelSchemas.schemas ||\n modelSchemas.schemas.length === 0\n ) {\n throw new Error(`No schema found for ${modelName}`)\n }\n\n const modelSchema = modelSchemas.schemas[0]\n\n if (!modelSchema.id) {\n throw new Error(\n `No schema ID found for schema ${JSON.stringify(modelSchema)}`,\n )\n }\n\n const foundModels = await appDb\n .select({\n id: modelsTable.id,\n name: modelsTable.name,\n uid: modelUids.uid,\n })\n .from(modelsTable)\n .leftJoin(modelUids, eq(modelsTable.id, modelUids.modelId))\n .where(eq(modelsTable.name, modelName))\n .limit(1)\n\n const foundModel = foundModels[0]\n\n if (!foundModel) {\n sendBack({ type: 'modelNotFound', modelName })\n return\n }\n\n await appDb\n .insert(modelUids)\n .values({\n modelId: foundModel.id,\n uid: modelSchema.id,\n })\n .onConflictDoNothing()\n\n const foundPropertiesDb = await appDb\n .select({\n id: properties.id,\n name: properties.name,\n dataType: properties.dataType,\n uid: propertyUids.uid,\n })\n .from(properties)\n .fullJoin(propertyUids, eq(properties.id, propertyUids.propertyId))\n .where(eq(properties.modelId, foundModel.id))\n\n if (foundPropertiesDb && foundPropertiesDb.length > 0) {\n const queryVariables: { where: SchemaWhereInput } = {\n where: {\n OR: [],\n },\n }\n\n for (const foundPropertyDb of foundPropertiesDb) {\n if (foundPropertyDb.name && foundPropertyDb.dataType) {\n const easDatatype = INTERNAL_DATA_TYPES[foundPropertyDb.dataType as InternalDataType].eas\n\n let easPropertyName = toSnakeCase(foundPropertyDb.name)\n\n if (foundPropertyDb.dataType === 'Relation') {\n easPropertyName += '_id'\n }\n\n queryVariables.where.OR!.push({\n schema: {\n equals: `${easDatatype} ${easPropertyName}`,\n },\n })\n }\n }\n\n const foundPropertySchemas = await queryClient.fetchQuery({\n queryKey: [`getPropertySchemas${modelName}`],\n queryFn: async () => easClient.request(GET_SCHEMAS, queryVariables),\n })\n\n const tempExclusions = ['html', 'json']\n\n for (const foundProperty of foundPropertiesDb) {\n if (tempExclusions.includes(foundProperty.name)) {\n continue\n }\n const easDatatype = INTERNAL_DATA_TYPES[foundProperty.dataType as InternalDataType].eas\n\n let easPropertyName = toSnakeCase(foundProperty.name)\n\n if (foundProperty.dataType === 'Relation') {\n easPropertyName += '_id'\n }\n\n const regex = new RegExp(`${easDatatype} ${easPropertyName}`)\n const propertySchema = foundPropertySchemas.schemas.find((s) =>\n regex.test(s.schema),\n )\n\n if (!propertySchema) {\n // TODO: We should create the schema here?\n continue\n }\n await appDb\n .insert(propertyUids)\n .values({\n propertyId: foundProperty.id,\n uid: propertySchema.id,\n })\n .onConflictDoNothing()\n }\n }\n\n const addresses = await getAddressesFromDb()\n\n queryVariables = {\n where: {\n attester: {\n in: addresses,\n },\n schemaId: {\n equals: modelSchema.id,\n },\n decodedDataJson: {\n contains: modelSchema.id,\n },\n },\n }\n }\n\n const initializeHandler = () => {\n _initialize().then(() => {\n sendBack({\n type: 'initializeSuccess',\n modelName,\n modelNameLowercase,\n modelNamePlural,\n queryVariables,\n })\n newTimes!.initialize!.end = Date.now()\n sendBack({ type: 'updateTimes', times: newTimes })\n })\n }\n\n if (modelAddedToDb) {\n initializeHandler()\n }\n\n const dbReadyHandler = (event) => {\n initializeHandler()\n }\n\n eventEmitter.addListener('allDbsLoaded', dbReadyHandler)\n\n return () => {\n eventEmitter.removeListener('allDbsLoaded', dbReadyHandler)\n }\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { AllItemsMachineContext, FromCallbackInput } from '@/types'\n\nexport const fetchDbData = fromCallback<\n EventObject,\n FromCallbackInput<AllItemsMachineContext>\n>(\n ({ sendBack, input: { context } }) => {\n const { modelNamePlural, times } = context\n\n const _fetchDbData = async (): Promise<void> => { }\n\n _fetchDbData().then(() => {\n sendBack({ type: 'fetchDbDataSuccess' })\n })\n\n return () => { }\n },\n)\n","import { EventObject, fromCallback } from 'xstate'\nimport { GET_SEEDS } from '@/Item/queries'\nimport { AllItemsMachineContext, FromCallbackInput } from '@/types'\nimport { Attestation } from '@/graphql/gql/graphql'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\nimport debug from 'debug'\n\n\nconst logger = debug('app:allItemsActors:fetchSeeds')\n\nexport const fetchSeeds = fromCallback<\n EventObject,\n FromCallbackInput<AllItemsMachineContext>\n>(\n ({ sendBack, input: { context } }) => {\n const { queryVariables, modelName } = context\n\n if (!queryVariables) {\n throw new Error('No queryVariables found')\n }\n\n let itemSeeds: Attestation[] | undefined\n\n const _fetchSeeds = async () => {\n const queryKey = [`getSeeds${modelName}`]\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const cachedResults = queryClient.getQueryData(queryKey)\n\n logger(\n `[allItemsActors] [fetchSeeds] cachedResults ${Date.now()}`,\n cachedResults,\n )\n\n const results = await queryClient.fetchQuery({\n queryKey,\n queryFn: async () => easClient.request(GET_SEEDS, queryVariables),\n })\n\n itemSeeds = results.itemSeeds\n }\n\n _fetchSeeds().then(() => {\n sendBack({ type: 'fetchSeedsSuccess', itemSeeds })\n })\n\n return () => { }\n },\n)\n","import { EventObject, fromCallback } from 'xstate'\nimport { GET_VERSIONS } from '@/Item/queries'\nimport { AllItemsMachineContext, FromCallbackInput } from '@/types'\nimport { Attestation } from '@/graphql/gql/graphql'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\n\n\nexport const fetchVersions = fromCallback<\n EventObject,\n FromCallbackInput<AllItemsMachineContext>\n>(\n ({ sendBack, input: { context } }) => {\n const { itemSeeds, modelName } = context\n\n if (!itemSeeds) {\n throw new Error('No queryVariables found')\n }\n\n let itemVersions: Attestation[] | undefined\n\n const _fetchVersions = async () => {\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const seedIds = itemSeeds.map((seed) => seed.id)\n\n const results = await queryClient.fetchQuery({\n queryKey: [`getVersions${modelName}`],\n queryFn: async () =>\n easClient.request(GET_VERSIONS, {\n where: {\n refUID: {\n in: seedIds,\n },\n },\n }),\n })\n\n itemVersions = results.itemVersions\n }\n\n _fetchVersions().then(() => {\n sendBack({ type: 'fetchVersionsSuccess', itemVersions })\n })\n\n return () => { }\n },\n)\n","import { EventObject, fromCallback } from 'xstate'\nimport {\n GET_ALL_PROPERTIES_FOR_ALL_VERSIONS,\n GET_SEED_IDS,\n GET_VERSIONS,\n} from '@/Item/queries'\nimport {\n models as modelsTable,\n modelUids,\n PropertyType,\n} from '@/seedSchema'\nimport { Attestation } from '@/graphql/gql/graphql'\nimport {\n AllItemsMachineContext,\n FromCallbackInput,\n ModelClassType,\n} from '@/types'\nimport { getAddressesFromDb } from '@/helpers/db'\nimport { eq } from 'drizzle-orm'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\n\n\nexport const fetchRelatedItems = fromCallback<\n EventObject,\n FromCallbackInput<AllItemsMachineContext>\n>(({ sendBack, input: { context } }) => {\n const { ModelClass, modelName } = context\n\n const appDb = BaseDb.getAppDb()\n\n const relatedProperties = new Map<string, PropertyType>()\n const relatedVersionsBySeedUid = new Map<string, Attestation[]>()\n const schemaUidsByModelName = new Map<string, string>()\n const mostRecentVersionsBySeedUid = new Map<string, Attestation>()\n const mostRecentPropertiesBySeedUid = new Map<string, Attestation[]>()\n const seedUidsByMostRecentVersionUid = new Map<string, string>()\n\n const _fetchRelatedItems = async () => {\n // Get related properties\n for (const [propertyName, propertyDef] of Object.entries(\n (ModelClass as ModelClassType).schema,\n )) {\n if (propertyDef && propertyDef.ref && propertyDef.refModelId) {\n relatedProperties.set(propertyName, propertyDef)\n }\n }\n\n const addresses = await getAddressesFromDb(appDb)\n\n // Get the models they point to from sdkConfigDb\n for (const [propertyName, propertyDef] of relatedProperties.entries()) {\n const relatedModelQuery = await appDb\n .select({\n id: modelsTable.id,\n name: modelsTable.name,\n uid: modelUids.uid,\n })\n .from(modelsTable)\n .leftJoin(modelUids, eq(modelsTable.id, modelUids.modelId))\n .where(eq(modelsTable.id, propertyDef.refModelId))\n .limit(1)\n\n if (relatedModelQuery && relatedModelQuery.length > 0) {\n const relatedModel = relatedModelQuery[0]\n const relatedModelUid = relatedModel.uid\n // Exclude the current model's schemaUid since we already have its versions\n if (relatedModelUid && relatedModelUid !== ModelClass.schemaUid) {\n schemaUidsByModelName.set(relatedModel.name, relatedModelUid)\n }\n }\n }\n\n const queryKey = [`getRelatedSeedIds${modelName}`]\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { itemSeedIds: relatedSeedIdAttestations } =\n await queryClient.fetchQuery({\n queryKey,\n queryFn: async () =>\n easClient.request(GET_SEED_IDS, {\n where: {\n schema: {\n is: {\n id: {\n in: Array.from(schemaUidsByModelName.values()),\n },\n },\n },\n attester: {\n in: addresses,\n },\n },\n }),\n })\n\n const relatedSeedIds = relatedSeedIdAttestations.map((seed) => seed.id)\n\n const { itemVersions: relatedVersions } = await queryClient.fetchQuery({\n queryKey: [`getRelatedVersions${modelName}`],\n queryFn: async () =>\n easClient.request(GET_VERSIONS, {\n where: {\n refUID: {\n in: relatedSeedIds,\n },\n attester: {\n in: addresses,\n },\n },\n }),\n })\n\n // Index versions by seedUid\n for (const version of relatedVersions) {\n const existingVersionsForSeedUid =\n relatedVersionsBySeedUid.get(version.refUID) || []\n existingVersionsForSeedUid.push(version)\n relatedVersionsBySeedUid.set(version.refUID, existingVersionsForSeedUid)\n }\n\n // Sort the indexed versions by timeCreated and index the most recent\n for (const [\n seedUid,\n versionsForSeed,\n ] of relatedVersionsBySeedUid.entries()) {\n const versionsForSeedSorted = versionsForSeed.sort(\n (a: Attestation, b: Attestation) => {\n return a.timeCreated - b.timeCreated\n },\n )\n relatedVersionsBySeedUid.set(seedUid, versionsForSeedSorted)\n mostRecentVersionsBySeedUid.set(seedUid, versionsForSeedSorted[0])\n seedUidsByMostRecentVersionUid.set(versionsForSeedSorted[0].id, seedUid)\n }\n\n // Extract the ids of the most recent versions\n const mostRecentVersionIds = Array.from(\n mostRecentVersionsBySeedUid.values(),\n ).map((version) => version.id)\n\n const { allProperties } = await queryClient.fetchQuery({\n queryKey: [`getAllProperties${modelName}`],\n queryFn: async () =>\n easClient.request(GET_ALL_PROPERTIES_FOR_ALL_VERSIONS, {\n where: {\n refUID: {\n in: mostRecentVersionIds,\n },\n attester: {\n in: addresses,\n },\n },\n }),\n })\n\n for (const propertyAttestation of allProperties) {\n const seedUidForProperty = seedUidsByMostRecentVersionUid.get(\n propertyAttestation.refUID,\n )\n const existingPropertiesForSeedUid =\n mostRecentPropertiesBySeedUid.get(seedUidForProperty!) || []\n existingPropertiesForSeedUid.push(propertyAttestation)\n mostRecentPropertiesBySeedUid.set(\n seedUidForProperty!,\n existingPropertiesForSeedUid,\n )\n }\n }\n\n _fetchRelatedItems().then(() => {\n sendBack({\n type: 'fetchRelatedItemsSuccess',\n mostRecentPropertiesBySeedUid,\n relatedVersionsBySeedUid,\n relatedProperties,\n schemaUidsByModelName,\n })\n return\n })\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { AllItemsMachineContext, FromCallbackInput } from '@/types'\nimport { Attestation } from '@/graphql/gql/graphql'\nimport { eventEmitter } from '@/eventBus'\n\nexport const processItems = fromCallback<\n EventObject,\n FromCallbackInput<AllItemsMachineContext>\n>(\n ({ sendBack, input: { context } }) => {\n const {\n itemVersions,\n itemSeeds,\n ModelClass,\n schemaUidsByModelName,\n mostRecentPropertiesBySeedUid,\n times,\n // relatedProperties,\n // relatedVersionsBySchemaUid,\n // relatedVersionsBySeedUid,\n } = context\n\n if (!itemVersions || !itemSeeds) {\n throw new Error('No itemVersions or itemSeeds found')\n }\n\n const _processItems = async () => {\n // For each itemSeed, find all the Versions\n for (const itemSeed of itemSeeds.slice(8, 16)) {\n const versionsForSeed = itemVersions.filter(\n (version) => version.refUID === itemSeed.id,\n )\n\n if (versionsForSeed.length === 0) {\n continue\n }\n\n // Find the most recent Version for each Seed\n const recentVersionsMap: { [seedId: string]: Attestation } = {}\n versionsForSeed.forEach((version: Attestation) => {\n const existingVersion = recentVersionsMap[version.refUID]\n if (\n !existingVersion ||\n new Date(version.timeCreated * 1000) >\n new Date(existingVersion.timeCreated * 1000)\n ) {\n recentVersionsMap[version.refUID] = version\n }\n })\n }\n }\n\n _processItems().then(() => {\n sendBack({ type: 'processItemsSuccess' })\n const modelName = ModelClass.originalConstructor.name\n eventEmitter.emit('item.requestAll', {\n modelName,\n })\n eventEmitter.emit('service.save', {\n modelName,\n })\n sendBack({\n type: 'updateTimes',\n times: {\n ...times,\n processItems: {\n start: null,\n end: Date.now(),\n },\n },\n })\n })\n },\n)\n","import { assign, setup } from 'xstate'\nimport { MachineIds } from '@/services/internal/constants'\nimport { AllItemsMachineContext } from '@/types'\nimport { eventEmitter } from '@/eventBus'\nimport { initialize } from '../allItems/actors/initialize'\nimport { fetchDbData } from '../allItems/actors/fetchDbData'\nimport { fetchSeeds } from '../allItems/actors/fetchSeeds'\nimport { fetchVersions } from '../allItems/actors/fetchVersions'\nimport { fetchRelatedItems } from '../allItems/actors/fetchRelatedItems'\nimport { processItems } from '../allItems/actors/processItems'\n\n\nexport const itemMachineAll = setup({\n types: {\n context: {} as Partial<AllItemsMachineContext>,\n input: {} as Partial<AllItemsMachineContext> | undefined,\n },\n actors: {\n initialize,\n fetchDbData,\n fetchSeeds,\n fetchVersions,\n fetchRelatedItems,\n processItems,\n },\n}).createMachine({\n id: MachineIds.ALL_ITEMS,\n initial: 'uninitialized',\n context: ({ input }) => input as AllItemsMachineContext,\n on: {\n updateTimes: {\n actions: assign({\n times: ({ event }) => event.times,\n }),\n },\n },\n states: {\n idle: {\n entry: ({ self, context }) => {\n eventEmitter.emit('service.saveState.request', {\n state: self.getPersistedSnapshot(),\n serviceId: `${MachineIds.ALL_ITEMS}_${context.modelName}`,\n })\n },\n },\n uninitialized: {\n on: {\n modelsFound: {\n target: 'initializing',\n actions: assign({\n modelAddedToDb: true,\n }),\n },\n },\n },\n initializing: {\n on: {\n initializeSuccess: {\n target: 'fetchingSeeds',\n actions: assign({\n modelName: ({ event }) => event.modelName,\n modelNameLowercase: ({ event }) => event.modelNameLowercase,\n modelNamePlural: ({ event }) => event.modelNamePlural,\n queryVariables: ({ event }) => event.queryVariables,\n }),\n },\n modelsNotFound: 'idle',\n },\n invoke: {\n src: 'initialize',\n input: ({ context }) => ({ context }),\n },\n },\n fetchingSeeds: {\n on: {\n fetchSeedsSuccess: {\n target: 'fetchingVersions',\n actions: assign({\n itemSeeds: ({ event }) => event.itemSeeds,\n }),\n },\n },\n invoke: {\n src: 'fetchSeeds',\n input: ({ context }) => ({ context }),\n },\n },\n fetchingVersions: {\n on: {\n fetchVersionsSuccess: {\n target: 'fetchingRelatedItems',\n actions: assign({\n itemVersions: ({ event }) => event.itemVersions,\n }),\n },\n },\n invoke: {\n src: 'fetchVersions',\n input: ({ context }) => ({ context }),\n },\n },\n fetchingRelatedItems: {\n on: {\n fetchRelatedItemsSuccess: {\n target: 'processingItems',\n actions: assign({\n relatedProperties: ({ event }) => event.relatedProperties,\n relatedVersionsBySeedUid: ({ event }) =>\n event.relatedVersionsBySeedUid,\n relatedVersionsBySchemaUid: ({ event }) =>\n event.relatedVersionsBySchemaUid,\n schemaUidsByModelName: ({ event }) => event.schemaUidsByModelName,\n mostRecentPropertiesBySeedUid: ({ event }) =>\n event.mostRecentPropertiesBySeedUid,\n }),\n },\n },\n invoke: {\n src: 'fetchRelatedItems',\n input: ({ context }) => ({ context }),\n },\n },\n processingItems: {\n on: {\n processItemsSuccess: 'idle',\n itemCreated: {\n actions: assign({\n items: ({ context, event }) => {\n if (context && context.items) {\n const foundItem = context.items.find((item) => {\n if (!item.versionLocalId) {\n return false\n }\n return (\n item.versionLocalId === event.item.versionLocalId ||\n item.versionUid === event.item.versionUid\n )\n })\n if (foundItem) {\n return context.items\n }\n return [...context.items, event.item]\n }\n if (context && !context.items) {\n return [event.item]\n }\n },\n }),\n },\n },\n invoke: {\n src: 'processItems',\n input: ({ context, self }) => ({ context, self }),\n },\n },\n },\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput, PublishMachineContext } from '@/types'\n\nexport const validateItemData = fromCallback<\n EventObject,\n FromCallbackInput<PublishMachineContext>\n>(({ sendBack, input: { context } }) => {\n const _validateItemData = async () => {\n if (context && context.localId) {\n return true\n }\n return false\n }\n\n _validateItemData().then((isValid) => {\n if (isValid) {\n sendBack({ type: 'validateItemDataSuccess' })\n }\n })\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput, PublishMachineContext } from '@/types'\n\nexport const createPublishAttempt = fromCallback<\n EventObject,\n FromCallbackInput<PublishMachineContext>\n>(({ sendBack, input: { context } }) => {\n const _createPublishAttempt = async () => {\n // Do some stuff\n return true\n }\n\n _createPublishAttempt().then(() => {\n sendBack({ type: 'createPublishAttemptSuccess' })\n })\n})\n","import { ActionFunction, assign } from 'xstate'\n\ntype UpdateMachineContext = {\n actions: ActionFunction<any, any, any, any, any, any, any, any, any>[] | any\n}\nexport const updateMachineContext: UpdateMachineContext = {\n actions: assign(({ context, event }) => {\n const newContext = Object.assign({}, context)\n\n for (let i = 0; i < Object.keys(event).length; i++) {\n const key = Object.keys(event)[i]\n if (key === 'type') {\n continue\n }\n newContext[key] = event[key]\n }\n return {\n ...newContext,\n }\n }),\n}\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput, PublishMachineContext } from '@/types'\nimport { models as modelsTable, modelUids } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { eq } from 'drizzle-orm'\nimport { getModelSchemas } from '@/db/read/getModelSchemas'\nimport { BaseItem } from '@/Item/BaseItem'\n\nexport const preparePublishRequestData = fromCallback<\n EventObject,\n FromCallbackInput<PublishMachineContext>\n>(({ sendBack, input: { context } }) => {\n const { localId } = context\n\n const _preparePublishRequestData = async () => {\n const item = await BaseItem.find({ seedLocalId: localId })\n\n if (!item) {\n return false\n }\n\n const appDb = BaseDb.getAppDb()\n\n const modelsRows = await appDb\n .select({\n modelName: modelsTable.name,\n schemaUid: modelUids.uid,\n })\n .from(modelsTable)\n .leftJoin(modelUids, eq(modelUids.modelId, modelsTable.id))\n .where(eq(modelsTable.name, 'Version'))\n\n if (!modelsRows || modelsRows.length === 0) {\n sendBack({ type: 'preparePublishRequestDataError' })\n return false\n }\n\n const versionSchemaUid = modelsRows[0].schemaUid\n\n const editedProperties = await item.getEditedProperties()\n\n const { modelSchemas, schemaStringToModelRecord } = await getModelSchemas({\n sdkConfigDb: appDb,\n })\n\n // const dataEncoder = new SchemaEncoder(modelProperty.schemaDefinition,)\n // const encodedData = dataEncoder.encodeData(data,)\n //\n // itemData.listOfAttestations.push({\n // schema : modelProperty.schemaUid,\n // data : [\n // {\n // ...defaultAttestationData,\n // data : encodedData,\n // },\n // ],\n // },)\n\n const publishRequestData = {\n seedIsRevocable: false,\n seedSchemaUid: item.schemaUid,\n seedUid: item.seedUid,\n versionSchemaUid,\n versionUid: item.latestVersionUid,\n listOfAttestations: [],\n }\n\n sendBack({\n type: 'updateContext',\n ...publishRequestData,\n })\n\n return true\n }\n\n _preparePublishRequestData().then((success) => {\n if (success) {\n sendBack({ type: 'preparePublishRequestDataSuccess' })\n }\n })\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput, PublishMachineContext } from '@/types'\nimport { BaseItem } from '@/Item/BaseItem'\nimport debug from 'debug'\nimport { getCorrectId } from '@/helpers'\n\nconst logger = debug('app:services:publish:actors:upload')\n\ntype UploadItem = {\n sourceFilePath: string\n fileSize: number\n filename: string\n seedLocalId?: string\n metadataLocalId?: string\n}\n\nexport const upload = fromCallback<\n EventObject,\n FromCallbackInput<PublishMachineContext>\n>(({ sendBack, input: { context } }) => {\n const { localId } = context\n\n const _upload = async () => {\n const item = await BaseItem.find({ seedLocalId: localId })\n\n if (!item) {\n logger('no item with localId', localId)\n return false\n }\n\n const editedProperties = await item.getEditedProperties()\n\n for (const propertyData of editedProperties) {\n if (propertyData.refSeedType === 'image') {\n // Check sha256 of local file against sha256 of remote files\n // If different, add this file to uploadItems\n }\n }\n\n const uploadItems = []\n\n for (const editedPropertyData of editedProperties) {\n const propertyName = editedPropertyData.propertyName\n const editedProperty = item.properties[propertyName]\n\n if (!editedProperty || !editedProperty.propertyDef) {\n continue\n }\n\n if (\n editedProperty.propertyDef.refValueType &&\n editedProperty.propertyDef.refValueType === 'ImageSrc'\n ) {\n const context = editedProperty.getService().getSnapshot().context\n const imageSeedId = context.propertyValue\n const { localId, uid } = getCorrectId(imageSeedId)\n }\n\n if (\n editedProperty.propertyDef.storageType === 'ItemStorage' &&\n editedProperty.propertyDef.localStorageDir\n ) {\n }\n }\n\n if (uploadItems.length === 0) {\n return true\n }\n\n // const turbo = TurboFactory.unauthenticated()\n\n // turbo.uploadSignedDataItem()\n //\n // const { id, owner, dataCaches, fastFinalityIndexes } = await turbo.uploadFile(() => {\n // fileStreamFactory => () => fs.createReadStream(filePath),\n // fileSizeFactory => () => fileSize,\n // });\n return false\n }\n\n _upload().then((isValid) => {\n if (isValid) {\n sendBack({ type: 'uploadSuccess' })\n }\n })\n})\n","import { setup } from 'xstate'\nimport { validateItemData } from './actors/validateItemData'\nimport { PublishMachineStates } from '@/services/internal/constants'\nimport { PublishMachineContext } from '@/types'\nimport { createPublishAttempt } from './actors/createPublishAttempt'\nimport { updateMachineContext } from '@/helpers/updateMachineContext'\nimport { preparePublishRequestData } from '@/services/publish/actors/preparePublishRequestData'\nimport { upload } from '@/services/publish/actors/upload'\n\nconst {\n VALIDATING_ITEM_DATA,\n CREATING_PUBLISH_ATTEMPT,\n PREPARING_PUBLISH_REQUEST_DATA,\n UPLOADING,\n PUBLISHING,\n IDLE,\n} = PublishMachineStates\n\nexport const publishMachine = setup({\n types: {\n context: {} as PublishMachineContext,\n input: {} as PublishMachineContext,\n },\n actors: {\n validateItemData,\n createPublishAttempt,\n upload,\n preparePublishRequestData,\n },\n}).createMachine({\n id: 'publish',\n initial: VALIDATING_ITEM_DATA,\n context: ({ input }) => input,\n on: {\n updateContext: updateMachineContext,\n },\n states: {\n [VALIDATING_ITEM_DATA]: {\n on: {\n validateItemDataSuccess: [CREATING_PUBLISH_ATTEMPT],\n },\n invoke: {\n src: 'validateItemData',\n input: ({ context }) => ({ context }),\n },\n },\n [CREATING_PUBLISH_ATTEMPT]: {\n on: {\n createPublishAttemptSuccess: [UPLOADING],\n },\n invoke: {\n src: 'createPublishAttempt',\n input: ({ context }) => ({ context }),\n },\n },\n [UPLOADING]: {\n on: {\n uploadingSuccess: [PREPARING_PUBLISH_REQUEST_DATA],\n },\n invoke: {\n src: 'upload',\n input: ({ context }) => ({ context }),\n },\n },\n [PREPARING_PUBLISH_REQUEST_DATA]: {\n on: {\n preparePublishRequestDataSuccess: [UPLOADING],\n },\n invoke: {\n src: 'preparePublishRequestData',\n input: ({ context }) => ({ context }),\n },\n },\n [PUBLISHING]: {},\n [IDLE]: {},\n },\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput, GlobalMachineContext } from '@/types/machines'\nimport { saveAppState } from '@/db/write/saveAppState'\n\nexport const savePublishService = fromCallback<\n EventObject,\n FromCallbackInput<GlobalMachineContext>\n>(({ sendBack, input: { event, context } }) => {\n const { publishItemService } = context\n\n if (!publishItemService) {\n sendBack({ type: 'savePublishServiceError' })\n return\n }\n\n const _savePublishService = async (): Promise<boolean> => {\n await saveAppState(\n `snapshot__publishItemService`,\n JSON.stringify(publishItemService.getPersistedSnapshot()),\n )\n\n return true\n }\n\n _savePublishService().then((success) => {\n if (success) {\n sendBack({ type: 'savePublishServiceSuccess' })\n }\n })\n})\n","import { ActorRefFrom, assign, createActor, raise, setup } from 'xstate'\nimport { createBrowserInspector } from '@statelyai/inspect'\nimport {\n GLOBAL_ADDING_MODELS_TO_DB_SUCCESS,\n GLOBAL_INITIALIZING_CREATE_ALL_ITEMS_SERVICES,\n GLOBAL_INITIALIZING_INTERNAL_SERVICE_READY,\n GLOBAL_INITIALIZING_SEND_CONFIG,\n GlobalState,\n MachineIds,\n} from '@/services/internal/constants'\nimport { GlobalMachineContext, ModelClassType } from '@/types'\nimport { eventEmitter } from '@/eventBus'\nimport { initialize } from '@/services/global/actors/initialize'\nimport { getSchemaForModel } from '@/services/global/actors/getSchemaForModel'\nimport { addModelsToDb } from '@/services/global/actors/addModelsToDb'\nimport { internalMachine } from '@/services/internal/internalMachine'\nimport { itemMachineAll } from '../allItems/itemMachineAll'\nimport { publishMachine } from '@/services/publish/publishMachine'\nimport { savePublishService } from '@/services/global/actors/savePublishService'\n\nconst {\n UNINITIALIZED,\n INITIALIZING,\n INITIALIZED,\n PUBLISHING_ITEM,\n ADDING_MODELS_TO_DB,\n} = GlobalState\n\nconst { inspect } = createBrowserInspector({\n autoStart: false,\n})\n\nconst globalMachine = setup({\n types: {\n context: {} as GlobalMachineContext,\n input: {} as GlobalMachineContext | undefined,\n },\n actors: {\n initialize,\n addModelsToDb,\n getSchemaForModel,\n savePublishService,\n },\n}).createMachine({\n id: MachineIds.GLOBAL,\n initial: UNINITIALIZED,\n context: ({ input }) => input as GlobalMachineContext,\n on: {\n publishItemRequest: `.${PUBLISHING_ITEM}`,\n savePublishService: `.savingPublishService`,\n restorePublishService: `.${PUBLISHING_ITEM}`,\n },\n states: {\n [UNINITIALIZED]: {\n on: {\n init: {\n target: INITIALIZING,\n actions: [\n assign({\n isInitialized: false,\n addedModelRecordsToDb: false,\n models: ({ event }) => event.models,\n endpoints: ({ event }) => event.endpoints,\n filesDir: ({ event }) => event.filesDir,\n internalService: ({ spawn, event }) => {\n return spawn(internalMachine, {\n systemId: MachineIds.INTERNAL,\n input: {\n endpoints: event.endpoints,\n filesDir: event.filesDir,\n addresses: event.addresses,\n arweaveDomain: event.arweaveDomain,\n },\n })\n },\n }),\n ],\n },\n },\n meta: {\n displayText: 'Booting up',\n percentComplete: 5,\n },\n tags: ['loading', 'startup'],\n },\n [INITIALIZING]: {\n on: {\n [GLOBAL_INITIALIZING_SEND_CONFIG]: {\n actions: assign({\n endpoints: ({ event }) => event.endpoints,\n environment: ({ event }) => event.environment,\n addresses: ({ event }) => event.addresses,\n isInitialized: true,\n }),\n },\n [GLOBAL_INITIALIZING_INTERNAL_SERVICE_READY]: ADDING_MODELS_TO_DB,\n [GLOBAL_INITIALIZING_CREATE_ALL_ITEMS_SERVICES]: {\n actions: [\n assign(({ event, spawn }) => {\n const allItemsServices: Record<\n string,\n ActorRefFrom<typeof itemMachineAll>\n > = {}\n for (const [modelName, ModelClass] of Object.entries(\n event.create,\n )) {\n const service = spawn(itemMachineAll, {\n systemId: modelName,\n input: {\n modelName,\n ModelClass,\n modelSchema: (ModelClass as ModelClassType)!.schema,\n items: [],\n },\n })\n allItemsServices[`${modelName}Service`] = service\n }\n\n for (const [modelName, snapshot] of Object.entries(\n event.restore,\n )) {\n const service = createActor(itemMachineAll, {\n snapshot,\n })\n service.start()\n allItemsServices[`${modelName}Service`] = service\n }\n return allItemsServices\n }),\n raise({ type: 'allItemsServicesCreated' }),\n ],\n },\n },\n invoke: {\n src: 'initialize',\n input: ({ event, context }) => ({ event, context }),\n meta: {\n displayText: 'Initializing Seed SDK',\n percentComplete: 10,\n },\n tags: ['loading', 'startup'],\n },\n },\n [ADDING_MODELS_TO_DB]: {\n on: {\n [GLOBAL_ADDING_MODELS_TO_DB_SUCCESS]: {\n target: INITIALIZED,\n actions: assign({\n addedModelRecordsToDb: true,\n }),\n },\n },\n invoke: {\n src: 'addModelsToDb',\n input: ({ context }) => ({ context }),\n meta: {\n displayText: 'Adding models to database',\n },\n tags: ['loading', 'startup'],\n },\n },\n [INITIALIZED]: {\n // type: 'parallel',\n // on: {\n // publishItemRequest: `.${PUBLISHING_ITEM}`,\n // },\n meta: {\n displayText: 'Global service ready',\n percentComplete: 40,\n },\n tags: ['loading', 'startup'],\n // initial: PUBLISHING_ITEM,\n },\n [PUBLISHING_ITEM]: {\n target: INITIALIZED,\n entry: [\n assign({\n publishItemService: ({ spawn, event }) =>\n spawn(publishMachine, {\n id: 'publishService',\n input: {\n localId: event.seedLocalId,\n },\n }),\n }),\n ],\n meta: {\n displayText: 'Publishing item',\n },\n tags: ['publishing'],\n },\n savingPublishService: {\n target: INITIALIZED,\n on: {\n savePublishServiceSuccess: INITIALIZED,\n },\n invoke: {\n src: 'savePublishService',\n input: ({ context }) => ({ context }),\n },\n meta: {\n displayText: 'Saving publish service',\n },\n tags: ['publishing'],\n },\n },\n // on: {\n // '*': {\n // actions: emit(({ event }) => {\n // return event\n // }),\n // },\n // },\n})\n\nconst globalService = createActor(globalMachine, {\n input: {},\n // inspect,\n inspect: (inspEvent) => {\n eventEmitter.emit('inspect.globalService', inspEvent)\n // console.log('[sdk] [service/index] inspEvent', inspEvent)\n // eventEmitter.emit('globalService', inspEvent)\n // let eventType: string = inspEvent.type\n // if (inspEvent.event && inspEvent.event.type) {\n // eventType = inspEvent.event.type\n // }\n //\n // if (typeof eventType === 'object') {\n // eventType = JSON.stringify(eventType)\n // }\n //\n // let srcId = inspEvent.actorRef.id\n //\n // if (!srcId.includes('seedSdk')) {\n // srcId = inspEvent.actorRef.logic.config.id\n // }\n //\n // if (inspEvent.type === '@xstate.snapshot') {\n // if (\n // inspEvent.event.type === CHILD_SNAPSHOT &&\n // inspEvent.snapshot &&\n // inspEvent.snapshot.machine.id === MachineIds.GLOBAL\n // ) {\n // return\n // }\n // if (inspEvent.snapshot && inspEvent.snapshot.value) {\n // if (typeof window !== 'undefined') {\n // eventEmitter.emit('globalService', {\n // type: eventType,\n // src: srcId,\n // snapshot: inspEvent.snapshot,\n // })\n // }\n // }\n // } else {\n // if (typeof window !== 'undefined') {\n // let snapshot\n //\n // try {\n // snapshot = inspEvent.actorRef.getSnapshot()\n // } catch (e) {\n // // This fails if the actor hasn't initialized yet, but that's OK I think\n // // console.log('[sdk] [service/index] ERROR', e)\n // }\n //\n // eventEmitter.emit('globalService', {\n // type: eventType,\n // src: srcId,\n // snapshot,\n // })\n // }\n // }\n },\n})\n\nglobalService.start()\n\nconst getGlobalService = (): ActorRefFrom<typeof globalMachine> => globalService\n\nexport { globalMachine, getGlobalService, globalService }\n","import { getGlobalService } from '@/services/global'\n\ntype PublishItemRequestEvent = {\n seedLocalId: string\n}\n\ntype PublishItemRequestHandler = (\n event: PublishItemRequestEvent,\n) => Promise<void>\n\nexport const publishItemRequestHandler: PublishItemRequestHandler = async ({\n seedLocalId,\n}) => {\n const globalService = getGlobalService()\n globalService.subscribe((snapshot) => {\n if (\n !snapshot ||\n !snapshot.context ||\n !snapshot.context.publishItemService\n ) {\n return\n }\n })\n globalService.send({\n type: 'publishItemRequest',\n seedLocalId,\n })\n}\n","import { eventEmitter } from '@/eventBus'\nimport { syncDbWithEasHandler } from '@/events/item/syncDbWithEas'\nimport { publishItemRequestHandler } from '@/events/item/publish'\n\nlet areReady = false\n\nexport const setupAllItemsEventHandlers = () => {\n // eventEmitter.addListener('item.request', itemRequestHandler)\n // eventEmitter.addListener('item.requestAll', itemRequestAllHandler)\n // eventEmitter.addListener(\n // 'item.propertyValuesForSeedUid.request',\n // propertyValuesForSeedUid,\n // )\n // eventEmitter.addListener('item.create.request', createItemRequestHandler)\n // eventEmitter.addListener('item.delete.request', itemDeleteRequestHandler)\n // eventEmitter.addListener('item.update', itemUpdateHandler)\n eventEmitter.addListener('syncDbWithEas', syncDbWithEasHandler)\n eventEmitter.addListener('item.publish.request', publishItemRequestHandler)\n eventEmitter.addListener(\n 'item.publish.payload.request',\n publishItemRequestHandler,\n )\n //\n // eventEmitter.emit('item.events.setupAllItemsEventHandlers')\n areReady = true\n}\n\nexport const getAreItemEventHandlersReady = () => {\n return areReady\n}\n","import { eventEmitter } from '@/eventBus'\nimport { generateId } from '@/helpers'\n\nexport * from './item'\n\ntype WaitForEventConfig = {\n req: {\n eventLabel: string\n data: Record<string, unknown>\n }\n res: {\n eventLabel: string\n }\n}\n\ntype WaitForEvent = (\n config: WaitForEventConfig,\n) => Promise<Record<string, unknown>>\n\nexport const waitForEvent: WaitForEvent = async ({ req, res }) => {\n const eventId = generateId()\n\n return new Promise((resolve) => {\n const internalHandler = (event: Record<string, unknown>) => {\n if (!event) {\n return\n }\n const { eventId: _eventId } = event\n if (_eventId && _eventId === eventId) {\n eventEmitter.removeListener(res.eventLabel, internalHandler)\n resolve(event)\n }\n }\n\n eventEmitter.addListener(res.eventLabel, internalHandler)\n\n eventEmitter.emit(req.eventLabel, {\n ...req.data,\n eventId,\n })\n })\n}\n","import { EventObject, fromCallback } from 'xstate'\nimport { waitForEvent } from '@/events'\nimport {\n FromCallbackInput,\n HydrateExistingItemEvent,\n ItemMachineContext,\n} from '@/types'\n\nexport const hydrateExistingItem = fromCallback<\n EventObject,\n FromCallbackInput<ItemMachineContext<any>, HydrateExistingItemEvent>\n>(({ sendBack, input: { event, context } }) => {\n const { existingItem } = event!\n const { seedUid, seedLocalId, ModelClass } = context\n\n if (!ModelClass) {\n throw new Error('ModelClass not found')\n }\n\n const modelName = ModelClass.originalConstructor.name\n\n const _checkForItemOnAllItemsService = async (): Promise<boolean> => {\n if (!existingItem.seedLocalId && !existingItem.seedUid) {\n console.warn(\n '[singleItemActors] [hydrateExistingItem] No seedLocalId or seedUid found on existingItem',\n )\n return false\n }\n\n if (!seedUid && !seedLocalId) {\n return false\n }\n\n const results = await waitForEvent({\n req: {\n eventLabel: 'item.request',\n data: {\n modelName,\n seedUid,\n seedLocalId,\n source: 'hydrateExistingItem',\n },\n },\n res: {\n eventLabel: `item.${modelName}.${seedLocalId}.response`,\n },\n })\n\n return true\n\n // return new Promise((resolve) => {\n // const timeStart = Date.now()\n //\n // const interval = setInterval(() => {\n // const timeElapsed = Date.now() - timeStart\n // if (timeElapsed > 2000) {\n // eventEmitter.emit('item.request', {\n // modelName,\n // versionUid,\n // versionLocalId,\n // source: 'hydrateExistingItem',\n // })\n // }\n // if (timeElapsed > 30000) {\n // clearInterval(interval)\n // console.error(\n // `[singleItemActors] [hydrateExistingItem] ${timeElapsed / 1000}s elapsed for ${modelName} ${versionLocalId}`,\n // context,\n // )\n // eventEmitter.removeListener(\n // `item.${modelName}.response`,\n // handleItemRequestResponse,\n // )\n // resolve(false)\n // }\n // }, 500)\n\n // const handleItemRequestResponse = (event) => {\n // if (\n // event.item &&\n // ((event.item.versionLocalId &&\n // event.item.versionLocalId === versionLocalId) ||\n // (event.item.versionUid && event.item.versionUid === versionUid))\n // ) {\n // clearInterval(interval)\n // eventEmitter.removeListener(\n // `item.${modelName}.response`,\n // handleItemRequestResponse,\n // )\n // resolve(true)\n // }\n // }\n //\n // eventEmitter.addListener(\n // `item.${modelName}.response`,\n // handleItemRequestResponse,\n // )\n //\n // eventEmitter.emit('item.request', {\n // modelName,\n // versionUid,\n // versionLocalId,\n // source: 'hydrateExistingItem',\n // })\n // })\n\n // if (existingItem.versionLocalId && !existingItem.versionLocalId) {\n // console.log(\n // `[singleItemActors] [hydrateExistingItem] versionLocalId: ${existingItem.versionLocalId} versionUid: ${existingItem.versionUid}`,\n // )\n //\n // return true\n // }\n //\n // console.log(\n // `[singleItemActors] [hydrateExistingItem] versionLocalId: ${existingItem.versionLocalId} versionUid: ${existingItem.versionUid}`,\n // )\n // return true\n }\n\n _checkForItemOnAllItemsService().then((shouldContinue) => {\n if (!shouldContinue) {\n sendBack({ type: 'hydrateExistingItemFailure' })\n return\n }\n // for (const [key, value] of Object.entries(existingItem)) {\n // sendBack({\n // type: 'updateValue',\n // propertyName: key,\n // propertyValue: value,\n // source: 'db',\n // })\n // }\n\n sendBack({ type: 'hydrateExistingItemSuccess' })\n })\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { createSeed } from '@/db/write/createSeed'\nimport { FromCallbackInput, ItemMachineContext } from '@/types'\nimport { createVersion } from '@/db/write/createVersion'\n\nexport const hydrateNewItem = fromCallback<\n EventObject,\n FromCallbackInput<ItemMachineContext<any>>\n>(({ sendBack, input: { context } }) => {\n const { seedUid, versionUid, modelName } = context\n\n let newSeedLocalId: string\n\n const _hydrateNewItem = async (): Promise<void> => {\n if (!modelName) {\n throw new Error('modelName is required')\n }\n\n newSeedLocalId = await createSeed({\n type: modelName.toLowerCase(),\n seedUid: seedUid ?? 'NULL',\n })\n\n await createVersion({\n seedLocalId: newSeedLocalId,\n seedType: modelName.toLowerCase(),\n uid: versionUid ?? 'NULL',\n })\n }\n\n _hydrateNewItem().then(() => {\n sendBack({ type: 'hydrateNewItemSuccess' })\n })\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { GET_PROPERTIES } from '@/Item/queries'\nimport { itemMachineSingle } from '@/Item/service/itemMachineSingle'\nimport { PropertyType } from '@/seedSchema'\nimport { Attestation } from '@/graphql/gql/graphql'\nimport { ModelClassType } from '@/types'\nimport { BaseEasClient, BaseQueryClient } from '@/helpers'\n\n\nexport const fetchDataFromEas = fromCallback<\n EventObject,\n typeof itemMachineSingle\n>(({ sendBack, input: { context } }) => {\n const { ModelClass, modelTableName, versionUid } = context\n\n const propertiesMetadata = new Map<string, PropertyType>()\n\n // EAS is the final source of truth, so we need to see if our Item is\n // already represented there. Then we need to intelligently sync/merge\n // with whatever new data has been created on the device before the sync.\n for (const [propertyName, propertyMetadata] of Object.entries(\n (ModelClass as ModelClassType).schema,\n )) {\n if (propertyMetadata) {\n propertiesMetadata.set(propertyName, propertyMetadata)\n }\n }\n\n sendBack({ type: 'updatePropertiesMetadata', propertiesMetadata })\n\n if (!versionUid) {\n // In this case this is a local only item, so we don't need to fetch anything\n return\n }\n\n const _fetchDataFromEas = async (): Promise<void> => {\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n // Fetch Properties by versionUid\n const { itemProperties } = await queryClient.fetchQuery({\n queryKey: ['getProperties', versionUid],\n queryFn: async () =>\n easClient.request(GET_PROPERTIES, {\n where: {\n refUID: {\n in: [versionUid],\n },\n decodedDataJson: {\n not: {\n // The first of many filters to keep bad data out\n contains:\n '\"value\":\"0x0000000000000000000000000000000000000000000000000000000000000020\"',\n },\n },\n },\n }),\n })\n\n // Filter properties by schemaId\n const selectedPropertiesMap: {\n [schemaId: string]: Attestation[]\n } = {}\n itemProperties.forEach((property) => {\n const existingProperties = selectedPropertiesMap[property.schemaId] || []\n existingProperties.push(property)\n selectedPropertiesMap[property.schemaId] = existingProperties\n })\n\n // For each schemaId, sort property Attestations by timeCreated DESC\n Object.keys(selectedPropertiesMap).forEach((schemaId) => {\n const sorted = selectedPropertiesMap[schemaId].sort((a, b) => {\n return a.timeCreated - b.timeCreated\n })\n selectedPropertiesMap[schemaId] = sorted\n })\n\n Object.keys(selectedPropertiesMap).forEach((schemaId) => {\n // TODO: Finish this logic\n // console.log('[singleItemActors] [fetchDataFromEas] schemaId', schemaId)\n // sendBack({ type: 'addPropertyAttestation', schemaId })\n })\n\n // Attach processed properties to the itemService/itemMachine context\n sendBack({\n type: 'updatedPropertiesBySchemaUid',\n propertiesBySchemaUid: selectedPropertiesMap,\n })\n }\n\n _fetchDataFromEas().then(() => {\n sendBack({ type: 'fetchDataFromEasSuccess' })\n })\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput } from '@/types/machines'\nimport { ItemMachineContext } from '@/types/item'\n\nexport const reload = fromCallback<\n EventObject,\n FromCallbackInput<ItemMachineContext<any>>\n>(({ sendBack, input: { context } }) => {\n const { propertyInstances } = context\n\n const _reload = async () => {\n if (!propertyInstances) {\n return\n }\n\n for (const propertyInstance of propertyInstances.values()) {\n if (propertyInstance) {\n const propertyRecordSchema = propertyInstance.propertyDef\n if (\n propertyRecordSchema &&\n propertyRecordSchema.storageType &&\n propertyRecordSchema.storageType === 'ItemStorage'\n ) {\n propertyInstance.getService().send({ type: 'reload' })\n }\n }\n }\n }\n\n _reload().then(() => {\n sendBack({ type: 'reloadSuccess' })\n })\n})\n","import { assign, setup } from 'xstate'\nimport { MachineIds } from '@/services/internal/constants'\nimport { ItemMachineContext } from '@/types'\nimport { waitForDb } from './actors/waitForDb'\nimport { initialize } from './actors/initialize'\nimport { hydrateExistingItem } from './actors/hydrateExistingItem'\nimport { hydrateNewItem } from './actors/hydrateNewItem'\nimport { fetchDataFromEas } from './actors/fetchDataFromEas'\nimport { reload } from './actors/reload'\nimport { IItemProperty } from '@/interfaces'\n\nexport const itemMachineSingle = setup({\n types: {\n context: {} as ItemMachineContext<any>,\n input: {},\n },\n actors: {\n waitForDb,\n initialize,\n hydrateExistingItem,\n hydrateNewItem,\n fetchDataFromEas,\n reload,\n },\n}).createMachine({\n id: MachineIds.ITEM,\n initial: 'waitingForDb',\n context: ({ input }) => input as ItemMachineContext<any>,\n on: {\n updatedPropertiesBySchemaUid: {\n actions: assign({\n propertiesBySchemaUid: ({ event }) => event.propertiesBySchemaUid,\n }),\n },\n updatePropertiesMetadata: {\n actions: assign({\n propertiesMetadata: ({ event }) => event.propertiesMetadata,\n }),\n },\n updateProperties: {\n actions: assign({\n propertiesUpdatedAt: Date.now(),\n }),\n },\n updateValue: {\n actions: assign(({ event, context }) => {\n let { propertyInstances } = context\n if (!propertyInstances) {\n propertyInstances = new Map<string, IItemProperty<any>>()\n }\n const { propertyName, propertyValue } = event\n\n if (!propertyInstances.has(propertyName)) {\n return {\n [propertyName]: propertyValue,\n }\n }\n const propertyInstance = propertyInstances.get(\n propertyName,\n ) as IItemProperty<any>\n\n propertyInstance.value = propertyValue\n propertyInstances.set(propertyName, propertyInstance)\n // TODO: use immer here\n return {\n propertyInstances,\n }\n }),\n },\n addPropertyInstance: {\n actions: assign(({ context, event }) => {\n const propertyInstances =\n context.propertyInstances || new Map<string, IItemProperty<any>>()\n propertyInstances.set(event.propertyName, event.propertyInstance)\n return {\n propertyInstances,\n }\n }),\n },\n reload: '.reloading',\n },\n states: {\n idle: {},\n waitingForDb: {\n on: {\n waitForDbSuccess: 'initializing',\n },\n invoke: {\n src: 'waitForDb',\n },\n },\n initializing: {\n on: {\n hasExistingItem: {\n target: 'idle',\n actions: assign({\n modelTableName: ({ event }) => event.modelTableName,\n modelNamePlural: ({ event }) => event.modelNamePlural,\n modelName: ({ event }) => event.modelName,\n existingItem: ({ event }) => event.existingItem,\n }),\n },\n isNewItem: {\n target: 'idle',\n actions: assign({\n modelTableName: ({ event }) => event.modelTableName,\n modelNamePlural: ({ event }) => event.modelNamePlural,\n modelName: ({ event }) => event.modelName,\n }),\n },\n },\n invoke: {\n src: 'initialize',\n input: ({ context, event }) => ({ context, event }),\n },\n },\n hydratingExistingItem: {\n on: {\n hydrateExistingItemSuccess: 'idle',\n hydrateExistingItemFailure: 'destroying',\n },\n invoke: {\n src: 'hydrateExistingItem',\n input: ({ event, context }) => ({ event, context }),\n },\n },\n hydratingNewItem: {\n on: {\n hydrateNewItemSuccess: 'idle',\n },\n invoke: {\n src: 'hydrateNewItem',\n input: ({ context }) => ({ context }),\n },\n },\n fetchingRemoteData: {\n on: {\n fetchRemoteDataSuccess: 'idle',\n },\n invoke: {\n src: 'fetchRemoteData',\n input: ({ context }) => ({ context }),\n },\n },\n reloading: {\n on: {\n reloadSuccess: 'idle',\n },\n invoke: {\n src: 'reload',\n input: ({ context }) => ({ context }),\n },\n },\n destroying: {\n type: 'final',\n },\n },\n})\n","import { GetItemProperties, PropertyData } from '@/types'\nimport { metadata, seeds, versions } from '@/seedSchema'\nimport { and, eq, getTableColumns, isNotNull, isNull, SQL } from 'drizzle-orm'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\n\nexport const getItemProperties: GetItemProperties = async ({\n seedLocalId,\n seedUid,\n edited,\n}) => {\n const appDb = BaseDb.getAppDb()\n\n const whereClauses: SQL[] = [isNotNull(metadata.propertyName)]\n\n if (seedUid) {\n whereClauses.push(eq(seeds.uid, seedUid))\n }\n\n if (seedLocalId) {\n whereClauses.push(eq(seeds.localId, seedLocalId))\n }\n\n // const uidWhereClause: SQL = seedUid\n // ? eq(seeds.uid, seedUid)\n // : isNull(seeds.uid)\n // const localWhereClause: SQL = seedLocalId\n // ? eq(seeds.localId, seedLocalId)\n // : isNull(seeds.localId)\n\n // whereClauses.push(or(localWhereClause, uidWhereClause) as SQL)\n whereClauses.push(isNotNull(metadata.propertyName))\n // whereClauses.push(isNotNull(metadata.easDataType))\n\n if (typeof edited !== 'undefined') {\n if (edited) {\n whereClauses.push(isNull(metadata.uid))\n }\n if (!edited) {\n whereClauses.push(isNotNull(metadata.uid))\n }\n }\n\n const metadataColumns = getTableColumns(metadata)\n\n const propertiesData = await appDb\n .select({\n ...metadataColumns,\n })\n .from(seeds)\n .leftJoin(metadata, eq(metadata.seedLocalId, seeds.localId))\n .leftJoin(versions, eq(versions.localId, seeds.localId))\n .where(and(...whereClauses))\n .groupBy(metadata.propertyName)\n\n return propertiesData.map(data => ({\n ...data,\n localId: data.localId || '',\n uid: data.uid || '',\n propertyName: data.propertyName || '',\n propertyValue: data.propertyValue || '',\n schemaUid: data.schemaUid || '',\n modelType: data.modelType || '',\n seedLocalId: data.seedLocalId || '',\n })) as PropertyData[]\n}\n","import { versions } from '@/seedSchema'\nimport { count, max } from 'drizzle-orm'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\nexport const getVersionData = () => {\n const appDb = BaseDb.getAppDb()\n\n return appDb.$with('versionData').as(\n appDb\n .select({\n seedLocalId: versions.seedLocalId,\n seedUid: versions.seedUid,\n latestVersionUid: versions.uid,\n latestVersionLocalId: versions.localId,\n versionsCount: count(versions.localId).as('versionsCount'),\n lastVersionPublishedAt: max(versions.attestationCreatedAt).as(\n 'lastVersionPublishedAt',\n ),\n lastLocalUpdateAt: max(versions.createdAt).as('lastLocalUpdateAt'),\n })\n .from(versions)\n .groupBy(versions.seedLocalId),\n )\n}\n","import { BaseDb } from '@/db/Db/BaseDb'\nimport { seeds, SeedType } from '@/seedSchema'\nimport { eq } from 'drizzle-orm'\n\ntype GetSeedDataProps = {\n seedLocalId?: string\n seedUid?: string\n}\n\ntype GetSeedData = (props: GetSeedDataProps) => Promise<SeedType | undefined>\n\nexport const getSeedData: GetSeedData = async ({ seedLocalId, seedUid }) => {\n const appDb = BaseDb.getAppDb()\n\n let query\n\n const queryBase = appDb.select().from(seeds)\n\n if (seedLocalId) {\n query = queryBase.where(eq(seeds.localId, seedLocalId))\n }\n\n if (seedUid) {\n query = queryBase.where(eq(seeds.uid, seedUid))\n }\n\n const rows = await query\n\n if (!rows || !rows.length) {\n return\n }\n\n return rows[0]\n}\n","import { GetItemData, ItemData } from \"@/types\"\nimport debug from \"debug\"\nimport { BaseDb } from \"../Db/BaseDb\"\nimport { and, eq, getTableColumns, gt, SQL, sql } from \"drizzle-orm\"\nimport { getItemProperties } from \"./getItemProperties\"\nimport { getVersionData } from \"./subqueries/versionData\"\nimport { seeds } from \"@/seedSchema\"\nimport { getSeedData } from \"./getSeedData\"\n\nconst logger = debug('app:db:read:getItemData')\n\nexport const getItemData: GetItemData = async ({\n modelName,\n seedLocalId,\n seedUid,\n}) => {\n if (!seedLocalId && !seedUid) {\n throw new Error('[db/queries] [getItem] no seedLocalId or seedUid')\n }\n\n if (seedUid && !seedLocalId) {\n const seedData = await getSeedData({ seedUid })\n if (!seedData) {\n logger('[db/queries] [getItem] no seedData seedUid', seedUid)\n return\n }\n seedLocalId = seedData.localId\n }\n\n const appDb = BaseDb.getAppDb()\n\n const { localId, uid, ...rest } = getTableColumns(seeds)\n\n const whereClauses: SQL[] = []\n\n if (modelName) {\n whereClauses.push(eq(seeds.type, modelName.toLowerCase()))\n }\n\n if (seedUid) {\n whereClauses.push(eq(seeds.uid, seedUid))\n }\n\n if (seedLocalId && !seedUid) {\n whereClauses.push(eq(seeds.localId, seedLocalId))\n }\n\n const versionData = getVersionData()\n\n const itemDataRows = await appDb\n .with(versionData)\n .select({\n ...rest,\n seedLocalId: seeds.localId,\n seedUid: seeds.uid,\n versionsCount: versionData.versionsCount,\n lastVersionPublishedAt: versionData.lastVersionPublishedAt,\n latestVersionUid: versionData.latestVersionUid,\n latestVersionLocalId: versionData.latestVersionLocalId,\n })\n .from(seeds)\n .leftJoin(versionData, eq(seeds.localId, versionData.seedLocalId))\n .where(and(...whereClauses, gt(versionData.versionsCount, 0)))\n .orderBy(sql.raw('COALESCE(attestation_created_at, created_at) DESC'))\n .groupBy(seeds.localId) as ItemData[]\n\n if (!itemDataRows || itemDataRows.length === 0) {\n logger('[db/queries] [getItemDataFromDb] no itemDataRows')\n return\n }\n\n let itemData = itemDataRows[0] as ItemData & { [key: string]: any }\n\n const propertiesData = await getItemProperties({\n seedLocalId,\n seedUid: itemData.seedUid || undefined,\n })\n\n if (!propertiesData || propertiesData.length === 0) {\n return itemData\n }\n\n for (const propertyData of propertiesData) {\n const propertyName = propertyData.propertyName\n\n let propertyValue = propertyData.propertyValue\n\n if (propertyName.endsWith('Id') || propertyName.endsWith('Ids')) {\n if (propertyData.refSeedType) {\n const propertyNameVariant = propertyName.replace(/Ids?$/, '')\n itemData[propertyNameVariant] = propertyValue\n }\n }\n\n itemData[propertyName] = propertyValue\n }\n\n if (itemData) return itemData\n}","import { ItemData } from '@/types'\nimport { and, eq, gt, isNotNull, isNull, or, SQL, sql } from 'drizzle-orm'\nimport { seeds } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { getVersionData } from './subqueries/versionData'\n\ntype GetItemsDataProps = {\n modelName?: string\n deleted?: boolean\n}\n\ntype GetItemsData = (props: GetItemsDataProps) => Promise<ItemData[]>\n\nexport const getItemsData: GetItemsData = async ({\n modelName,\n deleted,\n}): Promise<ItemData[]> => {\n const appDb = BaseDb.getAppDb()\n\n const conditions: SQL[] = []\n\n if (modelName) {\n conditions.push(eq(seeds.type, modelName.toLowerCase()))\n }\n\n if (deleted) {\n conditions.push(\n or(\n isNotNull(seeds._markedForDeletion),\n eq(seeds._markedForDeletion, 1),\n ) as SQL,\n )\n }\n\n if (!deleted) {\n conditions.push(\n or(\n isNull(seeds._markedForDeletion),\n eq(seeds._markedForDeletion, 0),\n ) as SQL,\n )\n }\n\n const versionData = getVersionData()\n\n let query = appDb\n .with(versionData)\n .select({\n seedLocalId: seeds.localId,\n seedUid: seeds.uid,\n schemaUid: seeds.schemaUid,\n modelName: sql<string>`${modelName}`,\n attestationCreatedAt: seeds.attestationCreatedAt,\n versionsCount: versionData.versionsCount,\n lastVersionPublishedAt: versionData.lastVersionPublishedAt,\n lastLocalUpdateAt: versionData.lastLocalUpdateAt,\n latestVersionUid: versionData.latestVersionUid,\n latestVersionLocalId: versionData.latestVersionLocalId,\n createdAt: seeds.createdAt,\n })\n .from(seeds)\n .leftJoin(versionData, eq(seeds.localId, versionData.seedLocalId))\n .where(and(gt(versionData.versionsCount, 0), ...conditions))\n .orderBy(sql.raw('COALESCE(attestation_created_at, created_at) DESC'))\n .groupBy(seeds.localId)\n\n const itemsData = (await query) as ItemData[]\n\n return itemsData\n}\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput } from '@/types/machines'\nimport { PropertyMachineContext } from '@/types/property'\nimport { fs } from '@zenfs/core'\n\nexport const resolveRemoteStorage = fromCallback<\n EventObject,\n FromCallbackInput<PropertyMachineContext, EventObject>\n>(({ sendBack, input: { context } }) => {\n const { propertyInstances } = context\n\n if (!propertyInstances) {\n throw new Error(`propertyInstances not found for ${context.seedLocalId}`)\n }\n\n if (!propertyInstances.has('storageTransactionId')) {\n return\n }\n\n const storageTransactionId = propertyInstances.get('storageTransactionId')\n\n const _resolveRemoteStorage = async (): Promise<void> => {\n const path = await import('path-browserify')\n\n const filesDirExists = await fs.promises.exists('/files')\n\n if (!filesDirExists) {\n await fs.promises.mkdir('/files')\n }\n\n const htmlDir = path.join('/files', 'html')\n\n const htmlExists = await fs.promises.exists(htmlDir)\n\n if (htmlExists) {\n const htmlFiles = await fs.promises.readdir(htmlDir)\n const matchingHtmlFile = htmlFiles.find(\n (file) => file === `${storageTransactionId}.html`,\n )\n if (matchingHtmlFile) {\n const htmlString = await fs.promises.readFile(\n path.join(htmlDir, matchingHtmlFile),\n 'utf8',\n )\n sendBack({\n type: 'updateValue',\n propertyName: 'html',\n propertyValue: htmlString,\n })\n }\n }\n\n if (!htmlExists) {\n await fs.promises.mkdir(htmlDir)\n }\n\n const jsonDir = path.join('/files', 'json')\n\n const jsonExists = await fs.promises.exists(jsonDir)\n\n if (jsonExists) {\n const jsonFiles = await fs.promises.readdir(jsonDir)\n const matchingJsonFile = jsonFiles.find(\n (file) => file === `${storageTransactionId}.json`,\n )\n if (matchingJsonFile) {\n const jsonString = await fs.promises.readFile(\n path.join(jsonDir, matchingJsonFile),\n 'utf8',\n )\n sendBack({\n type: 'updateValue',\n propertyName: 'json',\n propertyValue: jsonString,\n })\n }\n }\n\n if (!jsonExists) {\n await fs.promises.mkdir(jsonDir)\n }\n }\n\n _resolveRemoteStorage().then(() => {\n sendBack({ type: 'resolveRemoteStorageSuccess' })\n return\n })\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput, PropertyMachineContext } from '@/types'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\nexport const waitForDb = fromCallback<\n EventObject,\n FromCallbackInput<PropertyMachineContext>\n>(({ sendBack }) => {\n const _waitForDb = new Promise<void>((resolve) => {\n const interval = setInterval(() => {\n const appDb = BaseDb.getAppDb()\n\n if (appDb) {\n clearInterval(interval)\n resolve()\n }\n }, 100)\n })\n\n _waitForDb.then(() => {\n sendBack({ type: 'waitForDbSuccess' })\n })\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { fs } from '@zenfs/core'\nimport { FromCallbackInput } from '@/types/machines'\nimport { PropertyMachineContext } from '@/types/property'\nimport { getSchemaUidForSchemaDefinition } from '@/stores/eas'\n\nexport const initialize = fromCallback<\n EventObject,\n FromCallbackInput<PropertyMachineContext, EventObject>\n>(({ sendBack, input: { context } }) => {\n const { isRelation, propertyName, storageTransactionId } = context\n let { schemaUid } = context\n\n if (!schemaUid) {\n schemaUid = getSchemaUidForSchemaDefinition(propertyName)\n if (schemaUid) {\n sendBack({ type: 'updateContext', schemaUid })\n }\n }\n\n if (isRelation) {\n sendBack({ type: 'isRelatedProperty' })\n sendBack({ type: 'initializeSuccess' })\n return\n }\n\n if (!isRelation) {\n if (\n (propertyName !== 'html' && propertyName !== 'json') ||\n !storageTransactionId\n ) {\n sendBack({ type: 'initializeSuccess' })\n return\n }\n\n const _getContentsFromFileSystem = async () => {\n if (propertyName === 'html') {\n const htmlFilePath = `/files/html/${storageTransactionId}.html`\n const exists = await fs.promises.exists(htmlFilePath)\n if (!exists) {\n return\n }\n const renderValue = await fs.promises\n .readFile(`/files/html/${storageTransactionId}.html`, 'utf8')\n .catch((error) => {\n console.warn('Error reading html file', error)\n })\n sendBack({ type: 'updateContext', renderValue })\n return\n }\n if (propertyName === 'json') {\n const jsonFilePath = `/files/json/${storageTransactionId}.json`\n const exists = await fs.promises.exists(jsonFilePath)\n if (!exists) {\n return\n }\n const renderValue = await fs.promises\n .readFile(`/files/json/${storageTransactionId}.json`, 'utf8')\n .catch((error) => {\n console.warn('Error reading json file', error)\n })\n sendBack({ type: 'updateContext', renderValue })\n return\n }\n }\n\n _getContentsFromFileSystem().then(() => {\n sendBack({ type: 'initializeSuccess' })\n })\n }\n})\n","import { metadata } from '@/seedSchema'\nimport { and, eq } from 'drizzle-orm'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\nconst seedUidToStorageTransactionId = new Map<string, string>()\n\ntype GetStorageTransactionIdResults = {\n storageTransactionId: string\n}[]\n\nexport const getStorageTransactionIdForSeedUid = async (\n seedUid: string,\n): Promise<string | undefined> => {\n if (seedUidToStorageTransactionId.has(seedUid)) {\n return seedUidToStorageTransactionId.get(seedUid)\n }\n\n const appDb = BaseDb.getAppDb()\n\n const results = (await appDb\n .select({\n storageTransactionId: metadata.propertyValue,\n })\n .from(metadata)\n .where(\n and(\n eq(metadata.seedUid, seedUid),\n eq(metadata.propertyName, 'storageTransactionId'),\n ),\n )) as GetStorageTransactionIdResults\n\n if (!results || results.length === 0) {\n return\n }\n\n seedUidToStorageTransactionId.set(seedUid, results[0].storageTransactionId)\n return results[0].storageTransactionId\n} ","import { metadata, MetadataType } from '@/seedSchema'\nimport { eq, max } from 'drizzle-orm'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\nexport const getRelationValueData = async (\n propertyValue: any,\n): Promise<MetadataType | undefined> => {\n const appDb = BaseDb.getAppDb()\n\n const rows = (await appDb\n .select({\n propertyValue: metadata.propertyValue,\n attestationCreatedAt: max(metadata.attestationCreatedAt),\n refResolvedDisplayValue: metadata.refResolvedDisplayValue,\n refResolvedValue: metadata.refResolvedValue,\n refSeedType: metadata.refSeedType,\n easDataType: metadata.easDataType,\n })\n .from(metadata)\n .where(eq(metadata.propertyValue, propertyValue))) as MetadataType[]\n\n if (!rows || rows.length === 0) {\n return\n }\n\n return rows[0]\n} ","import { EventObject, fromCallback } from 'xstate'\nimport { convertTxIdToImageSrc } from '@/helpers'\nimport { fs } from '@zenfs/core'\nimport debug from 'debug'\nimport { FromCallbackInput } from '@/types/machines'\nimport { PropertyMachineContext } from '@/types/property'\nimport { getStorageTransactionIdForSeedUid } from '@/db/read/getStorageTransactionIdForSeedUid'\nimport { getRelationValueData } from '@/db/read/getRelationValueData'\n\nconst logger = debug('app:property:actors:resolveRelatedValue')\n\nconst storageTransactionIdToContentUrl = new Map<string, string>()\nconst refResolvedValueToContentUrl = new Map<string, string>()\nconst seedUidToContentUrl = new Map<string, string>()\n\nexport const resolveRelatedValue = fromCallback<\n EventObject,\n FromCallbackInput<PropertyMachineContext, EventObject>\n>(({ sendBack, input: { context } }) => {\n const {\n isRelation,\n propertyValue,\n propertyName,\n seedUid,\n propertyRecordSchema,\n populatedFromDb,\n schemaUid,\n } = context\n\n const _resolveRelatedValue = async () => {\n if (!propertyValue || !isRelation || populatedFromDb) {\n return\n }\n\n let parsedValue\n\n try {\n parsedValue = JSON.parse(propertyValue)\n } catch (error) {\n logger(`${propertyName} value is not a JSON string.`)\n }\n\n if (!parsedValue && seedUidToContentUrl.has(propertyValue)) {\n const contentUrl = seedUidToContentUrl.get(propertyValue)\n sendBack({\n type: 'updateContext',\n renderValue: contentUrl,\n })\n sendBack({\n type: 'resolvingRelatedValueSuccess',\n refResolvedDisplayValue: contentUrl,\n })\n return true\n }\n\n if (Array.isArray(propertyValue)) {\n // TODO: Handle array of seedUids\n logger(`${propertyName} value is an array of seedUids`)\n return\n }\n\n if (Array.isArray(parsedValue)) {\n logger(`${propertyName} value is a stringified array of seedUids`)\n return\n }\n\n const storageTransactionId =\n await getStorageTransactionIdForSeedUid(propertyValue)\n\n if (storageTransactionId) {\n if (storageTransactionIdToContentUrl.has(storageTransactionId)) {\n const contentUrl =\n storageTransactionIdToContentUrl.get(storageTransactionId)\n sendBack({\n type: 'updateContext',\n renderValue: contentUrl,\n })\n sendBack({\n type: 'resolvingRelatedValueSuccess',\n refResolvedDisplayValue: contentUrl,\n refResolvedValue: storageTransactionId,\n })\n return true\n }\n\n const contentUrl = await convertTxIdToImageSrc(storageTransactionId)\n if (contentUrl) {\n seedUidToContentUrl.set(propertyValue, contentUrl)\n }\n sendBack({\n type: 'updateContext',\n renderValue: contentUrl,\n })\n sendBack({\n type: 'resolvingRelatedValueSuccess',\n refResolvedDisplayValue: contentUrl,\n refResolvedValue: storageTransactionId,\n })\n return true\n }\n\n const relationValueData = await getRelationValueData(propertyValue)\n\n if (relationValueData) {\n const { refResolvedValue } = relationValueData\n const propertyValueFromDb = relationValueData.propertyValue\n\n // This handles a local-only relation value and resolves from the filesystem\n if (\n refResolvedValue &&\n propertyRecordSchema.dataType === 'Relation' &&\n propertyValueFromDb.length === 10 &&\n propertyRecordSchema.ref\n ) {\n if (refResolvedValueToContentUrl.has(refResolvedValue)) {\n const contentUrl = refResolvedValueToContentUrl.get(refResolvedValue)\n sendBack({\n type: 'updateContext',\n renderValue: contentUrl,\n })\n sendBack({\n type: 'resolvingRelatedValueSuccess',\n refResolvedDisplayValue: contentUrl,\n })\n return true\n }\n\n const fileExists = await fs.promises.exists(\n '/files/images/' + refResolvedValue,\n )\n if (fileExists) {\n const fileContents = await fs.promises.readFile(\n '/files/images/' + refResolvedValue,\n )\n const fileHandler = new File([fileContents], refResolvedValue)\n const contentUrl = URL.createObjectURL(fileHandler)\n refResolvedValueToContentUrl.set(refResolvedValue, contentUrl)\n sendBack({\n type: 'updateContext',\n renderValue: contentUrl,\n })\n sendBack({\n type: 'resolvingRelatedValueSuccess',\n refResolvedDisplayValue: contentUrl,\n })\n return true\n }\n }\n\n if (typeof propertyValueFromDb === 'string') {\n // Check files for a filename that matches the propertyValue\n if (\n propertyRecordSchema &&\n propertyRecordSchema.refValueType === 'ImageSrc'\n ) {\n let contentUrl\n\n if (storageTransactionIdToContentUrl.has(propertyValueFromDb)) {\n contentUrl =\n storageTransactionIdToContentUrl.get(propertyValueFromDb)\n }\n\n if (!contentUrl) {\n const imageFileExists = await fs.promises.exists(\n `/images/${propertyValue}`,\n )\n if (imageFileExists) {\n const fileContents = await fs.promises.readFile(\n `/images/${propertyValue}`,\n )\n const fileHandler = new File([fileContents], propertyValue)\n contentUrl = URL.createObjectURL(fileHandler)\n storageTransactionIdToContentUrl.set(\n propertyValueFromDb,\n contentUrl,\n )\n }\n }\n\n if (contentUrl) {\n sendBack({\n type: 'updateContext',\n renderValue: contentUrl,\n })\n sendBack({\n type: 'resolvingRelatedValueSuccess',\n refResolvedDisplayValue: contentUrl,\n })\n return true\n }\n }\n }\n }\n }\n\n _resolveRelatedValue().then((success) => {\n // if (success) {\n // sendBack({\n // type: 'resolvingRelatedValueDone',\n // })\n // }\n // return\n sendBack({\n type: 'resolvingRelatedValueDone',\n })\n })\n})\n\n// const eventKey = `storage.transaction.${initialValue}.contentUrl.response`\n//\n// const contentUrlListener = async (event) => {\n// console.log('[itemProperty] [constructor] contentUrlListener', event)\n// }\n//\n// eventEmitter.once(eventKey, contentUrlListener)\n//\n// const ready = getArePropertyEventHandlersReady()\n//\n// console.log('[itemProperty] [constructor] ready', ready)\n//\n// eventEmitter.emit('storage.transaction.contentUrl.request', {\n// storageTransactionId: initialValue,\n// })\n\n// Related property values can either be seedUid or seedUid[]\n// let relatedSeedUid: string\n// let relatedSeedUids: string[]\n//\n// if (Array.isArray(propertyValue)) {\n// relatedSeedUids = propertyValue\n// } else {\n// relatedSeedUid = propertyValue\n// }\n//\n// if (relatedSeedUid) {\n// console.log(\n// `[property/actors] [resolveRelatedValue] seedUid: ${relatedSeedUid}`,\n// )\n// const latestVersionOfRelatedSeedQuery = await appDb.run(\n// sql.raw(\n// `\n// SELECT local_id, uid, MAX(attestation_created_at)\n// FROM versions\n// WHERE seed_uid = '${relatedSeedUid}';\n// `,\n// ),\n// )\n// if (\n// latestVersionOfRelatedSeedQuery &&\n// latestVersionOfRelatedSeedQuery.rows &&\n// latestVersionOfRelatedSeedQuery.rows.length > 0\n// ) {\n// const latestVersionOfRelatedSeed =\n// latestVersionOfRelatedSeedQuery.rows[0]\n// console.log(\n// '[property/actors] [resolveRelatedValue] latestVersionOfRelatedSeed',\n// latestVersionOfRelatedSeed,\n// )\n// const storageIdQuery = await appDb.run(\n// sql.raw(\n// `\n// SELECT property_value, MAX(attestation_created_at), ref_resolved_display_value, ref_resolved_value\n// FROM metadata\n// WHERE seed_uid = '${relatedSeedUid}'\n// AND property_name = 'storageTransactionId';\n// `,\n// ),\n// )\n//\n// if (\n// storageIdQuery &&\n// storageIdQuery.rows &&\n// storageIdQuery.rows.length > 0\n// ) {\n// const storageId = storageIdQuery.rows[0][0]\n//\n// if (!storageId) {\n// console.error(\n// `storageId not found for ${propertyName} with relatedSeedUid ${relatedSeedUid}`,\n// )\n// }\n//\n// const refResolvedDisplayValue = storageIdQuery.rows[0][2]\n// let resolvedValue = storageIdQuery.rows[0][3]\n//\n// if (refResolvedDisplayValue && resolvedValue) {\n// sendBack({\n// type: 'resolvingRelatedValueSuccess',\n// refResolvedDisplayValue,\n// resolvedValue,\n// })\n// return\n// }\n//\n// console.log(\n// '[property/actors] [resolveRelatedValue] storageId',\n// storageId,\n// )\n//\n// const contentUrl = await convertTxIdToImageSrc(storageId)\n//\n// if (!contentUrl) {\n// throw new Error(\n// `contentUrl not found for ${propertyName} with relatedSeedUid ${relatedSeedUid}`,\n// )\n// }\n//\n// await appDb.run(\n// sql.raw(\n// `UPDATE metadata\n// SET ref_resolved_display_value = '${contentUrl}',\n// ref_resolved_value = '${storageId}'\n// WHERE seed_uid = '${relatedSeedUid}'\n// AND property_name = 'storageTransactionId';\n// `,\n// ),\n// )\n//\n// sendBack({\n// type: 'resolvingRelatedValueSuccess',\n// refResolvedDisplayValue: contentUrl,\n// resolvedValue: storageId,\n// })\n// }\n// }\n//\n// const versionUidQuery = await appDb.run(\n// sql.raw(\n// `\n// SELECT uid\n// FROM versions\n// WHERE seed_uid = '${relatedSeedUid}';\n// `,\n// ),\n// )\n//\n// if (\n// versionUidQuery &&\n// versionUidQuery.rows &&\n// versionUidQuery.rows.length > 0\n// ) {\n// const versionUids = versionUidQuery.rows.map((row) => row[0])\n// console.log(\n// '[property/actors] [resolveRelatedValue] versionUids',\n// versionUids,\n// )\n// const { itemProperties } = await easClient.request(GET_PROPERTIES, {\n// where: {\n// refUID: {\n// in: versionUids,\n// },\n// decodedDataJson: {\n// contains: 'storage_transaction_id',\n// },\n// },\n// })\n//\n// console.log(\n// '[property/actors] [resolveRelatedValue] itemProperties',\n// itemProperties,\n// )\n//\n// if (itemProperties && itemProperties.length > 0) {\n// await savePropertiesToDb(itemProperties)\n// }\n// }\n// }","import { metadata, MetadataType } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { eq } from 'drizzle-orm'\n\ntype UpdateMetadata = (\n metadataValues: Partial<MetadataType>,\n) => Promise<MetadataType>\n\nexport const updateMetadata: UpdateMetadata = async (metadataValues) => {\n const appDb = BaseDb.getAppDb()\n\n const { localId, ...rest } = metadataValues\n\n if (!localId) {\n throw new Error('No localId provided to updateMetadata')\n }\n\n await appDb.update(metadata).set(rest).where(eq(metadata.localId, localId))\n}\n","import { EventObject, fromCallback } from 'xstate'\nimport { and, eq, or, sql } from 'drizzle-orm'\nimport debug from 'debug'\nimport { fs } from '@zenfs/core'\nimport { metadata } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { updateMetadata } from '@/db/write/updateMetadata'\nimport { FromCallbackInput } from '@/types/machines'\nimport { PropertyMachineContext } from '@/types/property'\nimport path from 'path'\n\nconst logger = debug('app:property:actors:hydrateFromDb')\n\nexport const hydrateFromDb = fromCallback<\n EventObject,\n FromCallbackInput<PropertyMachineContext, EventObject>\n>(({ sendBack, input: { context } }) => {\n const {\n seedUid,\n seedLocalId,\n propertyName: propertyNameRaw,\n propertyRecordSchema,\n modelName,\n } = context\n\n let propertyName = propertyNameRaw\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.ref &&\n propertyRecordSchema.dataType === 'Relation' &&\n !propertyNameRaw.endsWith('Id')\n ) {\n propertyName = propertyNameRaw + 'Id'\n }\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.ref &&\n propertyRecordSchema.dataType === 'List' &&\n !propertyNameRaw.endsWith('Ids')\n ) {\n propertyName = propertyNameRaw + 'Ids'\n }\n\n const _hydrateFromDb = async () => {\n const appDb = BaseDb.getAppDb()\n\n const isRelation =\n propertyRecordSchema &&\n propertyRecordSchema.ref &&\n propertyRecordSchema.dataType === 'Relation'\n\n const whereClauses = []\n\n if (isRelation) {\n let missingPropertyNameVariant\n if (propertyName.endsWith('Id')) {\n missingPropertyNameVariant = propertyName.slice(0, -2)\n }\n if (!propertyName.endsWith('Id')) {\n missingPropertyNameVariant = propertyName + 'Id'\n }\n if (missingPropertyNameVariant) {\n whereClauses.push(\n or(\n eq(metadata.propertyName, propertyName),\n eq(metadata.propertyName, missingPropertyNameVariant),\n ),\n )\n }\n if (!missingPropertyNameVariant) {\n whereClauses.push(eq(metadata.propertyName, propertyName))\n }\n } else {\n whereClauses.push(eq(metadata.propertyName, propertyName))\n }\n\n if (seedUid) {\n whereClauses.push(eq(metadata.seedUid, seedUid))\n }\n\n if (seedLocalId) {\n whereClauses.push(eq(metadata.seedLocalId, seedLocalId))\n }\n\n const rows = await appDb\n .select()\n .from(metadata)\n .where(and(...whereClauses))\n .orderBy(sql.raw('COALESCE(attestation_created_at, created_at) DESC'))\n\n if (!rows || !rows.length) {\n return\n }\n\n const firstRow = rows[0]\n\n const {\n localId,\n uid,\n propertyName: propertyNameFromDb,\n propertyValue: propertyValueFromDb,\n seedLocalId: seedLocalIdFromDb,\n seedUid: seedUidFromDb,\n schemaUid: schemaUidFromDb,\n versionLocalId: versionLocalIdFromDb,\n versionUid: versionUidFromDb,\n refValueType,\n localStorageDir,\n } = firstRow\n\n let { refResolvedDisplayValue, refResolvedValue } = firstRow\n\n let propertyValueProcessed: string | string[] | undefined | null =\n propertyValueFromDb\n\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.refValueType === 'ImageSrc'\n ) {\n let shouldReadFromFile = true\n\n if (\n refResolvedValue &&\n refResolvedDisplayValue &&\n refResolvedDisplayValue.includes('http')\n ) {\n try {\n const response = await fetch(refResolvedDisplayValue, {\n method: 'HEAD',\n })\n\n // Check if the status is in the 200-299 range\n if (response.ok) {\n shouldReadFromFile = false\n }\n } catch (error) {\n shouldReadFromFile = true\n }\n }\n\n if (shouldReadFromFile) {\n let dir = localStorageDir\n if (\n !dir &&\n propertyRecordSchema &&\n propertyRecordSchema.refValueType === 'ImageSrc'\n ) {\n dir = 'images'\n }\n\n dir = dir!.replace(/^\\//, '')\n\n if (\n !refResolvedValue &&\n propertyValueFromDb &&\n propertyValueFromDb.length === 66\n ) {\n // Here the storageTransactionId is stored on a different record and\n // we want to add it as the refResolvedValue\n const storageTransactionQuery = await appDb\n .select({\n propertyValue: metadata.propertyValue,\n })\n .from(metadata)\n .where(\n and(\n eq(metadata.seedUid, propertyValueFromDb),\n eq(metadata.propertyName, 'storageTransactionId'),\n ),\n )\n\n if (storageTransactionQuery && storageTransactionQuery.length > 0) {\n const row = storageTransactionQuery[0]\n refResolvedValue = row.propertyValue\n await updateMetadata({\n localId,\n refResolvedValue,\n localStorageDir: '/images',\n })\n }\n }\n\n const dirPath = `/files/${dir}`\n const files = await fs.promises.readdir(dirPath)\n const matchingFiles = files.filter((file) => {\n return path.basename(file).includes(refResolvedValue!)\n })\n let fileExists = false\n let filename\n let filePath\n if (matchingFiles && matchingFiles.length > 0) {\n fileExists = true\n filename = matchingFiles[0]\n filePath = `/files/${dir}/${filename}`\n }\n if (fileExists && filename && filePath) {\n const fileContents = await fs.promises.readFile(filePath)\n const fileHandler = new File([fileContents], filename)\n refResolvedDisplayValue = URL.createObjectURL(fileHandler)\n await updateMetadata({\n localId,\n refResolvedValue: filename,\n })\n }\n }\n }\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.dataType === 'List' &&\n propertyRecordSchema.ref &&\n typeof propertyValueFromDb === 'string'\n ) {\n propertyValueProcessed = propertyValueFromDb.split(',')\n }\n\n sendBack({\n type: 'updateContext',\n localId,\n uid,\n propertyValue: propertyValueProcessed,\n seedLocalId: seedLocalIdFromDb,\n seedUid: seedUidFromDb,\n versionLocalId: versionLocalIdFromDb,\n versionUid: versionUidFromDb,\n schemaUid: schemaUidFromDb,\n refValueType,\n localStorageDir,\n refResolvedValue,\n refResolvedDisplayValue,\n renderValue: refResolvedDisplayValue,\n populatedFromDb: true,\n })\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.storageType &&\n propertyRecordSchema.storageType === 'ItemStorage'\n ) {\n const { Item } = await import(`@/browser/Item`)\n const item = await Item.find({\n seedLocalId,\n modelName,\n })\n if (item) {\n const filePath = `/files/${localStorageDir}/${refResolvedValue}`\n const exists = await fs.promises.exists(filePath)\n\n if (!exists) {\n return\n }\n\n const renderValue = await fs.promises.readFile(filePath, 'utf8')\n const property = item.properties[propertyName]\n property.getService().send({ type: 'updateContext', renderValue })\n return\n }\n }\n }\n\n _hydrateFromDb().then(() => {\n sendBack({ type: 'hydrateFromDbSuccess' })\n })\n})\n","import { versions, VersionsType } from '@/seedSchema'\nimport { and, eq } from 'drizzle-orm'\nimport { BaseDb } from '../Db/BaseDb'\n\ntype GetVersionDataProps = {\n localId?: string | null\n uid?: string\n seedLocalId?: string\n}\n\ntype GetVersionData = (\n props: GetVersionDataProps,\n) => Promise<VersionsType | undefined>\n\nexport const getVersionData: GetVersionData = async ({\n localId,\n seedLocalId,\n uid,\n}) => {\n const appDb = BaseDb.getAppDb()\n\n const whereClauses = []\n\n if (seedLocalId) {\n whereClauses.push(eq(versions.localId, seedLocalId))\n }\n\n if (localId) {\n whereClauses.push(eq(versions.localId, localId))\n }\n\n if (uid) {\n whereClauses.push(eq(versions.uid, uid))\n }\n\n const queryRows = await appDb\n .select()\n .from(versions)\n .where(and(...whereClauses))\n\n if (!queryRows || !queryRows.length) {\n return\n }\n\n return queryRows[0]\n}\n","import { escapeSqliteString } from '@/helpers/db'\nimport { metadata, MetadataType } from '@/seedSchema'\nimport { and, eq, sql } from 'drizzle-orm'\nimport { getSeedData } from '@/db/read/getSeedData'\nimport { getVersionData } from '@/db/read/getVersionData'\nimport { generateId } from '@/helpers'\nimport debug from 'debug'\nimport { eventEmitter } from '@/eventBus'\nimport { BaseDb } from '@/db/Db/BaseDb'\nconst logger = debug('app:write:updateItemPropertyValue')\n\nconst sendItemUpdateEvent = ({ modelName, seedLocalId, seedUid }) => {\n if (!modelName || (!seedLocalId && !seedUid)) {\n return\n }\n eventEmitter.emit(`item.${modelName}.${seedUid || seedLocalId}.update`)\n}\n\ntype UpdateItemPropertyValue = (props: Partial<MetadataType>) => Promise<void>\n\nexport const updateItemPropertyValue: UpdateItemPropertyValue = async ({\n localId,\n propertyName,\n newValue,\n seedUid,\n seedLocalId,\n modelName,\n refSeedType,\n refResolvedValue,\n refResolvedDisplayValue,\n versionLocalId,\n versionUid,\n schemaUid,\n localStorageDir,\n}) => {\n if (!localId && !seedLocalId) {\n logger(\n `[db/write] [updateItemPropertyValue] no propertyLocalId or seedLocalId for property: ${propertyName}`,\n )\n return\n }\n\n let safeNewValue = newValue\n\n if (\n typeof newValue === 'string' &&\n !refResolvedDisplayValue &&\n !refResolvedValue\n ) {\n safeNewValue = escapeSqliteString(newValue)\n }\n\n const appDb = BaseDb.getAppDb()\n\n const rows = await appDb\n .select()\n .from(metadata)\n .where(\n and(\n eq(metadata.propertyName, propertyName!),\n eq(metadata.seedLocalId, seedLocalId!),\n ),\n )\n .orderBy(sql.raw('COALESCE(attestation_created_at, created_at) DESC'))\n\n // const mostRecentRecordStatement = `SELECT local_id,\n // uid,\n // property_name,\n // property_value,\n // model_type,\n // seed_uid,\n // seed_local_id,\n // version_local_id,\n // version_uid,\n // schema_uid,\n // eas_data_type\n // FROM metadata\n // WHERE property_name = '${propertyName}'\n // AND seed_local_id = '${seedLocalId}'\n // ORDER BY COALESCE(attestation_created_at, created_at) DESC;`\n //\n // const { rows } = await runQueryForStatement(mostRecentRecordStatement)\n\n if (rows && rows.length > 0) {\n const {\n localId,\n uid,\n propertyName: propertyNameFromDb,\n propertyValue: propertyValueFromDb,\n modelType,\n seedUid,\n seedLocalId: seedLocalIdFromDb,\n versionLocalId,\n versionUid,\n schemaUid,\n easDataType,\n localStorageDir: localStorageDirFromDb,\n refSeedType: refSeedTypeFromDb,\n refResolvedValue: refResolvedValueFromDb,\n refResolvedDisplayValue: refResolvedDisplayValueFromDb,\n } = rows[0]\n\n if (\n propertyValueFromDb === newValue &&\n modelType === modelName?.toLowerCase() &&\n refSeedTypeFromDb === refSeedType &&\n refResolvedValueFromDb === refResolvedValue\n ) {\n logger(\n `[db/write] [updateItemPropertyValue] value is the same as most recent record for property: ${propertyNameFromDb}`,\n )\n return\n }\n\n // This means we already have a local-only record so we should just update that one\n if (!uid) {\n const updatePropertyStatement = `UPDATE metadata\n SET property_value = '${safeNewValue}',\n ref_seed_type = ${refSeedType ? `'${refSeedType}'` : 'NULL'},\n ref_resolved_value = ${refResolvedValue ? `'${refResolvedValue}'` : 'NULL'},\n ref_resolved_display_value = ${refResolvedDisplayValue ? `'${refResolvedDisplayValue}'` : 'NULL'},\n updated_at = ${Date.now()}\n WHERE local_id = '${localId}';`\n\n await appDb.run(sql.raw(updatePropertyStatement))\n\n sendItemUpdateEvent({ modelName, seedLocalId, seedUid })\n\n return\n }\n\n const seedDataFromDb = await getSeedData({ seedLocalId })\n const versionDataFromDb = await getVersionData({ localId: versionLocalId })\n\n // Here we don't have a local-only record so we need to create a new one\n const newLocalId = generateId()\n\n const newPropertyStatement = `INSERT INTO metadata (local_id,\n property_name,\n property_value,\n model_type,\n seed_uid,\n seed_local_id,\n version_local_id,\n version_uid,\n schema_uid,\n eas_data_type,\n ref_seed_type,\n ref_resolved_value,\n ref_resolved_display_value,\n local_storage_dir,\n created_at)\n VALUES ('${newLocalId}',\n '${propertyNameFromDb}',\n '${safeNewValue}',\n '${modelType || modelName?.toLowerCase()}',\n ${seedDataFromDb?.uid ? `'${seedDataFromDb.uid}'` : 'NULL'},\n '${seedLocalIdFromDb}',\n '${versionLocalId}',\n ${versionDataFromDb?.uid ? `'${versionDataFromDb.uid}'` : 'NULL'},\n '${schemaUid}',\n ${easDataType ? `'${easDataType}'` : 'NULL'},\n ${refSeedType ? `'${refSeedType}'` : 'NULL'},\n ${refResolvedValue ? `'${refResolvedValue}'` : 'NULL'},\n ${refResolvedDisplayValue ? `'${refResolvedDisplayValue}'` : 'NULL'},\n ${localStorageDir ? `'${localStorageDir}'` : 'NULL'},\n ${Date.now()});`\n\n await appDb.run(sql.raw(newPropertyStatement))\n\n sendItemUpdateEvent({ modelName, seedLocalId, seedUid })\n\n return\n }\n\n // Here there are no records for this property on this seed so we should create one\n\n const newLocalId = generateId()\n\n if (!seedUid) {\n const seedData = await getSeedData({ seedLocalId })\n if (seedData) {\n seedUid = seedData.uid\n }\n }\n\n if (!versionUid) {\n const versionData = await getVersionData({ localId: versionLocalId })\n if (versionData) {\n versionUid = versionData.uid\n }\n }\n\n const newPropertyStatement = `INSERT INTO metadata (local_id,\n property_name,\n property_value,\n model_type,\n seed_uid,\n seed_local_id,\n version_local_id,\n version_uid,\n schema_uid,\n ref_seed_type,\n ref_resolved_value,\n ref_resolved_display_value,\n local_storage_dir,\n created_at)\n VALUES ('${newLocalId}',\n '${propertyName}',\n '${safeNewValue}',\n '${modelName?.toLowerCase()}',\n ${seedUid ? `'${seedUid}'` : 'NULL'},\n '${seedLocalId}',\n '${versionLocalId}',\n ${versionUid ? `'${versionUid}'` : 'NULL'},\n '${schemaUid}',\n ${refSeedType ? `'${refSeedType}'` : 'NULL'},\n ${refResolvedValue ? `'${refResolvedValue}'` : 'NULL'},\n ${refResolvedDisplayValue ? `'${refResolvedDisplayValue}'` : 'NULL'},\n ${localStorageDir ? `'${localStorageDir}'` : 'NULL'},\n ${Date.now()});`\n\n await appDb.run(sql.raw(newPropertyStatement))\n\n sendItemUpdateEvent({ modelName, seedLocalId, seedUid })\n\n if (!seedLocalId && propertyName && modelName && newValue) {\n // TODO: Does this ever happen? If so, what should we do?\n }\n}\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput } from '@/types/machines'\nimport {\n ItemPropertyValueType,\n PropertyMachineContext,\n SaveValueToDbEvent,\n} from '@/types/property'\nimport { updateItemPropertyValue } from '@/db/write/updateItemPropertyValue'\n\nimport { getSchemaForItemProperty } from '@/helpers/getSchemaForItemProperty'\nimport { INTERNAL_DATA_TYPES } from '@/helpers/constants'\nimport { TypedData } from '@ethereum-attestation-service/eas-sdk/dist/offchain/typed-data-handler'\n\nexport const analyzeInput = fromCallback<\n EventObject,\n FromCallbackInput<PropertyMachineContext, SaveValueToDbEvent>\n>(({ sendBack, input: { context, event } }) => {\n const {\n localId,\n propertyName: propertyNameRaw,\n seedLocalId,\n versionLocalId,\n versionUid,\n propertyValue: existingValue,\n propertyRecordSchema,\n modelName,\n } = context\n\n let { schemaUid } = context\n\n let newValue: ItemPropertyValueType\n\n if (event) {\n newValue = event.newValue\n }\n\n if (existingValue === newValue) {\n sendBack({ type: 'saveValueToDbSuccess' })\n return\n }\n\n if (!propertyRecordSchema) {\n throw new Error('Missing propertyRecordSchema')\n }\n\n const _analyzeInput = async (): Promise<boolean> => {\n let propertyName = propertyNameRaw\n\n if (\n propertyRecordSchema.refValueType &&\n propertyRecordSchema.refValueType !== 'ImageSrc' &&\n propertyRecordSchema.dataType === 'Relation'\n ) {\n sendBack({\n type: 'saveRelation',\n newValue,\n })\n return false\n }\n\n if (\n propertyRecordSchema.refValueType === 'ImageSrc' ||\n propertyRecordSchema.dataType === 'ImageSrc'\n ) {\n sendBack({\n type: 'saveImageSrc',\n newValue,\n })\n return false\n }\n\n if (\n propertyRecordSchema.storageType &&\n propertyRecordSchema.storageType === 'ItemStorage'\n ) {\n sendBack({\n type: 'saveItemStorage',\n newValue,\n })\n return false\n }\n\n if (!schemaUid) {\n let easDataType\n\n if (propertyRecordSchema.dataType) {\n easDataType = INTERNAL_DATA_TYPES[propertyRecordSchema.dataType]\n .eas as TypedData['type']\n }\n\n const schemaFromEas = await getSchemaForItemProperty({\n propertyName,\n easDataType,\n })\n if (schemaFromEas) {\n schemaUid = schemaFromEas.id\n }\n }\n\n await updateItemPropertyValue({\n localId,\n propertyName,\n newValue,\n seedLocalId,\n versionLocalId,\n versionUid,\n modelName,\n schemaUid,\n })\n\n sendBack({\n type: 'updateContext',\n propertyValue: newValue,\n })\n\n return true\n }\n\n _analyzeInput().then((isDone) => {\n if (isDone) {\n sendBack({ type: 'saveValueToDbSuccess' })\n }\n })\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput } from '@/types/machines'\nimport {\n ItemPropertyValueType,\n PropertyMachineContext,\n SaveValueToDbEvent,\n} from '@/types/property'\nimport { createSeed } from '@/db/write/createSeed'\nimport { getDataTypeFromString, getMimeType } from '@/helpers'\nimport { createVersion } from '@/db/write/createVersion'\nimport { fs } from '@zenfs/core'\nimport { createMetadata } from '@/db/write/createMetadata'\nimport { updateItemPropertyValue } from '@/db/write/updateItemPropertyValue'\nimport { getSchemaUidForSchemaDefinition } from '@/stores/eas'\nimport { getSchemaUidForModel } from '@/db/read/getSchemaUidForModel'\nimport { BaseFileManager } from '@/helpers/FileManager/BaseFileManager'\nimport { eventEmitter } from '@/eventBus'\n\n\n\nconst readFileAsArrayBuffer = async (file: File): Promise<ArrayBuffer> => {\n return new Promise((resolve) => {\n const reader = new FileReader()\n reader.onload = async (e) => {\n const arrayBuffer = e.target.result as ArrayBuffer\n\n resolve(arrayBuffer)\n }\n\n reader.readAsArrayBuffer(file)\n })\n}\n\nconst fetchImage = async (url: string) => {\n const response = await fetch(url)\n const mimeType = response.headers.get('Content-Type')\n const imageBuffer = await response.arrayBuffer()\n const bytes = new Uint8Array(imageBuffer)\n\n const binaryString = bytes.reduce(\n (acc, byte) => acc + String.fromCharCode(byte),\n '',\n )\n\n let base64 = btoa(binaryString)\n\n if (mimeType) {\n base64 = `data:${mimeType};base64,${base64}`\n }\n\n return base64\n}\n\nlet imageSchemaUid: string | undefined\n\nexport const saveImageSrc = fromCallback<\n EventObject,\n FromCallbackInput<PropertyMachineContext, SaveValueToDbEvent>\n>(({ sendBack, input: { context, event } }) => {\n const {\n localId,\n propertyName: propertyNameRaw,\n propertyValue: existingValue,\n propertyRecordSchema,\n modelName,\n seedLocalId,\n seedUid,\n versionLocalId,\n versionUid,\n } = context\n\n let { schemaUid } = context\n\n let newValue: ItemPropertyValueType\n\n if (event) {\n newValue = event.newValue\n }\n\n if (existingValue === newValue) {\n sendBack({ type: 'saveValueToDbSuccess' })\n return\n }\n\n const _saveImageSrc = async (): Promise<void> => {\n let propertyName = propertyNameRaw\n\n if (!propertyNameRaw.endsWith('Id')) {\n propertyName = `${propertyName}Id`\n }\n\n let newValueType\n let fileData: string | ArrayBuffer | undefined\n let mimeType\n let fileName\n\n if (!imageSchemaUid) {\n imageSchemaUid = await getSchemaUidForModel('Image')\n }\n\n if (typeof newValue === 'string') {\n newValueType = getDataTypeFromString(newValue)\n }\n\n if (newValueType === 'imageBase64') {\n mimeType = getMimeType(newValue as string)\n const base64Data = (newValue as string).split(',')[1] // Strip the Base64 prefix\n const binaryString = atob(base64Data)\n\n const binaryLength = binaryString.length\n const binaryArray = new Uint8Array(binaryLength)\n for (let i = 0; i < binaryLength; i++) {\n binaryArray[i] = binaryString.charCodeAt(i)\n }\n fileData = binaryArray.buffer\n }\n\n if (newValueType === 'url') {\n fileData = await fetchImage(newValue as string)\n }\n\n if (newValue instanceof File) {\n fileName = newValue.name\n mimeType = newValue.type\n fileData = await readFileAsArrayBuffer(newValue)\n }\n\n if (!fileData) {\n throw new Error('No file data found')\n }\n\n const newImageSeedLocalId = await createSeed({\n type: 'image',\n })\n\n if (!fileName) {\n fileName = newImageSeedLocalId\n if (mimeType) {\n fileName += `.${mimeType.split('/')[1]}`\n }\n }\n\n const filePath = `/files/images/${fileName}`\n\n const imageVersionLocalId = await createVersion({\n seedLocalId: newImageSeedLocalId,\n seedType: 'image',\n })\n\n if (fileData instanceof ArrayBuffer) {\n try {\n await fs.promises.writeFile(filePath, new Uint8Array(fileData))\n } catch (e) {\n fs.writeFileSync(filePath, new Uint8Array(fileData))\n eventEmitter.emit('file-saved', filePath)\n }\n }\n\n if (typeof fileData === 'string') {\n try {\n await fs.promises.writeFile(filePath, fileData)\n } catch (e) {\n fs.writeFileSync(filePath, fileData)\n eventEmitter.emit('file-saved', filePath)\n }\n }\n\n const refResolvedDisplayValue = await BaseFileManager.getContentUrlFromPath(filePath)\n\n if (!schemaUid) {\n schemaUid = getSchemaUidForSchemaDefinition(propertyName)\n }\n\n if (!localId) {\n await createMetadata(\n {\n propertyName,\n propertyValue: newImageSeedLocalId,\n seedLocalId,\n seedUid,\n versionLocalId,\n versionUid,\n modelName,\n schemaUid,\n refSeedType: 'image',\n refModelUid: imageSchemaUid,\n refSchemaUid: imageSchemaUid,\n refResolvedDisplayValue,\n refResolvedValue: fileName,\n localStorageDir: '/images',\n easDataType: 'bytes32',\n },\n propertyRecordSchema,\n )\n }\n\n if (localId) {\n await updateItemPropertyValue({\n localId: localId,\n propertyName: propertyNameRaw,\n newValue: newImageSeedLocalId,\n seedLocalId,\n versionLocalId,\n modelName,\n schemaUid,\n refSeedType: 'image',\n refResolvedDisplayValue,\n refResolvedValue: fileName,\n refModelUid: imageSchemaUid,\n refSchemaUid: imageSchemaUid,\n localStorageDir: '/images',\n easDataType: 'bytes32',\n })\n }\n\n sendBack({\n type: 'updateContext',\n propertyValue: newImageSeedLocalId,\n refSeedType: 'image',\n refSchemaUid: imageSchemaUid,\n renderValue: refResolvedDisplayValue,\n refResolvedDisplayValue: refResolvedDisplayValue,\n refResolvedValue: fileName,\n localStorageDir: '/images',\n easDataType: 'bytes32',\n })\n }\n\n _saveImageSrc().then(() => {\n sendBack({ type: 'saveImageSrcSuccess' })\n })\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput } from '@/types/machines'\nimport {\n ItemPropertyValueType,\n PropertyMachineContext,\n SaveValueToDbEvent,\n} from '@/types/property'\nimport { getDataTypeFromString } from '@/helpers'\n\nexport const saveRelation = fromCallback<\n EventObject,\n FromCallbackInput<PropertyMachineContext, SaveValueToDbEvent>\n>(({ sendBack, input: { context, event } }) => {\n const {\n localId,\n propertyName: propertyNameRaw,\n versionLocalId,\n seedUid,\n seedLocalId,\n propertyValue: existingValue,\n propertyRecordSchema,\n } = context\n\n if (!propertyRecordSchema) {\n throw new Error('Missing propertyRecordSchema')\n }\n\n let newValue: ItemPropertyValueType\n\n if (event) {\n newValue = event.newValue\n }\n\n const _saveRelation = async (): Promise<boolean> => {\n let refResolvedDisplayValue\n let refSeedType\n let propertyName = propertyNameRaw\n let versionLocalIdToSave = versionLocalId\n\n const refResolvedValue = newValue\n\n if (!propertyName.endsWith('Id')) {\n propertyName = `${propertyName}Id`\n }\n\n let newValueType\n\n if (typeof newValue === 'string') {\n newValueType = getDataTypeFromString(newValue)\n }\n\n if (newValue instanceof File) {\n newValueType = 'file'\n }\n\n if (propertyRecordSchema.dataType === 'ImageSrc') {\n sendBack({\n type: 'saveImageSrc',\n newValue,\n newValueType,\n })\n return false\n }\n\n return true\n\n // let fileType\n //\n // const dirs = await fs.promises.readdir('/files')\n //\n // for (const dir of dirs) {\n // const files = await fs.promises.readdir(`/files/${dir}`)\n // if (newValue && files.includes(newValue as string)) {\n // fileType = dir\n // break\n // }\n // }\n //\n // if (newValue && fileType === 'images') {\n // const filePath = `/files/images/${newValue}`\n // refResolvedDisplayValue = await getContentUrlFromPath(filePath)\n // refSeedType = 'image'\n // newValue = await createSeed({\n // type: refSeedType,\n // })\n // await createVersion({\n // seedLocalId,\n // seedUid,\n // seedType: refSeedType,\n // })\n // }\n //\n // await updateItemPropertyValue({\n // propertyLocalId: localId,\n // propertyName,\n // newValue,\n // seedLocalId,\n // refSeedType,\n // refResolvedValue,\n // refResolvedDisplayValue,\n // versionLocalId,\n // modelName: itemModelName,\n // schemaUid,\n // })\n }\n\n _saveRelation().then((isDone) => {\n if (isDone) {\n sendBack({ type: 'saveRelationSuccess' })\n }\n })\n})\n","import { BaseDb } from '@/db/Db/BaseDb'\nimport { metadata, MetadataType } from '@/seedSchema'\nimport { and, eq, getTableColumns } from 'drizzle-orm'\n\ntype GetItemPropertyProps = Partial<MetadataType>\n\ntype GetItemPropertyData = (\n props: GetItemPropertyProps,\n) => Promise<Partial<MetadataType>>\n\nexport const getItemPropertyData: GetItemPropertyData = async (props) => {\n const appDb = BaseDb.getAppDb()\n\n const whereClauses = []\n\n const tableColumns = getTableColumns(metadata)\n\n for (const [propertyName, propertyValue] of Object.entries(props)) {\n if (Object.keys(tableColumns).includes(propertyName)) {\n whereClauses.push(eq(tableColumns[propertyName], propertyValue))\n }\n }\n\n const queryRows = await appDb\n .select()\n .from(metadata)\n .where(and(...whereClauses))\n\n if (!queryRows || queryRows.length === 0) {\n return\n }\n\n return queryRows[0]\n}\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput } from '@/types/machines'\nimport {\n ItemPropertyValueType,\n PropertyMachineContext,\n SaveValueToDbEvent,\n} from '@/types/property'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { getItemPropertyData } from '@/db/read/getItemProperty'\nimport { getItemData } from '@/db/read/getItemData'\nimport { and, eq } from 'drizzle-orm'\nimport { metadata } from '@/seedSchema'\nimport { createMetadata } from '@/db/write/createMetadata'\nimport { fs } from '@zenfs/core'\n\nexport const saveItemStorage = fromCallback<\n EventObject,\n FromCallbackInput<PropertyMachineContext, SaveValueToDbEvent>\n>(({ sendBack, input: { context, event } }) => {\n const {\n localId,\n seedLocalId,\n seedUid,\n propertyName,\n propertyRecordSchema,\n modelName,\n propertyValue: existingValue,\n } = context\n\n if (!propertyRecordSchema) {\n throw new Error('Missing propertyRecordSchema')\n }\n\n let newValue: ItemPropertyValueType\n\n if (event) {\n newValue = event.newValue\n }\n\n if (existingValue === newValue) {\n sendBack({ type: 'saveValueToDbSuccess' })\n return\n }\n\n const _saveItemStorage = async (): Promise<boolean> => {\n // Save value to file\n const appDb = BaseDb.getAppDb()\n let propertyData\n\n if (localId) {\n propertyData = await getItemPropertyData({\n localId,\n })\n }\n\n if (!localId && seedLocalId) {\n const itemData = await getItemData({\n seedLocalId,\n })\n if (itemData) {\n const whereClauses = [\n eq(metadata.propertyName, propertyName),\n eq(metadata.seedLocalId, seedLocalId),\n ]\n\n if (itemData.latestVersionLocalId) {\n whereClauses.push(\n eq(metadata.versionLocalId, itemData.latestVersionLocalId),\n )\n }\n\n const queryRows = await appDb\n .select()\n .from(metadata)\n .where(and(...whereClauses))\n\n if (queryRows && queryRows.length) {\n propertyData = queryRows[0]\n }\n\n if (!propertyData) {\n const propertyDataRows = await createMetadata(\n {\n propertyName,\n modelType: modelName.toLowerCase(),\n seedLocalId,\n seedUid,\n versionLocalId: itemData.latestVersionLocalId,\n versionUid: itemData.latestVersionUid,\n localStorageDir: propertyRecordSchema.localStorageDir,\n refValueType: 'file',\n },\n propertyRecordSchema,\n )\n\n propertyData = propertyDataRows[0]\n }\n\n // propertyData = {\n // propertyName,\n // seedLocalId,\n // seedUid,\n // versionLocalId: itemData.latestVersionLocalId,\n // versionUid: itemData.latestVersionUid,\n // schemaUid: itemData.schemaUid,\n // }\n }\n }\n\n const localStorageDir =\n propertyRecordSchema.localStorageDir || propertyData.localStorageDir\n const fileName =\n propertyData.refResolvedValue ||\n `${propertyData.seedUid || propertyData.seedLocalId}${propertyRecordSchema.filenameSuffix}`\n\n if (!localStorageDir || !fileName) {\n throw new Error(\n `Missing localStorageDir: ${localStorageDir} or fileName: ${fileName}`,\n )\n }\n\n const filePath = `/files/${localStorageDir}/${fileName}`\n try {\n await fs.promises.writeFile(filePath, newValue)\n } catch (error) {\n fs.writeFileSync(filePath, newValue)\n }\n\n await appDb\n .update(metadata)\n .set({\n refResolvedValue: fileName,\n })\n .where(eq(metadata.localId, propertyData.localId))\n\n sendBack({\n type: 'updateContext',\n renderValue: newValue,\n })\n\n return true\n }\n\n _saveItemStorage().then((success) => {\n if (success) {\n sendBack({ type: 'saveItemStorageSuccess' })\n }\n })\n})\n","import { assign, setup } from 'xstate'\nimport { PropertyMachineContext } from '@/types'\n\nimport { resolveRemoteStorage } from '@/ItemProperty/service/actors/resolveRemoteStorage'\nimport { waitForDb } from '@/ItemProperty/service/actors/waitForDb'\nimport { initialize } from '@/ItemProperty/service/actors/initialize'\nimport { resolveRelatedValue } from '@/ItemProperty/service/actors/resolveRelatedValue'\nimport { hydrateFromDb } from '@/ItemProperty/service/actors/hydrateFromDb'\nimport {\n saveImageSrc,\n saveItemStorage,\n saveRelation,\n} from '@/ItemProperty/service/actors/saveValueToDb'\nimport { analyzeInput } from '@/ItemProperty/service/actors/saveValueToDb/analyzeInput' // import { updateMachineContext } from '@/helpers'\n// import { updateMachineContext } from '@/helpers'\n\nexport const propertyMachine = setup({\n types: {\n context: {} as PropertyMachineContext,\n input: {} as PropertyMachineContext,\n },\n // actions: {\n // updateContext: updateMachineContext,\n // },\n actors: {\n waitForDb,\n hydrateFromDb,\n initialize,\n resolveRelatedValue,\n resolveRemoteStorage,\n analyzeInput,\n saveImageSrc,\n saveRelation,\n saveItemStorage,\n },\n}).createMachine({\n id: 'itemProperty',\n initial: 'waitingForDb',\n context: ({ input }) => input as PropertyMachineContext,\n on: {\n // reload: '.hydratingFromDb',\n save: {\n actions: assign({\n isSaving: true,\n }),\n target: '.saving',\n },\n updateContext: {\n actions: assign(({ context, event }) => {\n const newContext = Object.assign({}, context)\n\n for (let i = 0; i < Object.keys(event).length; i++) {\n const key = Object.keys(event)[i]\n if (key === 'type') {\n continue\n }\n newContext[key] = event[key]\n }\n return newContext\n }),\n },\n },\n states: {\n idle: {},\n waitingForDb: {\n on: {\n waitForDbSuccess: {\n target: 'hydratingFromDb',\n actions: assign({\n isDbReady: true,\n }),\n },\n },\n invoke: {\n src: 'waitForDb',\n input: ({ context }) => ({ context }),\n },\n },\n hydratingFromDb: {\n on: {\n hydrateFromDbSuccess: 'initializing',\n },\n invoke: {\n src: 'hydrateFromDb',\n input: ({ context }) => ({ context }),\n },\n },\n initializing: {\n on: {\n initializeSuccess: 'idle',\n isRelatedProperty: {\n target: 'resolvingRelatedValue',\n },\n hasRemoteBackup: {\n target: 'resolvingRemoteStorage',\n },\n },\n invoke: {\n src: 'initialize',\n input: ({ context, event }) => ({ context, event }),\n },\n },\n resolvingRelatedValue: {\n on: {\n resolvingRelatedValueSuccess: {\n target: 'idle',\n actions: assign({\n refResolvedDisplayValue: ({ event }) =>\n event.refResolvedDisplayValue,\n refResolvedValue: ({ event }) => event.refResolvedValue,\n }),\n },\n resolvingRelatedValueDone: {\n target: 'idle',\n },\n },\n invoke: {\n src: 'resolveRelatedValue',\n input: ({ context }) => ({ context }),\n },\n },\n resolvingRemoteStorage: {\n on: {\n resolveRemoteStorageSuccess: {\n target: 'idle',\n },\n },\n invoke: {\n src: 'resolveRemoteStorage',\n input: ({ context }) => ({ context }),\n },\n },\n saving: {\n initial: 'analyzingInput',\n states: {\n analyzingInput: {\n on: {\n saveValueToDbSuccess: {\n target: 'doneSaving',\n },\n saveImageSrc: 'savingImageSrc',\n saveRelation: 'savingRelation',\n saveItemStorage: 'savingItemStorage',\n },\n invoke: {\n src: 'analyzeInput',\n input: ({ context, event }) => ({ context, event }),\n },\n },\n savingImageSrc: {\n on: {\n saveImageSrcSuccess: 'doneSaving',\n },\n invoke: {\n src: 'saveImageSrc',\n input: ({ context, event }) => ({ context, event }),\n },\n },\n savingRelation: {\n on: {\n saveRelationSuccess: 'doneSaving',\n },\n invoke: {\n src: 'saveRelation',\n input: ({ context, event }) => ({ context, event }),\n },\n },\n savingItemStorage: {\n on: {\n saveItemStorageSuccess: 'doneSaving',\n },\n invoke: {\n src: 'saveItemStorage',\n input: ({ context, event }) => ({ context, event }),\n },\n },\n doneSaving: {\n type: 'final',\n },\n },\n onDone: {\n target: 'idle',\n actions: assign(({ context }) => {\n return {\n isSaving: false,\n }\n }),\n },\n },\n },\n\n // conflict: {\n // on: {\n // resolveConflict: {\n // target: 'saving',\n // actions: assign({\n // data: ({ context, event }) => event.output,\n // }),\n // },\n // },\n // },\n})\n","import { PropertyData } from \"@/types\"\nimport { BaseDb } from \"@/db/Db/BaseDb\"\nimport { metadata, MetadataType } from \"@/seedSchema\"\nimport { or, eq, and, sql } from \"drizzle-orm\"\nimport { startCase } from \"lodash-es\"\nimport { GetPropertyDataOptions } from \"@/types/db\"\n\n\nexport const getPropertyData = async ({\n propertyName,\n seedLocalId,\n seedUid,\n}: GetPropertyDataOptions): Promise<PropertyData | undefined> => {\n const appDb = BaseDb.getAppDb()\n\n const whereClauses: any[] = [\n or(\n eq(metadata.propertyName, propertyName),\n eq(metadata.propertyName, propertyName + 'Id'),\n eq(metadata.propertyName, propertyName + 'Ids'),\n ),\n ]\n\n if (seedLocalId) {\n whereClauses.push(eq(metadata.seedLocalId, seedLocalId))\n }\n\n if (seedUid) {\n whereClauses.push(eq(metadata.seedUid, seedUid))\n }\n\n const rows = (await appDb\n .select()\n .from(metadata)\n .where(and(...whereClauses))\n .orderBy(\n sql.raw(`COALESCE(attestation_created_at, created_at) DESC`),\n )) as MetadataType[]\n\n if (!rows || rows.length === 0) {\n return\n }\n\n const row = rows[0]\n\n return {\n ...row,\n modelName: startCase(row.modelType),\n }\n} ","import { ActorRefFrom, createActor, SnapshotFrom, Subscription, waitFor } from 'xstate'\nimport { BehaviorSubject, Subscriber } from 'rxjs'\nimport { Static } from '@sinclair/typebox'\nimport { IItemProperty } from '@/interfaces/IItemProperty'\nimport { immerable } from 'immer'\nimport { CreatePropertyInstanceProps, PropertyMachineContext } from '@/types'\nimport { getModel } from '@/stores/modelClass'\nimport { propertyMachine } from './service/propertyMachine'\nimport { internalPropertyNames } from '@/helpers/constants'\nimport debug from 'debug'\nimport pluralize from 'pluralize'\nimport { eventEmitter } from '@/eventBus'\nimport fs from '@zenfs/core'\nimport { getPropertyData } from '@/db/read/getPropertyData'\nimport { getCorrectId } from '@/helpers'\nimport { TProperty } from '@/schema'\n\nconst logger = debug('app:property:class')\n\ntype ItemPropertyService = ActorRefFrom<typeof propertyMachine>\ntype ItemPropertySnapshot = SnapshotFrom<typeof propertyMachine>\n\ntype ItemPropertyFindProps = {\n propertyName: string\n propertyLocalId?: string\n seedLocalId?: string\n seedUid?: string\n}\n\nexport abstract class BaseItemProperty<PropertyType> implements IItemProperty<PropertyType> {\n protected static instanceCache: Map<\n string,\n { instance: IItemProperty<any>; refCount: number }\n > = new Map()\n protected readonly _service: ItemPropertyService\n protected _subject: BehaviorSubject<any>\n protected readonly _isRelation: boolean = false\n protected readonly _isList: boolean = false\n protected readonly _alias: string | undefined\n protected _subscription: Subscription\n protected _dataType: string | undefined\n protected _schemaUid: string | undefined\n [immerable] = true\n\n constructor(initialValues: Partial<CreatePropertyInstanceProps>) {\n const { modelName, propertyName, propertyValue, seedLocalId, seedUid, versionLocalId, versionUid, storageTransactionId, schemaUid } = initialValues\n\n if (!modelName) {\n throw new Error('Model name is required')\n }\n\n const ModelClass = getModel(modelName)\n\n if (!ModelClass) {\n throw new Error(`Model ${modelName} not found`)\n }\n\n if (!propertyName) {\n throw new Error(`Property name not provided`)\n }\n\n const serviceInput: Partial<PropertyMachineContext> = {\n propertyValue,\n propertyName,\n seedLocalId,\n seedUid,\n versionLocalId,\n versionUid,\n modelName: modelName,\n storageTransactionId,\n propertyRecordSchema: ModelClass.schema[propertyName],\n schemaUid,\n }\n\n\n\n if (!internalPropertyNames.includes(propertyName)) {\n let propertyNameWithoutId\n\n const propertyRecordSchema =\n ModelClass.schema[propertyNameWithoutId || propertyName]\n if (propertyRecordSchema) {\n this._dataType = propertyRecordSchema.dataType\n\n serviceInput.propertyRecordSchema = propertyRecordSchema\n\n if (propertyRecordSchema.dataType === 'Relation') {\n this._isRelation = true\n }\n\n if (\n propertyRecordSchema.dataType === 'List' &&\n propertyRecordSchema.ref\n ) {\n this._isList = true\n this._isRelation = true\n\n if (propertyValue) {\n try {\n serviceInput.propertyValue = JSON.parse(propertyValue)\n } catch (e) {\n logger('List property value is not JSON', e)\n }\n }\n\n const propertyNameSingular = pluralize(propertyName!, 1)\n\n this._alias = propertyName\n\n serviceInput.propertyName = `${propertyNameSingular}${propertyRecordSchema.ref}Ids`\n }\n\n if (!this._alias && propertyNameWithoutId) {\n this._alias = propertyNameWithoutId\n }\n }\n }\n\n serviceInput.isRelation = this._isRelation\n\n this._subject = new BehaviorSubject(propertyValue)\n this._service = createActor(propertyMachine, {\n input: serviceInput,\n })\n\n this._subscription = this._service.subscribe(\n async (snapshot: ItemPropertySnapshot) => {\n if (!snapshot || !snapshot.context) {\n return\n }\n\n const { context } = snapshot\n const { propertyRecordSchema } = context\n\n if (context.seedLocalId) {\n const cacheKey = BaseItemProperty.cacheKey(\n context.seedLocalId,\n context.propertyName,\n )\n if (!BaseItemProperty.instanceCache.has(cacheKey)) {\n BaseItemProperty.instanceCache.set(cacheKey, {\n instance: this,\n refCount: 1,\n })\n }\n }\n\n let renderValue\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.storageType &&\n propertyRecordSchema.storageType === 'ItemStorage' &&\n context.refResolvedValue &&\n context.localStorageDir\n ) {\n const filePath = `/files/${context.localStorageDir}/${context.refResolvedValue}`\n try {\n const exists = await fs.promises.exists(filePath)\n if (exists) {\n renderValue = await fs.promises.readFile(filePath, 'utf-8')\n }\n if (!exists) {\n renderValue = 'No file found'\n }\n } catch (e) {\n logger(\n `[ItemProperty] [${context.seedLocalId}] [${context.propertyName}] [storageType] error`,\n e,\n )\n renderValue = 'No file found'\n }\n }\n\n if (!renderValue) {\n renderValue = context.renderValue || context.propertyValue\n }\n\n let transformedPropertyName = propertyName\n\n const skipTransform =\n internalPropertyNames.includes(propertyName) || !!this._alias\n\n if (!skipTransform && transformedPropertyName.endsWith('Id')) {\n transformedPropertyName = transformedPropertyName.slice(0, -2)\n }\n\n if (!skipTransform && transformedPropertyName.endsWith('Ids')) {\n transformedPropertyName = transformedPropertyName.slice(0, -3)\n }\n\n if (skipTransform && this._alias) {\n transformedPropertyName = this._alias\n }\n\n if (skipTransform && !this._alias) {\n }\n\n if (this._subject.value === renderValue) {\n return\n }\n\n this._subject.next(renderValue)\n if (context.seedLocalId) {\n eventEmitter.emit(`item.${modelName}.${context.seedLocalId}.update`)\n }\n if (context.seedUid) {\n eventEmitter.emit(`item.${modelName}.${context.seedUid}.update`)\n }\n },\n )\n\n this._service.start()\n }\n\n static PlatformClass: typeof BaseItemProperty\n\n static setPlatformClass(platformClass: typeof BaseItemProperty) {\n this.PlatformClass = platformClass\n }\n\n static create(\n props: Partial<CreatePropertyInstanceProps>,\n ): IItemProperty<any> | undefined {\n const { propertyName, seedLocalId, seedUid, versionLocalId, versionUid } =\n props\n if (!propertyName || (!seedLocalId && !seedUid)) {\n return\n }\n const cacheKey = this.cacheKey(\n (seedUid || seedLocalId) as string,\n propertyName,\n )\n if (seedLocalId && propertyName) {\n if (this.instanceCache.has(cacheKey)) {\n const { instance, refCount } = this.instanceCache.get(cacheKey)!\n this.instanceCache.set(cacheKey, {\n instance,\n refCount: refCount + 1,\n })\n return instance\n }\n if (!this.instanceCache.has(cacheKey)) {\n const newInstance = new this(props)\n this.instanceCache.set(cacheKey, {\n instance: newInstance,\n refCount: 1,\n })\n return newInstance\n }\n }\n if (seedUid && propertyName) {\n if (this.instanceCache.has(cacheKey)) {\n const { instance, refCount } = this.instanceCache.get(cacheKey)!\n this.instanceCache.set(cacheKey, { instance, refCount: refCount + 1 })\n return instance\n }\n if (!this.instanceCache.has(cacheKey)) {\n const newInstance = new this(props)\n this.instanceCache.set(cacheKey, { instance: newInstance, refCount: 1 })\n return newInstance\n }\n }\n return new this(props)\n }\n\n static async find({\n propertyName,\n seedLocalId,\n seedUid,\n }: ItemPropertyFindProps): Promise<IItemProperty<any> | undefined> {\n if ((!seedLocalId && !seedUid) || !propertyName) {\n return\n }\n const cacheKeyId = seedUid || seedLocalId\n const cacheKey = BaseItemProperty.cacheKey(cacheKeyId!, propertyName)\n if (this.instanceCache.has(cacheKey)) {\n const { instance, refCount } = this.instanceCache.get(cacheKey)!\n this.instanceCache.set(cacheKey, {\n instance,\n refCount: refCount + 1,\n })\n return instance\n }\n const propertyData = await getPropertyData({\n propertyName,\n seedLocalId,\n seedUid,\n })\n if (!propertyData) {\n return\n }\n return BaseItemProperty.create(propertyData)\n }\n\n static cacheKey(seedLocalIdOrUid: string, propertyName: string): string {\n const { uid, localId } = getCorrectId(seedLocalIdOrUid)\n return `Item_${uid || localId}_${propertyName}`\n }\n\n getService() {\n return this._service\n }\n\n private _getSnapshot(): ItemPropertySnapshot {\n return this._service.getSnapshot() as ItemPropertySnapshot\n }\n\n get localId() {\n return this._getSnapshot().context.localId\n }\n\n get uid() {\n return this._getSnapshot().context.uid\n }\n\n get seedLocalId() {\n return this._getSnapshot().context.seedLocalId\n }\n\n get seedUid() {\n return this._getSnapshot().context.seedUid\n }\n\n get schemaUid() {\n return this._getSnapshot().context.schemaUid\n }\n\n get propertyName() {\n if (this._alias) {\n return this._alias\n }\n return this._getSnapshot().context.propertyName\n }\n\n get modelName() {\n return this._getSnapshot().context.modelName\n }\n\n get propertyDef(): Static<typeof TProperty> | undefined {\n return this._getSnapshot().context.propertyRecordSchema\n }\n\n get localStoragePath(): string | void {\n if (this.propertyDef && this.propertyDef.localStorageDir) {\n return `/files${this.propertyDef.localStorageDir}/${this._getSnapshot().context.refResolvedValue}`\n }\n if (this._getSnapshot().context.localStorageDir) {\n return `/files${this._getSnapshot().context.localStorageDir}/${this._getSnapshot().context.refResolvedValue}`\n }\n }\n\n get versionLocalId(): string | undefined {\n return this._getSnapshot().context.versionLocalId\n }\n\n get status() {\n return this._getSnapshot().value\n }\n\n get alias() {\n return this._alias\n }\n\n get value() {\n // logger(\n // `[XXXXXXXXXX] [value] [get] subjectValue: ${this._subject.value} serviceValue: ${this._service.getSnapshot().context.renderValue}`,\n // )\n return this._subject.value\n }\n\n set value(value: any) {\n if (this._subject.value === value) {\n return\n }\n const context = this._service.getSnapshot().context\n if (!context.propertyRecordSchema) {\n this._subject.next(value)\n }\n this._service.send({\n type: 'save',\n newValue: value,\n })\n }\n\n get published(): boolean {\n return !!this._getSnapshot().context.uid\n }\n\n subscribe(callback: Partial<Subscriber<any>>) {\n return this._subject.subscribe(callback)\n }\n\n async save(): Promise<void> {\n await waitFor(\n this._service,\n (snapshot) => !snapshot.context.isSaving && snapshot.value === 'idle',\n {\n timeout: 10_000,\n },\n )\n // return new Promise((resolve) => {\n // const saveSub = this._service.subscribe((snapshot) => {\n // if (!snapshot.context.isSaving) {\n // saveSub.unsubscribe()\n // resolve()\n // }\n // })\n // })\n }\n\n unload() {\n this._service.stop()\n }\n} ","import { UploadProperty } from '@/db/read/getPublishUploads'\nimport { IItem } from '@/interfaces'\n\nexport const getSegmentedItemProperties = (item: IItem<any>) => {\n const itemBasicProperties = []\n const itemRelationProperties = []\n const itemListProperties = []\n const itemUploadProperties: UploadProperty[] = []\n const itemStorageProperties = []\n let itemStorageTransactionProperty: UploadProperty | undefined\n\n for (const itemProperty of Object.values(item.properties)) {\n if (!itemProperty.propertyDef) {\n continue\n }\n\n const isItemStorage =\n itemProperty.propertyDef.storageType &&\n itemProperty.propertyDef.storageType === 'ItemStorage'\n\n const isImageSrc =\n itemProperty.propertyDef.dataType === 'Relation' &&\n itemProperty.propertyDef.refValueType === 'ImageSrc'\n\n const isStorageTransaction =\n itemProperty.propertyName === 'storageTransactionId'\n\n if (itemProperty.propertyDef.dataType === 'Relation') {\n itemRelationProperties.push(itemProperty)\n continue\n }\n\n if (itemProperty.propertyDef.dataType === 'List') {\n itemListProperties.push(itemProperty)\n continue\n }\n\n if (isItemStorage) {\n itemStorageProperties.push(itemProperty)\n continue\n }\n\n if (isStorageTransaction) {\n itemStorageTransactionProperty = { itemProperty, childProperties: [] }\n continue\n }\n\n itemBasicProperties.push(itemProperty)\n }\n\n if (itemStorageTransactionProperty && itemStorageProperties.length > 0) {\n itemStorageTransactionProperty.childProperties = itemStorageProperties\n }\n\n if (itemStorageTransactionProperty) {\n itemUploadProperties.push(itemStorageTransactionProperty)\n }\n\n return {\n itemBasicProperties,\n itemRelationProperties,\n itemListProperties,\n itemUploadProperties,\n }\n}\n","import Transaction from 'arweave'\nimport { CreateTransactionInterface } from 'arweave/web'\nimport { getArweave } from '@/helpers/ArweaveClient'\nimport { fs } from '@zenfs/core'\nimport { getCorrectId } from '@/helpers'\nimport { getSegmentedItemProperties } from '@/helpers/getSegmentedItemProperties'\nimport debug from 'debug'\nimport { IItem, IItemProperty } from '@/interfaces'\nimport { getContentHash } from '@/helpers'\nimport { BaseItem } from '@/Item/BaseItem'\n\nconst logger = debug('app:item:getPublishUploads')\n\n\nexport const prepareArweaveTransaction = async (\n data: string | Uint8Array,\n contentHash: string | undefined,\n): Promise<Transaction> => {\n const transactionData: Partial<CreateTransactionInterface> = {\n data,\n tags: [],\n }\n\n const tx = await getArweave()!.createTransaction(transactionData)\n\n if (contentHash) {\n logger('contentHash', contentHash)\n logger('adding content hash tag to tx.id:', tx.id)\n tx.addTag('Content-SHA-256', contentHash)\n }\n\n return tx\n}\nexport type UploadProperty = {\n itemProperty: IItemProperty<any>\n childProperties: IItemProperty<any>[]\n}\ntype ChildUploadData = {\n propertyName: string\n localStoragePath: string\n}\nconst processUploadProperty = async (\n uploadProperty: UploadProperty,\n uploads: PublishUpload[],\n relatedItemProperty?: IItemProperty<any>,\n): Promise<PublishUpload[]> => {\n const itemProperty = uploadProperty.itemProperty\n\n const childUploads: ChildUploadData[] = []\n\n for (const childProperty of uploadProperty.childProperties) {\n const filePath = childProperty.localStoragePath\n\n if (!filePath || filePath.endsWith('undefined')) {\n continue\n }\n\n const exists = await fs.promises.exists(filePath)\n if (!exists) {\n continue\n }\n\n childUploads.push({\n propertyName: childProperty.propertyName,\n localStoragePath: filePath,\n })\n }\n\n // const filePath = itemProperty.localStoragePath\n //\n // if (!filePath) {\n // throw new Error(\n // `No localStoragePath found for ItemProperty ${itemProperty.propertyName}`,\n // )\n // }\n //\n // const exists = await fs.promises.exists(filePath)\n // if (!exists) {\n // throw new Error(`File doesn't exist at ${filePath}`)\n //\n // // const handle = await navigator.storage.getDirectory()\n // //\n // // await configureSingle({\n // // backend: WebAccess,\n // // handle,\n // // })\n // }\n //\n // const mainFileContents = await fs.promises.readFile(filePath)\n let fileContents\n let transaction: Transaction\n\n if (!childUploads || childUploads.length === 0) {\n if (relatedItemProperty && relatedItemProperty.localStoragePath) {\n const filePath = relatedItemProperty.localStoragePath\n\n if (!filePath || filePath.endsWith('undefined')) {\n return uploads\n }\n\n const exists = await fs.promises.exists(filePath)\n if (!exists) {\n return uploads\n\n // const handle = await navigator.storage.getDirectory()\n //\n // await configureSingle({\n // backend: WebAccess,\n // handle,\n // })\n }\n\n try {\n fileContents = await fs.promises.readFile(filePath)\n } catch (e) {\n fileContents = fs.readFileSync(filePath)\n }\n }\n if (!fileContents) {\n return uploads\n }\n }\n\n if (childUploads.length > 0) {\n const separator = '===FILE_SEPARATOR==='\n // let compositeFileContents = `${itemProperty.propertyName}${separator}${mainFileContents}`\n let compositeFileContents = ''\n\n for (const childUpload of childUploads) {\n let childUploadContents\n\n try {\n childUploadContents = await fs.promises.readFile(\n childUpload.localStoragePath,\n )\n } catch (e) {\n childUploadContents = fs.readFileSync(childUpload.localStoragePath)\n }\n\n compositeFileContents += `${separator}${childUpload.propertyName}${separator}${childUploadContents}`\n }\n\n fileContents = Buffer.from(compositeFileContents)\n }\n\n if (!fileContents) {\n throw new Error(`No file contents found for ${itemProperty.propertyName}`)\n }\n\n const uint8Array = new Uint8Array(\n fileContents.buffer,\n fileContents.byteOffset,\n fileContents.byteLength,\n )\n\n const contentHash = await getContentHash(null, uint8Array)\n\n transaction = await prepareArweaveTransaction(fileContents, contentHash)\n\n let itemPropertyLocalId = relatedItemProperty\n ? relatedItemProperty.localId\n : itemProperty.localId\n let itemPropertyName = relatedItemProperty\n ? relatedItemProperty.propertyName\n : itemProperty.propertyName\n\n uploads.push({\n itemPropertyName,\n itemPropertyLocalId,\n seedLocalId: itemProperty.seedLocalId!,\n versionLocalId: itemProperty.versionLocalId!,\n transactionToSign: transaction,\n })\n\n return uploads\n}\nexport type PublishUpload = {\n itemPropertyName: string\n itemPropertyLocalId: string\n seedLocalId: string\n versionLocalId: string\n transactionToSign: Transaction\n}\nexport const getPublishUploads = async (\n item: IItem<any>,\n uploads: PublishUpload[] = [],\n relatedItemProperty?: IItemProperty<any>,\n) => {\n // if (item.modelName === 'Post') {\n // if (!item.authors) {\n // item.authors = [\n // 'Sr0bIx9Fwj',\n // '0xc2879650e9503a303ceb46f966e55baab480b267dc20cede23ef503622eee6d7',\n // ]\n // }\n // }\n\n const { itemUploadProperties, itemRelationProperties } =\n getSegmentedItemProperties(item)\n\n for (const uploadProperty of itemUploadProperties) {\n uploads = await processUploadProperty(\n uploadProperty,\n uploads,\n relatedItemProperty,\n )\n }\n\n for (const relationProperty of itemRelationProperties) {\n const propertyValue = relationProperty.getService().getSnapshot()\n .context.propertyValue\n\n if (!propertyValue || relationProperty.uid) {\n continue\n }\n\n const { localId: seedLocalId, uid: seedUid } = getCorrectId(propertyValue)\n\n const relatedItem = await BaseItem.find({\n seedLocalId,\n seedUid,\n })\n\n if (!relatedItem) {\n throw new Error(\n `No relatedItem found for ${relationProperty.propertyName}`,\n )\n }\n\n uploads = await getPublishUploads(relatedItem, uploads, relationProperty)\n }\n\n return uploads\n}\n","import { getItemData } from './getItemData'\nimport { GetItem } from '@/types'\nimport { BaseItem } from '@/Item/BaseItem'\n\nexport const getItem: GetItem = async ({ modelName, seedLocalId, seedUid }) => {\n const itemInitObj = await getItemData({\n modelName,\n seedLocalId,\n seedUid,\n })\n\n if (!itemInitObj) {\n console.error(\n `[db/queries] [getItem] no itemInitObj modelName: ${modelName} seedLocalId: ${seedLocalId} seedUid: ${seedUid}`,\n )\n return\n }\n\n if (!itemInitObj.seedLocalId) {\n console.error(\n `[db/queries] [getItem] no itemInitObj.seedLocalId modelName: ${modelName} seedLocalId: ${seedLocalId} seedUid: ${seedUid}`,\n )\n return\n }\n\n return BaseItem.create(itemInitObj)\n}\n","import { getItem } from '@/db/read/getItem'\nimport {\n defaultAttestationData,\n INTERNAL_DATA_TYPES,\n VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA,\n} from '@/helpers/constants'\nimport {\n AttestationRequest,\n SchemaEncoder,\n ZERO_BYTES32,\n} from '@ethereum-attestation-service/eas-sdk'\n\nimport { getSchemaForItemProperty } from '@/helpers/getSchemaForItemProperty'\nimport { toSnakeCase } from '@/helpers'\nimport pluralize from 'pluralize'\nimport { getSchemaUidForModel } from '@/db/read/getSchemaUidForModel'\nimport { getSchemaUidForSchemaDefinition } from '@/stores/eas'\nimport { getCorrectId } from '@/helpers'\nimport { getSegmentedItemProperties } from '@/helpers/getSegmentedItemProperties'\nimport { IItemProperty } from '@/interfaces'\nimport { IItem } from '@/interfaces'\nimport { BaseItem } from '@/Item/BaseItem'\n\nconst getVersionUid = (item: IItem<any>) => {\n let versionUid\n\n if (\n item.latestVersionUid &&\n item.latestVersionUid !== 'NULL' &&\n item.latestVersionUid !== 'undefined'\n ) {\n versionUid = item.latestVersionUid\n }\n return versionUid || ZERO_BYTES32\n}\n\nconst getPropertyData = async (itemProperty: IItemProperty<any>) => {\n const easDataType =\n INTERNAL_DATA_TYPES[itemProperty.propertyDef!.dataType].eas\n\n let schemaUid: string | undefined = itemProperty.schemaUid\n\n const propertyNameForSchema = toSnakeCase(itemProperty.propertyName)\n\n const schemaDef = `${easDataType} ${propertyNameForSchema}`\n\n if (!schemaUid) {\n schemaUid = getSchemaUidForSchemaDefinition(schemaDef)\n if (!schemaUid) {\n const schema = await getSchemaForItemProperty({\n propertyName: 'version',\n easDataType: 'bytes32',\n })\n if (schema) {\n schemaUid = schema.id\n }\n }\n }\n\n return {\n schemaUid,\n easDataType,\n schemaDef,\n propertyNameForSchema,\n }\n}\n\nconst processBasicProperties = async (\n itemBasicProperties: IItemProperty<any>[],\n itemPublishData: PublishPayload,\n): Promise<PublishPayload> => {\n for (const basicProperty of itemBasicProperties) {\n const value = basicProperty.getService().getSnapshot().context.propertyValue\n\n if (!value || basicProperty.uid) {\n continue\n }\n\n const { schemaUid, easDataType, schemaDef } =\n await getPropertyData(basicProperty)\n\n const propertyNameForSchema = toSnakeCase(basicProperty.propertyName)\n\n const data = [\n {\n name: propertyNameForSchema,\n type: easDataType,\n value,\n },\n ]\n\n const dataEncoder = new SchemaEncoder(schemaDef)\n\n const encodedData = dataEncoder.encodeData(data)\n\n itemPublishData.listOfAttestations.push({\n schema: schemaUid!,\n data: [\n {\n ...defaultAttestationData,\n data: encodedData,\n },\n ],\n })\n }\n\n return itemPublishData\n}\n\nconst processRelationProperty = async (\n relationProperty: IItemProperty<any>,\n multiPublishPayload: MultiPublishPayload,\n uploadedTransactions: UploadedTransaction[],\n): Promise<MultiPublishPayload> => {\n const value = relationProperty.getService().getSnapshot()\n .context.propertyValue\n if (!value || relationProperty.uid) {\n return multiPublishPayload\n }\n\n const { localId: seedLocalId, uid: seedUid } = getCorrectId(value)\n\n const relatedItem = await getItem({\n seedLocalId,\n seedUid,\n })\n\n if (!relatedItem) {\n throw new Error(\n `No related item found for relation property: ${relationProperty.propertyName}`,\n )\n }\n\n const versionUid = getVersionUid(relatedItem)\n\n const seedSchemaUid = await getSchemaUidForModel(\n relationProperty.propertyDef!.ref as string,\n )\n\n let publishPayload: PublishPayload = {\n localId: relationProperty.localId,\n seedIsRevocable: true,\n versionSchemaUid: VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA,\n seedUid: seedUid || ZERO_BYTES32,\n seedSchemaUid,\n versionUid,\n listOfAttestations: [],\n propertiesToUpdate: [],\n }\n\n const { itemBasicProperties, itemUploadProperties } =\n getSegmentedItemProperties(relatedItem)\n\n if (itemUploadProperties.length === 1) {\n const uploadProperty = itemUploadProperties[0]\n const itemProperty = uploadProperty.itemProperty\n const transactionData = uploadedTransactions.find(\n (transaction) => transaction.seedLocalId === relatedItem.seedLocalId,\n )\n if (transactionData) {\n itemProperty.value = transactionData.txId\n await itemProperty.save()\n itemBasicProperties.push(itemProperty)\n }\n }\n\n publishPayload = await processBasicProperties(\n itemBasicProperties,\n publishPayload,\n )\n\n multiPublishPayload.push(publishPayload)\n\n return multiPublishPayload\n}\n\nconst processListProperty = async (\n listProperty: IItemProperty<any>,\n multiPublishPayload: MultiPublishPayload,\n): Promise<MultiPublishPayload> => {\n let value = listProperty.getService().getSnapshot().context.propertyValue\n if (!value || listProperty.uid) {\n return multiPublishPayload\n }\n\n const singularPropertyName = pluralize.singular(listProperty.propertyName)\n const propertyNameForSchema = `${singularPropertyName}${listProperty.propertyDef!.ref}Ids`\n if (typeof value === 'string' && value.length === 66) {\n value = [value]\n }\n if (typeof value === 'string' && value.length > 66) {\n try {\n value = JSON.parse(value)\n } catch (error) {\n value = value.split(',')\n }\n }\n\n for (const seedId of value) {\n const { localId: seedLocalId, uid: seedUid } = getCorrectId(seedId)\n\n const relatedItem = await getItem({\n seedLocalId,\n seedUid,\n })\n\n if (!relatedItem) {\n console.error(\n `No related item found for list property: ${listProperty.propertyName}`,\n )\n continue\n }\n\n if (relatedItem.seedUid) {\n return multiPublishPayload\n }\n\n const versionUid = getVersionUid(relatedItem)\n\n const seedSchemaUid = await getSchemaUidForModel(\n listProperty.propertyDef!.ref as string,\n )\n\n let publishPayload: PublishPayload = {\n localId: relatedItem.seedLocalId,\n seedIsRevocable: true,\n versionSchemaUid: VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA,\n seedUid: seedUid || ZERO_BYTES32,\n seedSchemaUid,\n versionUid,\n listOfAttestations: [],\n propertiesToUpdate: [\n {\n publishLocalId: listProperty.localId,\n propertySchemaUid: listProperty.schemaUid,\n },\n ],\n }\n\n const { itemBasicProperties } = getSegmentedItemProperties(relatedItem)\n\n publishPayload = await processBasicProperties(\n itemBasicProperties,\n publishPayload,\n )\n\n multiPublishPayload.push(publishPayload)\n }\n\n return multiPublishPayload\n}\n\ntype PublishPayload = {\n localId: string\n seedIsRevocable: boolean\n seedSchemaUid: string\n seedUid: string\n versionSchemaUid: string\n versionUid: string\n listOfAttestations: AttestationRequest[]\n propertiesToUpdate: any[]\n}\n\ntype MultiPublishPayload = PublishPayload[]\n\ntype UploadedTransaction = {\n txId: string\n itemPropertyLocalId?: string\n seedLocalId?: string\n versionLocalId?: string\n itemPropertyName?: string\n}\n\nexport const getPublishPayload = async (\n item: BaseItem<any>,\n uploadedTransactions: UploadedTransaction[],\n): Promise<MultiPublishPayload> => {\n\n let multiPublishPayload: MultiPublishPayload = []\n\n // Each PublishPayload is generated from a Seed that needs publishing\n\n // First we need to determine all Seeds to publish\n\n // That means the Seed of the Item, plus any Seeds pointed to by Relations\n\n let itemPublishData: PublishPayload = {\n localId: item.seedLocalId,\n seedUid: item.seedUid || ZERO_BYTES32,\n seedIsRevocable: true,\n seedSchemaUid: item.schemaUid,\n versionSchemaUid: VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA,\n versionUid: getVersionUid(item),\n listOfAttestations: [],\n propertiesToUpdate: [],\n }\n\n const {\n itemBasicProperties,\n itemRelationProperties,\n itemListProperties,\n itemUploadProperties,\n } = getSegmentedItemProperties(item)\n\n if (itemUploadProperties.length === 1) {\n const uploadProperty = itemUploadProperties[0]\n const itemProperty = uploadProperty.itemProperty\n const transactionData = uploadedTransactions.find(\n (transaction) => transaction.seedLocalId === item.seedLocalId,\n )\n if (transactionData) {\n itemProperty.value = transactionData.txId\n await itemProperty.save()\n itemBasicProperties.push(itemProperty)\n }\n }\n\n itemPublishData = await processBasicProperties(\n itemBasicProperties,\n itemPublishData,\n )\n\n multiPublishPayload.push(itemPublishData)\n\n for (const relationProperty of itemRelationProperties) {\n multiPublishPayload = await processRelationProperty(\n relationProperty,\n multiPublishPayload,\n uploadedTransactions,\n )\n }\n\n for (const listProperty of itemListProperties) {\n multiPublishPayload = await processListProperty(\n listProperty,\n multiPublishPayload,\n )\n }\n\n return multiPublishPayload\n}\n","import { IItem, IItemProperty } from '@/interfaces'\nimport { itemMachineSingle } from '@/Item/service/itemMachineSingle'\nimport { internalPropertyNames } from '@/helpers/constants'\nimport { VersionsType } from '@/seedSchema/VersionSchema'\nimport { getModel } from '@/stores/modelClass'\n\nimport {\n CreatePropertyInstanceProps,\n ItemData,\n ItemFindProps,\n ModelSchema,\n ModelValues,\n NewItemProps,\n PropertyData\n} from '@/types'\n\nimport { immerable } from 'immer'\nimport { BehaviorSubject } from 'rxjs'\nimport { ActorRefFrom, Subscription, createActor } from 'xstate'\nimport { eventEmitter } from '@/eventBus'\nimport pluralize from 'pluralize'\nimport { orderBy, startCase } from 'lodash-es'\nimport { waitForEvent } from '@/events'\nimport { getItemData } from '@/db/read/getItemData'\nimport { getItemsData } from '@/db/read/getItems'\nimport { BaseItemProperty } from '@/ItemProperty/BaseItemProperty'\nimport { getItemProperties } from '@/db/read/getItemProperties'\nimport { getPublishUploads } from '@/db/read/getPublishUploads'\nimport { getPublishPayload } from '@/db/read/getPublishPayload'\nimport { createNewItem } from '@/db/write/createNewItem'\n\n\nexport abstract class BaseItem<T extends ModelValues<ModelSchema>> implements IItem<T> {\n\n protected static instanceCache: Map<string, { instance: IItem<any>; refCount: number }> = new Map();\n protected _subscription: Subscription | undefined;\n protected readonly _storageTransactionId: string | undefined;\n [immerable] = true;\n protected _propertiesSubject: BehaviorSubject<Record<string, IItemProperty<any>>> = new BehaviorSubject({});\n protected readonly _service: ActorRefFrom<typeof itemMachineSingle>;\n\n constructor(initialValues: NewItemProps<T>) {\n\n const {\n modelName,\n seedUid,\n schemaUid,\n seedLocalId,\n latestVersionLocalId,\n latestVersionUid,\n } = initialValues\n\n const ModelClass = getModel(modelName)\n\n if (\n ModelClass &&\n Object.keys(ModelClass?.schema).includes('storageTransactionId') &&\n initialValues.storageTransactionId\n ) {\n this._storageTransactionId = initialValues.storageTransactionId\n }\n\n this._service = createActor(itemMachineSingle, {\n input: {\n seedLocalId,\n seedUid,\n schemaUid,\n ModelClass,\n latestVersionLocalId,\n latestVersionUid,\n storageTransactionId: this._storageTransactionId,\n },\n })\n\n this._subscription = this._service.subscribe((snapshot) => {\n const { context } = snapshot\n\n if (\n !context ||\n !context.propertyInstances ||\n context.propertyInstances.size === 0\n ) {\n return\n }\n\n const propertiesObj: Record<string, IItemProperty<any>> = {}\n\n for (const [key, propertyInstance] of context.propertyInstances) {\n if (typeof key !== 'string' || internalPropertyNames.includes(key)) {\n propertiesObj[key.toString()] = propertyInstance\n continue\n }\n\n let transformedKey: string = key as string\n\n if (propertyInstance.alias) {\n transformedKey = propertyInstance.alias\n }\n\n if (!propertyInstance.alias && key.endsWith('Ids')) {\n transformedKey = key.slice(0, -3) // Remove 'Ids'\n transformedKey = pluralize(transformedKey)\n }\n\n if (!propertyInstance.alias && key.endsWith('Id')) {\n transformedKey = key.slice(0, -2) // Remove 'Id'\n }\n\n propertiesObj[transformedKey] = propertyInstance\n }\n\n this._propertiesSubject.next(propertiesObj)\n eventEmitter.emit(`item.${modelName}.${seedUid || seedLocalId}.update`)\n })\n\n this._service.start()\n\n const definedKeys: string[] = ['ModelClass']\n\n const itemPropertyBase: Partial<CreatePropertyInstanceProps> = {\n seedLocalId,\n seedUid,\n versionLocalId: latestVersionLocalId,\n versionUid: latestVersionUid,\n modelName: modelName,\n }\n\n if (ModelClass && ModelClass.schema) {\n const schema = ModelClass.schema\n\n for (const [propertyName, propertyRecordSchema] of Object.entries(\n schema,\n )) {\n if (!propertyRecordSchema) {\n throw new Error(`Property ${propertyName} has no definition`)\n }\n\n this._createPropertyInstance({\n ...itemPropertyBase,\n propertyName,\n propertyValue: initialValues[propertyName as keyof T],\n })\n\n definedKeys.push(propertyName)\n\n if (\n propertyRecordSchema.dataType === 'Relation' &&\n !propertyName.endsWith('Id')\n ) {\n definedKeys.push(`${propertyName}Id`)\n }\n\n if (\n propertyRecordSchema.dataType === 'List' &&\n !propertyName.endsWith('Ids')\n ) {\n const singularPropertyName = pluralize.singular(propertyName)\n const propertyNameForSchema = `${singularPropertyName}${propertyRecordSchema.ref}Ids`\n definedKeys.push(propertyNameForSchema)\n }\n }\n }\n\n ; (Object.keys(initialValues) as Array<string & keyof Partial<T>>).forEach(\n (key) => {\n // If we already defined it, that means it was in the schema\n if (definedKeys.includes(key)) {\n return\n }\n\n this._createPropertyInstance({\n ...itemPropertyBase,\n propertyName: key,\n propertyValue: initialValues[key],\n })\n },\n )\n }\n\n static PlatformClass: typeof BaseItem\n\n static setPlatformClass(platformClass: typeof BaseItem) {\n this.PlatformClass = platformClass\n }\n\n static async create<T extends ModelValues<ModelSchema>>(\n props: Partial<ItemData>,\n ): Promise<IItem<any>> {\n if (!props.modelName && props.type) {\n props.modelName = startCase(props.type)\n }\n if (props.seedUid || props.seedLocalId) {\n const seedId = (props.seedUid || props.seedLocalId) as string\n if (this.instanceCache.has(seedId)) {\n const { instance, refCount } = this.instanceCache.get(seedId)!\n this.instanceCache.set(seedId, {\n instance,\n refCount: refCount + 1,\n })\n for (const [propertyName, propertyValue] of Object.entries(props)) {\n const propertyInstances = instance.getService().getSnapshot()\n .context.propertyInstances\n if (!propertyInstances || !propertyInstances.has(propertyName)) {\n continue\n }\n const propertyInstance = propertyInstances.get(propertyName)\n if (!propertyInstance) {\n continue\n }\n propertyInstance.getService().send({\n type: 'updateContext',\n propertyValue,\n })\n }\n return instance\n }\n if (!this.instanceCache.has(seedId)) {\n const newInstance = new this(props)\n this.instanceCache.set(seedId, {\n instance: newInstance,\n refCount: 1,\n })\n return newInstance\n }\n }\n if (!props.modelName) {\n throw new Error('Model name is required to create an item')\n }\n const { seedLocalId } = await createNewItem({\n modelName: props.modelName,\n })\n props.seedLocalId = seedLocalId\n const newInstance = new this(props)\n this.instanceCache.set(newInstance.seedUid || newInstance.seedLocalId, {\n instance: newInstance,\n refCount: 1,\n })\n return newInstance\n }\n\n static async find({\n modelName,\n seedLocalId,\n seedUid,\n }: ItemFindProps): Promise<IItem<any> | undefined> {\n if (!seedLocalId && !seedUid) {\n return\n }\n const itemData = await getItemData({\n modelName,\n seedLocalId,\n seedUid,\n })\n\n if (!itemData) {\n console.error('No item data found', { modelName, seedLocalId, seedUid })\n return\n }\n\n return BaseItem.create({\n ...itemData,\n modelName,\n })\n }\n\n static async all(\n modelName?: string,\n deleted?: boolean,\n ): Promise<IItem<any>[]> {\n const itemsData = await getItemsData({ modelName, deleted })\n const itemInstances: IItem<any>[] = []\n for (const itemData of itemsData) {\n itemInstances.push(\n await BaseItem.create({\n ...itemData,\n modelName,\n }),\n )\n }\n\n return orderBy(itemInstances, ['createdAt'], ['desc'])\n }\n\n protected _createPropertyInstance(props: Partial<CreatePropertyInstanceProps>) {\n if (this._storageTransactionId) {\n props.storageTransactionId = this._storageTransactionId\n }\n\n const propertyInstance = BaseItemProperty.create(props)\n\n if (!propertyInstance || !props.propertyName) {\n return\n }\n\n this._service.send({\n type: 'addPropertyInstance',\n propertyName: props.propertyName,\n propertyInstance,\n })\n\n Object.defineProperty(this, props.propertyName, {\n get: () => propertyInstance.value,\n set: (value) => (propertyInstance.value = value),\n enumerable: true,\n })\n }\n\n\n static async publish(item: IItem<any>): Promise<void> {\n await waitForEvent({\n req: {\n eventLabel: `item.${item.seedLocalId}.publish.request`,\n data: {\n seedLocalId: item.seedLocalId,\n },\n },\n res: {\n eventLabel: `item.${item.seedLocalId}.publish.success`,\n },\n })\n }\n\n subscribe = (callback: (itemProps: any) => void): Subscription => {\n return this._service.subscribe((snapshot) => {\n callback(snapshot.context)\n })\n }\n\n getService = (): ActorRefFrom<typeof itemMachineSingle> => {\n return this._service\n }\n\n getEditedProperties = async (): Promise<PropertyData[]> => {\n return await getItemProperties({\n seedLocalId: this.seedLocalId,\n edited: true,\n })\n }\n\n publish = async (): Promise<void> => {\n await waitForEvent({\n req: {\n eventLabel: `item.publish.request`,\n data: {\n seedLocalId: this.seedLocalId,\n },\n },\n res: {\n eventLabel: `item.${this.seedLocalId}.publish.success`,\n },\n })\n }\n\n getPublishUploads = async () => {\n return await getPublishUploads(this)\n }\n\n getPublishPayload = async (uploadedTransactions: any[]) => {\n return await getPublishPayload(this, uploadedTransactions)\n }\n\n get serviceContext() {\n const snapshot = this._service.getSnapshot()\n return (snapshot as any).context || {}\n }\n\n get seedLocalId(): string {\n return this.serviceContext.seedLocalId as string\n }\n\n get seedUid(): string | undefined {\n return this.serviceContext.seedUid\n }\n\n get schemaUid(): string {\n return this.serviceContext.schemaUid as string\n }\n\n get latestVersionUid(): VersionsType {\n return this.serviceContext.latestVersionUid as VersionsType\n }\n\n get modelName(): string {\n return this.serviceContext.modelName as string\n }\n\n get properties(): Record<string, IItemProperty<any>> {\n return this._propertiesSubject.value\n }\n\n get attestationCreatedAt(): number {\n return this.serviceContext.attestationCreatedAt as number\n }\n\n unload(): void {\n this._subscription?.unsubscribe()\n this._service.stop()\n }\n}\n","import {\n ModelSchema,\n ModelValues,\n NewItemProps,\n} from '@/types'\nimport { BaseItem } from '@/Item/BaseItem'\nimport { IItem } from '@/interfaces'\n\nexport class Item<T extends ModelValues<ModelSchema>> extends BaseItem<T> implements IItem<T> {\n\n constructor(initialValues: NewItemProps<T>,) {\n super(initialValues,)\n }\n\n}\n\nBaseItem.setPlatformClass(Item)","import { useCallback, useEffect, useState } from 'react'\nimport { ActorRef } from 'xstate'\nimport { orderBy } from 'lodash-es'\nimport { produce } from 'immer'\nimport { eventEmitter } from '@/eventBus'\nimport pluralize from 'pluralize'\nimport { getGlobalService } from '@/services/global'\nimport { useSelector } from '@xstate/react'\nimport debug from 'debug'\nimport { appState } from '@/seedSchema'\nimport { like } from 'drizzle-orm'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { MachineIds } from '@/services/internal/constants'\n\nconst logger = debug('app:react:services')\n\nconst finalStrings = ['idle', 'ready', 'done', 'success', 'initialized']\n\nexport const getServiceName = (service: ActorRef<any, any>) => {\n let name = 'actor'\n if (service && service.uniqueKey) {\n name = service.uniqueKey\n }\n if (service && !service.uniqueKey && service.logic && service.logic.config) {\n name = getServiceUniqueKey(service)\n }\n return name\n}\n\nexport const getServiceValue = (\n service: ActorRef<any, any>,\n): string | undefined => {\n let value\n if (service && service.getSnapshot() && service.getSnapshot().value) {\n value = service.getSnapshot().value\n }\n if (getServiceName(service) === 'global') {\n if (\n value &&\n typeof value === 'object' &&\n Object.keys(value).length > 0 &&\n Object.keys(value)[0] === 'initialized'\n ) {\n value = 'ready'\n }\n }\n if (value && typeof value === 'object') {\n value = JSON.stringify(value)\n }\n return value\n}\n\nexport const getServiceUniqueKey = (service: ActorRef<any, any>) => {\n if (!service || !service.logic || !service.logic.config) {\n return\n }\n const config = service.logic.config\n if (!config.id) {\n return\n }\n let uniqueKey = config.id\n if (config.id.includes('@seedSdk/')) {\n uniqueKey = config.id.match(/^.*@seedSdk\\/(\\w+)[\\.\\w]*/)[1]\n }\n let snapshot\n try {\n snapshot = service.getSnapshot()\n } catch (error) {\n logger('Error:', error)\n return uniqueKey\n }\n if (snapshot) {\n const context = snapshot.context\n if (context && context.dbName) {\n uniqueKey = context.dbName\n }\n if (context && context.modelNamePlural) {\n uniqueKey = context.modelNamePlural\n }\n if (context && context.modelName) {\n uniqueKey = pluralize(context.modelName.toLowerCase())\n }\n }\n return uniqueKey\n}\n\nexport const useService = (service: ActorRef<any, any>) => {\n const [timeElapsed, setTimeElapsed] = useState(0)\n\n const getPercentComplete = (service: ActorRef<any, any>) => {\n let percentComplete = 0\n if (service.logic.states) {\n const stateNames = []\n const startupStates = []\n\n for (const [stateName, state] of Object.entries(service.logic.states)) {\n if (state.tags.includes('loading')) {\n stateNames.push(stateName)\n startupStates.push(state)\n }\n }\n\n const totalStates = startupStates.length\n const value = getServiceValue(service)\n if (finalStrings.includes(value)) {\n return 0\n }\n const stateIndex = stateNames.indexOf(value)\n percentComplete = (stateIndex / totalStates) * 100\n }\n return percentComplete\n }\n\n const updateTime = useCallback(\n (interval) => {\n const context = service.getSnapshot().context\n const status = service.getSnapshot().value\n if (\n status === 'done' ||\n status === 'success' ||\n status === 'idle' ||\n status === 'ready'\n ) {\n clearInterval(interval)\n return\n }\n setTimeElapsed((timeElapsed) => timeElapsed + 1)\n },\n [service],\n )\n\n const startInterval = useCallback(() => {\n const interval = setInterval(() => {\n updateTime(interval)\n }, 1000)\n return interval\n }, [updateTime, service])\n\n useEffect(() => {\n const interval = startInterval()\n return () => clearInterval(interval)\n }, [])\n\n return {\n name: getServiceName(service),\n timeElapsed,\n value: getServiceValue(service),\n percentComplete: getPercentComplete(service),\n uniqueKey: getServiceUniqueKey(service),\n }\n}\n\nexport const useIsDbReady = () => {\n const [isDbReady, setIsDbReady] = useState(false)\n\n const { internalStatus } = useGlobalServiceStatus()\n\n useEffect(() => {\n if (internalStatus === 'ready') {\n setIsDbReady(true)\n }\n }, [internalStatus])\n\n return isDbReady\n}\n\nexport const usePersistedSnapshots = () => {\n const [initialized, setInitialized] = useState(false)\n\n const hasSavedSnapshots = useHasSavedSnapshots()\n\n const { services, percentComplete } = useServices()\n\n // Helper function to save all actor snapshots to the database\n const save = useCallback(async () => {\n for (const actor of services) {\n const uniqueKey = getServiceUniqueKey(actor)\n console.log(\n `would save to db with snapshot__${uniqueKey}:`,\n JSON.stringify(actor.getPersistedSnapshot()),\n )\n // await writeAppState(\n // `snapshot__${uniqueKey}`,\n // JSON.stringify(actor.getPersistedSnapshot()),\n // )\n }\n }, [services])\n\n // Helper function to load persisted snapshots from the database\n const load = useCallback(async () => {\n const appDb = BaseDb.getAppDb()\n\n if (!appDb) {\n return []\n }\n\n const persistedSnapshots = await appDb\n .select()\n .from(appState)\n .where(like(appState.key, 'snapshot__%'))\n return persistedSnapshots\n }, [])\n\n useEffect(() => {\n if (!hasSavedSnapshots || initialized) {\n return\n }\n const initialize = async () => {\n const persistedSnapshots = await load()\n console.log('persistedSnapshots:', persistedSnapshots)\n setInitialized(true)\n }\n\n initialize()\n\n return () => {\n save() // Save snapshots on unmount\n }\n }, [hasSavedSnapshots, initialized])\n}\n\nexport const useHasSavedSnapshots = () => {\n const [hasSavedSnapshots, setHasSavedSnapshots] = useState(false)\n\n const isDbReady = useIsDbReady()\n\n useEffect(() => {\n if (isDbReady) {\n const _checkForSnapshots = async (): Promise<void> => {\n const appDb = BaseDb.getAppDb()\n\n const rows = await appDb\n .select()\n .from(appState)\n .where(like(appState.key, 'snapshot__%'))\n\n if (rows && rows.length > 0) {\n setHasSavedSnapshots(true)\n }\n }\n\n _checkForSnapshots()\n }\n }, [isDbReady])\n\n return hasSavedSnapshots\n}\n\nexport const useServices = () => {\n const [actors, setActors] = useState<ActorRef<any, any>[]>([])\n const [percentComplete, setPercentComplete] = useState(5)\n\n const actorsMap = new Map<string, ActorRef<any, any>>()\n\n useEffect(() => {\n const globalServiceListener = (event) => {\n if (event && event.type === 'init') {\n return\n }\n if (\n event.actorRef &&\n event.actorRef.logic &&\n event.actorRef.logic.config\n ) {\n const service = event.actorRef\n const services = [service]\n\n if (service.logic.config.id === MachineIds.GLOBAL) {\n const context = service.getSnapshot().context\n const keys = Object.keys(context)\n for (const key of keys) {\n if (!key.startsWith('internal') && key.endsWith('Service')) {\n const allItemsService = context[key]\n services.push(allItemsService)\n }\n }\n }\n\n services.forEach((innerService) => {\n const uniqueKey = getServiceUniqueKey(innerService)\n if (!uniqueKey) {\n return\n }\n innerService.uniqueKey = uniqueKey\n actorsMap.set(uniqueKey, innerService)\n })\n\n let actorsArray = Array.from(actorsMap.values())\n actorsArray = orderBy(actorsArray, (a) => a.logic.config.id, ['asc'])\n\n setActors(\n produce(actors, (draft) => {\n return actorsArray\n }),\n )\n }\n }\n\n eventEmitter.addListener('inspect.globalService', globalServiceListener)\n\n return () => {\n eventEmitter.removeListener(\n 'inspect.globalService',\n globalServiceListener,\n )\n }\n }, [])\n\n useEffect(() => {\n const globalService = actors.find(\n (actor) => getServiceName(actor) === 'global',\n )\n const internalService = actors.find(\n (actor) => getServiceName(actor) === 'internal',\n )\n if (!globalService || !internalService) {\n return\n }\n if (\n getServiceValue(globalService) === 'initialized' &&\n getServiceValue(internalService) === 'ready'\n ) {\n const denominator = actors.length\n const finishedActors = actors.filter((actor) => {\n const value = getServiceValue(actor)\n return finalStrings.includes(value)\n })\n const numerator = finishedActors.length\n const percentComplete = (numerator / denominator) * 100\n setPercentComplete(percentComplete)\n }\n }, [actors])\n\n return {\n services: actors,\n percentComplete,\n }\n}\n\nexport const useGlobalServiceStatus = () => {\n const globalService = getGlobalService()\n\n const status = useSelector(globalService, (snapshot) => {\n return snapshot.value\n })\n\n const internalStatus = useSelector(\n globalService.getSnapshot().context.internalService,\n (snapshot) => {\n if (!snapshot) {\n return\n }\n return snapshot.value\n },\n )\n\n const internalService = useSelector(globalService, (snapshot) => {\n return snapshot.context.internalService\n })\n\n return {\n status,\n internalStatus,\n }\n}\n","import { useCallback, useEffect, useRef, useState } from 'react'\nimport { createNewItem } from '@/db/write/createNewItem'\nimport { Item } from '@/browser/Item'\nimport { eventEmitter } from '@/eventBus'\nimport { useImmer } from 'use-immer'\nimport { orderBy } from 'lodash-es'\nimport { getAreItemEventHandlersReady } from '@/events'\nimport debug from 'debug'\nimport { useGlobalServiceStatus } from '@/browser/react/services'\nimport { ModelValues } from '@/types'\nimport { Subscription } from 'xstate'\nimport { useSelector } from '@xstate/react'\nimport { IItem } from '@/interfaces'\nimport { BaseItem } from '@/Item/BaseItem'\n\nconst logger = debug('app:react:item')\n\ntype UseItemProps = {\n modelName: string\n seedLocalId?: string\n seedUid?: string\n}\n\ntype UseItemReturn<T extends ModelValues<T>> = {\n item: Item<T> | undefined\n itemData: ItemData<T>\n itemStatus: string | Record<string, unknown> | undefined\n}\n\ntype UseItem<T> = (props: UseItemProps) => UseItemReturn<T>\n\ntype ItemData<T> = Record<string, Partial<T>>\n\nexport const useItem: UseItem<any> = ({ modelName, seedLocalId, seedUid }) => {\n // const [itemSubscription, setItemSubscription] = useState<\n // Subscription | undefined\n // >()\n //\n // const queryClient = useQueryClient()\n //\n // const { data: item } = useQuery({\n // queryKey: ['item', modelName, seedLocalId, seedUid],\n // queryFn: async () =>\n // Item.find({\n // modelName,\n // seedLocalId,\n // seedUid,\n // }),\n // networkMode: 'offlineFirst',\n // })\n //\n // const updateItem = async (newItem: Item<any>) => {\n // queryClient.setQueryData(['item', modelName, seedLocalId, seedUid], newItem)\n // }\n //\n // useEffect(() => {\n // if (item && item.subscribe && !itemSubscription) {\n // const subscription = item.subscribe(async (_) => {\n // const newItem = await Item.find({ modelName, seedLocalId, seedUid })\n // if (!newItem) {\n // logger(\n // '[useItem] [itemSubscription] no item found',\n // modelName,\n // seedLocalId,\n // )\n // return\n // }\n // updateItem(newItem)\n // })\n // setItemSubscription(subscription)\n // }\n //\n // return () => {\n // itemSubscription?.unsubscribe()\n // }\n // }, [item, itemSubscription])\n //\n // return {\n // item,\n // itemData: {},\n // itemStatus: undefined,\n // }\n\n const [itemData, setItemData] = useImmer<ItemData<any>>({})\n const [item, setItem] = useState<Item<any> | undefined>()\n const [itemSubscription, setItemSubscription] = useState<\n Subscription | undefined\n >()\n\n const { status, internalStatus } = useGlobalServiceStatus()\n\n const isReadingDb = useRef(false)\n\n const itemStatus = useSelector(\n item?.getService(),\n (snapshot) => snapshot?.value,\n )\n\n const updateItem = useCallback(\n (newItem: Item<any>) => {\n setItemData((draft) => {\n Object.keys(newItem.properties).forEach((propertyName) => {\n const value = newItem[propertyName]\n draft[propertyName] = value\n })\n })\n },\n [setItemData],\n )\n\n const readFromDb = useCallback(async () => {\n if (\n isReadingDb.current ||\n internalStatus !== 'ready' ||\n (!seedUid && !seedLocalId)\n ) {\n return\n }\n isReadingDb.current = true\n const foundItem = await Item.find({\n modelName,\n seedLocalId,\n seedUid,\n })\n if (!foundItem) {\n logger('[useItem] [getItemFromDb] no item found', modelName, seedLocalId)\n isReadingDb.current = false\n return\n }\n setItem(() => foundItem)\n updateItem(foundItem)\n isReadingDb.current = false\n }, [internalStatus])\n\n const listenerRef = useRef(readFromDb)\n\n useEffect(() => {\n listenerRef.current = readFromDb\n }, [readFromDb])\n\n useEffect(() => {\n if (internalStatus === 'ready') {\n listenerRef.current()\n }\n }, [internalStatus, status])\n\n useEffect(() => {\n if (item && !itemSubscription) {\n const subscription = item.subscribe(async (_) => {\n const newItem = await Item.find({ modelName, seedLocalId, seedUid })\n if (!newItem) {\n logger(\n '[useItem] [itemSubscription] no item found',\n modelName,\n seedLocalId,\n )\n return\n }\n updateItem(newItem)\n setItem(() => newItem)\n })\n setItemSubscription(subscription)\n }\n\n return () => {\n itemSubscription?.unsubscribe()\n }\n }, [item, itemSubscription])\n\n useEffect(() => {\n const seedId = seedUid || seedLocalId\n\n eventEmitter.addListener(`item.${modelName}.${seedId}.update`, () => {\n listenerRef.current()\n })\n\n return () => {\n eventEmitter.removeListener(`item.${modelName}.${seedId}.update`)\n }\n }, [])\n\n return {\n item,\n itemData,\n itemStatus,\n }\n}\ntype UseItemsReturn = {\n items: BaseItem<any>[]\n isReadingDb: boolean\n}\ntype UseItemsProps = {\n modelName?: string\n deleted?: boolean\n}\ntype UseItems = (props: UseItemsProps) => UseItemsReturn\nexport const useItems: UseItems = ({ modelName, deleted=false }) => {\n const [items, setItems] = useImmer<BaseItem<any>[]>([])\n\n const { status, internalStatus } = useGlobalServiceStatus()\n\n const modelNameRef = useRef<string | undefined>(modelName)\n\n const isReadingDb = useRef(false)\n\n const readFromDb = useCallback(async () => {\n if (isReadingDb.current || internalStatus !== 'ready') {\n return\n }\n isReadingDb.current = true\n const allItems = await Item.all(modelNameRef.current, deleted)\n setItems(() => [])\n setItems(() => allItems)\n isReadingDb.current = false\n }, [internalStatus])\n\n const listenerRef = useRef(readFromDb)\n\n useEffect(() => {\n listenerRef.current = readFromDb\n }, [readFromDb])\n\n useEffect(() => {\n if (internalStatus === 'ready') {\n listenerRef.current()\n }\n }, [internalStatus, status])\n\n useEffect(() => {\n eventEmitter.addListener('item.requestAll', (event) => {\n if (\n !event ||\n !event.modelName ||\n event.modelName !== modelNameRef.current\n ) {\n return\n }\n listenerRef.current()\n })\n\n return () => {\n eventEmitter.removeListener('item.requestAll', readFromDb)\n }\n }, [])\n\n return {\n items: orderBy(\n items,\n [\n (item) =>\n item.lastVersionPublishedAt ||\n item.attestationCreatedAt ||\n item.createdAt,\n ],\n ['desc'],\n ),\n isReadingDb: isReadingDb.current,\n }\n}\nexport const useItemIsReady = () => {\n const [itemListenersReady, setItemListenersReady] = useState(false)\n\n const itemEventListenersHandler = useCallback((_) => {\n setItemListenersReady(true)\n }, [])\n\n useEffect(() => {\n const areReady = getAreItemEventHandlersReady()\n\n if (areReady) {\n itemEventListenersHandler(true)\n }\n\n eventEmitter.addListener(\n 'item.events.setupAllItemsEventHandlers',\n itemEventListenersHandler,\n )\n\n return () => {\n eventEmitter.removeListener('item.events.setupAllItemsEventHandlers')\n }\n }, [])\n\n return {\n isReady: itemListenersReady,\n }\n}\nexport const useCreateItem = <T>(modelName: string) => {\n const [isCreatingItem, setIsCreatingItem] = useState(false)\n\n const { isReady } = useItemIsReady()\n\n const createItem = useCallback(\n async (itemData) => {\n if (!isReady) {\n console.error(\n `[useCreateItem] [createItem] called before listeners are ready`,\n itemData,\n )\n return\n }\n if (isCreatingItem) {\n // TODO: should we setup a queue for this?\n console.error(\n `[useCreateItem] [createItem] already creating item`,\n itemData,\n )\n return\n }\n\n setIsCreatingItem(true)\n\n const { seedLocalId } = await createNewItem({ modelName, ...itemData })\n\n const newItem = await Item.find({ modelName, seedLocalId })\n\n eventEmitter.emit('item.requestAll', { modelName })\n\n setIsCreatingItem(false)\n },\n [isCreatingItem, isReady],\n )\n\n return {\n createItem,\n isCreatingItem,\n }\n}\n\ntype PublishItemResult = Error | undefined | void\n\ntype UsePublishItemReturn = {\n publishItem: (\n item: Item<any> | undefined,\n callback?: (result: PublishItemResult) => any,\n ) => void\n isPublishing: boolean\n}\n\ntype PublishItemProps =\n | [Item<any> | undefined]\n | [Item<any> | undefined, (result: PublishItemResult) => any | undefined]\n\ntype PublishItem = (...props: PublishItemProps) => Promise<any>\n\nexport const usePublishItem = (): UsePublishItemReturn => {\n const [isPublishing, setIsPublishing] = useState(false)\n\n const isLocked = useRef(false)\n\n const publishItem: PublishItem = useCallback(async (item, callback?) => {\n if (!item || isLocked.current) {\n return\n }\n isLocked.current = true\n setIsPublishing(true)\n try {\n const uploads = await item.getPublishUploads()\n const payload = await item.getPublishPayload(uploads)\n if (callback) {\n callback()\n }\n } catch (e) {\n if (callback) {\n callback(e as Error)\n }\n }\n setIsPublishing(false)\n isLocked.current = false\n }, [])\n\n return {\n publishItem,\n isPublishing,\n }\n}\n","import { CreatePropertyInstanceProps, PropertyType } from '@/types'\nimport { IItemProperty } from '@/interfaces/IItemProperty'\nimport { BaseItemProperty } from '@/ItemProperty/BaseItemProperty'\n\n\nclass ItemProperty extends BaseItemProperty<PropertyType> implements IItemProperty<PropertyType> {\n\n\n constructor(initialValues: Partial<CreatePropertyInstanceProps>) {\n super(initialValues)\n }\n\n}\n\nBaseItemProperty.setPlatformClass(ItemProperty)\n\nexport { ItemProperty }","import { useImmer } from 'use-immer'\nimport { Item } from '@/browser/Item'\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport { useSelector } from '@xstate/react'\nimport debug from 'debug'\nimport { eventEmitter } from '@/eventBus'\nimport { ItemProperty } from '@/browser/ItemProperty/ItemProperty'\nimport { useGlobalServiceStatus } from '@/browser/react/services'\nimport { IItemProperty } from '@/interfaces'\n\nconst logger = debug('app:react:property')\n\ntype UseItemPropertyProps = {\n propertyName: string\n seedLocalId?: string\n seedUid?: string\n}\n\ntype UseItemPropertyReturn = {\n property: IItemProperty<any> | undefined\n isInitialized: boolean\n value: any\n status: string\n}\n\ntype UseItemProperty = (props: UseItemPropertyProps) => UseItemPropertyReturn\n\nexport const useItemProperty: UseItemProperty = ({\n propertyName,\n seedLocalId,\n seedUid,\n}) => {\n const [property, setProperty] = useState<IItemProperty<any> | undefined>()\n const [isInitialized, setIsInitialized] = useState(false)\n\n const { internalStatus } = useGlobalServiceStatus()\n\n const isReadingDb = useRef(false)\n\n const value = useSelector(property?.getService(), (snapshot) => {\n if (!snapshot || !snapshot.context) {\n return\n }\n return snapshot.context.renderValue || snapshot.context.propertyValue\n })\n\n const status = useSelector(\n property?.getService(),\n (snapshot) => snapshot?.value as string,\n )\n\n const readFromDb = useCallback(async () => {\n if (\n internalStatus !== 'ready' ||\n isReadingDb.current ||\n (!seedLocalId && !seedUid)\n ) {\n return\n }\n isReadingDb.current = true\n const foundProperty = await ItemProperty.find({\n propertyName,\n seedLocalId,\n seedUid,\n })\n if (!foundProperty) {\n logger(\n `[useItemPropertyTest] [readFromDb] no property found for Item.${seedLocalId}.${propertyName}`,\n )\n isReadingDb.current = false\n return\n }\n if (foundProperty.status === 'waitingForDb') {\n foundProperty.getService().send({ type: 'waitForDbSuccess' })\n }\n setProperty(foundProperty)\n setIsInitialized(true)\n isReadingDb.current = false\n }, [internalStatus])\n\n const listenerRef = useRef(readFromDb)\n\n useEffect(() => {\n listenerRef.current = readFromDb\n }, [readFromDb])\n\n useEffect(() => {\n if (internalStatus === 'ready') {\n readFromDb()\n }\n }, [internalStatus])\n\n useEffect(() => {\n eventEmitter.addListener(\n `property.${seedUid || seedLocalId}.${propertyName}.update`,\n () => {\n listenerRef.current()\n },\n )\n\n return () => {\n eventEmitter.removeListener(\n `property.${seedUid || seedLocalId}.${propertyName}.update`,\n )\n }\n }, [])\n\n return {\n property,\n isInitialized,\n value,\n status,\n }\n}\nexport const useItemProperties = (item?: Item<any>) => {\n const [propertyObj, setPropertyObj] = useImmer({})\n const [isListening, setIsListening] = useState(false)\n\n const updatePropertyObj = useCallback(\n (event) => {\n if (!item) {\n console.error('[XXXXXX] [updatePropertyObj] no item when expected')\n return\n }\n const { propertyName, propertyValue } = event\n if (!propertyName) {\n return\n }\n setPropertyObj((draft) => {\n draft[propertyName] = propertyValue\n })\n },\n [item],\n )\n\n useEffect(() => {\n if (!item) {\n return\n }\n\n const eventKey = `item.${item.seedLocalId}.property.update`\n\n eventEmitter.addListener(eventKey, updatePropertyObj)\n\n return () => {\n eventEmitter.removeListener(eventKey, updatePropertyObj)\n }\n }, [item])\n\n return {\n properties: propertyObj,\n }\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport { Subscription } from 'xstate'\nimport { getGlobalService } from '@/services/global'\nimport debug from 'debug'\n\nconst logger = debug('app:react:db')\n\nexport const useDbsAreReady = () => {\n const [dbsAreReady, setDbsAreReady] = useState(false)\n\n const update = useCallback(() => {\n if (dbsAreReady) {\n return\n }\n setDbsAreReady(true)\n }, [])\n\n useEffect(() => {\n let globalSubscription: Subscription | undefined\n let internalSubscription: Subscription | undefined\n\n const _waitForDbs = async (): Promise<void> => {\n const globalService = getGlobalService()\n const internalService =\n globalService.getSnapshot().context.internalService\n if (!internalService) {\n logger('[useDbsAreReady] [useEffect] no internalService')\n\n globalSubscription = globalService.subscribe(({ context }) => {\n if (!internalSubscription && context && context.internalService) {\n globalSubscription?.unsubscribe()\n internalSubscription = context.internalService.subscribe(\n (snapshot) => {\n if (snapshot.value === 'ready') {\n update()\n internalSubscription?.unsubscribe()\n }\n },\n )\n }\n })\n\n return\n }\n const currentState = internalService.getSnapshot().value\n if (currentState === 'ready') {\n update()\n return\n }\n internalSubscription = internalService.subscribe((snapshot) => {\n if (snapshot.value === 'ready') {\n update()\n internalSubscription?.unsubscribe()\n }\n })\n }\n\n _waitForDbs()\n\n return () => {\n if (globalSubscription) {\n globalSubscription.unsubscribe()\n }\n\n if (internalSubscription) {\n internalSubscription.unsubscribe()\n }\n }\n }, [])\n\n return {\n dbsAreReady,\n }\n}\n","import { BaseDb } from '@/db/Db/BaseDb'\nimport { seeds } from '@/seedSchema'\nimport { eq, or } from 'drizzle-orm'\n\ntype DeleteItemProps = {\n seedLocalId?: string\n seedUid?: string\n}\ntype DeleteItem = (props: DeleteItemProps) => Promise<void>\nexport const deleteItem: DeleteItem = async ({ seedLocalId, seedUid }) => {\n const appDb = BaseDb.getAppDb()\n\n await appDb\n .update(seeds)\n .set({\n _markedForDeletion: 1,\n })\n .where(or(eq(seeds.localId, seedLocalId), eq(seeds.uid, seedUid)))\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport { Item } from '@/browser/Item/Item'\nimport { eventEmitter } from '@/eventBus'\nimport { deleteItem } from '@/db/write/deleteItem'\n\nexport const useDeleteItem = () => {\n const [isDeletingItem, setIsDeletingItem] = useState(false)\n\n const destroy = useCallback(\n async (item: Item<any>) => {\n if (!item) {\n return\n }\n setIsDeletingItem(true)\n const { modelName } = item.getService().getSnapshot().context\n await deleteItem({ seedLocalId: item.seedLocalId })\n eventEmitter.emit('item.requestAll', { modelName })\n setIsDeletingItem(false)\n },\n [isDeletingItem],\n )\n\n useEffect(() => { }, [])\n\n return {\n deleteItem: destroy,\n isDeletingItem,\n }\n}\n","import { eventEmitter } from '@/eventBus'\n\nexport * from './db'\nexport * from './react'\nexport * from './Item'\nexport * from './ItemProperty'\n\n\neventEmitter.on('file-saved', (filePath) => {\n const worker = new Worker('./workers/image-resize.ts?worker')\n\n console.log('file-saved', filePath)\n worker.postMessage({\n type: 'resize',\n filePath,\n })\n})\n","export const withSeed = (config: any, webpack: any, isServer: boolean) => {\n // If you need to include directories outside of the project root\n // config.module.rules.push({\n // test: /\\.ts$/,\n // include: [path.resolve(process.cwd(), 'schema.ts')],\n // use: 'ts-loader',\n // })\n\n config.plugins.push(\n // new webpack.DefinePlugin({\n // __dirname: JSON.stringify(__dirname),\n // }),\n new webpack.NormalModuleReplacementPlugin(/node:/, (resource) => {\n resource.request = resource.request.replace(/^node:/, '')\n }),\n )\n\n // config.externals.push({\n // 'fsevents': 'commonjs2 fsevents',\n // })\n\n // console.log('__dirname:', __dirname)\n // console.log('process.cwd():', process.cwd())\n\n // console.log('crypto-browserify exists:', fs.existsSync(path.resolve(process.cwd(), './node_modules/crypto-browserify')))\n // console.log('path-browserify exists:', fs.existsSync(path.resolve(process.cwd(), './node_modules/path-browserify')))\n\n if (!isServer) {\n config.resolve.alias['fs'] = '@zenfs/core'\n config.resolve.alias['node:fs'] = '@zenfs/core'\n config.resolve.alias['node:path'] = 'path-browserify'\n config.resolve.alias['path'] = 'path-browserify'\n\n // config.resolve.alias['fs'] = path.resolve(\n // process.cwd(),\n // './node_modules/@zenfs/core',\n // )\n // config.resolve.alias['node:fs'] = path.resolve(\n // process.cwd(),\n // './node_modules/@zenfs/core',\n // )\n // config.resolve.alias['@schema'] = path.resolve(process.cwd(), 'schema.ts')\n // // config.resolve.alias['crypto'] = path.resolve(process.cwd(), './node_modules/crypto-browserify')\n // // config.resolve.alias['node:crypto'] = path.resolve(process.cwd(), './node_modules/crypto-browserify')\n // config.resolve.alias['node:path'] = path.resolve(\n // process.cwd(),\n // './node_modules/path-browserify',\n // )\n // config.resolve.alias['path'] = path.resolve(\n // process.cwd(),\n // './node_modules/path-browserify',\n // )\n }\n\n if (isServer) {\n config.externals.push('@sqlite.org/sqlite-wasm')\n config.externals.push('nunjucks')\n config.externals.push('chokidar')\n config.externals.push('arweave')\n }\n\n // config.module.rules.push({\n // test: /seed\\.config\\.mjs$/,\n // use: [\n // {\n // loader: 'babel-loader',\n // options: {\n // plugins: ['@babel/plugin-syntax-dynamic-import'],\n // },\n // },\n // ],\n // })\n\n return config\n}\n","import { eventEmitter } from '@/eventBus'\nimport debug from 'debug'\n\nconst logger = debug('app:services:events')\n\nconst handleServiceSaveState = (event: any) => {\n const { state, serviceId } = event\n logger(`[browser] [service.saveState.request] serviceId: ${serviceId}`)\n localStorage.setItem(`seed_sdk_service_${serviceId}`, JSON.stringify(state))\n}\n\nexport const setupServicesEventHandlers = () => {\n eventEmitter.addListener('service.saveState.request', handleServiceSaveState)\n}\n","import { getGlobalService } from '@/services/global'\n\nimport { saveAppState } from '@/db/write/saveAppState'\n\ntype SaveServiceEvent = {\n modelName: string\n}\n\nexport const saveServiceHandler = async (event: SaveServiceEvent) => {\n const globalService = getGlobalService()\n\n if (!globalService || !globalService.getSnapshot().context) {\n return\n }\n\n const { modelName } = event\n\n const nameOfService: string = `${modelName}Service`\n\n const service = globalService.getSnapshot().context[nameOfService]\n\n if (!service) {\n console.log(`[saveServiceHandler] service not found: ${nameOfService}`)\n return\n }\n\n await saveAppState(\n `snapshot__${modelName}`,\n JSON.stringify(service.getPersistedSnapshot()),\n )\n}\n","import { eventEmitter } from '@/eventBus'\nimport { saveServiceHandler } from './allItems'\n\nlet areReady = false\n\nexport const setupServiceHandlers = () => {\n eventEmitter.addListener('service.save', saveServiceHandler)\n areReady = true\n}\n\nexport const getAreServiceHandlersReady = () => {\n return areReady\n}\n","import { isBrowser } from '../environment'\nimport { BaseEasClient } from './BaseEasClient'\n\nlet EasClient: typeof BaseEasClient | undefined\n\nexport const initEasClient = async () => {\n if (isBrowser()) {\n EasClient = (await import('../../browser/helpers/EasClient')).EasClient\n }\n\n if (!isBrowser()) {\n EasClient = (await import('../../node/helpers/EasClient')).EasClient\n }\n}\n\nexport { EasClient }\n","import { isBrowser } from '../environment'\nimport { BaseQueryClient } from './BaseQueryClient'\n\nlet QueryClient: typeof BaseQueryClient | undefined\n\nexport const initQueryClient = async () => {\n if (isBrowser()) {\n QueryClient = (await import('../../browser/helpers/QueryClient')).QueryClient\n }\n\n if (!isBrowser()) {\n QueryClient = (await import('../../node/helpers/QueryClient')).QueryClient\n }\n}\n\nexport { QueryClient }","import { isBrowser } from '../environment'\nimport { BaseFileManager } from './BaseFileManager'\n\nlet FileManager: typeof BaseFileManager | undefined\n\nexport const initFileManager = async () => {\n if (isBrowser()) {\n FileManager = (await import('../../browser/helpers/FileManager')).FileManager\n }\n\n if (!isBrowser()) {\n FileManager = (await import('../../node/helpers/FileManager')).FileManager\n }\n}\n\nexport { FileManager }","import { areFsListenersReady, setupFsListeners } from '@/events/files'\nimport { setupAllItemsEventHandlers } from '@/events'\nimport { setupServicesEventHandlers } from '@/services/events'\nimport { eventEmitter } from '@/eventBus'\nimport { globalService, } from '@/services'\nimport { ModelClassType, SeedConstructorOptions } from '@/types'\nimport {\n getModel,\n getModelNames,\n getModels,\n setModel,\n} from '@/stores/modelClass'\nimport { setupServiceHandlers } from '@/events/services'\nimport { initArweaveClient, setArweaveDomain } from '@/helpers/ArweaveClient'\nimport { initItem } from './Item'\nimport { initItemProperty } from './ItemProperty'\nimport { initEasClient } from './helpers/EasClient'\nimport { initQueryClient } from './helpers/QueryClient'\nimport { initFileManager } from './helpers/FileManager'\nimport { initDb } from './db/Db'\n\nconst client = {\n init: async (options: SeedConstructorOptions) => {\n const { config, addresses } = options\n\n await initItem()\n await initItemProperty()\n await initEasClient()\n await initArweaveClient()\n await initQueryClient()\n await initFileManager()\n await initDb()\n\n const { endpoints, models, arweaveDomain, filesDir, } = config\n\n if (arweaveDomain) {\n setArweaveDomain(arweaveDomain)\n }\n\n for (const [key, value] of Object.entries(models)) {\n setModel(key, value)\n }\n setupFsListeners()\n setupAllItemsEventHandlers()\n setupServicesEventHandlers()\n setupServiceHandlers()\n if (areFsListenersReady()) {\n eventEmitter.emit('fs.init')\n }\n if (!areFsListenersReady()) {\n console.error('fs listeners not ready during init')\n }\n globalService.send({\n type: 'init',\n endpoints,\n models,\n addresses,\n arweaveDomain,\n filesDir,\n })\n\n const { models: internalModels } = await import('@/db/configs/seed.schema.config')\n for (const [key, value] of Object.entries(internalModels)) {\n setModel(key, value)\n }\n },\n subscribe: (callback: any) => {\n const subscription = globalService.subscribe(callback)\n\n eventEmitter.addListener('internal.globalService', callback)\n\n return {\n unsubscribe: () => {\n subscription.unsubscribe()\n eventEmitter.removeListener('internal.globalService', callback)\n },\n }\n },\n on: (outerEvent: string, callback: any) => {\n eventEmitter.addListener(outerEvent, callback)\n\n return {\n unsubscribe: () => {\n eventEmitter.removeListener(outerEvent, callback)\n },\n }\n },\n getSeedClass: async () => {\n return new Promise((resolve) => {\n const subscription = globalService.subscribe((snapshot) => {\n if (snapshot.status === 'done') {\n resolve(snapshot.output)\n }\n })\n\n globalService.send({ type: 'getSeed' })\n subscription.unsubscribe()\n })\n },\n getModel: (modelName: string) => {\n return getModel(modelName)\n },\n getModels: (): Record<string, ModelClassType> => {\n return getModels()\n },\n getModelNames: (): string[] => {\n return getModelNames()\n },\n}\n\nexport { client }\n","import { enableMapSet } from 'immer'\n\nexport {\n Model,\n Property,\n ImageSrc,\n List,\n Text,\n Json,\n Relation,\n} from './schema'\n\nexport { type IItem, type IItemProperty } from './interfaces'\nexport { Item } from './Item'\nexport { ItemProperty } from './ItemProperty'\nexport { Db } from './db/Db'\n\nexport {\n useItems,\n useItem,\n useItemProperties,\n useCreateItem,\n useItemProperty,\n useDeleteItem,\n useGlobalServiceStatus,\n usePublishItem,\n usePersistedSnapshots,\n useServices,\n useService,\n} from './browser'\n\nexport { getCorrectId, BaseArweaveClient, BaseEasClient, BaseFileManager, BaseQueryClient, } from './helpers'\n\nexport { getGlobalService } from './services'\n\nexport {\n eventEmitter,\n} from './eventBus'\n\nenableMapSet()\n\nexport { withSeed } from './node/webpack'\n\n\nexport { client } from './client'\n"],"names":["Item","ItemProperty","logger","types.GetTransactionTagsDocument","types.AttestationFieldsFragmentDoc","types.SchemaFieldsFragmentDoc","types.GetSchemasDocument","types.GetSeedsDocument","types.GetSeedIdsDocument","types.GetStorageTransactionIdDocument","types.GetVersionsDocument","types.GetPropertiesDocument","types.GetAllPropertiesForAllVersionsDocument","types.GetFilesMetadataDocument","types.GetArweaveTransactionsDocument","types.GetImageSeedsDocument","types.GetImageVersionsDocument","types.GetSchemaUidsDocument","waitForDb","initialize","models","modelsTable","fs","ContentHashWorker","ThreadsWorker","areReady","IDLE","getVersionData","getPropertyData","_a"],"mappings":"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EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,QAAQ,EAAC,EAAC,OAAO,EAAC,EAAC,MAAM,EAAC,UAAU,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,QAAQ,EAAC,EAAC,EAAC,EAAC,EAAC,MAAM,EAAC,UAAU,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,OAAO,EAAC,EAAC,OAAO,EAAC,EAAC,MAAM,EAAC,UAAU,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,OAAO,EAAC,EAAC,EAAC,EAAC,EAAC,MAAM,EAAC,UAAU,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,OAAO,EAAC,EAAC,OAAO,EAAC,EAAC,MAAM,EAAC,UAAU,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,OAAO,EAAC,EAAC,EAAC,CAAC,EAAC,cAAc,EAAC,EAAC,MAAM,EAAC,cAAc,EAAC,YAAY,EAAC,CAAC,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,OAAO,EAAC,EAAC,cAAc,EAAC,EAAC,MAAM,EAAC,cAAc,EAAC,YAAY,EAAC,CAAC,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,QAAQ,EAAC,EAAC,EAAC,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,EAAC,cAAc,EAAC,EAAC,MAAM,EAAC,cAAc,EAAC,YAAY,EAAC,CAAC,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,QAAQ,EAAC,EAAC,EAAC,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,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,CAAC;AACP,4BAAA,IAAI,EAAE,eAAe;AACrB,4BAAA,WAAW,EAAE,UAAU;AACxB,yBAAA,CAAC;AACF,wBAAA,QAAQ,CAAC;AACP,4BAAA,IAAI,EAAE,8BAA8B;AACpC,4BAAA,uBAAuB,EAAE,UAAU;AACpC,yBAAA,CAAC;AACF,wBAAA,OAAO,IAAI;;;;;AAKrB,KAAC,CAAA;AAED,IAAA,oBAAoB,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,KAAI;;;;;;;AAOtC,QAAA,QAAQ,CAAC;AACP,YAAA,IAAI,EAAE,2BAA2B;AAClC,SAAA,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC,CAAC;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtWO,MAAM,cAAc,GAAmB,CAAO,cAAc,KAAI,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AACrE,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;IAE/B,MAAM,EAAE,OAAO,EAAA,GAAc,cAAc,EAAvB,IAAI,GAAA,MAAA,CAAK,cAAc,EAArC,CAAoB,SAAA,CAAA,CAAiB;IAE3C,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;;IAG1D,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC7E,CAAC,CAAA;;ACPc,KAAK,CAAC,mCAAmC;AAEjD,MAAM,aAAa,GAAG,YAAY,CAGvC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,KAAI;AACrC,IAAA,MAAM,EACJ,OAAO,EACP,WAAW,EACX,YAAY,EAAE,eAAe,EAC7B,oBAAoB,EACpB,SAAS,GACV,GAAG,OAAO;IAEX,IAAI,YAAY,GAAG,eAAe;AAElC,IAAA,IACE,oBAAoB;AACpB,QAAA,oBAAoB,CAAC,GAAG;QACxB,oBAAoB,CAAC,QAAQ,KAAK,UAAU;AAC5C,QAAA,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC/B;AACA,QAAA,YAAY,GAAG,eAAe,GAAG,IAAI;;AAGvC,IAAA,IACE,oBAAoB;AACpB,QAAA,oBAAoB,CAAC,GAAG;QACxB,oBAAoB,CAAC,QAAQ,KAAK,MAAM;AACxC,QAAA,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,EAChC;AACA,QAAA,YAAY,GAAG,eAAe,GAAG,KAAK;;IAGxC,MAAM,cAAc,GAAG,MAAW,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AAChC,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;QAE/B,MAAM,UAAU,GACd,oBAAoB;AACpB,YAAA,oBAAoB,CAAC,GAAG;AACxB,YAAA,oBAAoB,CAAC,QAAQ,KAAK,UAAU;QAE9C,MAAM,YAAY,GAAG,EAAE;QAEvB,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,0BAA0B;AAC9B,YAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBAC/B,0BAA0B,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;YAExD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAChC,gBAAA,0BAA0B,GAAG,YAAY,GAAG,IAAI;;YAElD,IAAI,0BAA0B,EAAE;gBAC9B,YAAY,CAAC,IAAI,CACf,EAAE,CACA,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,EACvC,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,0BAA0B,CAAC,CACtD,CACF;;YAEH,IAAI,CAAC,0BAA0B,EAAE;AAC/B,gBAAA,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;;;aAEvD;AACL,YAAA,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;;QAG5D,IAAI,OAAO,EAAE;AACX,YAAA,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;QAGlD,IAAI,WAAW,EAAE;AACf,YAAA,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;;QAG1D,MAAM,IAAI,GAAG,MAAM;AAChB,aAAA,MAAM;aACN,IAAI,CAAC,QAAQ;AACb,aAAA,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;aAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QAExE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACzB;;AAGF,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;AAExB,QAAA,MAAM,EACJ,OAAO,EACP,GAAG,EACH,YAAY,EAAE,kBAAkB,EAChC,aAAa,EAAE,mBAAmB,EAClC,WAAW,EAAE,iBAAiB,EAC9B,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,eAAe,EAC1B,cAAc,EAAE,oBAAoB,EACpC,UAAU,EAAE,gBAAgB,EAC5B,YAAY,EACZ,eAAe,GAChB,GAAG,QAAQ;AAEZ,QAAA,IAAI,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,GAAG,QAAQ;QAE5D,IAAI,sBAAsB,GACxB,mBAAmB;AAGrB,QAAA,IACE,oBAAoB;AACpB,YAAA,oBAAoB,CAAC,YAAY,KAAK,UAAU,EAChD;YACA,IAAI,kBAAkB,GAAG,IAAI;AAE7B,YAAA,IACE,gBAAgB;gBAChB,uBAAuB;AACvB,gBAAA,uBAAuB,CAAC,QAAQ,CAAC,MAAM,CAAC,EACxC;AACA,gBAAA,IAAI;AACF,oBAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,uBAAuB,EAAE;AACpD,wBAAA,MAAM,EAAE,MAAM;AACf,qBAAA,CAAC;;AAGF,oBAAA,IAAI,QAAQ,CAAC,EAAE,EAAE;wBACf,kBAAkB,GAAG,KAAK;;;gBAE5B,OAAO,KAAK,EAAE;oBACd,kBAAkB,GAAG,IAAI;;;YAI7B,IAAI,kBAAkB,EAAE;gBACtB,IAAI,GAAG,GAAG,eAAe;AACzB,gBAAA,IACE,CAAC,GAAG;oBACJ,oBAAoB;AACpB,oBAAA,oBAAoB,CAAC,YAAY,KAAK,UAAU,EAChD;oBACA,GAAG,GAAG,QAAQ;;gBAGhB,GAAG,GAAG,GAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAE7B,gBAAA,IACE,CAAC,gBAAgB;oBACjB,mBAAmB;AACnB,oBAAA,mBAAmB,CAAC,MAAM,KAAK,EAAE,EACjC;;;oBAGA,MAAM,uBAAuB,GAAG,MAAM;AACnC,yBAAA,MAAM,CAAC;wBACN,aAAa,EAAE,QAAQ,CAAC,aAAa;qBACtC;yBACA,IAAI,CAAC,QAAQ;yBACb,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC,EACzC,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAClD,CACF;oBAEH,IAAI,uBAAuB,IAAI,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE;AACjE,wBAAA,MAAM,GAAG,GAAG,uBAAuB,CAAC,CAAC,CAAC;AACtC,wBAAA,gBAAgB,GAAG,GAAG,CAAC,aAAa;AACpC,wBAAA,MAAM,cAAc,CAAC;4BACnB,OAAO;4BACP,gBAAgB;AAChB,4BAAA,eAAe,EAAE,SAAS;AAC3B,yBAAA,CAAC;;;AAIN,gBAAA,MAAM,OAAO,GAAG,CAAU,OAAA,EAAA,GAAG,EAAE;gBAC/B,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;gBAChD,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAI;oBAC1C,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,gBAAiB,CAAC;AACxD,iBAAC,CAAC;gBACF,IAAI,UAAU,GAAG,KAAK;AACtB,gBAAA,IAAI,QAAQ;AACZ,gBAAA,IAAI,QAAQ;gBACZ,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC7C,UAAU,GAAG,IAAI;AACjB,oBAAA,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC;AAC3B,oBAAA,QAAQ,GAAG,CAAU,OAAA,EAAA,GAAG,CAAI,CAAA,EAAA,QAAQ,EAAE;;AAExC,gBAAA,IAAI,UAAU,IAAI,QAAQ,IAAI,QAAQ,EAAE;oBACtC,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBACzD,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC;AACtD,oBAAA,uBAAuB,GAAG,GAAG,CAAC,eAAe,CAAC,WAAW,CAAC;AAC1D,oBAAA,MAAM,cAAc,CAAC;wBACnB,OAAO;AACP,wBAAA,gBAAgB,EAAE,QAAQ;AAC3B,qBAAA,CAAC;;;;AAKR,QAAA,IACE,oBAAoB;YACpB,oBAAoB,CAAC,QAAQ,KAAK,MAAM;AACxC,YAAA,oBAAoB,CAAC,GAAG;AACxB,YAAA,OAAO,mBAAmB,KAAK,QAAQ,EACvC;AACA,YAAA,sBAAsB,GAAG,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC;;AAGzD,QAAA,QAAQ,CAAC;AACP,YAAA,IAAI,EAAE,eAAe;YACrB,OAAO;YACP,GAAG;AACH,YAAA,aAAa,EAAE,sBAAsB;AACrC,YAAA,WAAW,EAAE,iBAAiB;AAC9B,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,cAAc,EAAE,oBAAoB;AACpC,YAAA,UAAU,EAAE,gBAAgB;AAC5B,YAAA,SAAS,EAAE,eAAe;YAC1B,YAAY;YACZ,eAAe;YACf,gBAAgB;YAChB,uBAAuB;AACvB,YAAA,WAAW,EAAE,uBAAuB;AACpC,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC;AAEF,QAAA,IACE,oBAAoB;AACpB,YAAA,oBAAoB,CAAC,WAAW;AAChC,YAAA,oBAAoB,CAAC,WAAW,KAAK,aAAa,EAClD;YACA,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,qBAAgB,CAAC;AAC/C,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;gBAC3B,WAAW;gBACX,SAAS;AACV,aAAA,CAAC;YACF,IAAI,IAAI,EAAE;AACR,gBAAA,MAAM,QAAQ,GAAG,CAAA,OAAA,EAAU,eAAe,CAAI,CAAA,EAAA,gBAAgB,EAAE;gBAChE,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAEjD,IAAI,CAAC,MAAM,EAAE;oBACX;;AAGF,gBAAA,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;AAC9C,gBAAA,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC;gBAClE;;;AAGN,KAAC,CAAA;AAED,IAAA,cAAc,EAAE,CAAC,IAAI,CAAC,MAAK;AACzB,QAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC;AAC5C,KAAC,CAAC;AACJ,CAAC,CAAC;;AC5PK,MAAM,cAAc,GAAmB,CAI3C,EAAA,KAJkD,SAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,CAAA,EAAA,WAAA,EACnD,OAAO,EACP,WAAW,EACX,GAAG,GACJ,EAAA;AACC,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;IAE/B,MAAM,YAAY,GAAG,EAAE;IAEvB,IAAI,WAAW,EAAE;AACf,QAAA,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;;IAGtD,IAAI,OAAO,EAAE;AACX,QAAA,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;IAGlD,IAAI,GAAG,EAAE;AACP,QAAA,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;;IAG1C,MAAM,SAAS,GAAG,MAAM;AACrB,SAAA,MAAM;SACN,IAAI,CAAC,QAAQ;AACb,SAAA,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;IAE9B,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;QACnC;;AAGF,IAAA,OAAO,SAAS,CAAC,CAAC,CAAC;AACrB,CAAC,CAAA;;ACpCD,MAAMA,QAAM,GAAG,KAAK,CAAC,mCAAmC,CAAC;AAEzD,MAAM,mBAAmB,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,KAAI;IAClE,IAAI,CAAC,SAAS,KAAK,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,EAAE;QAC5C;;IAEF,YAAY,CAAC,IAAI,CAAC,CAAQ,KAAA,EAAA,SAAS,CAAI,CAAA,EAAA,OAAO,IAAI,WAAW,CAAS,OAAA,CAAA,CAAC;AACzE,CAAC;AAIM,MAAM,uBAAuB,GAA4B,QAc3D,SAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,CAAA,EAAA,WAdkE,EACrE,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,WAAW,EACX,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,uBAAuB,EACvB,cAAc,EACd,UAAU,EACV,SAAS,EACT,eAAe,GAChB,EAAA;AACC,IAAA,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE;AAC5B,QAAAA,QAAM,CACJ,CAAA,qFAAA,EAAwF,YAAY,CAAA,CAAE,CACvG;QACD;;IAGF,IAAI,YAAY,GAAG,QAAQ;IAE3B,IACE,OAAO,QAAQ,KAAK,QAAQ;AAC5B,QAAA,CAAC,uBAAuB;QACxB,CAAC,gBAAgB,EACjB;AACA,QAAA,YAAY,GAAG,kBAAkB,CAAC,QAAQ,CAAC;;AAG7C,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;IAE/B,MAAM,IAAI,GAAG,MAAM;AAChB,SAAA,MAAM;SACN,IAAI,CAAC,QAAQ;SACb,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAa,CAAC,EACxC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAY,CAAC,CACvC;SAEF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;;;;;;;;;;;;;;;;;;IAoBxE,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3B,MAAM,EACJ,OAAO,EACP,GAAG,EACH,YAAY,EAAE,kBAAkB,EAChC,aAAa,EAAE,mBAAmB,EAClC,SAAS,EACT,OAAO,EACP,WAAW,EAAE,iBAAiB,EAC9B,cAAc,EACd,UAAU,EACV,SAAS,EACT,WAAW,EACX,eAAe,EAAE,qBAAqB,EACtC,WAAW,EAAE,iBAAiB,EAC9B,gBAAgB,EAAE,sBAAsB,EACxC,uBAAuB,EAAE,6BAA6B,GACvD,GAAG,IAAI,CAAC,CAAC,CAAC;QAEX,IACE,mBAAmB,KAAK,QAAQ;YAChC,SAAS,MAAK,SAAS,KAAT,IAAA,IAAA,SAAS,uBAAT,SAAS,CAAE,WAAW,EAAE,CAAA;AACtC,YAAA,iBAAiB,KAAK,WAAW;YACjC,sBAAsB,KAAK,gBAAgB,EAC3C;AACA,YAAAA,QAAM,CACJ,CAAA,2FAAA,EAA8F,kBAAkB,CAAA,CAAE,CACnH;YACD;;;QAIF,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,MAAM,uBAAuB,GAAG,CAAA;2EACqC,YAAY,CAAA;0EACb,WAAW,GAAG,CAAA,CAAA,EAAI,WAAW,CAAG,CAAA,CAAA,GAAG,MAAM,CAAA;0EACzC,gBAAgB,GAAG,CAAA,CAAA,EAAI,gBAAgB,CAAG,CAAA,CAAA,GAAG,MAAM,CAAA;0EACnD,uBAAuB,GAAG,CAAA,CAAA,EAAI,uBAAuB,CAAG,CAAA,CAAA,GAAG,MAAM,CAAA;0EACjE,IAAI,CAAC,GAAG,EAAE;AACzB,yDAAA,EAAA,OAAO,IAAI;YAEhE,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YAEjD,mBAAmB,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;YAExD;;QAGF,MAAM,cAAc,GAAG,MAAM,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC;QACzD,MAAM,iBAAiB,GAAG,MAAM,cAAc,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;;AAG3E,QAAA,MAAM,UAAU,GAAG,UAAU,EAAE;AAE/B,QAAA,MAAM,oBAAoB,GAAG,CAAA;;;;;;;;;;;;;;;6CAeY,UAAU,CAAA;6CACV,kBAAkB,CAAA;6CAClB,YAAY,CAAA;6CACZ,SAAS,KAAI,SAAS,KAAT,IAAA,IAAA,SAAS,uBAAT,SAAS,CAAE,WAAW,EAAE,CAAA,CAAA;AACtC,0CAAA,EAAA,CAAA,cAAc,KAAd,IAAA,IAAA,cAAc,uBAAd,cAAc,CAAE,GAAG,IAAG,CAAA,CAAA,EAAI,cAAc,CAAC,GAAG,GAAG,GAAG,MAAM,CAAA;6CACvD,iBAAiB,CAAA;6CACjB,cAAc,CAAA;AACf,0CAAA,EAAA,CAAA,iBAAiB,KAAjB,IAAA,IAAA,iBAAiB,uBAAjB,iBAAiB,CAAE,GAAG,IAAG,CAAA,CAAA,EAAI,iBAAiB,CAAC,GAAG,GAAG,GAAG,MAAM,CAAA;6CAC7D,SAAS,CAAA;4CACV,WAAW,GAAG,CAAA,CAAA,EAAI,WAAW,CAAG,CAAA,CAAA,GAAG,MAAM,CAAA;4CACzC,WAAW,GAAG,CAAA,CAAA,EAAI,WAAW,CAAG,CAAA,CAAA,GAAG,MAAM,CAAA;4CACzC,gBAAgB,GAAG,CAAA,CAAA,EAAI,gBAAgB,CAAG,CAAA,CAAA,GAAG,MAAM,CAAA;4CACnD,uBAAuB,GAAG,CAAA,CAAA,EAAI,uBAAuB,CAAG,CAAA,CAAA,GAAG,MAAM,CAAA;4CACjE,eAAe,GAAG,CAAA,CAAA,EAAI,eAAe,CAAG,CAAA,CAAA,GAAG,MAAM,CAAA;AACjD,0CAAA,EAAA,IAAI,CAAC,GAAG,EAAE,CAAA,EAAA,CAAI;QAEtD,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAE9C,mBAAmB,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;QAExD;;;AAKF,IAAA,MAAM,UAAU,GAAG,UAAU,EAAE;IAE/B,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC;QACnD,IAAI,QAAQ,EAAE;AACZ,YAAA,OAAO,GAAG,QAAQ,CAAC,GAAG;;;IAI1B,IAAI,CAAC,UAAU,EAAE;QACf,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;QACrE,IAAI,WAAW,EAAE;AACf,YAAA,UAAU,GAAG,WAAW,CAAC,GAAG;;;AAIhC,IAAA,MAAM,oBAAoB,GAAG,CAAA;;;;;;;;;;;;;;2CAcY,UAAU,CAAA;2CACV,YAAY,CAAA;2CACZ,YAAY,CAAA;AACZ,yCAAA,EAAA,SAAS,aAAT,SAAS,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAT,SAAS,CAAE,WAAW,EAAE,CAAA;0CACzB,OAAO,GAAG,CAAA,CAAA,EAAI,OAAO,CAAG,CAAA,CAAA,GAAG,MAAM,CAAA;2CAChC,WAAW,CAAA;2CACX,cAAc,CAAA;0CACf,UAAU,GAAG,CAAA,CAAA,EAAI,UAAU,CAAG,CAAA,CAAA,GAAG,MAAM,CAAA;2CACtC,SAAS,CAAA;0CACV,WAAW,GAAG,CAAA,CAAA,EAAI,WAAW,CAAG,CAAA,CAAA,GAAG,MAAM,CAAA;0CACzC,gBAAgB,GAAG,CAAA,CAAA,EAAI,gBAAgB,CAAG,CAAA,CAAA,GAAG,MAAM,CAAA;0CACnD,uBAAuB,GAAG,CAAA,CAAA,EAAI,uBAAuB,CAAG,CAAA,CAAA,GAAG,MAAM,CAAA;0CACjE,eAAe,GAAG,CAAA,CAAA,EAAI,eAAe,CAAG,CAAA,CAAA,GAAG,MAAM,CAAA;AACjD,wCAAA,EAAA,IAAI,CAAC,GAAG,EAAE,CAAA,EAAA,CAAI;IAEtD,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAE9C,mBAAmB,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;AAK1D,CAAC,CAAA;;ACxNM,MAAM,YAAY,GAAG,YAAY,CAGtC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAI;IAC5C,MAAM,EACJ,OAAO,EACP,YAAY,EAAE,eAAe,EAC7B,WAAW,EACX,cAAc,EACd,UAAU,EACV,aAAa,EAAE,aAAa,EAC5B,oBAAoB,EACpB,SAAS,GACV,GAAG,OAAO;AAEX,IAAA,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO;AAE3B,IAAA,IAAI,QAA+B;IAEnC,IAAI,KAAK,EAAE;AACT,QAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ;;AAG3B,IAAA,IAAI,aAAa,KAAK,QAAQ,EAAE;AAC9B,QAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC;QAC1C;;IAGF,IAAI,CAAC,oBAAoB,EAAE;AACzB,QAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;;IAGjD,MAAM,aAAa,GAAG,MAA6B,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;QACjD,IAAI,YAAY,GAAG,eAAe;QAElC,IACE,oBAAoB,CAAC,YAAY;YACjC,oBAAoB,CAAC,YAAY,KAAK,UAAU;AAChD,YAAA,oBAAoB,CAAC,QAAQ,KAAK,UAAU,EAC5C;AACA,YAAA,QAAQ,CAAC;AACP,gBAAA,IAAI,EAAE,cAAc;gBACpB,QAAQ;AACT,aAAA,CAAC;AACF,YAAA,OAAO,KAAK;;AAGd,QAAA,IACE,oBAAoB,CAAC,YAAY,KAAK,UAAU;AAChD,YAAA,oBAAoB,CAAC,QAAQ,KAAK,UAAU,EAC5C;AACA,YAAA,QAAQ,CAAC;AACP,gBAAA,IAAI,EAAE,cAAc;gBACpB,QAAQ;AACT,aAAA,CAAC;AACF,YAAA,OAAO,KAAK;;QAGd,IACE,oBAAoB,CAAC,WAAW;AAChC,YAAA,oBAAoB,CAAC,WAAW,KAAK,aAAa,EAClD;AACA,YAAA,QAAQ,CAAC;AACP,gBAAA,IAAI,EAAE,iBAAiB;gBACvB,QAAQ;AACT,aAAA,CAAC;AACF,YAAA,OAAO,KAAK;;QAGd,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,IAAI,WAAW;AAEf,YAAA,IAAI,oBAAoB,CAAC,QAAQ,EAAE;AACjC,gBAAA,WAAW,GAAG,mBAAmB,CAAC,oBAAoB,CAAC,QAAQ;AAC5D,qBAAA,GAAwB;;AAG7B,YAAA,MAAM,aAAa,GAAG,MAAM,wBAAwB,CAAC;gBACnD,YAAY;gBACZ,WAAW;AACZ,aAAA,CAAC;YACF,IAAI,aAAa,EAAE;AACjB,gBAAA,SAAS,GAAG,aAAa,CAAC,EAAE;;;AAIhC,QAAA,MAAM,uBAAuB,CAAC;YAC5B,OAAO;YACP,YAAY;YACZ,QAAQ;YACR,WAAW;YACX,cAAc;YACd,UAAU;YACV,SAAS;YACT,SAAS;AACV,SAAA,CAAC;AAEF,QAAA,QAAQ,CAAC;AACP,YAAA,IAAI,EAAE,eAAe;AACrB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA,CAAC;AAEF,QAAA,OAAO,IAAI;AACb,KAAC,CAAA;AAED,IAAA,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;QAC9B,IAAI,MAAM,EAAE;AACV,YAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC;;AAE9C,KAAC,CAAC;AACJ,CAAC,CAAC;;ACvGF,MAAM,qBAAqB,GAAG,CAAO,IAAU,KAA0B,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AACvE,IAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;AAC7B,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAC/B,QAAA,MAAM,CAAC,MAAM,GAAG,CAAO,CAAC,KAAI,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AAC1B,YAAA,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,MAAqB;YAElD,OAAO,CAAC,WAAW,CAAC;AACtB,SAAC,CAAA;AAED,QAAA,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAChC,KAAC,CAAC;AACJ,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,CAAO,GAAW,KAAI,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AACvC,IAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC;IACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AACrD,IAAA,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE;AAChD,IAAA,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC;IAEzC,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAC/B,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAC9C,EAAE,CACH;AAED,IAAA,IAAI,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;IAE/B,IAAI,QAAQ,EAAE;AACZ,QAAA,MAAM,GAAG,CAAQ,KAAA,EAAA,QAAQ,CAAW,QAAA,EAAA,MAAM,EAAE;;AAG9C,IAAA,OAAO,MAAM;AACf,CAAC,CAAA;AAED,IAAI,cAAkC;AAE/B,MAAM,YAAY,GAAG,YAAY,CAGtC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAI;IAC5C,MAAM,EACJ,OAAO,EACP,YAAY,EAAE,eAAe,EAC7B,aAAa,EAAE,aAAa,EAC5B,oBAAoB,EACpB,SAAS,EACT,WAAW,EACX,OAAO,EACP,cAAc,EACd,UAAU,GACX,GAAG,OAAO;AAEX,IAAA,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO;AAE3B,IAAA,IAAI,QAA+B;IAEnC,IAAI,KAAK,EAAE;AACT,QAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ;;AAG3B,IAAA,IAAI,aAAa,KAAK,QAAQ,EAAE;AAC9B,QAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC;QAC1C;;IAGF,MAAM,aAAa,GAAG,MAA0B,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;QAC9C,IAAI,YAAY,GAAG,eAAe;QAElC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACnC,YAAA,YAAY,GAAG,CAAA,EAAG,YAAY,CAAA,EAAA,CAAI;;AAGpC,QAAA,IAAI,YAAY;AAChB,QAAA,IAAI,QAA0C;AAC9C,QAAA,IAAI,QAAQ;AACZ,QAAA,IAAI,QAAQ;QAEZ,IAAI,CAAC,cAAc,EAAE;AACnB,YAAA,cAAc,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC;;AAGtD,QAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAChC,YAAA,YAAY,GAAG,qBAAqB,CAAC,QAAQ,CAAC;;AAGhD,QAAA,IAAI,YAAY,KAAK,aAAa,EAAE;AAClC,YAAA,QAAQ,GAAG,WAAW,CAAC,QAAkB,CAAC;AAC1C,YAAA,MAAM,UAAU,GAAI,QAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AACrD,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC;AAErC,YAAA,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM;AACxC,YAAA,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC;AAChD,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;gBACrC,WAAW,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;;AAE7C,YAAA,QAAQ,GAAG,WAAW,CAAC,MAAM;;AAG/B,QAAA,IAAI,YAAY,KAAK,KAAK,EAAE;AAC1B,YAAA,QAAQ,GAAG,MAAM,UAAU,CAAC,QAAkB,CAAC;;AAGjD,QAAA,IAAI,QAAQ,YAAY,IAAI,EAAE;AAC5B,YAAA,QAAQ,GAAG,QAAQ,CAAC,IAAI;AACxB,YAAA,QAAQ,GAAG,QAAQ,CAAC,IAAI;AACxB,YAAA,QAAQ,GAAG,MAAM,qBAAqB,CAAC,QAAQ,CAAC;;QAGlD,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC;;AAGvC,QAAA,MAAM,mBAAmB,GAAG,MAAM,UAAU,CAAC;AAC3C,YAAA,IAAI,EAAE,OAAO;AACd,SAAA,CAAC;QAEF,IAAI,CAAC,QAAQ,EAAE;YACb,QAAQ,GAAG,mBAAmB;YAC9B,IAAI,QAAQ,EAAE;AACZ,gBAAA,QAAQ,IAAI,CAAA,CAAA,EAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE;;;AAI5C,QAAA,MAAM,QAAQ,GAAG,CAAiB,cAAA,EAAA,QAAQ,EAAE;AAE5C,QAA4B,MAAM,aAAa,CAAC;AAC9C,YAAA,WAAW,EAAE,mBAAmB;AAChC,YAAA,QAAQ,EAAE,OAAO;AAClB,SAAA;AAED,QAAA,IAAI,QAAQ,YAAY,WAAW,EAAE;AACnC,YAAA,IAAI;AACF,gBAAA,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;;YAC/D,OAAO,CAAC,EAAE;gBACV,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;AACpD,gBAAA,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC;;;AAI7C,QAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAChC,YAAA,IAAI;gBACF,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC;;YAC/C,OAAO,CAAC,EAAE;AACV,gBAAA,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACpC,gBAAA,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC;;;QAI7C,MAAM,uBAAuB,GAAG,MAAM,eAAe,CAAC,qBAAqB,CAAC,QAAQ,CAAC;QAErF,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,SAAS,GAAG,+BAA+B,CAAC,YAAY,CAAC;;QAG3D,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,cAAc,CAClB;gBACE,YAAY;AACZ,gBAAA,aAAa,EAAE,mBAAmB;gBAClC,WAAW;gBACX,OAAO;gBACP,cAAc;gBACd,UAAU;gBACV,SAAS;gBACT,SAAS;AACT,gBAAA,WAAW,EAAE,OAAO;AACpB,gBAAA,WAAW,EAAE,cAAc;AAC3B,gBAAA,YAAY,EAAE,cAAc;gBAC5B,uBAAuB;AACvB,gBAAA,gBAAgB,EAAE,QAAQ;AAC1B,gBAAA,eAAe,EAAE,SAAS;AAC1B,gBAAA,WAAW,EAAE,SAAS;aACvB,EACD,oBAAoB,CACrB;;QAGH,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,uBAAuB,CAAC;AAC5B,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,YAAY,EAAE,eAAe;AAC7B,gBAAA,QAAQ,EAAE,mBAAmB;gBAC7B,WAAW;gBACX,cAAc;gBACd,SAAS;gBACT,SAAS;AACT,gBAAA,WAAW,EAAE,OAAO;gBACpB,uBAAuB;AACvB,gBAAA,gBAAgB,EAAE,QAAQ;AAC1B,gBAAA,WAAW,EAAE,cAAc;AAC3B,gBAAA,YAAY,EAAE,cAAc;AAC5B,gBAAA,eAAe,EAAE,SAAS;AAC1B,gBAAA,WAAW,EAAE,SAAS;AACvB,aAAA,CAAC;;AAGJ,QAAA,QAAQ,CAAC;AACP,YAAA,IAAI,EAAE,eAAe;AACrB,YAAA,aAAa,EAAE,mBAAmB;AAClC,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,YAAY,EAAE,cAAc;AAC5B,YAAA,WAAW,EAAE,uBAAuB;AACpC,YAAA,uBAAuB,EAAE,uBAAuB;AAChD,YAAA,gBAAgB,EAAE,QAAQ;AAC1B,YAAA,eAAe,EAAE,SAAS;AAC1B,YAAA,WAAW,EAAE,SAAS;AACvB,SAAA,CAAC;AACJ,KAAC,CAAA;AAED,IAAA,aAAa,EAAE,CAAC,IAAI,CAAC,MAAK;AACxB,QAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC;AAC3C,KAAC,CAAC;AACJ,CAAC,CAAC;;AC9NK,MAAM,YAAY,GAAG,YAAY,CAGtC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAI;IAC5C,MAAM,EACJ,OAAO,EACP,YAAY,EAAE,eAAe,EAC7B,cAAc,EACd,OAAO,EACP,WAAW,EACX,aAAa,EAAE,aAAa,EAC5B,oBAAoB,GACrB,GAAG,OAAO;IAEX,IAAI,CAAC,oBAAoB,EAAE;AACzB,QAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;;AAGjD,IAAA,IAAI,QAA+B;IAEnC,IAAI,KAAK,EAAE;AACT,QAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ;;IAG3B,MAAM,aAAa,GAAG,MAA6B,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;QAGjD,IAAI,YAAY,GAAG,eAAe;QAKlC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAChC,YAAA,YAAY,GAAG,CAAA,EAAG,YAAY,CAAA,EAAA,CAAI;;AAGpC,QAAA,IAAI,YAAY;AAEhB,QAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAChC,YAAA,YAAY,GAAG,qBAAqB,CAAC,QAAQ,CAAC;;AAGhD,QAAA,IAAI,QAAQ,YAAY,IAAI,EAAE;YAC5B,YAAY,GAAG,MAAM;;AAGvB,QAAA,IAAI,oBAAoB,CAAC,QAAQ,KAAK,UAAU,EAAE;AAChD,YAAA,QAAQ,CAAC;AACP,gBAAA,IAAI,EAAE,cAAc;gBACpB,QAAQ;gBACR,YAAY;AACb,aAAA,CAAC;AACF,YAAA,OAAO,KAAK;;AAGd,QAAA,OAAO,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCb,KAAC,CAAA;AAED,IAAA,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;QAC9B,IAAI,MAAM,EAAE;AACV,YAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC;;AAE7C,KAAC,CAAC;AACJ,CAAC,CAAC;;ACrGK,MAAM,mBAAmB,GAAwB,CAAO,KAAK,KAAI,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AACtE,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;IAE/B,MAAM,YAAY,GAAG,EAAE;AAEvB,IAAA,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC;AAE9C,IAAA,KAAK,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACjE,QAAA,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;AACpD,YAAA,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,CAAC;;;IAIpE,MAAM,SAAS,GAAG,MAAM;AACrB,SAAA,MAAM;SACN,IAAI,CAAC,QAAQ;AACb,SAAA,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;IAE9B,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;QACxC;;AAGF,IAAA,OAAO,SAAS,CAAC,CAAC,CAAC;AACrB,CAAC,CAAA;;AClBM,MAAM,eAAe,GAAG,YAAY,CAGzC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAI;AAC5C,IAAA,MAAM,EACJ,OAAO,EACP,WAAW,EACX,OAAO,EACP,YAAY,EACZ,oBAAoB,EACpB,SAAS,EACT,aAAa,EAAE,aAAa,GAC7B,GAAG,OAAO;IAEX,IAAI,CAAC,oBAAoB,EAAE;AACzB,QAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;;AAGjD,IAAA,IAAI,QAA+B;IAEnC,IAAI,KAAK,EAAE;AACT,QAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ;;AAG3B,IAAA,IAAI,aAAa,KAAK,QAAQ,EAAE;AAC9B,QAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC;QAC1C;;IAGF,MAAM,gBAAgB,GAAG,MAA6B,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;;AAEpD,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;AAC/B,QAAA,IAAI,YAAY;QAEhB,IAAI,OAAO,EAAE;YACX,YAAY,GAAG,MAAM,mBAAmB,CAAC;gBACvC,OAAO;AACR,aAAA,CAAC;;AAGJ,QAAA,IAAI,CAAC,OAAO,IAAI,WAAW,EAAE;AAC3B,YAAA,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC;gBACjC,WAAW;AACZ,aAAA,CAAC;YACF,IAAI,QAAQ,EAAE;AACZ,gBAAA,MAAM,YAAY,GAAG;AACnB,oBAAA,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;AACvC,oBAAA,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;iBACtC;AAED,gBAAA,IAAI,QAAQ,CAAC,oBAAoB,EAAE;AACjC,oBAAA,YAAY,CAAC,IAAI,CACf,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAC3D;;gBAGH,MAAM,SAAS,GAAG,MAAM;AACrB,qBAAA,MAAM;qBACN,IAAI,CAAC,QAAQ;AACb,qBAAA,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;AAE9B,gBAAA,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,EAAE;AACjC,oBAAA,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC;;gBAG7B,IAAI,CAAC,YAAY,EAAE;AACjB,oBAAA,MAAM,gBAAgB,GAAG,MAAM,cAAc,CAC3C;wBACE,YAAY;AACZ,wBAAA,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE;wBAClC,WAAW;wBACX,OAAO;wBACP,cAAc,EAAE,QAAQ,CAAC,oBAAoB;wBAC7C,UAAU,EAAE,QAAQ,CAAC,gBAAgB;wBACrC,eAAe,EAAE,oBAAoB,CAAC,eAAe;AACrD,wBAAA,YAAY,EAAE,MAAM;qBACrB,EACD,oBAAoB,CACrB;AAED,oBAAA,YAAY,GAAG,gBAAgB,CAAC,CAAC,CAAC;;;;;;;;;;;;QAcxC,MAAM,eAAe,GACnB,oBAAoB,CAAC,eAAe,IAAI,YAAY,CAAC,eAAe;AACtE,QAAA,MAAM,QAAQ,GACZ,YAAY,CAAC,gBAAgB;AAC7B,YAAA,CAAA,EAAG,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,WAAW,CAAA,EAAG,oBAAoB,CAAC,cAAc,CAAA,CAAE;AAE7F,QAAA,IAAI,CAAC,eAAe,IAAI,CAAC,QAAQ,EAAE;YACjC,MAAM,IAAI,KAAK,CACb,CAAA,yBAAA,EAA4B,eAAe,CAAiB,cAAA,EAAA,QAAQ,CAAE,CAAA,CACvE;;AAGH,QAAA,MAAM,QAAQ,GAAG,CAAA,OAAA,EAAU,eAAe,CAAI,CAAA,EAAA,QAAQ,EAAE;AACxD,QAAA,IAAI;YACF,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC;;QAC/C,OAAO,KAAK,EAAE;AACd,YAAA,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC;;AAGtC,QAAA,MAAM;aACH,MAAM,CAAC,QAAQ;AACf,aAAA,GAAG,CAAC;AACH,YAAA,gBAAgB,EAAE,QAAQ;SAC3B;AACA,aAAA,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;AAEpD,QAAA,QAAQ,CAAC;AACP,YAAA,IAAI,EAAE,eAAe;AACrB,YAAA,WAAW,EAAE,QAAQ;AACtB,SAAA,CAAC;AAEF,QAAA,OAAO,IAAI;AACb,KAAC,CAAA;AAED,IAAA,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,KAAI;QAClC,IAAI,OAAO,EAAE;AACX,YAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC;;AAEhD,KAAC,CAAC;AACJ,CAAC,CAAC;;ACtIF;AAEO,MAAM,eAAe,GAAG,KAAK,CAAC;AACnC,IAAA,KAAK,EAAE;AACL,QAAA,OAAO,EAAE,EAA4B;AACrC,QAAA,KAAK,EAAE,EAA4B;AACpC,KAAA;;;;AAID,IAAA,MAAM,EAAE;QACN,SAAS;QACT,aAAa;QACb,UAAU;QACV,mBAAmB;QACnB,oBAAoB;QACpB,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,eAAe;AAChB,KAAA;CACF,CAAC,CAAC,aAAa,CAAC;AACf,IAAA,EAAE,EAAE,cAAc;AAClB,IAAA,OAAO,EAAE,cAAc;IACvB,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,KAA+B;AACvD,IAAA,EAAE,EAAE;;AAEF,QAAA,IAAI,EAAE;YACJ,OAAO,EAAE,MAAM,CAAC;AACd,gBAAA,QAAQ,EAAE,IAAI;aACf,CAAC;AACF,YAAA,MAAM,EAAE,SAAS;AAClB,SAAA;AACD,QAAA,aAAa,EAAE;YACb,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAI;gBACrC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC;AAE7C,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAClD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjC,oBAAA,IAAI,GAAG,KAAK,MAAM,EAAE;wBAClB;;oBAEF,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC;;AAE9B,gBAAA,OAAO,UAAU;AACnB,aAAC,CAAC;AACH,SAAA;AACF,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,YAAY,EAAE;AACZ,YAAA,EAAE,EAAE;AACF,gBAAA,gBAAgB,EAAE;AAChB,oBAAA,MAAM,EAAE,iBAAiB;oBACzB,OAAO,EAAE,MAAM,CAAC;AACd,wBAAA,SAAS,EAAE,IAAI;qBAChB,CAAC;AACH,iBAAA;AACF,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,GAAG,EAAE,WAAW;AAChB,gBAAA,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACtC,aAAA;AACF,SAAA;AACD,QAAA,eAAe,EAAE;AACf,YAAA,EAAE,EAAE;AACF,gBAAA,oBAAoB,EAAE,cAAc;AACrC,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,GAAG,EAAE,eAAe;AACpB,gBAAA,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACtC,aAAA;AACF,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,EAAE,EAAE;AACF,gBAAA,iBAAiB,EAAE,MAAM;AACzB,gBAAA,iBAAiB,EAAE;AACjB,oBAAA,MAAM,EAAE,uBAAuB;AAChC,iBAAA;AACD,gBAAA,eAAe,EAAE;AACf,oBAAA,MAAM,EAAE,wBAAwB;AACjC,iBAAA;AACF,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,GAAG,EAAE,YAAY;AACjB,gBAAA,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACpD,aAAA;AACF,SAAA;AACD,QAAA,qBAAqB,EAAE;AACrB,YAAA,EAAE,EAAE;AACF,gBAAA,4BAA4B,EAAE;AAC5B,oBAAA,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,MAAM,CAAC;wBACd,uBAAuB,EAAE,CAAC,EAAE,KAAK,EAAE,KACjC,KAAK,CAAC,uBAAuB;wBAC/B,gBAAgB,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,gBAAgB;qBACxD,CAAC;AACH,iBAAA;AACD,gBAAA,yBAAyB,EAAE;AACzB,oBAAA,MAAM,EAAE,MAAM;AACf,iBAAA;AACF,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,GAAG,EAAE,qBAAqB;AAC1B,gBAAA,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACtC,aAAA;AACF,SAAA;AACD,QAAA,sBAAsB,EAAE;AACtB,YAAA,EAAE,EAAE;AACF,gBAAA,2BAA2B,EAAE;AAC3B,oBAAA,MAAM,EAAE,MAAM;AACf,iBAAA;AACF,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,GAAG,EAAE,sBAAsB;AAC3B,gBAAA,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACtC,aAAA;AACF,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,MAAM,EAAE;AACN,gBAAA,cAAc,EAAE;AACd,oBAAA,EAAE,EAAE;AACF,wBAAA,oBAAoB,EAAE;AACpB,4BAAA,MAAM,EAAE,YAAY;AACrB,yBAAA;AACD,wBAAA,YAAY,EAAE,gBAAgB;AAC9B,wBAAA,YAAY,EAAE,gBAAgB;AAC9B,wBAAA,eAAe,EAAE,mBAAmB;AACrC,qBAAA;AACD,oBAAA,MAAM,EAAE;AACN,wBAAA,GAAG,EAAE,cAAc;AACnB,wBAAA,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACpD,qBAAA;AACF,iBAAA;AACD,gBAAA,cAAc,EAAE;AACd,oBAAA,EAAE,EAAE;AACF,wBAAA,mBAAmB,EAAE,YAAY;AAClC,qBAAA;AACD,oBAAA,MAAM,EAAE;AACN,wBAAA,GAAG,EAAE,cAAc;AACnB,wBAAA,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACpD,qBAAA;AACF,iBAAA;AACD,gBAAA,cAAc,EAAE;AACd,oBAAA,EAAE,EAAE;AACF,wBAAA,mBAAmB,EAAE,YAAY;AAClC,qBAAA;AACD,oBAAA,MAAM,EAAE;AACN,wBAAA,GAAG,EAAE,cAAc;AACnB,wBAAA,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACpD,qBAAA;AACF,iBAAA;AACD,gBAAA,iBAAiB,EAAE;AACjB,oBAAA,EAAE,EAAE;AACF,wBAAA,sBAAsB,EAAE,YAAY;AACrC,qBAAA;AACD,oBAAA,MAAM,EAAE;AACN,wBAAA,GAAG,EAAE,iBAAiB;AACtB,wBAAA,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACpD,qBAAA;AACF,iBAAA;AACD,gBAAA,UAAU,EAAE;AACV,oBAAA,IAAI,EAAE,OAAO;AACd,iBAAA;AACF,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,KAAI;oBAC9B,OAAO;AACL,wBAAA,QAAQ,EAAE,KAAK;qBAChB;AACH,iBAAC,CAAC;AACH,aAAA;AACF,SAAA;AACF,KAAA;;;;;;;;;;;AAYF,CAAA,CAAC;;ACjMK,MAAM0B,iBAAe,GAAG,CAI+B,EAAA,KAJxB,SAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,CAAA,EAAA,WAAA,EACpC,YAAY,EACZ,WAAW,EACX,OAAO,GACgB,EAAA;AACvB,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;AAE/B,IAAA,MAAM,YAAY,GAAU;AAC1B,QAAA,EAAE,CACA,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,EACvC,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC,EAC9C,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,GAAG,KAAK,CAAC,CAChD;KACF;IAED,IAAI,WAAW,EAAE;AACf,QAAA,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;;IAG1D,IAAI,OAAO,EAAE;AACX,QAAA,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;AAGlD,IAAA,MAAM,IAAI,IAAI,MAAM;AACjB,SAAA,MAAM;SACN,IAAI,CAAC,QAAQ;AACb,SAAA,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;SAC1B,OAAO,CACN,GAAG,CAAC,GAAG,CAAC,CAAmD,iDAAA,CAAA,CAAC,CAC7D,CAAmB;IAEtB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9B;;AAGF,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;IAEnB,OACK,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,GAAG,CACN,EAAA,EAAA,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EACpC,CAAA;AACH,CAAC,CAAA;;;AChCD,MAAM1B,QAAM,GAAG,KAAK,CAAC,oBAAoB,CAAC;MAYpB,gBAAgB,CAAA;AAepC,IAAA,WAAA,CAAY,aAAmD,EAAA;QAR5C,IAAW,CAAA,WAAA,GAAY,KAAK;QAC5B,IAAO,CAAA,OAAA,GAAY,KAAK;QAK3C,IAAW,CAAA2B,IAAA,CAAA,GAAG,IAAI;QAGhB,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,oBAAoB,EAAE,SAAS,EAAE,GAAG,aAAa;QAEnJ,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;;AAG3C,QAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC;QAEtC,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CAAC,SAAS,SAAS,CAAA,UAAA,CAAY,CAAC;;QAGjD,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,0BAAA,CAA4B,CAAC;;AAG/C,QAAA,MAAM,YAAY,GAAoC;YACpD,aAAa;YACb,YAAY;YACZ,WAAW;YACX,OAAO;YACP,cAAc;YACd,UAAU;AACV,YAAA,SAAS,EAAE,SAAS;YACpB,oBAAoB;AACpB,YAAA,oBAAoB,EAAE,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC;YACrD,SAAS;SACV;QAID,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;AACjD,YAAA,IAAI,qBAAqB;YAEzB,MAAM,oBAAoB,GACxB,UAAU,CAAC,MAAM,CAA0B,YAAY,CAAC;YAC1D,IAAI,oBAAoB,EAAE;AACxB,gBAAA,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC,QAAQ;AAE9C,gBAAA,YAAY,CAAC,oBAAoB,GAAG,oBAAoB;AAExD,gBAAA,IAAI,oBAAoB,CAAC,QAAQ,KAAK,UAAU,EAAE;AAChD,oBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;;AAGzB,gBAAA,IACE,oBAAoB,CAAC,QAAQ,KAAK,MAAM;oBACxC,oBAAoB,CAAC,GAAG,EACxB;AACA,oBAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,oBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;oBAEvB,IAAI,aAAa,EAAE;AACjB,wBAAA,IAAI;4BACF,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;;wBACtD,OAAO,CAAC,EAAE;AACV,4BAAA3B,QAAM,CAAC,iCAAiC,EAAE,CAAC,CAAC;;;oBAIhD,MAAM,oBAAoB,GAAG,SAAS,CAAC,YAAa,EAAE,CAAC,CAAC;AAExD,oBAAA,IAAI,CAAC,MAAM,GAAG,YAAY;oBAE1B,YAAY,CAAC,YAAY,GAAG,CAAG,EAAA,oBAAoB,GAAG,oBAAoB,CAAC,GAAG,CAAA,GAAA,CAAK;;AAGrF,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,qBAAqB,EAAE;;;AAM/C,QAAA,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW;QAE1C,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,CAAC,aAAa,CAAC;AAClD,QAAA,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,eAAe,EAAE;AAC3C,YAAA,KAAK,EAAE,YAAY;AACpB,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAC1C,CAAO,QAA8B,KAAI,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;YACvC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;gBAClC;;AAGF,YAAA,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ;AAC5B,YAAA,MAAM,EAAE,oBAAoB,EAAE,GAAG,OAAO;AAExC,YAAA,IAAI,OAAO,CAAC,WAAW,EAAE;AACvB,gBAAA,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CACxC,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,YAAY,CACrB;gBACD,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACjD,oBAAA,gBAAgB,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE;AAC3C,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,QAAQ,EAAE,CAAC;AACZ,qBAAA,CAAC;;;AAIN,YAAA,IAAI,WAAW;AAEf,YAAA,IACE,oBAAoB;AACpB,gBAAA,oBAAoB,CAAC,WAAW;gBAChC,oBAAoB,CAAC,WAAW,KAAK,aAAa;AAClD,gBAAA,OAAO,CAAC,gBAAgB;gBACxB,OAAO,CAAC,eAAe,EACvB;gBACA,MAAM,QAAQ,GAAG,CAAA,OAAA,EAAU,OAAO,CAAC,eAAe,CAAA,CAAA,EAAI,OAAO,CAAC,gBAAgB,CAAA,CAAE;AAChF,gBAAA,IAAI;oBACF,MAAM,MAAM,GAAG,MAAMoB,IAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;oBACjD,IAAI,MAAM,EAAE;AACV,wBAAA,WAAW,GAAG,MAAMA,IAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;;oBAE7D,IAAI,CAAC,MAAM,EAAE;wBACX,WAAW,GAAG,eAAe;;;gBAE/B,OAAO,CAAC,EAAE;AACV,oBAAApB,QAAM,CACJ,CAAA,gBAAA,EAAmB,OAAO,CAAC,WAAW,CAAA,GAAA,EAAM,OAAO,CAAC,YAAY,CAAA,qBAAA,CAAuB,EACvF,CAAC,CACF;oBACD,WAAW,GAAG,eAAe;;;YAIjC,IAAI,CAAC,WAAW,EAAE;gBAChB,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,aAAa;;YAG5D,IAAI,uBAAuB,GAAG,YAAY;AAE1C,YAAA,MAAM,aAAa,GACjB,qBAAqB,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM;YAE/D,IAAI,CAAC,aAAa,IAAI,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBAC5D,uBAAuB,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;YAGhE,IAAI,CAAC,aAAa,IAAI,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBAC7D,uBAAuB,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;AAGhE,YAAA,IAAI,aAAa,IAAI,IAAI,CAAC,MAAM,EAAE;AAChC,gBAAA,uBAAuB,GAAG,IAAI,CAAC,MAAM;;AAGvC,YAAA,IAAI,aAAa,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAGnC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,WAAW,EAAE;gBACvC;;AAGF,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;AAC/B,YAAA,IAAI,OAAO,CAAC,WAAW,EAAE;gBACvB,YAAY,CAAC,IAAI,CAAC,CAAQ,KAAA,EAAA,SAAS,CAAI,CAAA,EAAA,OAAO,CAAC,WAAW,CAAS,OAAA,CAAA,CAAC;;AAEtE,YAAA,IAAI,OAAO,CAAC,OAAO,EAAE;gBACnB,YAAY,CAAC,IAAI,CAAC,CAAQ,KAAA,EAAA,SAAS,CAAI,CAAA,EAAA,OAAO,CAAC,OAAO,CAAS,OAAA,CAAA,CAAC;;SAEnE,CAAA,CACF;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;;IAKvB,OAAO,gBAAgB,CAAC,aAAsC,EAAA;AAC5D,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;;IAGpC,OAAO,MAAM,CACX,KAA2C,EAAA;AAE3C,QAAA,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,GACtE,KAAK;QACP,IAAI,CAAC,YAAY,KAAK,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,EAAE;YAC/C;;AAEF,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAC3B,OAAO,IAAI,WAAW,GACvB,YAAY,CACb;AACD,QAAA,IAAI,WAAW,IAAI,YAAY,EAAE;YAC/B,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACpC,gBAAA,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAE;AAChE,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE;oBAC/B,QAAQ;oBACR,QAAQ,EAAE,QAAQ,GAAG,CAAC;AACvB,iBAAA,CAAC;AACF,gBAAA,OAAO,QAAQ;;YAEjB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACrC,gBAAA,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AACnC,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE;AAC/B,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,QAAQ,EAAE,CAAC;AACZ,iBAAA,CAAC;AACF,gBAAA,OAAO,WAAW;;;AAGtB,QAAA,IAAI,OAAO,IAAI,YAAY,EAAE;YAC3B,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACpC,gBAAA,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAE;AAChE,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,CAAC,EAAE,CAAC;AACtE,gBAAA,OAAO,QAAQ;;YAEjB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACrC,gBAAA,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AACnC,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AACxE,gBAAA,OAAO,WAAW;;;AAGtB,QAAA,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC;;AAGxB,IAAA,OAAa,IAAI,CAAA,EAAA,EAAA;AAAC,QAAA,OAAA,SAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA,EAAA,WAAA,EAChB,YAAY,EACZ,WAAW,EACX,OAAO,GACe,EAAA;YACtB,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,OAAO,KAAK,CAAC,YAAY,EAAE;gBAC/C;;AAEF,YAAA,MAAM,UAAU,GAAG,OAAO,IAAI,WAAW;YACzC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,UAAW,EAAE,YAAY,CAAC;YACrE,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACpC,gBAAA,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAE;AAChE,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE;oBAC/B,QAAQ;oBACR,QAAQ,EAAE,QAAQ,GAAG,CAAC;AACvB,iBAAA,CAAC;AACF,gBAAA,OAAO,QAAQ;;AAEjB,YAAA,MAAM,YAAY,GAAG,MAAM0B,iBAAe,CAAC;gBACzC,YAAY;gBACZ,WAAW;gBACX,OAAO;AACR,aAAA,CAAC;YACF,IAAI,CAAC,YAAY,EAAE;gBACjB;;AAEF,YAAA,OAAO,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC;SAC7C,CAAA;AAAA;AAED,IAAA,OAAO,QAAQ,CAAC,gBAAwB,EAAE,YAAoB,EAAA;QAC5D,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,gBAAgB,CAAC;AACvD,QAAA,OAAO,QAAQ,GAAG,IAAI,OAAO,CAAI,CAAA,EAAA,YAAY,EAAE;;IAGjD,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,QAAQ;;IAGd,YAAY,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAA0B;;AAG5D,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,OAAO;;AAG5C,IAAA,IAAI,GAAG,GAAA;QACL,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,GAAG;;AAGxC,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,WAAW;;AAGhD,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,OAAO;;AAG5C,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,SAAS;;AAG9C,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,IAAI,CAAC,MAAM;;QAEpB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,YAAY;;AAGjD,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,SAAS;;AAG9C,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,oBAAoB;;AAGzD,IAAA,IAAI,gBAAgB,GAAA;QAClB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;AACxD,YAAA,OAAO,SAAS,IAAI,CAAC,WAAW,CAAC,eAAe,CAAI,CAAA,EAAA,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE;;QAEpG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE;AAC/C,YAAA,OAAO,SAAS,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE;;;AAIjH,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,cAAc;;AAGnD,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK;;AAGlC,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;;AAGpB,IAAA,IAAI,KAAK,GAAA;;;;AAIP,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK;;IAG5B,IAAI,KAAK,CAAC,KAAU,EAAA;QAClB,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,KAAK,EAAE;YACjC;;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO;AACnD,QAAA,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;AACjC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;;AAE3B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,QAAQ,EAAE,KAAK;AAChB,SAAA,CAAC;;AAGJ,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,GAAG;;AAG1C,IAAA,SAAS,CAAC,QAAkC,EAAA;QAC1C,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC;;IAGpC,IAAI,GAAA;;YACR,MAAM,OAAO,CACX,IAAI,CAAC,QAAQ,EACb,CAAC,QAAQ,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,MAAM,EACrE;AACE,gBAAA,OAAO,EAAE,KAAM;AAChB,aAAA,CACF;;;;;;;;;SASF,CAAA;AAAA;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;;;OAlXrB,SAAS;AAZO,gBAAA,CAAA,aAAa,GAG1B,IAAI,GAAG,EAAE;;AC9BR,MAAM,0BAA0B,GAAG,CAAC,IAAgB,KAAI;IAC7D,MAAM,mBAAmB,GAAG,EAAE;IAC9B,MAAM,sBAAsB,GAAG,EAAE;IACjC,MAAM,kBAAkB,GAAG,EAAE;IAC7B,MAAM,oBAAoB,GAAqB,EAAE;IACjD,MAAM,qBAAqB,GAAG,EAAE;AAChC,IAAA,IAAI,8BAA0D;AAE9D,IAAA,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACzD,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;YAC7B;;AAGF,QAAA,MAAM,aAAa,GACjB,YAAY,CAAC,WAAW,CAAC,WAAW;AACpC,YAAA,YAAY,CAAC,WAAW,CAAC,WAAW,KAAK,aAAa;QAGtD,YAAY,CAAC,WAAW,CAAC,QAAQ,KAAK,UAAU;AAChD,YAAA,YAAY,CAAC,WAAW,CAAC,YAAY,KAAK;AAE5C,QAAA,MAAM,oBAAoB,GACxB,YAAY,CAAC,YAAY,KAAK,sBAAsB;QAEtD,IAAI,YAAY,CAAC,WAAW,CAAC,QAAQ,KAAK,UAAU,EAAE;AACpD,YAAA,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC;YACzC;;QAGF,IAAI,YAAY,CAAC,WAAW,CAAC,QAAQ,KAAK,MAAM,EAAE;AAChD,YAAA,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC;YACrC;;QAGF,IAAI,aAAa,EAAE;AACjB,YAAA,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC;YACxC;;QAGF,IAAI,oBAAoB,EAAE;YACxB,8BAA8B,GAAG,EAAE,YAAY,EAAE,eAAe,EAAE,EAAE,EAAE;YACtE;;AAGF,QAAA,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC;;IAGxC,IAAI,8BAA8B,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE;AACtE,QAAA,8BAA8B,CAAC,eAAe,GAAG,qBAAqB;;IAGxE,IAAI,8BAA8B,EAAE;AAClC,QAAA,oBAAoB,CAAC,IAAI,CAAC,8BAA8B,CAAC;;IAG3D,OAAO;QACL,mBAAmB;QACnB,sBAAsB;QACtB,kBAAkB;QAClB,oBAAoB;KACrB;AACH,CAAC;;ACrDD,MAAM1B,QAAM,GAAG,KAAK,CAAC,4BAA4B,CAAC;AAG3C,MAAM,yBAAyB,GAAG,CACvC,IAAyB,EACzB,WAA+B,KACP,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AACxB,IAAA,MAAM,eAAe,GAAwC;QAC3D,IAAI;AACJ,QAAA,IAAI,EAAE,EAAE;KACT;IAED,MAAM,EAAE,GAAG,MAAM,UAAU,EAAG,CAAC,iBAAiB,CAAC,eAAe,CAAC;IAEjE,IAAI,WAAW,EAAE;AACf,QAAAA,QAAM,CAAC,aAAa,EAAE,WAAW,CAAC;AAClC,QAAAA,QAAM,CAAC,mCAAmC,EAAE,EAAE,CAAC,EAAE,CAAC;AAClD,QAAA,EAAE,CAAC,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC;;AAG3C,IAAA,OAAO,EAAE;AACX,CAAC,CAAA;AASD,MAAM,qBAAqB,GAAG,CAC5B,cAA8B,EAC9B,OAAwB,EACxB,mBAAwC,KACZ,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AAC5B,IAAA,MAAM,YAAY,GAAG,cAAc,CAAC,YAAY;IAEhD,MAAM,YAAY,GAAsB,EAAE;AAE1C,IAAA,KAAK,MAAM,aAAa,IAAI,cAAc,CAAC,eAAe,EAAE;AAC1D,QAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,gBAAgB;QAE/C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YAC/C;;QAGF,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;QACjD,IAAI,CAAC,MAAM,EAAE;YACX;;QAGF,YAAY,CAAC,IAAI,CAAC;YAChB,YAAY,EAAE,aAAa,CAAC,YAAY;AACxC,YAAA,gBAAgB,EAAE,QAAQ;AAC3B,SAAA,CAAC;;;;;;;;;;;;;;;;;;;;;;;AAwBJ,IAAA,IAAI,YAAY;AAChB,IAAA,IAAI,WAAwB;IAE5B,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9C,QAAA,IAAI,mBAAmB,IAAI,mBAAmB,CAAC,gBAAgB,EAAE;AAC/D,YAAA,MAAM,QAAQ,GAAG,mBAAmB,CAAC,gBAAgB;YAErD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AAC/C,gBAAA,OAAO,OAAO;;YAGhB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;YACjD,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,OAAO,OAAO;;;;;;;;AAUhB,YAAA,IAAI;gBACF,YAAY,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;;YACnD,OAAO,CAAC,EAAE;AACV,gBAAA,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC;;;QAG5C,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,OAAO,OAAO;;;AAIlB,IAAA,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3B,MAAM,SAAS,GAAG,sBAAsB;;QAExC,IAAI,qBAAqB,GAAG,EAAE;AAE9B,QAAA,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;AACtC,YAAA,IAAI,mBAAmB;AAEvB,YAAA,IAAI;AACF,gBAAA,mBAAmB,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAC9C,WAAW,CAAC,gBAAgB,CAC7B;;YACD,OAAO,CAAC,EAAE;gBACV,mBAAmB,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,gBAAgB,CAAC;;AAGrE,YAAA,qBAAqB,IAAI,CAAA,EAAG,SAAS,CAAA,EAAG,WAAW,CAAC,YAAY,CAAA,EAAG,SAAS,CAAA,EAAG,mBAAmB,CAAA,CAAE;;AAGtG,QAAA,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC;;IAGnD,IAAI,CAAC,YAAY,EAAE;QACjB,MAAM,IAAI,KAAK,CAAC,CAAA,2BAAA,EAA8B,YAAY,CAAC,YAAY,CAAE,CAAA,CAAC;;AAG5E,IAAA,MAAM,UAAU,GAAG,IAAI,UAAU,CAC/B,YAAY,CAAC,MAAM,EACnB,YAAY,CAAC,UAAU,EACvB,YAAY,CAAC,UAAU,CACxB;IAED,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC;IAE1D,WAAW,GAAG,MAAM,yBAAyB,CAAC,YAAY,EAAE,WAAW,CAAC;IAExE,IAAI,mBAAmB,GAAG;UACtB,mBAAmB,CAAC;AACtB,UAAE,YAAY,CAAC,OAAO;IACxB,IAAI,gBAAgB,GAAG;UACnB,mBAAmB,CAAC;AACtB,UAAE,YAAY,CAAC,YAAY;IAE7B,OAAO,CAAC,IAAI,CAAC;QACX,gBAAgB;QAChB,mBAAmB;QACnB,WAAW,EAAE,YAAY,CAAC,WAAY;QACtC,cAAc,EAAE,YAAY,CAAC,cAAe;AAC5C,QAAA,iBAAiB,EAAE,WAAW;AAC/B,KAAA,CAAC;AAEF,IAAA,OAAO,OAAO;AAChB,CAAC,CAAA;AAQM,MAAM,iBAAiB,GAAG,CAI/B,MAAA,EAAA,GAAA,MAAA,KAHA,SAAA,CAAA,KAAA,CAAA,EAAA,CAAA,MAAA,EAAA,GAAA,MAAA,CAAA,EAAA,KAAA,CAAA,EAAA,WAAA,IAAgB,EAChB,OAAA,GAA2B,EAAE,EAC7B,mBAAwC,EAAA;;;;;;;;;IAWxC,MAAM,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,GACpD,0BAA0B,CAAC,IAAI,CAAC;AAElC,IAAA,KAAK,MAAM,cAAc,IAAI,oBAAoB,EAAE;QACjD,OAAO,GAAG,MAAM,qBAAqB,CACnC,cAAc,EACd,OAAO,EACP,mBAAmB,CACpB;;AAGH,IAAA,KAAK,MAAM,gBAAgB,IAAI,sBAAsB,EAAE;QACrD,MAAM,aAAa,GAAG,gBAAgB,CAAC,UAAU,EAAE,CAAC,WAAW;aAC5D,OAAO,CAAC,aAAa;AAExB,QAAA,IAAI,CAAC,aAAa,IAAI,gBAAgB,CAAC,GAAG,EAAE;YAC1C;;AAGF,QAAA,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,aAAa,CAAC;AAE1E,QAAA,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC;YACtC,WAAW;YACX,OAAO;AACR,SAAA,CAAC;QAEF,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,KAAK,CACb,CAAA,yBAAA,EAA4B,gBAAgB,CAAC,YAAY,CAAE,CAAA,CAC5D;;QAGH,OAAO,GAAG,MAAM,iBAAiB,CAAC,WAAW,EAAE,OAAO,EAAE,gBAAgB,CAAC;;AAG3E,IAAA,OAAO,OAAO;AAChB,CAAC,CAAA;;ACrOM,MAAM,OAAO,GAAY,CAA4C,EAAA,KAArC,SAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,CAAA,EAAA,WAAA,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,EAAA;AACxE,IAAA,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC;QACpC,SAAS;QACT,WAAW;QACX,OAAO;AACR,KAAA,CAAC;IAEF,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,CAAC,KAAK,CACX,CAAoD,iDAAA,EAAA,SAAS,CAAiB,cAAA,EAAA,WAAW,CAAa,UAAA,EAAA,OAAO,CAAE,CAAA,CAChH;QACD;;AAGF,IAAA,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;QAC5B,OAAO,CAAC,KAAK,CACX,CAAgE,6DAAA,EAAA,SAAS,CAAiB,cAAA,EAAA,WAAW,CAAa,UAAA,EAAA,OAAO,CAAE,CAAA,CAC5H;QACD;;AAGF,IAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;AACrC,CAAC,CAAA;;ACHD,MAAM,aAAa,GAAG,CAAC,IAAgB,KAAI;AACzC,IAAA,IAAI,UAAU;IAEd,IACE,IAAI,CAAC,gBAAgB;QACrB,IAAI,CAAC,gBAAgB,KAAK,MAAM;AAChC,QAAA,IAAI,CAAC,gBAAgB,KAAK,WAAW,EACrC;AACA,QAAA,UAAU,GAAG,IAAI,CAAC,gBAAgB;;IAEpC,OAAO,UAAU,IAAI,YAAY;AACnC,CAAC;AAED,MAAM,eAAe,GAAG,CAAO,YAAgC,KAAI,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AACjE,IAAA,MAAM,WAAW,GACf,mBAAmB,CAAC,YAAY,CAAC,WAAY,CAAC,QAAQ,CAAC,CAAC,GAAG;AAE7D,IAAA,IAAI,SAAS,GAAuB,YAAY,CAAC,SAAS;IAE1D,MAAM,qBAAqB,GAAG,WAAW,CAAC,YAAY,CAAC,YAAY,CAAC;AAEpE,IAAA,MAAM,SAAS,GAAG,CAAA,EAAG,WAAW,CAAI,CAAA,EAAA,qBAAqB,EAAE;IAE3D,IAAI,CAAC,SAAS,EAAE;AACd,QAAA,SAAS,GAAG,+BAA+B,CAAC,SAAS,CAAC;QACtD,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC;AAC5C,gBAAA,YAAY,EAAE,SAAS;AACvB,gBAAA,WAAW,EAAE,SAAS;AACvB,aAAA,CAAC;YACF,IAAI,MAAM,EAAE;AACV,gBAAA,SAAS,GAAG,MAAM,CAAC,EAAE;;;;IAK3B,OAAO;QACL,SAAS;QACT,WAAW;QACX,SAAS;QACT,qBAAqB;KACtB;AACH,CAAC,CAAA;AAED,MAAM,sBAAsB,GAAG,CAC7B,mBAAyC,EACzC,eAA+B,KACJ,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AAC3B,IAAA,KAAK,MAAM,aAAa,IAAI,mBAAmB,EAAE;AAC/C,QAAA,MAAM,KAAK,GAAG,aAAa,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa;AAE5E,QAAA,IAAI,CAAC,KAAK,IAAI,aAAa,CAAC,GAAG,EAAE;YAC/B;;AAGF,QAAA,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,GACzC,MAAM,eAAe,CAAC,aAAa,CAAC;QAEtC,MAAM,qBAAqB,GAAG,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC;AAErE,QAAA,MAAM,IAAI,GAAG;AACX,YAAA;AACE,gBAAA,IAAI,EAAE,qBAAqB;AAC3B,gBAAA,IAAI,EAAE,WAAW;gBACjB,KAAK;AACN,aAAA;SACF;AAED,QAAA,MAAM,WAAW,GAAG,IAAI,aAAa,CAAC,SAAS,CAAC;QAEhD,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC;AAEhD,QAAA,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC;AACtC,YAAA,MAAM,EAAE,SAAU;AAClB,YAAA,IAAI,EAAE;gDAEC,sBAAsB,CAAA,EAAA,EACzB,IAAI,EAAE,WAAW,EAAA,CAAA;AAEpB,aAAA;AACF,SAAA,CAAC;;AAGJ,IAAA,OAAO,eAAe;AACxB,CAAC,CAAA;AAED,MAAM,uBAAuB,GAAG,CAC9B,gBAAoC,EACpC,mBAAwC,EACxC,oBAA2C,KACX,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;IAChC,MAAM,KAAK,GAAG,gBAAgB,CAAC,UAAU,EAAE,CAAC,WAAW;SACpD,OAAO,CAAC,aAAa;AACxB,IAAA,IAAI,CAAC,KAAK,IAAI,gBAAgB,CAAC,GAAG,EAAE;AAClC,QAAA,OAAO,mBAAmB;;AAG5B,IAAA,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC;AAElE,IAAA,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC;QAChC,WAAW;QACX,OAAO;AACR,KAAA,CAAC;IAEF,IAAI,CAAC,WAAW,EAAE;QAChB,MAAM,IAAI,KAAK,CACb,CAAA,6CAAA,EAAgD,gBAAgB,CAAC,YAAY,CAAE,CAAA,CAChF;;AAGH,IAAA,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC;IAE7C,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAC9C,gBAAgB,CAAC,WAAY,CAAC,GAAa,CAC5C;AAED,IAAA,IAAI,cAAc,GAAmB;QACnC,OAAO,EAAE,gBAAgB,CAAC,OAAO;AACjC,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,gBAAgB,EAAE,mCAAmC;QACrD,OAAO,EAAE,OAAO,IAAI,YAAY;QAChC,aAAa;QACb,UAAU;AACV,QAAA,kBAAkB,EAAE,EAAE;AACtB,QAAA,kBAAkB,EAAE,EAAE;KACvB;IAED,MAAM,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,GACjD,0BAA0B,CAAC,WAAW,CAAC;AAEzC,IAAA,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE;AACrC,QAAA,MAAM,cAAc,GAAG,oBAAoB,CAAC,CAAC,CAAC;AAC9C,QAAA,MAAM,YAAY,GAAG,cAAc,CAAC,YAAY;AAChD,QAAA,MAAM,eAAe,GAAG,oBAAoB,CAAC,IAAI,CAC/C,CAAC,WAAW,KAAK,WAAW,CAAC,WAAW,KAAK,WAAW,CAAC,WAAW,CACrE;QACD,IAAI,eAAe,EAAE;AACnB,YAAA,YAAY,CAAC,KAAK,GAAG,eAAe,CAAC,IAAI;AACzC,YAAA,MAAM,YAAY,CAAC,IAAI,EAAE;AACzB,YAAA,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC;;;IAI1C,cAAc,GAAG,MAAM,sBAAsB,CAC3C,mBAAmB,EACnB,cAAc,CACf;AAED,IAAA,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC;AAExC,IAAA,OAAO,mBAAmB;AAC5B,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAC1B,YAAgC,EAChC,mBAAwC,KACR,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AAChC,IAAA,IAAI,KAAK,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa;AACzE,IAAA,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC,GAAG,EAAE;AAC9B,QAAA,OAAO,mBAAmB;;IAG5B,MAAM,oBAAoB,GAAG,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC;IAC5C,CAAA,EAAG,oBAAoB,CAAA,EAAG,YAAY,CAAC,WAAY,CAAC,GAAG,CAAA,GAAA;IACrF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;AACpD,QAAA,KAAK,GAAG,CAAC,KAAK,CAAC;;IAEjB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE;AAClD,QAAA,IAAI;AACF,YAAA,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;;QACzB,OAAO,KAAK,EAAE;AACd,YAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;AAI5B,IAAA,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE;AAC1B,QAAA,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC;AAEnE,QAAA,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC;YAChC,WAAW;YACX,OAAO;AACR,SAAA,CAAC;QAEF,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO,CAAC,KAAK,CACX,CAAA,yCAAA,EAA4C,YAAY,CAAC,YAAY,CAAE,CAAA,CACxE;YACD;;AAGF,QAAA,IAAI,WAAW,CAAC,OAAO,EAAE;AACvB,YAAA,OAAO,mBAAmB;;AAG5B,QAAA,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC;QAE7C,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAC9C,YAAY,CAAC,WAAY,CAAC,GAAa,CACxC;AAED,QAAA,IAAI,cAAc,GAAmB;YACnC,OAAO,EAAE,WAAW,CAAC,WAAW;AAChC,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,gBAAgB,EAAE,mCAAmC;YACrD,OAAO,EAAE,OAAO,IAAI,YAAY;YAChC,aAAa;YACb,UAAU;AACV,YAAA,kBAAkB,EAAE,EAAE;AACtB,YAAA,kBAAkB,EAAE;AAClB,gBAAA;oBACE,cAAc,EAAE,YAAY,CAAC,OAAO;oBACpC,iBAAiB,EAAE,YAAY,CAAC,SAAS;AAC1C,iBAAA;AACF,aAAA;SACF;QAED,MAAM,EAAE,mBAAmB,EAAE,GAAG,0BAA0B,CAAC,WAAW,CAAC;QAEvE,cAAc,GAAG,MAAM,sBAAsB,CAC3C,mBAAmB,EACnB,cAAc,CACf;AAED,QAAA,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC;;AAG1C,IAAA,OAAO,mBAAmB;AAC5B,CAAC,CAAA;AAuBM,MAAM,iBAAiB,GAAG,CAC/B,IAAmB,EACnB,oBAA2C,KACX,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;IAEhC,IAAI,mBAAmB,GAAwB,EAAE;;;;AAQjD,IAAA,IAAI,eAAe,GAAmB;QACpC,OAAO,EAAE,IAAI,CAAC,WAAW;AACzB,QAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,YAAY;AACrC,QAAA,eAAe,EAAE,IAAI;QACrB,aAAa,EAAE,IAAI,CAAC,SAAS;AAC7B,QAAA,gBAAgB,EAAE,mCAAmC;AACrD,QAAA,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;AAC/B,QAAA,kBAAkB,EAAE,EAAE;AACtB,QAAA,kBAAkB,EAAE,EAAE;KACvB;AAED,IAAA,MAAM,EACJ,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,GACrB,GAAG,0BAA0B,CAAC,IAAI,CAAC;AAEpC,IAAA,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE;AACrC,QAAA,MAAM,cAAc,GAAG,oBAAoB,CAAC,CAAC,CAAC;AAC9C,QAAA,MAAM,YAAY,GAAG,cAAc,CAAC,YAAY;AAChD,QAAA,MAAM,eAAe,GAAG,oBAAoB,CAAC,IAAI,CAC/C,CAAC,WAAW,KAAK,WAAW,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,CAC9D;QACD,IAAI,eAAe,EAAE;AACnB,YAAA,YAAY,CAAC,KAAK,GAAG,eAAe,CAAC,IAAI;AACzC,YAAA,MAAM,YAAY,CAAC,IAAI,EAAE;AACzB,YAAA,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC;;;IAI1C,eAAe,GAAG,MAAM,sBAAsB,CAC5C,mBAAmB,EACnB,eAAe,CAChB;AAED,IAAA,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC;AAEzC,IAAA,KAAK,MAAM,gBAAgB,IAAI,sBAAsB,EAAE;QACrD,mBAAmB,GAAG,MAAM,uBAAuB,CACjD,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,CACrB;;AAGH,IAAA,KAAK,MAAM,YAAY,IAAI,kBAAkB,EAAE;QAC7C,mBAAmB,GAAG,MAAM,mBAAmB,CAC7C,YAAY,EACZ,mBAAmB,CACpB;;AAGH,IAAA,OAAO,mBAAmB;AAC5B,CAAC,CAAA;;;MCpTqB,QAAQ,CAAA;AAS5B,IAAA,WAAA,CAAY,aAA8B,EAAA;QAJ1C,IAAW,CAAA,EAAA,CAAA,GAAG,IAAI;AACR,QAAA,IAAA,CAAA,kBAAkB,GAAwD,IAAI,eAAe,CAAC,EAAE,CAAC;AA4R3G,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,QAAkC,KAAkB;YAC/D,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AAC1C,gBAAA,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC5B,aAAC,CAAC;AACJ,SAAC;QAED,IAAU,CAAA,UAAA,GAAG,MAA6C;YACxD,OAAO,IAAI,CAAC,QAAQ;AACtB,SAAC;QAED,IAAmB,CAAA,mBAAA,GAAG,MAAoC,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;YACxD,OAAO,MAAM,iBAAiB,CAAC;gBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,gBAAA,MAAM,EAAE,IAAI;AACb,aAAA,CAAC;AACJ,SAAC,CAAA;QAED,IAAO,CAAA,OAAA,GAAG,MAA0B,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AAClC,YAAA,MAAM,YAAY,CAAC;AACjB,gBAAA,GAAG,EAAE;AACH,oBAAA,UAAU,EAAE,CAAsB,oBAAA,CAAA;AAClC,oBAAA,IAAI,EAAE;wBACJ,WAAW,EAAE,IAAI,CAAC,WAAW;AAC9B,qBAAA;AACF,iBAAA;AACD,gBAAA,GAAG,EAAE;AACH,oBAAA,UAAU,EAAE,CAAA,KAAA,EAAQ,IAAI,CAAC,WAAW,CAAkB,gBAAA,CAAA;AACvD,iBAAA;AACF,aAAA,CAAC;AACJ,SAAC,CAAA;QAED,IAAiB,CAAA,iBAAA,GAAG,MAAW,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AAC7B,YAAA,OAAO,MAAM,iBAAiB,CAAC,IAAI,CAAC;AACtC,SAAC,CAAA;AAED,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAO,oBAA2B,KAAI,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AACxD,YAAA,OAAO,MAAM,iBAAiB,CAAC,IAAI,EAAE,oBAAoB,CAAC;AAC5D,SAAC,CAAA;AA5TC,QAAA,MAAM,EACJ,SAAS,EACT,OAAO,EACP,SAAS,EACT,WAAW,EACX,oBAAoB,EACpB,gBAAgB,GACjB,GAAG,aAAa;AAEjB,QAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC;AAEtC,QAAA,IACE,UAAU;AACV,YAAA,MAAM,CAAC,IAAI,CAAC,UAAU,aAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAChE,aAAa,CAAC,oBAAoB,EAClC;AACA,YAAA,IAAI,CAAC,qBAAqB,GAAG,aAAa,CAAC,oBAAoB;;AAGjE,QAAA,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,iBAAiB,EAAE;AAC7C,YAAA,KAAK,EAAE;gBACL,WAAW;gBACX,OAAO;gBACP,SAAS;gBACT,UAAU;gBACV,oBAAoB;gBACpB,gBAAgB;gBAChB,oBAAoB,EAAE,IAAI,CAAC,qBAAqB;AACjD,aAAA;AACF,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AACxD,YAAA,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ;AAE5B,YAAA,IACE,CAAC,OAAO;gBACR,CAAC,OAAO,CAAC,iBAAiB;AAC1B,gBAAA,OAAO,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,EACpC;gBACA;;YAGF,MAAM,aAAa,GAAuC,EAAE;YAE5D,KAAK,MAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC,IAAI,OAAO,CAAC,iBAAiB,EAAE;AAC/D,gBAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,qBAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBAClE,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,gBAAgB;oBAChD;;gBAGF,IAAI,cAAc,GAAW,GAAa;AAE1C,gBAAA,IAAI,gBAAgB,CAAC,KAAK,EAAE;AAC1B,oBAAA,cAAc,GAAG,gBAAgB,CAAC,KAAK;;AAGzC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAClD,oBAAA,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AACjC,oBAAA,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC;;AAG5C,gBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACjD,oBAAA,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;;AAGnC,gBAAA,aAAa,CAAC,cAAc,CAAC,GAAG,gBAAgB;;AAGlD,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC;YAC3C,YAAY,CAAC,IAAI,CAAC,CAAQ,KAAA,EAAA,SAAS,CAAI,CAAA,EAAA,OAAO,IAAI,WAAW,CAAS,OAAA,CAAA,CAAC;AACzE,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AAErB,QAAA,MAAM,WAAW,GAAa,CAAC,YAAY,CAAC;AAE5C,QAAA,MAAM,gBAAgB,GAAyC;YAC7D,WAAW;YACX,OAAO;AACP,YAAA,cAAc,EAAE,oBAAoB;AACpC,YAAA,UAAU,EAAE,gBAAgB;AAC5B,YAAA,SAAS,EAAE,SAAS;SACrB;AAED,QAAA,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE;AACnC,YAAA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM;AAEhC,YAAA,KAAK,MAAM,CAAC,YAAY,EAAE,oBAAoB,CAAC,IAAI,MAAM,CAAC,OAAO,CAC/D,MAAM,CACP,EAAE;gBACD,IAAI,CAAC,oBAAoB,EAAE;AACzB,oBAAA,MAAM,IAAI,KAAK,CAAC,YAAY,YAAY,CAAA,kBAAA,CAAoB,CAAC;;AAG/D,gBAAA,IAAI,CAAC,uBAAuB,CACvB,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,gBAAgB,KACnB,YAAY,EACZ,aAAa,EAAE,aAAa,CAAC,YAAuB,CAAC,IACrD;AAEF,gBAAA,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AAE9B,gBAAA,IACE,oBAAoB,CAAC,QAAQ,KAAK,UAAU;AAC5C,oBAAA,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC5B;AACA,oBAAA,WAAW,CAAC,IAAI,CAAC,GAAG,YAAY,CAAA,EAAA,CAAI,CAAC;;AAGvC,gBAAA,IACE,oBAAoB,CAAC,QAAQ,KAAK,MAAM;AACxC,oBAAA,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAC7B;oBACA,MAAM,oBAAoB,GAAG,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC;oBAC7D,MAAM,qBAAqB,GAAG,CAAG,EAAA,oBAAoB,GAAG,oBAAoB,CAAC,GAAG,CAAA,GAAA,CAAK;AACrF,oBAAA,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC;;;;QAK1C,MAAM,CAAC,IAAI,CAAC,aAAa,CAAsC,CAAC,OAAO,CACxE,CAAC,GAAG,KAAI;;AAEN,YAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAC7B;;AAGF,YAAA,IAAI,CAAC,uBAAuB,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACvB,gBAAgB,CAAA,EAAA,EACnB,YAAY,EAAE,GAAG,EACjB,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,IACjC;AACJ,SAAC,CACF;;IAKH,OAAO,gBAAgB,CAAC,aAA8B,EAAA;AACpD,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;;IAGpC,OAAa,MAAM,CACjB,KAAwB,EAAA;;YAExB,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE;gBAClC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;;YAEzC,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,WAAW,EAAE;gBACtC,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,WAAW,CAAW;gBAC7D,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AAClC,oBAAA,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAE;AAC9D,oBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE;wBAC7B,QAAQ;wBACR,QAAQ,EAAE,QAAQ,GAAG,CAAC;AACvB,qBAAA,CAAC;AACF,oBAAA,KAAK,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;wBACjE,MAAM,iBAAiB,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC,WAAW;6BACxD,OAAO,CAAC,iBAAiB;wBAC5B,IAAI,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;4BAC9D;;wBAEF,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC;wBAC5D,IAAI,CAAC,gBAAgB,EAAE;4BACrB;;AAEF,wBAAA,gBAAgB,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC;AACjC,4BAAA,IAAI,EAAE,eAAe;4BACrB,aAAa;AACd,yBAAA,CAAC;;AAEJ,oBAAA,OAAO,QAAQ;;gBAEjB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AACnC,oBAAA,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AACnC,oBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE;AAC7B,wBAAA,QAAQ,EAAE,WAAW;AACrB,wBAAA,QAAQ,EAAE,CAAC;AACZ,qBAAA,CAAC;AACF,oBAAA,OAAO,WAAW;;;AAGtB,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACpB,gBAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC;;AAE7D,YAAA,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,aAAa,CAAC;gBAC1C,SAAS,EAAE,KAAK,CAAC,SAAS;AAC3B,aAAA,CAAC;AACF,YAAA,KAAK,CAAC,WAAW,GAAG,WAAW;AAC/B,YAAA,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AACnC,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,WAAW,EAAE;AACrE,gBAAA,QAAQ,EAAE,WAAW;AACrB,gBAAA,QAAQ,EAAE,CAAC;AACZ,aAAA,CAAC;AACF,YAAA,OAAO,WAAW;SACnB,CAAA;AAAA;AAED,IAAA,OAAa,IAAI,CAAA,EAAA,EAAA;AAAC,QAAA,OAAA,SAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA,EAAA,WAAA,EAChB,SAAS,EACT,WAAW,EACX,OAAO,GACO,EAAA;AACd,YAAA,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE;gBAC5B;;AAEF,YAAA,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC;gBACjC,SAAS;gBACT,WAAW;gBACX,OAAO;AACR,aAAA,CAAC;YAEF,IAAI,CAAC,QAAQ,EAAE;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;gBACxE;;YAGF,OAAO,QAAQ,CAAC,MAAM,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACjB,QAAQ,CACX,EAAA,EAAA,SAAS,IACT;SACH,CAAA;AAAA;AAED,IAAA,OAAa,GAAG,CACd,SAAkB,EAClB,OAAiB,EAAA;;YAEjB,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;YAC5D,MAAM,aAAa,GAAiB,EAAE;AACtC,YAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AAChC,gBAAA,aAAa,CAAC,IAAI,CAChB,MAAM,QAAQ,CAAC,MAAM,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAChB,QAAQ,CAAA,EAAA,EACX,SAAS,EAAA,CAAA,CACT,CACH;;AAGH,YAAA,OAAO,OAAO,CAAC,aAAa,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;SACvD,CAAA;AAAA;AAES,IAAA,uBAAuB,CAAC,KAA2C,EAAA;AAC3E,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,qBAAqB;;QAGzD,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;QAEvD,IAAI,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;YAC5C;;AAGF,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjB,YAAA,IAAI,EAAE,qBAAqB;YAC3B,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,gBAAgB;AACjB,SAAA,CAAC;QAEF,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE;AAC9C,YAAA,GAAG,EAAE,MAAM,gBAAgB,CAAC,KAAK;AACjC,YAAA,GAAG,EAAE,CAAC,KAAK,MAAM,gBAAgB,CAAC,KAAK,GAAG,KAAK,CAAC;AAChD,YAAA,UAAU,EAAE,IAAI;AACjB,SAAA,CAAC;;IAIJ,OAAa,OAAO,CAAC,IAAgB,EAAA;;AACnC,YAAA,MAAM,YAAY,CAAC;AACjB,gBAAA,GAAG,EAAE;AACH,oBAAA,UAAU,EAAE,CAAA,KAAA,EAAQ,IAAI,CAAC,WAAW,CAAkB,gBAAA,CAAA;AACtD,oBAAA,IAAI,EAAE;wBACJ,WAAW,EAAE,IAAI,CAAC,WAAW;AAC9B,qBAAA;AACF,iBAAA;AACD,gBAAA,GAAG,EAAE;AACH,oBAAA,UAAU,EAAE,CAAA,KAAA,EAAQ,IAAI,CAAC,WAAW,CAAkB,gBAAA,CAAA;AACvD,iBAAA;AACF,aAAA,CAAC;SACH,CAAA;AAAA;AAyCD,IAAA,IAAI,cAAc,GAAA;QAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;AAC5C,QAAA,OAAQ,QAAgB,CAAC,OAAO,IAAI,EAAE;;AAGxC,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,WAAqB;;AAGlD,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO;;AAGpC,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,SAAmB;;AAGhD,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,gBAAgC;;AAG7D,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,SAAmB;;AAGhD,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK;;AAGtC,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,oBAA8B;;IAG3D,MAAM,GAAA;;AACJ,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,EAAE;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;;;KAvWrB,SAAS;AAHO,QAAA,CAAA,aAAa,GAA4D,IAAI,GAAG,EAAE;;AC1B/F,MAAO,IAAyC,SAAQ,QAAW,CAAA;AAEvE,IAAA,WAAA,CAAY,aAA8B,EAAA;QACxC,KAAK,CAAC,aAAa,CAAE;;AAGxB;AAED,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC;;;;;;;ACF/B,MAAMA,QAAM,GAAG,KAAK,CAAC,oBAAoB,CAAC;AAE1C,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC;AAEjE,MAAM,cAAc,GAAG,CAAC,OAA2B,KAAI;IAC5D,IAAI,IAAI,GAAG,OAAO;AAClB,IAAA,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE;AAChC,QAAA,IAAI,GAAG,OAAO,CAAC,SAAS;;AAE1B,IAAA,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;AAC1E,QAAA,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC;;AAErC,IAAA,OAAO,IAAI;AACb,CAAC;AAEM,MAAM,eAAe,GAAG,CAC7B,OAA2B,KACL;AACtB,IAAA,IAAI,KAAK;AACT,IAAA,IAAI,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE;AACnE,QAAA,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK;;AAErC,IAAA,IAAI,cAAc,CAAC,OAAO,CAAC,KAAK,QAAQ,EAAE;AACxC,QAAA,IACE,KAAK;YACL,OAAO,KAAK,KAAK,QAAQ;YACzB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,aAAa,EACvC;YACA,KAAK,GAAG,OAAO;;;AAGnB,IAAA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACtC,QAAA,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;;AAE/B,IAAA,OAAO,KAAK;AACd,CAAC;AAEM,MAAM,mBAAmB,GAAG,CAAC,OAA2B,KAAI;AACjE,IAAA,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;QACvD;;AAEF,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM;AACnC,IAAA,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE;QACd;;AAEF,IAAA,IAAI,SAAS,GAAG,MAAM,CAAC,EAAE;IACzB,IAAI,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AACnC,QAAA,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;;AAE7D,IAAA,IAAI,QAAQ;AACZ,IAAA,IAAI;AACF,QAAA,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE;;IAChC,OAAO,KAAK,EAAE;AACd,QAAAA,QAAM,CAAC,QAAQ,EAAE,KAAK,CAAC;AACvB,QAAA,OAAO,SAAS;;IAElB,IAAI,QAAQ,EAAE;AACZ,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO;AAChC,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;AAC7B,YAAA,SAAS,GAAG,OAAO,CAAC,MAAM;;AAE5B,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,eAAe,EAAE;AACtC,YAAA,SAAS,GAAG,OAAO,CAAC,eAAe;;AAErC,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE;YAChC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;;;AAG1D,IAAA,OAAO,SAAS;AAClB,CAAC;AAEY,MAAA,UAAU,GAAG,CAAC,OAA2B,KAAI;IACxD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;AAEjD,IAAA,MAAM,kBAAkB,GAAG,CAAC,OAA2B,KAAI;QACzD,IAAI,eAAe,GAAG,CAAC;AACvB,QAAA,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;YACxB,MAAM,UAAU,GAAG,EAAE;YACrB,MAAM,aAAa,GAAG,EAAE;AAExB,YAAA,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;gBACrE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AAClC,oBAAA,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;AAC1B,oBAAA,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;;;AAI7B,YAAA,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM;AACxC,YAAA,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC;AACtC,YAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAChC,gBAAA,OAAO,CAAC;;YAEV,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;YAC5C,eAAe,GAAG,CAAC,UAAU,GAAG,WAAW,IAAI,GAAG;;AAEpD,QAAA,OAAO,eAAe;AACxB,KAAC;AAED,IAAA,MAAM,UAAU,GAAG,WAAW,CAC5B,CAAC,QAAQ,KAAI;QACK,OAAO,CAAC,WAAW,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK;QAC1C,IACE,MAAM,KAAK,MAAM;AACjB,YAAA,MAAM,KAAK,SAAS;AACpB,YAAA,MAAM,KAAK,MAAM;YACjB,MAAM,KAAK,OAAO,EAClB;YACA,aAAa,CAAC,QAAQ,CAAC;YACvB;;QAEF,cAAc,CAAC,CAAC,WAAW,KAAK,WAAW,GAAG,CAAC,CAAC;AAClD,KAAC,EACD,CAAC,OAAO,CAAC,CACV;AAED,IAAA,MAAM,aAAa,GAAG,WAAW,CAAC,MAAK;AACrC,QAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAK;YAChC,UAAU,CAAC,QAAQ,CAAC;SACrB,EAAE,IAAI,CAAC;AACR,QAAA,OAAO,QAAQ;AACjB,KAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAEzB,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,QAAQ,GAAG,aAAa,EAAE;AAChC,QAAA,OAAO,MAAM,aAAa,CAAC,QAAQ,CAAC;KACrC,EAAE,EAAE,CAAC;IAEN,OAAO;AACL,QAAA,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC;QAC7B,WAAW;AACX,QAAA,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC;AAC/B,QAAA,eAAe,EAAE,kBAAkB,CAAC,OAAO,CAAC;AAC5C,QAAA,SAAS,EAAE,mBAAmB,CAAC,OAAO,CAAC;KACxC;AACH;AAEO,MAAM,YAAY,GAAG,MAAK;IAC/B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AAEjD,IAAA,MAAM,EAAE,cAAc,EAAE,GAAG,sBAAsB,EAAE;IAEnD,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,cAAc,KAAK,OAAO,EAAE;YAC9B,YAAY,CAAC,IAAI,CAAC;;AAEtB,KAAC,EAAE,CAAC,cAAc,CAAC,CAAC;AAEpB,IAAA,OAAO,SAAS;AAClB,CAAC;AAEM,MAAM,qBAAqB,GAAG,MAAK;IACxC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AAErD,IAAA,MAAM,iBAAiB,GAAG,oBAAoB,EAAE;IAEhD,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE;;AAGnD,IAAA,MAAM,IAAI,GAAG,WAAW,CAAC,MAAW,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AAClC,QAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;AAC5B,YAAA,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC;AAC5C,YAAA,OAAO,CAAC,GAAG,CACT,CAAmC,gCAAA,EAAA,SAAS,GAAG,EAC/C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,CAC7C;;;;;;AAML,KAAC,CAAA,EAAE,CAAC,QAAQ,CAAC,CAAC;;AAGd,IAAA,MAAM,IAAI,GAAG,WAAW,CAAC,MAAW,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AAClC,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;QAE/B,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,EAAE;;QAGX,MAAM,kBAAkB,GAAG,MAAM;AAC9B,aAAA,MAAM;aACN,IAAI,CAAC,QAAQ;aACb,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;AAC3C,QAAA,OAAO,kBAAkB;AAC3B,KAAC,CAAA,EAAE,EAAE,CAAC;IAEN,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,CAAC,iBAAiB,IAAI,WAAW,EAAE;YACrC;;QAEF,MAAM,UAAU,GAAG,MAAW,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AAC5B,YAAA,MAAM,kBAAkB,GAAG,MAAM,IAAI,EAAE;AACvC,YAAA,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;YACtD,cAAc,CAAC,IAAI,CAAC;AACtB,SAAC,CAAA;AAED,QAAA,UAAU,EAAE;AAEZ,QAAA,OAAO,MAAK;YACV,IAAI,EAAE,CAAA;AACR,SAAC;AACH,KAAC,EAAE,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;AACtC;AAEO,MAAM,oBAAoB,GAAG,MAAK;IACvC,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AAEjE,IAAA,MAAM,SAAS,GAAG,YAAY,EAAE;IAEhC,SAAS,CAAC,MAAK;QACb,IAAI,SAAS,EAAE;YACb,MAAM,kBAAkB,GAAG,MAA0B,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AACnD,gBAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;gBAE/B,MAAM,IAAI,GAAG,MAAM;AAChB,qBAAA,MAAM;qBACN,IAAI,CAAC,QAAQ;qBACb,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;gBAE3C,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC3B,oBAAoB,CAAC,IAAI,CAAC;;AAE9B,aAAC,CAAA;AAED,YAAA,kBAAkB,EAAE;;AAExB,KAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AAEf,IAAA,OAAO,iBAAiB;AAC1B,CAAC;AAEM,MAAM,WAAW,GAAG,MAAK;IAC9B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAuB,EAAE,CAAC;IAC9D,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;AAEzD,IAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAA8B;IAEvD,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,qBAAqB,GAAG,CAAC,KAAK,KAAI;YACtC,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;gBAClC;;YAEF,IACE,KAAK,CAAC,QAAQ;gBACd,KAAK,CAAC,QAAQ,CAAC,KAAK;AACpB,gBAAA,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAC3B;AACA,gBAAA,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ;AAC9B,gBAAA,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC;AAE1B,gBAAA,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,UAAU,CAAC,MAAM,EAAE;oBACjD,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO;oBAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACjC,oBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,wBAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AAC1D,4BAAA,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC;AACpC,4BAAA,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC;;;;AAKpC,gBAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,YAAY,KAAI;AAChC,oBAAA,MAAM,SAAS,GAAG,mBAAmB,CAAC,YAAY,CAAC;oBACnD,IAAI,CAAC,SAAS,EAAE;wBACd;;AAEF,oBAAA,YAAY,CAAC,SAAS,GAAG,SAAS;AAClC,oBAAA,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC;AACxC,iBAAC,CAAC;gBAEF,IAAI,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;gBAChD,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;gBAErE,SAAS,CACP,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,KAAI;AACxB,oBAAA,OAAO,WAAW;iBACnB,CAAC,CACH;;AAEL,SAAC;AAED,QAAA,YAAY,CAAC,WAAW,CAAC,uBAAuB,EAAE,qBAAqB,CAAC;AAExE,QAAA,OAAO,MAAK;AACV,YAAA,YAAY,CAAC,cAAc,CACzB,uBAAuB,EACvB,qBAAqB,CACtB;AACH,SAAC;KACF,EAAE,EAAE,CAAC;IAEN,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAC/B,CAAC,KAAK,KAAK,cAAc,CAAC,KAAK,CAAC,KAAK,QAAQ,CAC9C;AACD,QAAA,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CACjC,CAAC,KAAK,KAAK,cAAc,CAAC,KAAK,CAAC,KAAK,UAAU,CAChD;AACD,QAAA,IAAI,CAAC,aAAa,IAAI,CAAC,eAAe,EAAE;YACtC;;AAEF,QAAA,IACE,eAAe,CAAC,aAAa,CAAC,KAAK,aAAa;AAChD,YAAA,eAAe,CAAC,eAAe,CAAC,KAAK,OAAO,EAC5C;AACA,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM;YACjC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAI;AAC7C,gBAAA,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC;AACpC,gBAAA,OAAO,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;AACrC,aAAC,CAAC;AACF,YAAA,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM;YACvC,MAAM,eAAe,GAAG,CAAC,SAAS,GAAG,WAAW,IAAI,GAAG;YACvD,kBAAkB,CAAC,eAAe,CAAC;;AAEvC,KAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAEZ,OAAO;AACL,QAAA,QAAQ,EAAE,MAAM;QAChB,eAAe;KAChB;AACH;AAEO,MAAM,sBAAsB,GAAG,MAAK;AACzC,IAAA,MAAM,aAAa,GAAG,gBAAgB,EAAE;IAExC,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,EAAE,CAAC,QAAQ,KAAI;QACrD,OAAO,QAAQ,CAAC,KAAK;AACvB,KAAC,CAAC;AAEF,IAAA,MAAM,cAAc,GAAG,WAAW,CAChC,aAAa,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,eAAe,EACnD,CAAC,QAAQ,KAAI;QACX,IAAI,CAAC,QAAQ,EAAE;YACb;;QAEF,OAAO,QAAQ,CAAC,KAAK;AACvB,KAAC,CACF;IAEuB,WAAW,CAAC,aAAa,EAAE,CAAC,QAAQ,KAAI;AAC9D,QAAA,OAAO,QAAQ,CAAC,OAAO,CAAC,eAAe;AACzC,KAAC;IAED,OAAO;QACL,MAAM;QACN,cAAc;KACf;AACH;;AC7VA,MAAMA,QAAM,GAAG,KAAK,CAAC,gBAAgB,CAAC;AAkB/B,MAAM,OAAO,GAAiB,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,KAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkD3E,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAgB,EAAE,CAAC;IAC3D,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,EAAyB;IACzD,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,EAErD;IAEH,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,sBAAsB,EAAE;AAE3D,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;IAEjC,MAAM,UAAU,GAAG,WAAW,CAC5B,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,UAAU,EAAE,EAClB,CAAC,QAAQ,KAAK,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,KAAK,CAC9B;AAED,IAAA,MAAM,UAAU,GAAG,WAAW,CAC5B,CAAC,OAAkB,KAAI;AACrB,QAAA,WAAW,CAAC,CAAC,KAAK,KAAI;AACpB,YAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,KAAI;AACvD,gBAAA,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC;AACnC,gBAAA,KAAK,CAAC,YAAY,CAAC,GAAG,KAAK;AAC7B,aAAC,CAAC;AACJ,SAAC,CAAC;AACJ,KAAC,EACD,CAAC,WAAW,CAAC,CACd;AAED,IAAA,MAAM,UAAU,GAAG,WAAW,CAAC,MAAW,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;QACxC,IACE,WAAW,CAAC,OAAO;AACnB,YAAA,cAAc,KAAK,OAAO;AAC1B,aAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,EAC1B;YACA;;AAEF,QAAA,WAAW,CAAC,OAAO,GAAG,IAAI;AAC1B,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;YAChC,SAAS;YACT,WAAW;YACX,OAAO;AACR,SAAA,CAAC;QACF,IAAI,CAAC,SAAS,EAAE;AACd,YAAAA,QAAM,CAAC,yCAAyC,EAAE,SAAS,EAAE,WAAW,CAAC;AACzE,YAAA,WAAW,CAAC,OAAO,GAAG,KAAK;YAC3B;;AAEF,QAAA,OAAO,CAAC,MAAM,SAAS,CAAC;QACxB,UAAU,CAAC,SAAS,CAAC;AACrB,QAAA,WAAW,CAAC,OAAO,GAAG,KAAK;AAC7B,KAAC,CAAA,EAAE,CAAC,cAAc,CAAC,CAAC;AAEpB,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;IAEtC,SAAS,CAAC,MAAK;AACb,QAAA,WAAW,CAAC,OAAO,GAAG,UAAU;AAClC,KAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IAEhB,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,cAAc,KAAK,OAAO,EAAE;YAC9B,WAAW,CAAC,OAAO,EAAE;;AAEzB,KAAC,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAE5B,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAO,CAAC,KAAI,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AAC9C,gBAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;gBACpE,IAAI,CAAC,OAAO,EAAE;AACZ,oBAAAA,QAAM,CACJ,4CAA4C,EAC5C,SAAS,EACT,WAAW,CACZ;oBACD;;gBAEF,UAAU,CAAC,OAAO,CAAC;AACnB,gBAAA,OAAO,CAAC,MAAM,OAAO,CAAC;aACvB,CAAA,CAAC;YACF,mBAAmB,CAAC,YAAY,CAAC;;AAGnC,QAAA,OAAO,MAAK;AACV,YAAA,gBAAgB,aAAhB,gBAAgB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAhB,gBAAgB,CAAE,WAAW,EAAE;AACjC,SAAC;AACH,KAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAE5B,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,MAAM,GAAG,OAAO,IAAI,WAAW;QAErC,YAAY,CAAC,WAAW,CAAC,CAAQ,KAAA,EAAA,SAAS,IAAI,MAAM,CAAA,OAAA,CAAS,EAAE,MAAK;YAClE,WAAW,CAAC,OAAO,EAAE;AACvB,SAAC,CAAC;AAEF,QAAA,OAAO,MAAK;YACV,YAAY,CAAC,cAAc,CAAC,CAAA,KAAA,EAAQ,SAAS,CAAI,CAAA,EAAA,MAAM,CAAS,OAAA,CAAA,CAAC;AACnE,SAAC;KACF,EAAE,EAAE,CAAC;IAEN,OAAO;QACL,IAAI;QACJ,QAAQ;QACR,UAAU;KACX;AACH;AAUO,MAAM,QAAQ,GAAa,CAAC,EAAE,SAAS,EAAE,OAAO,GAAC,KAAK,EAAE,KAAI;IACjE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAkB,EAAE,CAAC;IAEvD,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,sBAAsB,EAAE;AAE3D,IAAA,MAAM,YAAY,GAAG,MAAM,CAAqB,SAAS,CAAC;AAE1D,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;AAEjC,IAAA,MAAM,UAAU,GAAG,WAAW,CAAC,MAAW,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;QACxC,IAAI,WAAW,CAAC,OAAO,IAAI,cAAc,KAAK,OAAO,EAAE;YACrD;;AAEF,QAAA,WAAW,CAAC,OAAO,GAAG,IAAI;AAC1B,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC;AAC9D,QAAA,QAAQ,CAAC,MAAM,EAAE,CAAC;AAClB,QAAA,QAAQ,CAAC,MAAM,QAAQ,CAAC;AACxB,QAAA,WAAW,CAAC,OAAO,GAAG,KAAK;AAC7B,KAAC,CAAA,EAAE,CAAC,cAAc,CAAC,CAAC;AAEpB,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;IAEtC,SAAS,CAAC,MAAK;AACb,QAAA,WAAW,CAAC,OAAO,GAAG,UAAU;AAClC,KAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IAEhB,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,cAAc,KAAK,OAAO,EAAE;YAC9B,WAAW,CAAC,OAAO,EAAE;;AAEzB,KAAC,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAE5B,SAAS,CAAC,MAAK;QACb,YAAY,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,KAAK,KAAI;AACpD,YAAA,IACE,CAAC,KAAK;gBACN,CAAC,KAAK,CAAC,SAAS;AAChB,gBAAA,KAAK,CAAC,SAAS,KAAK,YAAY,CAAC,OAAO,EACxC;gBACA;;YAEF,WAAW,CAAC,OAAO,EAAE;AACvB,SAAC,CAAC;AAEF,QAAA,OAAO,MAAK;AACV,YAAA,YAAY,CAAC,cAAc,CAAC,iBAAiB,EAAE,UAAU,CAAC;AAC5D,SAAC;KACF,EAAE,EAAE,CAAC;IAEN,OAAO;AACL,QAAA,KAAK,EAAE,OAAO,CACZ,KAAK,EACL;AACE,YAAA,CAAC,IAAI,KACH,IAAI,CAAC,sBAAsB;AAC3B,gBAAA,IAAI,CAAC,oBAAoB;AACzB,gBAAA,IAAI,CAAC,SAAS;SACjB,EACD,CAAC,MAAM,CAAC,CACT;QACD,WAAW,EAAE,WAAW,CAAC,OAAO;KACjC;AACH;AACO,MAAM,cAAc,GAAG,MAAK;IACjC,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AAEnE,IAAA,MAAM,yBAAyB,GAAG,WAAW,CAAC,CAAC,CAAC,KAAI;QAClD,qBAAqB,CAAC,IAAI,CAAC;KAC5B,EAAE,EAAE,CAAC;IAEN,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,QAAQ,GAAG,4BAA4B,EAAE;QAE/C,IAAI,QAAQ,EAAE;YACZ,yBAAyB,CAAC,IAAI,CAAC;;AAGjC,QAAA,YAAY,CAAC,WAAW,CACtB,wCAAwC,EACxC,yBAAyB,CAC1B;AAED,QAAA,OAAO,MAAK;AACV,YAAA,YAAY,CAAC,cAAc,CAAC,wCAAwC,CAAC;AACvE,SAAC;KACF,EAAE,EAAE,CAAC;IAEN,OAAO;AACL,QAAA,OAAO,EAAE,kBAAkB;KAC5B;AACH,CAAC;AACY,MAAA,aAAa,GAAG,CAAI,SAAiB,KAAI;IACpD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AAE3D,IAAA,MAAM,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE;AAEpC,IAAA,MAAM,UAAU,GAAG,WAAW,CAC5B,CAAO,QAAQ,KAAI,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;QACjB,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CACX,gEAAgE,EAChE,QAAQ,CACT;YACD;;QAEF,IAAI,cAAc,EAAE;;AAElB,YAAA,OAAO,CAAC,KAAK,CACX,oDAAoD,EACpD,QAAQ,CACT;YACD;;QAGF,iBAAiB,CAAC,IAAI,CAAC;QAEvB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,aAAa,CAAA,MAAA,CAAA,MAAA,CAAA,EAAG,SAAS,EAAA,EAAK,QAAQ,CAAA,CAAG;AAEvE,QAAgB,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE;QAE1D,YAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,CAAC;QAEnD,iBAAiB,CAAC,KAAK,CAAC;KACzB,CAAA,EACD,CAAC,cAAc,EAAE,OAAO,CAAC,CAC1B;IAED,OAAO;QACL,UAAU;QACV,cAAc;KACf;AACH;AAkBO,MAAM,cAAc,GAAG,MAA2B;IACvD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AAEvD,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;IAE9B,MAAM,WAAW,GAAgB,WAAW,CAAC,CAAO,IAAI,EAAE,QAAS,KAAI,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AACrE,QAAA,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,OAAO,EAAE;YAC7B;;AAEF,QAAA,QAAQ,CAAC,OAAO,GAAG,IAAI;QACvB,eAAe,CAAC,IAAI,CAAC;AACrB,QAAA,IAAI;AACF,YAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE;YAC9C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YACrD,IAAI,QAAQ,EAAE;AACZ,gBAAA,QAAQ,EAAE;;;QAEZ,OAAO,CAAC,EAAE;YACV,IAAI,QAAQ,EAAE;gBACZ,QAAQ,CAAC,CAAU,CAAC;;;QAGxB,eAAe,CAAC,KAAK,CAAC;AACtB,QAAA,QAAQ,CAAC,OAAO,GAAG,KAAK;AAC1B,KAAC,CAAA,EAAE,EAAE,CAAC;IAEN,OAAO;QACL,WAAW;QACX,YAAY;KACb;AACH;;AClXA,MAAM,YAAa,SAAQ,gBAA8B,CAAA;AAGvD,IAAA,WAAA,CAAY,aAAmD,EAAA;QAC7D,KAAK,CAAC,aAAa,CAAC;;AAGvB;AAED,gBAAgB,CAAC,gBAAgB,CAAC,YAAY,CAAC;;;;;;;ACJ/C,MAAMA,QAAM,GAAG,KAAK,CAAC,oBAAoB,CAAC;AAiBnC,MAAM,eAAe,GAAoB,CAAC,EAC/C,YAAY,EACZ,WAAW,EACX,OAAO,GACR,KAAI;IACH,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,EAAkC;IAC1E,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AAEzD,IAAA,MAAM,EAAE,cAAc,EAAE,GAAG,sBAAsB,EAAE;AAEnD,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;AAEjC,IAAA,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,aAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,UAAU,EAAE,EAAE,CAAC,QAAQ,KAAI;QAC7D,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;YAClC;;QAEF,OAAO,QAAQ,CAAC,OAAO,CAAC,WAAW,IAAI,QAAQ,CAAC,OAAO,CAAC,aAAa;AACvE,KAAC,CAAC;IAEF,MAAM,MAAM,GAAG,WAAW,CACxB,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,UAAU,EAAE,EACtB,CAAC,QAAQ,KAAK,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,KAAe,CACxC;AAED,IAAA,MAAM,UAAU,GAAG,WAAW,CAAC,MAAW,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;QACxC,IACE,cAAc,KAAK,OAAO;AAC1B,YAAA,WAAW,CAAC,OAAO;AACnB,aAAC,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,EAC1B;YACA;;AAEF,QAAA,WAAW,CAAC,OAAO,GAAG,IAAI;AAC1B,QAAA,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC;YAC5C,YAAY;YACZ,WAAW;YACX,OAAO;AACR,SAAA,CAAC;QACF,IAAI,CAAC,aAAa,EAAE;AAClB,YAAAA,QAAM,CACJ,CAAiE,8DAAA,EAAA,WAAW,IAAI,YAAY,CAAA,CAAE,CAC/F;AACD,YAAA,WAAW,CAAC,OAAO,GAAG,KAAK;YAC3B;;AAEF,QAAA,IAAI,aAAa,CAAC,MAAM,KAAK,cAAc,EAAE;AAC3C,YAAA,aAAa,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;;QAE/D,WAAW,CAAC,aAAa,CAAC;QAC1B,gBAAgB,CAAC,IAAI,CAAC;AACtB,QAAA,WAAW,CAAC,OAAO,GAAG,KAAK;AAC7B,KAAC,CAAA,EAAE,CAAC,cAAc,CAAC,CAAC;AAEpB,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;IAEtC,SAAS,CAAC,MAAK;AACb,QAAA,WAAW,CAAC,OAAO,GAAG,UAAU;AAClC,KAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IAEhB,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,cAAc,KAAK,OAAO,EAAE;AAC9B,YAAA,UAAU,EAAE;;AAEhB,KAAC,EAAE,CAAC,cAAc,CAAC,CAAC;IAEpB,SAAS,CAAC,MAAK;AACb,QAAA,YAAY,CAAC,WAAW,CACtB,CAAA,SAAA,EAAY,OAAO,IAAI,WAAW,CAAA,CAAA,EAAI,YAAY,CAAA,OAAA,CAAS,EAC3D,MAAK;YACH,WAAW,CAAC,OAAO,EAAE;AACvB,SAAC,CACF;AAED,QAAA,OAAO,MAAK;YACV,YAAY,CAAC,cAAc,CACzB,CAAY,SAAA,EAAA,OAAO,IAAI,WAAW,CAAI,CAAA,EAAA,YAAY,CAAS,OAAA,CAAA,CAC5D;AACH,SAAC;KACF,EAAE,EAAE,CAAC;IAEN,OAAO;QACL,QAAQ;QACR,aAAa;QACb,KAAK;QACL,MAAM;KACP;AACH;AACa,MAAA,iBAAiB,GAAG,CAAC,IAAgB,KAAI;IACpD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;IACZ,QAAQ,CAAC,KAAK;AAEpD,IAAA,MAAM,iBAAiB,GAAG,WAAW,CACnC,CAAC,KAAK,KAAI;QACR,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC;YACnE;;AAEF,QAAA,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,KAAK;QAC7C,IAAI,CAAC,YAAY,EAAE;YACjB;;AAEF,QAAA,cAAc,CAAC,CAAC,KAAK,KAAI;AACvB,YAAA,KAAK,CAAC,YAAY,CAAC,GAAG,aAAa;AACrC,SAAC,CAAC;AACJ,KAAC,EACD,CAAC,IAAI,CAAC,CACP;IAED,SAAS,CAAC,MAAK;QACb,IAAI,CAAC,IAAI,EAAE;YACT;;AAGF,QAAA,MAAM,QAAQ,GAAG,CAAA,KAAA,EAAQ,IAAI,CAAC,WAAW,kBAAkB;AAE3D,QAAA,YAAY,CAAC,WAAW,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AAErD,QAAA,OAAO,MAAK;AACV,YAAA,YAAY,CAAC,cAAc,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AAC1D,SAAC;AACH,KAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAEV,OAAO;AACL,QAAA,UAAU,EAAE,WAAW;KACxB;AACH;;ACnJe,KAAK,CAAC,cAAc;;ACI5B,MAAM,UAAU,GAAe,CAAA,EAAA,KAAmC,SAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,CAAA,EAAA,WAA5B,EAAE,WAAW,EAAE,OAAO,EAAE,EAAA;AACnE,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;AAE/B,IAAA,MAAM;SACH,MAAM,CAAC,KAAK;AACZ,SAAA,GAAG,CAAC;AACH,QAAA,kBAAkB,EAAE,CAAC;KACtB;SACA,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AACtE,CAAC,CAAA;;ACbM,MAAM,aAAa,GAAG,MAAK;IAChC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AAE3D,IAAA,MAAM,OAAO,GAAG,WAAW,CACzB,CAAO,IAAe,KAAI,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;QACxB,IAAI,CAAC,IAAI,EAAE;YACT;;QAEF,iBAAiB,CAAC,IAAI,CAAC;AACvB,QAAA,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO;QAC7D,MAAM,UAAU,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;QACnD,YAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,CAAC;QACnD,iBAAiB,CAAC,KAAK,CAAC;AAC1B,KAAC,CAAA,EACD,CAAC,cAAc,CAAC,CACjB;IAED,SAAS,CAAC,MAAK,GAAI,EAAE,EAAE,CAAC;IAExB,OAAO;AACL,QAAA,UAAU,EAAE,OAAO;QACnB,cAAc;KACf;AACH;;ACpBA,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,QAAQ,KAAI;AACzC,IAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,kCAAkC,CAAC;AAE7D,IAAA,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC;IACnC,MAAM,CAAC,WAAW,CAAC;AACjB,QAAA,IAAI,EAAE,QAAQ;QACd,QAAQ;AACT,KAAA,CAAC;AACJ,CAAC,CAAC;;AChBW,MAAA,QAAQ,GAAG,CAAC,MAAW,EAAE,OAAY,EAAE,QAAiB,KAAI;;;;;;;IAQvE,MAAM,CAAC,OAAO,CAAC,IAAI;;;;IAIjB,IAAI,OAAO,CAAC,6BAA6B,CAAC,OAAO,EAAE,CAAC,QAAQ,KAAI;AAC9D,QAAA,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;KAC1D,CAAC,CACH;;;;;;;;IAYD,IAAI,CAAC,QAAQ,EAAE;QACb,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa;QAC1C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,aAAa;QAC/C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,iBAAiB;QACrD,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,iBAAiB;;;;;;;;;;;;;;;;;;;;;IAuBlD,IAAI,QAAQ,EAAE;AACZ,QAAA,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC;AAChD,QAAA,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;AACjC,QAAA,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;AACjC,QAAA,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;;;;;;;;;;;;;AAelC,IAAA,OAAO,MAAM;AACf;;ACvEA,MAAM,MAAM,GAAG,KAAK,CAAC,qBAAqB,CAAC;AAE3C,MAAM,sBAAsB,GAAG,CAAC,KAAU,KAAI;AAC5C,IAAA,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK;AAClC,IAAA,MAAM,CAAC,CAAA,iDAAA,EAAoD,SAAS,CAAA,CAAE,CAAC;AACvE,IAAA,YAAY,CAAC,OAAO,CAAC,CAAA,iBAAA,EAAoB,SAAS,CAAE,CAAA,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAEM,MAAM,0BAA0B,GAAG,MAAK;AAC7C,IAAA,YAAY,CAAC,WAAW,CAAC,2BAA2B,EAAE,sBAAsB,CAAC;AAC/E,CAAC;;ACLM,MAAM,kBAAkB,GAAG,CAAO,KAAuB,KAAI,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AAClE,IAAA,MAAM,aAAa,GAAG,gBAAgB,EAAE;IAExC,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE;QAC1D;;AAGF,IAAA,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK;AAE3B,IAAA,MAAM,aAAa,GAAW,CAAG,EAAA,SAAS,SAAS;IAEnD,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC;IAElE,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,OAAO,CAAC,GAAG,CAAC,2CAA2C,aAAa,CAAA,CAAE,CAAC;QACvE;;AAGF,IAAA,MAAM,YAAY,CAChB,CAAA,UAAA,EAAa,SAAS,CAAA,CAAE,EACxB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAC/C;AACH,CAAC,CAAA;;ACzBM,MAAM,oBAAoB,GAAG,MAAK;AACvC,IAAA,YAAY,CAAC,WAAW,CAAC,cAAc,EAAE,kBAAkB,CAAC;AAE9D,CAAC;;ACHM,MAAM,aAAa,GAAG,MAAW,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;IACtC,IAAI,SAAS,EAAE,EAAE;QACH,CAAC,MAAM,OAAO,yBAAiC,CAAC,EAAE,SAAS;;AAGzE,IAAA,IAAI,CAAC,SAAS,EAAE,EAAE;QACJ,CAAC,MAAM,OAAO,yBAA8B,CAAC,EAAE,SAAS;;AAExE,CAAC,CAAA;;ACRM,MAAM,eAAe,GAAG,MAAW,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;IACxC,IAAI,SAAS,EAAE,EAAE;QACD,CAAC,MAAM,OAAO,2BAAmC,CAAC,EAAE,WAAW;;AAG/E,IAAA,IAAI,CAAC,SAAS,EAAE,EAAE;QACF,CAAC,MAAM,OAAO,2BAAgC,CAAC,EAAE,WAAW;;AAE9E,CAAC,CAAA;;ACRM,MAAM,eAAe,GAAG,MAAW,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;IACxC,IAAI,SAAS,EAAE,EAAE;QACD,CAAC,MAAM,OAAO,2BAAmC,CAAC,EAAE,WAAW;;AAG/E,IAAA,IAAI,CAAC,SAAS,EAAE,EAAE;QACF,CAAC,MAAM,OAAO,2BAAgC,CAAC,EAAE,WAAW;;AAE9E,CAAC,CAAA;;ACQD,MAAM,MAAM,GAAG;AACb,IAAA,IAAI,EAAE,CAAO,OAA+B,KAAI,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AAC9C,QAAA,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO;QAErC,MAAM,QAAQ,EAAE;QAChB,MAAM,gBAAgB,EAAE;QACxB,MAAM,aAAa,EAAE;QACrB,MAAM,iBAAiB,EAAE;QACzB,MAAM,eAAe,EAAE;QACvB,MAAM,eAAe,EAAE;QACvB,MAAM,MAAM,EAAE;QAEd,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,GAAG,GAAG,MAAM;QAE9D,IAAI,aAAa,EAAE;YACjB,gBAAgB,CAAC,aAAa,CAAC;;AAGjC,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACjD,YAAA,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;;AAEtB,QAAA,gBAAgB,EAAE;AAClB,QAAA,0BAA0B,EAAE;AAC5B,QAAA,0BAA0B,EAAE;AAC5B,QAAA,oBAAoB,EAAE;QACtB,IAAI,mBAAmB,EAAE,EAAE;AACzB,YAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;;AAE9B,QAAA,IAAI,CAAC,mBAAmB,EAAE,EAAE;AAC1B,YAAA,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC;;QAErD,aAAa,CAAC,IAAI,CAAC;AACjB,YAAA,IAAI,EAAE,MAAM;YACZ,SAAS;YACT,MAAM;YACN,SAAS;YACT,aAAa;YACb,QAAQ;AACT,SAAA,CAAC;QAEF,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,OAAO,kCAAiC,CAAC;AAClF,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;AACzD,YAAA,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;;AAExB,KAAC,CAAA;AACD,IAAA,SAAS,EAAE,CAAC,QAAa,KAAI;QAC3B,MAAM,YAAY,GAAG,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC;AAEtD,QAAA,YAAY,CAAC,WAAW,CAAC,wBAAwB,EAAE,QAAQ,CAAC;QAE5D,OAAO;YACL,WAAW,EAAE,MAAK;gBAChB,YAAY,CAAC,WAAW,EAAE;AAC1B,gBAAA,YAAY,CAAC,cAAc,CAAC,wBAAwB,EAAE,QAAQ,CAAC;aAChE;SACF;KACF;AACD,IAAA,EAAE,EAAE,CAAC,UAAkB,EAAE,QAAa,KAAI;AACxC,QAAA,YAAY,CAAC,WAAW,CAAC,UAAU,EAAE,QAAQ,CAAC;QAE9C,OAAO;YACL,WAAW,EAAE,MAAK;AAChB,gBAAA,YAAY,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC;aAClD;SACF;KACF;IACD,YAAY,EAAE,MAAW,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AACvB,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;YAC7B,MAAM,YAAY,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AACxD,gBAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE;AAC9B,oBAAA,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;;AAE5B,aAAC,CAAC;YAEF,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YACvC,YAAY,CAAC,WAAW,EAAE;AAC5B,SAAC,CAAC;AACJ,KAAC,CAAA;AACD,IAAA,QAAQ,EAAE,CAAC,SAAiB,KAAI;AAC9B,QAAA,OAAO,QAAQ,CAAC,SAAS,CAAC;KAC3B;IACD,SAAS,EAAE,MAAqC;QAC9C,OAAO,SAAS,EAAE;KACnB;IACD,aAAa,EAAE,MAAe;QAC5B,OAAO,aAAa,EAAE;KACvB;;;ACpEH,YAAY,EAAE;;;;"}
|