pinata 2.4.2 → 2.4.4
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/index.js +42 -24
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +43 -25
- package/dist/index.mjs.map +1 -1
- package/package.json +61 -67
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/functions/analytics/analyticsDateInterval.ts","../src/core/functions/analytics/analyticsTopUsage.ts","../src/core/functions/authentication/testAuthentication.ts","../src/core/functions/files/delete.ts","../src/core/functions/files/deleteFileVectors.ts","../src/core/functions/files/deleteSwap.ts","../src/core/functions/files/list.ts","../src/core/functions/files/pinnedFileUsage.ts","../src/core/functions/files/swapCid.ts","../src/core/functions/files/swapHistory.ts","../src/core/functions/files/totalStorageUsage.ts","../src/core/functions/files/updateFile.ts","../src/core/functions/files/vectorizeFile.ts","../src/core/functions/files/vectorizeQuery.ts","../src/core/functions/files/queue.ts","../src/core/functions/files/deletePinRequest.ts","../src/core/functions/gateway/getCid.ts","../src/core/functions/gateway/convertIPFSUrl.ts","../src/core/functions/gateway/createAccessLink.ts","../src/core/functions/groups/addToGroup.ts","../src/core/functions/groups/createGroup.ts","../src/core/functions/groups/deleteGroup.ts","../src/core/functions/groups/getGroup.ts","../src/core/functions/groups/listGroups.ts","../src/core/functions/groups/removeFromGroup.ts","../src/core/functions/groups/updateGroup.ts","../src/core/functions/keys/createKey.ts","../src/core/functions/keys/listKeys.ts","../src/core/functions/keys/revokeKeys.ts","../src/core/functions/uploads/base64.ts","../src/core/functions/uploads/createSignedUploadURL.ts","../src/core/functions/uploads/file.ts","../src/core/functions/uploads/fileArray.ts","../src/core/functions/uploads/json.ts","../src/core/functions/uploads/url.ts","../src/core/functions/uploads/cid.ts","../src/core/classes/analytics/Analytics.ts","../src/core/classes/analytics/utils.ts","../src/core/classes/analytics/AnalyticsFilter.ts","../src/core/classes/analytics/AnalyticsBandwidth.ts","../src/core/classes/analytics/AnalyticsBuilder.ts","../src/core/classes/analytics/AnalyticsRequests.ts","../src/core/classes/analytics/TimeIntervalAnalyticsBuilder.ts","../src/core/classes/groups/GroupsFilter.ts","../src/core/classes/groups/PublicGroups.ts","../src/core/classes/groups/PrivateGroups.ts","../src/core/classes/groups/Groups.ts","../src/core/classes/keys/Keys.ts","../src/core/classes/keys/FilterKeys.ts","../src/core/classes/gateways/Gateways.ts","../src/core/classes/gateways/OptimizeImageCreateSignedUrl.ts","../src/core/classes/gateways/OptimizeImageGetCid.ts","../src/core/classes/gateways/PrivateGateways.ts","../src/core/classes/gateways/PublicGateways.ts","../src/core/functions/files/getFile.ts","../src/core/classes/files/FilterFiles.ts","../src/core/classes/files/FilterQueue.ts","../src/core/classes/files/PublicFiles.ts","../src/core/classes/files/PrivateFiles.ts","../src/core/classes/files/Files.ts","../src/core/classes/uploads/UploadBuilder.ts","../src/core/classes/uploads/PublicUpload.ts","../src/core/classes/uploads/PrivateUpload.ts","../src/core/classes/uploads/Upload.ts","../src/core/functions/signatures/addSignature.ts","../src/core/functions/signatures/getSignature.ts","../src/core/functions/signatures/removeSignature.ts","../src/core/classes/signatures/PublicSignatures.ts","../src/core/classes/signatures/Signatures.ts","../src/core/pinataSDK.ts"],"names":["wait","headers","data","file","options","base64String","url","cid"],"mappings":"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","file":"index.mjs","sourcesContent":["import type {\n\tTimeIntervalAnalyticsQuery,\n\tTimeIntervalAnalyticsResponse,\n\tPinataConfig,\n} from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const analyticsDateInterval = async (\n\tconfig: PinataConfig | undefined,\n\toptions?: TimeIntervalAnalyticsQuery,\n): Promise<TimeIntervalAnalyticsResponse> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst params = new URLSearchParams();\n\n\tif (options) {\n\t\tconst {\n\t\t\tcid,\n\t\t\tgateway_domain,\n\t\t\tstart_date,\n\t\t\tend_date,\n\t\t\tfile_name,\n\t\t\tuser_agent,\n\t\t\tcountry,\n\t\t\tregion,\n\t\t\treferer,\n\t\t\tlimit,\n\t\t\tsort_order,\n\t\t\tdate_interval,\n\t\t\tsort_by,\n\t\t} = options;\n\n\t\tif (cid) params.append(\"cid\", cid);\n\t\tif (gateway_domain) params.append(\"gateway_domain\", gateway_domain);\n\t\tif (start_date) params.append(\"start_date\", start_date);\n\t\tif (end_date) params.append(\"end_date\", end_date);\n\t\tif (file_name) params.append(\"file_name\", file_name);\n\t\tif (user_agent) params.append(\"user_agent\", user_agent.toString());\n\t\tif (country) params.append(\"country\", country.toString());\n\t\tif (region) params.append(\"region\", region);\n\t\tif (referer) params.append(\"referer\", referer.toString());\n\t\tif (limit) params.append(\"limit\", limit.toString());\n\t\tif (sort_order) params.append(\"sort_order\", sort_order);\n\t\tif (sort_by) params.append(\"sort_by\", sort_by);\n\t\tif (date_interval) params.append(\"by\", date_interval);\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\tconst url = `${endpoint}/ipfs/gateway_analytics_time_series?${params.toString()}`;\n\n\ttry {\n\t\tlet headers: Record<string, string>;\n\n\t\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\t\theaders = { ...config.customHeaders };\n\t\t} else {\n\t\t\theaders = {\n\t\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\tSource: \"sdk/analyticsDateInterval\",\n\t\t\t};\n\t\t}\n\n\t\tconst request = await fetch(url, {\n\t\t\tmethod: \"GET\",\n\t\t\theaders: headers,\n\t\t});\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: TimeIntervalAnalyticsResponse = res.data;\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(\n\t\t\t\t`Error processing anaytics usage: ${error.message}`,\n\t\t\t);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while fetching gateway usage\",\n\t\t);\n\t}\n};\n","import type {\n\tTopAnalyticsQuery,\n\tTopAnalyticsItem,\n\tPinataConfig,\n\tTopAnalyticsResponse,\n} from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const analyticsTopUsage = async (\n\tconfig: PinataConfig | undefined,\n\toptions?: TopAnalyticsQuery,\n): Promise<TopAnalyticsResponse> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst params = new URLSearchParams();\n\n\tif (options) {\n\t\tconst {\n\t\t\tcid,\n\t\t\tgateway_domain,\n\t\t\tstart_date,\n\t\t\tend_date,\n\t\t\tfile_name,\n\t\t\tuser_agent,\n\t\t\tcountry,\n\t\t\tregion,\n\t\t\treferer,\n\t\t\tlimit,\n\t\t\tsort_order,\n\t\t\tsort_by,\n\t\t\tattribute,\n\t\t} = options;\n\n\t\tconst domain = gateway_domain || config.pinataGateway;\n\t\tif (domain) {\n\t\t\t// Remove 'https://' if present\n\t\t\tconst cleanDomain = domain.replace(/^https?:\\/\\//, \"\");\n\t\t\tparams.append(\"gateway_domain\", cleanDomain);\n\t\t}\n\t\tif (cid) {\n\t\t\tparams.append(\"cid\", cid);\n\t\t}\n\t\tif (start_date) params.append(\"start_date\", start_date);\n\t\tif (end_date) params.append(\"end_date\", end_date);\n\t\tif (file_name) params.append(\"file_name\", file_name);\n\t\tif (user_agent) params.append(\"user_agent\", user_agent.toString());\n\t\tif (country) params.append(\"country\", country.toString());\n\t\tif (region) params.append(\"region\", region);\n\t\tif (referer) params.append(\"referer\", referer.toString());\n\t\tif (limit) params.append(\"limit\", limit.toString());\n\t\tif (sort_order) params.append(\"sort_order\", sort_order);\n\t\tif (sort_by) params.append(\"sort_by\", sort_by);\n\t\tif (attribute) params.append(\"by\", attribute);\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\tconst url = `${endpoint}/ipfs/gateway_analytics_top?${params.toString()}`;\n\n\ttry {\n\t\tlet headers: Record<string, string>;\n\n\t\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\t\theaders = { ...config.customHeaders };\n\t\t} else {\n\t\t\theaders = {\n\t\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\tSource: \"sdk/analyticsTopUsage\",\n\t\t\t};\n\t\t}\n\n\t\tconst request = await fetch(url, {\n\t\t\tmethod: \"GET\",\n\t\t\theaders: headers,\n\t\t});\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res: TopAnalyticsResponse = await request.json();\n\t\treturn res;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(\n\t\t\t\t`Error processing anaytics usage: ${error.message}`,\n\t\t\t);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while fetching gateway usage\",\n\t\t);\n\t}\n};\n","import type { PinataConfig } from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const testAuthentication = async (config: PinataConfig | undefined) => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\tlet endpoint: string = \"https://api.pinata.cloud\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\tSource: \"sdk/testAuthentication\",\n\t\t};\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/data/testAuthentication`, {\n\t\t\tmethod: \"GET\",\n\t\t\theaders: headers,\n\t\t});\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res: string = await request.json();\n\t\treturn res;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(\n\t\t\t\t`Error processing authentication: ${error.message}`,\n\t\t\t);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while testing authentication\",\n\t\t);\n\t}\n};\n","import type { PinataConfig, DeleteResponse } from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nconst wait = (milliseconds: number): Promise<void> => {\n\treturn new Promise((resolve) => {\n\t\tsetTimeout(resolve, milliseconds);\n\t});\n};\n\nexport const deleteFile = async (\n\tconfig: PinataConfig | undefined,\n\tfiles: string[],\n\tprivacy: \"public\" | \"private\",\n): Promise<DeleteResponse[]> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst responses: DeleteResponse[] = [];\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\tSource: \"sdk/deleteFile\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\tfor (const id of files) {\n\t\ttry {\n\t\t\tconst response = await fetch(`${endpoint}/files/${privacy}/${id}`, {\n\t\t\t\tmethod: \"DELETE\",\n\t\t\t\theaders: headers,\n\t\t\t});\n\n\t\t\tawait wait(300);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tconst errorData = await response.text();\n\t\t\t\tif (response.status === 401) {\n\t\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\t\tresponse.status,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\trequestUrl: response.url,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tthrow new NetworkError(`HTTP error`, response.status, {\n\t\t\t\t\terror: errorData,\n\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\trequestUrl: response.url,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tresponses.push({\n\t\t\t\tid: id,\n\t\t\t\tstatus: response.statusText,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tlet errorMessage: string;\n\n\t\t\tif (error instanceof PinataError) {\n\t\t\t\terrorMessage = error.message;\n\t\t\t} else if (error instanceof Error) {\n\t\t\t\terrorMessage = `Error deleting file ${id}: ${error.message}`;\n\t\t\t} else {\n\t\t\t\terrorMessage = `An unknown error occurred while deleting file ${id}`;\n\t\t\t}\n\n\t\t\tresponses.push({\n\t\t\t\tid: id,\n\t\t\t\tstatus: errorMessage,\n\t\t\t});\n\t\t}\n\t}\n\treturn responses;\n};\n","import type { PinataConfig, VectorizeFileResponse } from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const deleteFileVectors = async (\n\tconfig: PinataConfig | undefined,\n\tfileId: string,\n): Promise<VectorizeFileResponse> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\tSource: \"sdk/vectorizeFile\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://uploads.pinata.cloud/v3\";\n\n\tif (config.uploadUrl) {\n\t\tendpoint = config.uploadUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/vectorize/files/${fileId}`, {\n\t\t\tmethod: \"DELETE\",\n\t\t\theaders: headers,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res: VectorizeFileResponse = await request.json();\n\t\treturn res;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(\n\t\t\t\t`Error processing vectorize file: ${error.message}`,\n\t\t\t);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while vectorizing file\");\n\t}\n};\n","import type { SwapCidResponse, PinataConfig } from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const deleteSwap = async (\n\tconfig: PinataConfig | undefined,\n\tcid: string,\n\tnetwork: \"public\" | \"private\",\n): Promise<string> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/deleteSwap\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/files/${network}/swap/${cid}`, {\n\t\t\tmethod: \"DELETE\",\n\t\t\theaders: headers,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(`Authentication failed`, request.status, {\n\t\t\t\t\terror: errorData,\n\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (request.status === 403) {\n\t\t\t\tthrow new PinataError(\n\t\t\t\t\t\"Unauthorized CID Swap Deletion\",\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"UNAUTHORIZED\",\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (request.status === 404) {\n\t\t\t\tthrow new PinataError(\"CID not pinned to account\", request.status, {\n\t\t\t\t\terror: errorData,\n\t\t\t\t\tcode: \"NOT_FOUND\",\n\t\t\t\t});\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error occurred`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"NETWORK_ERROR\",\n\t\t\t});\n\t\t}\n\n\t\treturn request.statusText;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(\n\t\t\t\t`Error processing deleteSwap: ${error.message}`,\n\t\t\t\tundefined,\n\t\t\t\t{\n\t\t\t\t\tcode: \"DELETE_SWAP_ERROR\",\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while deleting swap\",\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\tcode: \"UNKNOWN_ERROR\",\n\t\t\t},\n\t\t);\n\t}\n};\n","import type {\n\tFileListQuery,\n\tFileListResponse,\n\tPinataConfig,\n} from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const listFiles = async (\n\tconfig: PinataConfig | undefined,\n\tprivacy: \"private\" | \"public\",\n\toptions?: FileListQuery,\n): Promise<FileListResponse> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst params = new URLSearchParams();\n\n\tif (options) {\n\t\tconst {\n\t\t\tname,\n\t\t\tgroup,\n\t\t\tcid,\n\t\t\torder,\n\t\t\tlimit,\n\t\t\tmimeType,\n\t\t\tpageToken,\n\t\t\tcidPending,\n\t\t\tmetadata,\n\t\t\tnoGroup,\n\t\t} = options;\n\n\t\tif (limit) params.append(\"limit\", limit.toString());\n\t\tif (name) params.append(\"name\", name);\n\t\tif (group) params.append(\"group\", group);\n\t\tif (cid) params.append(\"cid\", cid);\n\t\tif (mimeType) params.append(\"mimeType\", mimeType);\n\t\tif (order) params.append(\"order\", order);\n\t\tif (pageToken) params.append(\"pageToken\", pageToken);\n\t\tif (cidPending) params.append(\"cidPending\", \"true\");\n\t\tif (noGroup) params.append(\"group\", \"null\");\n\t\tif (metadata && typeof metadata === \"object\") {\n\t\t\tObject.entries(metadata).forEach(([key, value]) => {\n\t\t\t\tparams.append(`keyvalues[${key.toString()}]`, value.toString());\n\t\t\t});\n\t\t}\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\tconst url = `${endpoint}/files/${privacy}?${params.toString()}`;\n\n\ttry {\n\t\tlet headers: Record<string, string>;\n\n\t\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\t\theaders = {\n\t\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\t...config.customHeaders,\n\t\t\t};\n\t\t} else {\n\t\t\theaders = {\n\t\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\tSource: \"sdk/listFiles\",\n\t\t\t};\n\t\t}\n\n\t\tconst request = await fetch(url, {\n\t\t\tmethod: \"GET\",\n\t\t\theaders: headers,\n\t\t});\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: FileListResponse = res.data;\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing list files: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while listing files\");\n\t}\n};\n","import type { PinataConfig, UserPinnedDataResponse } from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const pinnedFileCount = async (\n\tconfig: PinataConfig | undefined,\n): Promise<number> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\tSource: \"sdk/pinnedFileUsage\",\n\t\t};\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/data/userPinnedDataTotal`, {\n\t\t\tmethod: \"GET\",\n\t\t\theaders: headers,\n\t\t});\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\tconst res: UserPinnedDataResponse = await request.json();\n\t\treturn res.pin_count;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(\n\t\t\t\t`Error processing pinnedFileUsage: ${error.message}`,\n\t\t\t);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while getting pinned file usage\",\n\t\t);\n\t}\n};\n","import type {\n\tSwapCidOptions,\n\tSwapCidResponse,\n\tPinataConfig,\n} from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const swapCid = async (\n\tconfig: PinataConfig | undefined,\n\toptions: SwapCidOptions,\n\tnetwork: \"public\" | \"private\",\n): Promise<SwapCidResponse> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst data = JSON.stringify({\n\t\tswap_cid: options.swapCid,\n\t});\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/swapCid\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(\n\t\t\t`${endpoint}/files/${network}/swap/${options.cid}`,\n\t\t\t{\n\t\t\t\tmethod: \"PUT\",\n\t\t\t\theaders: headers,\n\t\t\t\tbody: data,\n\t\t\t},\n\t\t);\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (request.status === 403) {\n\t\t\t\tthrow new PinataError(\"Unauthorized CID Swap\", request.status, {\n\t\t\t\t\terror: errorData,\n\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (request.status === 404) {\n\t\t\t\tthrow new PinataError(\"CID not pinned to account\", request.status, {\n\t\t\t\t\terror: errorData,\n\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: SwapCidResponse = res.data;\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing CID Swap: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while swapping CID\");\n\t}\n};\n","import type {\n\tSwapCidResponse,\n\tPinataConfig,\n\tSwapHistoryOptions,\n} from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const swapHistory = async (\n\tconfig: PinataConfig | undefined,\n\toptions: SwapHistoryOptions,\n\tnetwork: \"public\" | \"private\",\n): Promise<SwapCidResponse[]> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/swapHistory\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(\n\t\t\t`${endpoint}/files/${network}/swap/${options.cid}?domain=${options.domain}`,\n\t\t\t{\n\t\t\t\tmethod: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t},\n\t\t);\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (request.status === 404) {\n\t\t\t\tthrow new PinataError(\"CID does not have history\", request.status, {\n\t\t\t\t\terror: errorData,\n\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: SwapCidResponse[] = res.data;\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error fetching swap history: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while fetching swap history\",\n\t\t);\n\t}\n};\n","import type { PinataConfig, UserPinnedDataResponse } from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const totalStorageUsage = async (\n\tconfig: PinataConfig | undefined,\n): Promise<number> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = { ...config.customHeaders };\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\tSource: \"sdk/totalStorageUsage\",\n\t\t};\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/data/userPinnedDataTotal`, {\n\t\t\tmethod: \"GET\",\n\t\t\theaders: headers,\n\t\t});\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\tconst res: UserPinnedDataResponse = await request.json();\n\t\treturn res.pin_size_total;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(\n\t\t\t\t`Error processing totalStorageUsage: ${error.message}`,\n\t\t\t);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while getting total storage usage\",\n\t\t);\n\t}\n};\n","import type {\n\tFileListItem,\n\tPinataConfig,\n\tUpdateFileOptions,\n} from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const updateFile = async (\n\tconfig: PinataConfig | undefined,\n\toptions: UpdateFileOptions,\n\tprivacy: \"public\" | \"private\",\n): Promise<FileListItem> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tif (\n\t\t!options.name &&\n\t\t(!options.keyvalues || Object.keys(options.keyvalues).length === 0)\n\t) {\n\t\tthrow new ValidationError(\n\t\t\t\"At least one of 'name' or 'keyvalues' must be provided\",\n\t\t);\n\t}\n\n\tconst data: Record<string, any> = {};\n\n\tif (options.name !== undefined) {\n\t\tdata.name = options.name;\n\t}\n\tif (options.keyvalues && Object.keys(options.keyvalues).length > 0) {\n\t\tdata.keyvalues = options.keyvalues;\n\t}\n\n\tconst body = JSON.stringify(data);\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/updateMetadata\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/files/${privacy}/${options.id}`, {\n\t\t\tmethod: \"PUT\",\n\t\t\theaders: headers,\n\t\t\tbody: body,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: FileListItem = res.data;\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing updateFile: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while updating file\");\n\t}\n};\n","import type { PinataConfig, VectorizeFileResponse } from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const vectorizeFile = async (\n\tconfig: PinataConfig | undefined,\n\tfileId: string,\n): Promise<VectorizeFileResponse> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\tSource: \"sdk/vectorizeFile\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://uploads.pinata.cloud/v3\";\n\n\tif (config.uploadUrl) {\n\t\tendpoint = config.uploadUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/vectorize/files/${fileId}`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: headers,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res: VectorizeFileResponse = await request.json();\n\t\treturn res;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(\n\t\t\t\t`Error processing vectorize file: ${error.message}`,\n\t\t\t);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while vectorizing file\");\n\t}\n};\n","import type {\n\tGetCIDResponse,\n\tPinataConfig,\n\tVectorizeQuery,\n\tVectorizeQueryResponse,\n} from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nimport { getCid } from \"../../functions\";\n\nexport const vectorizeQuery = async (\n\tconfig: PinataConfig | undefined,\n\toptions: VectorizeQuery,\n): Promise<VectorizeQueryResponse | GetCIDResponse> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\tSource: \"sdk/vectorQuery\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://uploads.pinata.cloud/v3\";\n\n\tif (config.uploadUrl) {\n\t\tendpoint = config.uploadUrl;\n\t}\n\n\tconst body = JSON.stringify({\n\t\ttext: options.query,\n\t});\n\n\ttry {\n\t\tconst request = await fetch(\n\t\t\t`${endpoint}/vectorize/groups/${options.groupId}/query`,\n\t\t\t{\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: headers,\n\t\t\t\tbody: body,\n\t\t\t},\n\t\t);\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: VectorizeQueryResponse = res.data;\n\n\t\tif (options.returnFile) {\n\t\t\tif (resData.matches.length === 0) {\n\t\t\t\tthrow new PinataError(`No files returned in query to fetch`);\n\t\t\t}\n\t\t\tconst cid = resData.matches[0].cid;\n\t\t\tconst fileRes: GetCIDResponse = await getCid(config, cid, \"files\");\n\t\t\treturn fileRes;\n\t\t}\n\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(\n\t\t\t\t`Error processing vectorize file: ${error.message}`,\n\t\t\t);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while vectorizing file\");\n\t}\n};\n","import type {\n\tPinQueueItem,\n\tPinQueueQuery,\n\tPinQueueResponse,\n\tPinataConfig,\n} from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const queue = async (\n\tconfig: PinataConfig | undefined,\n\toptions?: PinQueueQuery,\n): Promise<PinQueueResponse> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst params = new URLSearchParams({\n\t\tincludesCount: \"false\",\n\t});\n\n\tif (options) {\n\t\tconst { cid, status, sort, limit, pageToken } = options;\n\n\t\tif (cid) params.append(\"cid\", cid.toString());\n\t\tif (status) params.append(\"status\", status.toString());\n\t\tif (sort) params.append(\"sort\", sort.toString());\n\t\tif (limit) params.append(\"limit\", limit.toString());\n\t\tif (pageToken) params.append(\"pageToken\", pageToken.toString());\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\tconst url = `${endpoint}/files/public/pin_by_cid?${params.toString()}`;\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\tSource: \"sdk/pinJobs\",\n\t\t};\n\t}\n\n\ttry {\n\t\tconst request = await fetch(url, {\n\t\t\tmethod: \"GET\",\n\t\t\theaders: headers,\n\t\t});\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\tconst res = await request.json();\n\t\tconst resData: PinQueueResponse = res.data;\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing pinJobs: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while listing pin jobs\");\n\t}\n};\n","import type { PinataConfig } from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const deletePinRequest = async (\n\tconfig: PinataConfig | undefined,\n\tid: string,\n): Promise<string> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\tSource: \"sdk/deletePinRequest\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst response = await fetch(`${endpoint}/files/public/pin_by_cid/${id}`, {\n\t\t\tmethod: \"DELETE\",\n\t\t\theaders: headers,\n\t\t});\n\n\t\tif (!response.ok) {\n\t\t\tconst errorData = await response.text();\n\t\t\tif (response.status === 401) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\tresponse.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: response.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error`, response.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: response.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\treturn \"OK\";\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error deleting pin by request: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while deleting pin by CID request\",\n\t\t);\n\t}\n};\n","import type {\n\tGetCIDResponse,\n\tPinataConfig,\n\tOptimizeImageOptions,\n} from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const getCid = async (\n\tconfig: PinataConfig | undefined,\n\tcid: string,\n\tgatewayType?: \"ipfs\" | \"files\",\n\toptions?: OptimizeImageOptions,\n): Promise<GetCIDResponse> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet data: JSON | string | Blob;\n\tlet newUrl: string = `${config?.pinataGateway}/${gatewayType}/${cid}`;\n\n\tconst params = new URLSearchParams();\n\n\tif (options) {\n\t\tif (options.width) params.append(\"img-width\", options.width.toString());\n\t\tif (options.height) params.append(\"img-height\", options.height.toString());\n\t\tif (options.dpr) params.append(\"img-dpr\", options.dpr.toString());\n\t\tif (options.fit) params.append(\"img-fit\", options.fit);\n\t\tif (options.gravity) params.append(\"img-gravity\", options.gravity);\n\t\tif (options.quality)\n\t\t\tparams.append(\"img-quality\", options.quality.toString());\n\t\tif (options.format) params.append(\"img-format\", options.format);\n\t\tif (options.animation !== undefined)\n\t\t\tparams.append(\"img-anim\", options.animation.toString());\n\t\tif (options.sharpen)\n\t\t\tparams.append(\"img-sharpen\", options.sharpen.toString());\n\t\tif (options.onError === true) params.append(\"img-onerror\", \"redirect\");\n\t\tif (options.metadata) params.append(\"img-metadata\", options.metadata);\n\t}\n\n\tif (config?.pinataGatewayKey) {\n\t\tparams.append(\"pinataGatewayToken\", config.pinataGatewayKey);\n\t}\n\n\tconst queryString = params.toString();\n\tif (queryString) {\n\t\tnewUrl += `?${queryString}`;\n\t}\n\n\tif (gatewayType === \"ipfs\") {\n\t\tconst request = await fetch(newUrl);\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication Failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst contentType: string | null =\n\t\t\trequest.headers.get(\"content-type\")?.split(\";\")[0] || null;\n\n\t\tif (contentType?.includes(\"application/json\")) {\n\t\t\tdata = await request.json();\n\t\t} else if (contentType?.includes(\"text/\")) {\n\t\t\tdata = await request.text();\n\t\t} else {\n\t\t\tdata = await request.blob();\n\t\t}\n\n\t\tconst res: GetCIDResponse = {\n\t\t\tdata: data,\n\t\t\tcontentType: contentType,\n\t\t};\n\n\t\treturn res;\n\t}\n\n\tconst date = Math.floor(new Date().getTime() / 1000);\n\n\tconst payload = JSON.stringify({\n\t\turl: newUrl,\n\t\tdate: date,\n\t\texpires: 30,\n\t\tmethod: \"GET\",\n\t});\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\tSource: \"sdk/getCid\",\n\t\t};\n\t}\n\n\tconst signedUrlRequest = await fetch(`${endpoint}/files/sign`, {\n\t\tmethod: \"POST\",\n\t\theaders: headers,\n\t\tbody: payload,\n\t});\n\n\tconst signedUrl = await signedUrlRequest.json();\n\n\ttry {\n\t\tconst request = await fetch(signedUrl.data);\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication Failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst contentType: string | null =\n\t\t\trequest.headers.get(\"content-type\")?.split(\";\")[0] || null;\n\n\t\tif (contentType?.includes(\"application/json\")) {\n\t\t\tdata = await request.json();\n\t\t} else if (contentType?.includes(\"text/\")) {\n\t\t\tdata = await request.text();\n\t\t} else {\n\t\t\tdata = await request.blob();\n\t\t}\n\n\t\tconst res: GetCIDResponse = {\n\t\t\tdata: data,\n\t\t\tcontentType: contentType,\n\t\t};\n\n\t\treturn res;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing getCid: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while getting CID contents\",\n\t\t);\n\t}\n};\n","import { convertToDesiredGateway } from \"../../../utils/gateway-tools\";\nimport type { PinataConfig } from \"../../types\";\n\nexport const convertIPFSUrl = async (\n\tconfig: PinataConfig | undefined,\n\turl: string,\n\tgatewayPrefix?: string,\n): Promise<string> => {\n\tlet newUrl: string;\n\tlet prefix: string =\n\t\tgatewayPrefix || config?.pinataGateway || \"https://gateway.pinata.cloud\";\n\tnewUrl = await convertToDesiredGateway(url, prefix);\n\tif (config?.pinataGatewayKey) {\n\t\t`${newUrl}?pinataGatewayToken=${config?.pinataGatewayKey}`;\n\t}\n\treturn newUrl;\n};\n","import type {\n\tPinataConfig,\n\tOptimizeImageOptions,\n\tAccessLinkOptions,\n} from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const createAccessLink = async (\n\tconfig: PinataConfig | undefined,\n\toptions: AccessLinkOptions,\n\timgOpts: OptimizeImageOptions,\n): Promise<string> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet baseUrl: string | undefined;\n\n\tif (options?.gateway) {\n\t\tbaseUrl = options.gateway.startsWith(\"https://\")\n\t\t\t? options.gateway\n\t\t\t: `https://${options.gateway}`;\n\t} else {\n\t\tbaseUrl = config.pinataGateway;\n\t}\n\n\tlet newUrl: string = `${baseUrl}/files/${options.cid}`;\n\n\tconst params = new URLSearchParams();\n\n\tif (imgOpts) {\n\t\tif (imgOpts.width) params.append(\"img-width\", imgOpts.width.toString());\n\t\tif (imgOpts.height) params.append(\"img-height\", imgOpts.height.toString());\n\t\tif (imgOpts.dpr) params.append(\"img-dpr\", imgOpts.dpr.toString());\n\t\tif (imgOpts.fit) params.append(\"img-fit\", imgOpts.fit);\n\t\tif (imgOpts.gravity) params.append(\"img-gravity\", imgOpts.gravity);\n\t\tif (imgOpts.quality)\n\t\t\tparams.append(\"img-quality\", imgOpts.quality.toString());\n\t\tif (imgOpts.format) params.append(\"img-format\", imgOpts.format);\n\t\tif (imgOpts.animation !== undefined)\n\t\t\tparams.append(\"img-anim\", imgOpts.animation.toString());\n\t\tif (imgOpts.sharpen)\n\t\t\tparams.append(\"img-sharpen\", imgOpts.sharpen.toString());\n\t\tif (imgOpts.onError === true) params.append(\"img-onerror\", \"redirect\");\n\t\tif (imgOpts.metadata) params.append(\"img-metadata\", imgOpts.metadata);\n\t}\n\n\tconst queryString = params.toString();\n\n\tif (queryString) {\n\t\tnewUrl += `?${queryString}`;\n\t}\n\n\tconst date = options?.date || Math.floor(new Date().getTime() / 1000);\n\n\tconst payload = JSON.stringify({\n\t\turl: newUrl,\n\t\tdate: date,\n\t\texpires: options.expires,\n\t\tmethod: \"GET\",\n\t});\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\tSource: \"sdk/createSignURL\",\n\t\t};\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/files/private/download_link`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: headers,\n\t\t\tbody: payload,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication Failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\treturn res.data;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(\n\t\t\t\t`Error processing createSignedURL: ${error.message}`,\n\t\t\t);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while getting signed url\");\n\t}\n};\n","import type {\n\tGroupCIDOptions,\n\tPinataConfig,\n\tUpdateGroupFilesResponse,\n} from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const addToGroup = async (\n\tconfig: PinataConfig | undefined,\n\toptions: GroupCIDOptions,\n\tprivacy: \"public\" | \"private\",\n): Promise<UpdateGroupFilesResponse[]> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst wait = (milliseconds: number): Promise<void> => {\n\t\treturn new Promise((resolve) => {\n\t\t\tsetTimeout(resolve, milliseconds);\n\t\t});\n\t};\n\n\tconst responses: UpdateGroupFilesResponse[] = [];\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/addToGroup\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\tfor (const id of options.files) {\n\t\ttry {\n\t\t\tconst response = await fetch(\n\t\t\t\t`${endpoint}/groups/${privacy}/${options.groupId}/ids/${id}`,\n\t\t\t\t{\n\t\t\t\t\tmethod: \"PUT\",\n\t\t\t\t\theaders: headers,\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tawait wait(300);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tconst errorData = await response.text();\n\t\t\t\tif (response.status === 401) {\n\t\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\t\tresponse.status,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\trequestUrl: response.url,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, response.status, {\n\t\t\t\t\terror: errorData,\n\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\trequestUrl: response.url,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tresponses.push({\n\t\t\t\tid: id,\n\t\t\t\tstatus: response.statusText,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tlet errorMessage: string;\n\n\t\t\tif (error instanceof PinataError) {\n\t\t\t\terrorMessage = error.message;\n\t\t\t} else if (error instanceof Error) {\n\t\t\t\terrorMessage = `Error adding file ${id} to group: ${error.message}`;\n\t\t\t} else {\n\t\t\t\terrorMessage = `An unknown error occurred while adding file ${id} to group`;\n\t\t\t}\n\n\t\t\tresponses.push({\n\t\t\t\tid: id,\n\t\t\t\tstatus: errorMessage,\n\t\t\t});\n\t\t}\n\t}\n\treturn responses;\n};\n","import type {\n\tPinataConfig,\n\tGroupOptions,\n\tGroupResponseItem,\n} from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const createGroup = async (\n\tconfig: PinataConfig | undefined,\n\toptions: GroupOptions,\n\tprivacy: \"public\" | \"private\",\n): Promise<GroupResponseItem> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst data = JSON.stringify({\n\t\tname: options.name,\n\t\tis_public: options.isPublic,\n\t});\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/createGroup\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/groups/${privacy}`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: headers,\n\t\t\tbody: data,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: GroupResponseItem = res.data;\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing createGroup: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while creating a group\");\n\t}\n};\n","import type { GetGroupOptions, PinataConfig } from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const deleteGroup = async (\n\tconfig: PinataConfig | undefined,\n\toptions: GetGroupOptions,\n\tprivacy: \"public\" | \"private\",\n): Promise<string> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/deleteGroup\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(\n\t\t\t`${endpoint}/groups/${privacy}/${options.groupId}`,\n\t\t\t{\n\t\t\t\tmethod: \"DELETE\",\n\t\t\t\theaders: headers,\n\t\t\t},\n\t\t);\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res: string = request.statusText;\n\t\treturn res;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing deleteGroup: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while deleting a group\");\n\t}\n};\n","import type {\n\tPinataConfig,\n\tGroupResponseItem,\n\tGetGroupOptions,\n} from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const getGroup = async (\n\tconfig: PinataConfig | undefined,\n\toptions: GetGroupOptions,\n\tprivacy: \"public\" | \"private\",\n): Promise<GroupResponseItem> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/getGroup\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(\n\t\t\t`${endpoint}/groups/${privacy}/${options.groupId}`,\n\t\t\t{\n\t\t\t\tmethod: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t},\n\t\t);\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: GroupResponseItem = res.data;\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing getGroup: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while getting info for a group\",\n\t\t);\n\t}\n};\n","import type {\n\tPinataConfig,\n\tGroupResponseItem,\n\tGroupQueryOptions,\n\tGroupListResponse,\n} from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const listGroups = async (\n\tconfig: PinataConfig | undefined,\n\tprivacy: \"public\" | \"private\",\n\toptions?: GroupQueryOptions,\n): Promise<GroupListResponse> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/listGroups\",\n\t\t};\n\t}\n\n\tconst params = new URLSearchParams();\n\n\tif (options) {\n\t\tconst { pageToken, name, limit, isPublic } = options;\n\n\t\tif (pageToken) params.append(\"pageToken\", pageToken.toString());\n\t\tif (isPublic) params.append(\"isPublic\", isPublic.toString());\n\t\tif (name) params.append(\"name\", name);\n\t\tif (limit !== undefined) params.append(\"limit\", limit.toString());\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(\n\t\t\t`${endpoint}/groups/${privacy}?${params.toString()}`,\n\t\t\t{\n\t\t\t\tmethod: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t},\n\t\t);\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: GroupListResponse = res.data;\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing listGroups: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while listing groups\");\n\t}\n};\n","import type {\n\tGroupCIDOptions,\n\tPinataConfig,\n\tUpdateGroupFilesResponse,\n} from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const removeFromGroup = async (\n\tconfig: PinataConfig | undefined,\n\toptions: GroupCIDOptions,\n\tprivacy: \"public\" | \"private\",\n): Promise<UpdateGroupFilesResponse[]> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst wait = (milliseconds: number): Promise<void> => {\n\t\treturn new Promise((resolve) => {\n\t\t\tsetTimeout(resolve, milliseconds);\n\t\t});\n\t};\n\n\tconst responses: UpdateGroupFilesResponse[] = [];\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/addToGroup\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\tfor (const id of options.files) {\n\t\ttry {\n\t\t\tconst response = await fetch(\n\t\t\t\t`${endpoint}/groups/${privacy}/${options.groupId}/ids/${id}`,\n\t\t\t\t{\n\t\t\t\t\tmethod: \"DELETE\",\n\t\t\t\t\theaders: headers,\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tawait wait(300);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tconst errorData = await response.text();\n\t\t\t\tif (response.status === 401) {\n\t\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\t\tresponse.status,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\trequestUrl: response.url,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, response.status, {\n\t\t\t\t\terror: errorData,\n\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\trequestUrl: response.url,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tresponses.push({\n\t\t\t\tid: id,\n\t\t\t\tstatus: response.statusText,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tlet errorMessage: string;\n\n\t\t\tif (error instanceof PinataError) {\n\t\t\t\terrorMessage = error.message;\n\t\t\t} else if (error instanceof Error) {\n\t\t\t\terrorMessage = `Error adding file ${id} to group: ${error.message}`;\n\t\t\t} else {\n\t\t\t\terrorMessage = `An unknown error occurred while adding file ${id} to group`;\n\t\t\t}\n\n\t\t\tresponses.push({\n\t\t\t\tid: id,\n\t\t\t\tstatus: errorMessage,\n\t\t\t});\n\t\t}\n\t}\n\treturn responses;\n};\n","import type {\n\tPinataConfig,\n\tGroupResponseItem,\n\tUpdateGroupOptions,\n} from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const updateGroup = async (\n\tconfig: PinataConfig | undefined,\n\toptions: UpdateGroupOptions,\n\tprivacy: \"public\" | \"private\",\n): Promise<GroupResponseItem> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst data = JSON.stringify({\n\t\tname: options.name,\n\t\tis_public: options.isPublic,\n\t});\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/updateGroup\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(\n\t\t\t`${endpoint}/groups/${privacy}/${options.groupId}`,\n\t\t\t{\n\t\t\t\tmethod: \"PUT\",\n\t\t\t\theaders: headers,\n\t\t\t\tbody: data,\n\t\t\t},\n\t\t);\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: GroupResponseItem = res.data;\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing updateGroup: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while updating group\");\n\t}\n};\n","import type { PinataConfig, KeyOptions, KeyResponse } from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const createKey = async (\n\tconfig: PinataConfig | undefined,\n\toptions: KeyOptions,\n): Promise<KeyResponse> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/createKey\",\n\t\t};\n\t}\n\n\tconst data = JSON.stringify(options);\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/pinata/keys`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: headers,\n\t\t\tbody: data,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res: KeyResponse = await request.json();\n\t\treturn res;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing createKey: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while creating API key\");\n\t}\n};\n","import type {\n\tKeyListItem,\n\tKeyListQuery,\n\tKeyListResponse,\n\tPinataConfig,\n} from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const listKeys = async (\n\tconfig: PinataConfig | undefined,\n\toptions?: KeyListQuery,\n): Promise<KeyListItem[]> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/listKeys\",\n\t\t};\n\t}\n\n\tconst params = new URLSearchParams();\n\n\tif (options) {\n\t\tconst { offset, name, revoked, limitedUse, exhausted } = options;\n\n\t\tif (offset) params.append(\"offset\", offset.toString());\n\t\tif (revoked !== undefined) params.append(\"revoked\", revoked.toString());\n\t\tif (limitedUse !== undefined)\n\t\t\tparams.append(\"limitedUse\", limitedUse.toString());\n\t\tif (exhausted !== undefined)\n\t\t\tparams.append(\"exhausted\", exhausted.toString());\n\t\tif (name) params.append(\"name\", name);\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(\n\t\t\t`${endpoint}/pinata/keys?${params.toString()}`,\n\t\t\t{\n\t\t\t\tmethod: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t},\n\t\t);\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res: KeyListResponse = await request.json();\n\t\treturn res.keys;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing listKeys: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while listing API keys\");\n\t}\n};\n","import type { PinataConfig, RevokeKeyResponse } from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nconst wait = (milliseconds: number): Promise<void> => {\n\treturn new Promise((resolve) => {\n\t\tsetTimeout(resolve, milliseconds);\n\t});\n};\n\nexport const revokeKeys = async (\n\tconfig: PinataConfig | undefined,\n\tkeys: string[],\n): Promise<RevokeKeyResponse[]> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t\theaders = { ...config.customHeaders };\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/revokeKeys\",\n\t\t};\n\t}\n\n\tconst responses: RevokeKeyResponse[] = [];\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\tfor (const key of keys) {\n\t\ttry {\n\t\t\tconst request = await fetch(`${endpoint}/pinata/keys/${key}`, {\n\t\t\t\tmethod: \"PUT\",\n\t\t\t\theaders: headers,\n\t\t\t});\n\n\t\t\tawait wait(300);\n\n\t\t\tif (!request.ok) {\n\t\t\t\tconst errorData = await request.text();\n\t\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\t\trequest.status,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\t\terror: errorData,\n\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst result: string = await request.json();\n\t\t\tresponses.push({\n\t\t\t\tkey: key,\n\t\t\t\tstatus: result,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tlet errorMessage: string;\n\n\t\t\tif (error instanceof PinataError) {\n\t\t\t\terrorMessage = error.message;\n\t\t\t} else if (error instanceof Error) {\n\t\t\t\terrorMessage = `Error revoking key ${key}: ${error.message}`;\n\t\t\t} else {\n\t\t\t\terrorMessage = `An unknown error occurred while revoking key ${key}`;\n\t\t\t}\n\n\t\t\tresponses.push({\n\t\t\t\tkey: key,\n\t\t\t\tstatus: errorMessage,\n\t\t\t});\n\t\t}\n\t}\n\n\treturn responses;\n};\n","import type { PinataConfig, UploadResponse, UploadOptions } from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const uploadBase64 = async (\n\tconfig: PinataConfig | undefined,\n\tbase64String: string,\n\tnetwork: \"private\" | \"public\",\n\toptions?: UploadOptions,\n) => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst jwt: string | undefined = options?.keys || config?.pinataJwt;\n\n\tconst name = options?.metadata?.name\n\t\t? options?.metadata?.name\n\t\t: \"base64 string\";\n\n\tconst buffer = Buffer.from(base64String, \"base64\");\n\n\tconst blob = new Blob([buffer]);\n\n\tconst data = new FormData();\n\n\tdata.append(\"file\", blob, name);\n\tdata.append(\"network\", network);\n\tdata.append(\"name\", name);\n\tif (options?.groupId) {\n\t\tdata.append(\"group_id\", options.groupId);\n\t}\n\tif (options?.metadata?.keyvalues) {\n\t\tdata.append(\"keyvalues\", JSON.stringify(options.metadata.keyvalues));\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\tSource: \"sdk/base64\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://uploads.pinata.cloud/v3\";\n\n\tif (config.uploadUrl) {\n\t\tendpoint = config.uploadUrl;\n\t}\n\n\tif (options?.url) {\n\t\ttry {\n\t\t\tconst request = await fetch(options.url, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tbody: data,\n\t\t\t});\n\n\t\t\tif (!request.ok) {\n\t\t\t\tconst errorData = await request.text();\n\t\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\t\trequest.status,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\t\terror: errorData,\n\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst res = await request.json();\n\t\t\tconst resData: UploadResponse = res.data;\n\t\t\treturn resData;\n\t\t} catch (error) {\n\t\t\tif (error instanceof PinataError) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tif (error instanceof Error) {\n\t\t\t\tthrow new PinataError(`Error processing base64: ${error.message}`);\n\t\t\t}\n\t\t\tthrow new PinataError(\n\t\t\t\t\"An unknown error occurred while trying to upload base64\",\n\t\t\t);\n\t\t}\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/files`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: headers,\n\t\t\tbody: data,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: UploadResponse = res.data;\n\t\tif (options?.vectorize) {\n\t\t\tconst vectorReq = await fetch(\n\t\t\t\t`${endpoint}/vectorize/files/${resData.id}`,\n\t\t\t\t{\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\t\t\tif (vectorReq.ok) {\n\t\t\t\tresData.vectorized = true;\n\t\t\t\treturn resData;\n\t\t\t} else {\n\t\t\t\tconst errorData = await vectorReq.text();\n\t\t\t\tthrow new NetworkError(\n\t\t\t\t\t`HTTP error during vectorization: ${errorData}`,\n\t\t\t\t\tvectorReq.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing base64: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while trying to upload base64\",\n\t\t);\n\t}\n};\n","import type { PinataConfig, SignedUploadUrlOptions } from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const createSignedUploadURL = async (\n\tconfig: PinataConfig | undefined,\n\toptions: SignedUploadUrlOptions,\n\tnetwork: \"public\" | \"private\",\n): Promise<string> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\ttype PayloadData = {\n\t\tdate: number;\n\t\texpires: number;\n\t\tgroup_id?: string;\n\t\tfilename?: string;\n\t\tkeyvalues?: Record<string, string>;\n\t\tnetwork?: \"public\" | \"private\";\n\t\tmax_file_size?: number;\n\t\tallow_mime_types?: string[];\n\t\tstreamable?: boolean;\n\t};\n\n\tconst date = options?.date || Math.floor(new Date().getTime() / 1000);\n\n\tconst payload: PayloadData = {\n\t\tdate: date,\n\t\texpires: options.expires,\n\t};\n\n\tif (options.groupId) {\n\t\tpayload.group_id = options.groupId;\n\t}\n\n\tif (options.name) {\n\t\tpayload.filename = options.name;\n\t}\n\n\tif (options.keyvalues) {\n\t\tpayload.keyvalues = options.keyvalues;\n\t}\n\n\tif (network) {\n\t\tpayload.network = network;\n\t}\n\n\tif (options.streamable) {\n\t\tpayload.streamable = options.streamable;\n\t}\n\n\tif (options.maxFileSize) {\n\t\tpayload.max_file_size = options.maxFileSize;\n\t}\n\n\tif (options.mimeTypes) {\n\t\tpayload.allow_mime_types = options.mimeTypes;\n\t}\n\n\tlet endpoint: string = \"https://uploads.pinata.cloud/v3\";\n\n\tif (config.uploadUrl) {\n\t\tendpoint = config.uploadUrl;\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\tSource: \"sdk/createSignURL\",\n\t\t};\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/files/sign`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: headers,\n\t\t\tbody: JSON.stringify(payload),\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication Failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\treturn res.data;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(\n\t\t\t\t`Error processing createSignedURL: ${error.message}`,\n\t\t\t);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while getting signed url\");\n\t}\n};\n","import type { PinataConfig, UploadResponse, UploadOptions } from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\nimport { getFileIdFromUrl } from \"../../../utils/resumable\";\n\nexport const uploadFile = async (\n\tconfig: PinataConfig | undefined,\n\tfile: File,\n\tnetwork: \"public\" | \"private\",\n\toptions?: UploadOptions,\n) => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst jwt: string | undefined = options?.keys || config.pinataJwt;\n\n\tlet endpoint: string = \"https://uploads.pinata.cloud/v3\";\n\n\tif (config.uploadUrl) {\n\t\tendpoint = config.uploadUrl;\n\t}\n\n\tif (file.size > 94371840) {\n\t\tlet headers: Record<string, string>;\n\n\t\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\t\theaders = {\n\t\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t\t...config.customHeaders,\n\t\t\t};\n\t\t} else {\n\t\t\theaders = {\n\t\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t\tSource: \"sdk/file\",\n\t\t\t};\n\t\t}\n\n\t\tconst name = options?.metadata?.name || file.name || \"File from SDK\";\n\n\t\tlet metadata: string = `filename ${btoa(name)},filetype ${btoa(file.type)},network ${btoa(network)}`;\n\n\t\tif (options?.groupId) {\n\t\t\tmetadata + `,group_id ${btoa(options.groupId)}`;\n\t\t}\n\n\t\tif (options?.metadata?.keyvalues) {\n\t\t\tmetadata +\n\t\t\t\t`,keyvalues ${btoa(JSON.stringify(options.metadata.keyvalues))}`;\n\t\t}\n\n\t\tif (options?.streamable) {\n\t\t\tmetadata + `,keyvalues ${btoa(\"true\")}`;\n\t\t}\n\n\t\tlet updatedEndpoint: string = `${endpoint}/files`;\n\n\t\tif (options?.url) {\n\t\t\tupdatedEndpoint = options.url;\n\t\t}\n\n\t\tconst urlReq = await fetch(updatedEndpoint, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: {\n\t\t\t\t\"Upload-Length\": `${file.size}`,\n\t\t\t\t\"Upload-Metadata\": metadata,\n\t\t\t\t...headers,\n\t\t\t},\n\t\t});\n\t\tconst url = urlReq.headers.get(\"Location\");\n\t\tif (!url) {\n\t\t\tconst errorData = await urlReq.text();\n\t\t\tthrow new NetworkError(\"Upload URL not provided\", urlReq.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: urlReq.url,\n\t\t\t\t\trequestHeaders: urlReq.headers,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst chunkSize = 50 * 1024 * 1024; // 50MB in bytes\n\t\tconst totalChunks = Math.ceil(file.size / chunkSize);\n\t\tlet offset = 0;\n\t\tlet uploadReq: any;\n\n\t\tfor (let i = 0; i < totalChunks; i++) {\n\t\t\tconst chunk = file.slice(offset, offset + chunkSize);\n\t\t\tuploadReq = await fetch(url as string, {\n\t\t\t\tmethod: \"PATCH\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": \"application/offset+octet-stream\",\n\t\t\t\t\t\"Upload-Offset\": offset.toString(),\n\t\t\t\t\t...headers,\n\t\t\t\t},\n\t\t\t\tbody: chunk,\n\t\t\t});\n\n\t\t\tif (!uploadReq.ok) {\n\t\t\t\tconst errorData = await uploadReq.text();\n\t\t\t\tthrow new NetworkError(\n\t\t\t\t\t`HTTP error during chunk upload: ${errorData}`,\n\t\t\t\t\tuploadReq.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: uploadReq.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toffset += chunk.size;\n\t\t}\n\n\t\tif (uploadReq.status === 204) {\n\t\t\tconst fileId = getFileIdFromUrl(url);\n\t\t\tlet dataEndpoint: string;\n\t\t\tif (config.endpointUrl) {\n\t\t\t\tdataEndpoint = config.endpointUrl;\n\t\t\t} else {\n\t\t\t\tdataEndpoint = \"https://api.pinata.cloud/v3\";\n\t\t\t}\n\t\t\tconst fileInfoReq = await fetch(\n\t\t\t\t`${dataEndpoint}/files/${network}/${fileId}`,\n\t\t\t\t{\n\t\t\t\t\tmethod: \"GET\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\t\t\tconst fileInfo = await fileInfoReq.json();\n\t\t\tconst data: UploadResponse = fileInfo.data;\n\t\t\tif (options?.vectorize) {\n\t\t\t\tconst vectorReq = await fetch(\n\t\t\t\t\t`${endpoint}/vectorize/files/${data.id}`,\n\t\t\t\t\t{\n\t\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\tif (vectorReq.ok) {\n\t\t\t\t\tdata.vectorized = true;\n\t\t\t\t\treturn data;\n\t\t\t\t} else {\n\t\t\t\t\tconst errorData = await vectorReq.text();\n\t\t\t\t\tthrow new NetworkError(\n\t\t\t\t\t\t`HTTP error during vectorization: ${errorData}`,\n\t\t\t\t\t\tvectorReq.status,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\trequestUrl: vectorReq.url,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn data;\n\t\t}\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\tSource: \"sdk/file\",\n\t\t};\n\t}\n\n\tconst data = new FormData();\n\tdata.append(\"file\", file, file.name);\n\n\tdata.append(\"network\", network);\n\n\tdata.append(\"name\", options?.metadata?.name || file.name || \"File from SDK\");\n\n\tif (options?.groupId) {\n\t\tdata.append(\"group_id\", options.groupId);\n\t}\n\n\tif (options?.metadata?.keyvalues) {\n\t\tdata.append(\"keyvalues\", JSON.stringify(options.metadata.keyvalues));\n\t}\n\n\tif (options?.streamable) {\n\t\tdata.append(\"streamable\", \"true\");\n\t}\n\n\tif (options?.url) {\n\t\ttry {\n\t\t\tconst request = await fetch(options.url, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: headers,\n\t\t\t\tbody: data,\n\t\t\t});\n\n\t\t\tif (!request.ok) {\n\t\t\t\tconst errorData = await request.text();\n\t\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\t\trequest.status,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\t\terror: errorData,\n\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst res = await request.json();\n\t\t\tconst resData: UploadResponse = res.data;\n\t\t\treturn resData;\n\t\t} catch (error) {\n\t\t\tif (error instanceof PinataError) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tif (error instanceof Error) {\n\t\t\t\tthrow new PinataError(`Error processing base64: ${error.message}`);\n\t\t\t}\n\t\t\tthrow new PinataError(\n\t\t\t\t\"An unknown error occurred while trying to upload base64\",\n\t\t\t);\n\t\t}\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/files`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: headers,\n\t\t\tbody: data,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\tconst res = await request.json();\n\t\tconst resData: UploadResponse = res.data;\n\t\tif (options?.vectorize) {\n\t\t\tconst vectorReq = await fetch(\n\t\t\t\t`${endpoint}/vectorize/files/${resData.id}`,\n\t\t\t\t{\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\t\t\tif (vectorReq.ok) {\n\t\t\t\tresData.vectorized = true;\n\t\t\t\treturn resData;\n\t\t\t} else {\n\t\t\t\tconst errorData = await vectorReq.text();\n\t\t\t\tthrow new NetworkError(\n\t\t\t\t\t`HTTP error during vectorization: ${errorData}`,\n\t\t\t\t\tvectorReq.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error uploading file: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while uploading the file\");\n\t}\n};\n","import type { PinataConfig, UploadResponse, UploadOptions } from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const uploadFileArray = async (\n\tconfig: PinataConfig | undefined,\n\tfiles: File[],\n\tnetwork: \"public\" | \"private\",\n\toptions?: UploadOptions,\n) => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst jwt: string | undefined = options?.keys || config?.pinataJwt;\n\n\tconst folder = options?.metadata?.name || \"folder_from_sdk\";\n\n\tconst data = new FormData();\n\n\tfor (const file of Array.from(files)) {\n\t\tconst path = file.webkitRelativePath || `${folder}/${file.name}`;\n\t\tdata.append(\"file\", file, path);\n\t}\n\n\t// Reserved for later release\n\t// data.append(\"name\", folder);\n\n\t// data.append(\"network\", network);\n\n\t// if (options?.groupId) {\n\t// data.append(\"group_id\", options.groupId);\n\t// }\n\n\t// if (options?.metadata?.keyvalues) {\n\t// data.append(\"keyvalues\", JSON.stringify(options.metadata.keyvalues));\n\t// }\n\n\t// Legacy\n\tdata.append(\n\t\t\"pinataMetadata\",\n\t\tJSON.stringify({\n\t\t\tname: folder,\n\t\t\tkeyvalues: options?.metadata?.keyvalues,\n\t\t}),\n\t);\n\n\tdata.append(\n\t\t\"pinataOptions\",\n\t\tJSON.stringify({\n\t\t\tgroupId: options?.groupId,\n\t\t\tcidVersion: 1,\n\t\t}),\n\t);\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\tSource: \"sdk/fileArray\",\n\t\t};\n\t}\n\t// Reserved for later release\n\t//let endpoint: string = \"https://uploads.pinata.cloud/v3\";\n\tlet endpoint: string = \"https://api.pinata.cloud/pinning/pinFileToIPFS\";\n\n\tif (config.legacyUploadUrl) {\n\t\tendpoint = config.legacyUploadUrl;\n\t}\n\n\ttry {\n\t\t// Reserved for later release\n\t\t// const request = await fetch(`${endpoint}/files`, {\n\t\t// \tmethod: \"POST\",\n\t\t// \theaders: headers,\n\t\t// \tbody: data,\n\t\t// });\n\t\tconst request = await fetch(`${endpoint}`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: headers,\n\t\t\tbody: data,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\n\t\tconst resData: UploadResponse = {\n\t\t\tid: res.ID,\n\t\t\tname: res.Name,\n\t\t\tcid: res.IpfsHash,\n\t\t\tsize: res.PinSize,\n\t\t\tcreated_at: res.Timestamp,\n\t\t\tnumber_of_files: res.NumberOfFiles,\n\t\t\tmime_type: res.MimeType,\n\t\t\tgroup_id: res.GroupId,\n\t\t\tkeyvalues: res.Keyvalues,\n\t\t\tvectorized: false,\n\t\t\tnetwork: \"public\",\n\t\t};\n\n\t\t// if (options?.vectorize) {\n\t\t// const vectorReq = await fetch(\n\t\t// `${endpoint}/vectorize/files/${resData.id}`,\n\t\t// {\n\t\t// method: \"POST\",\n\t\t// headers: {\n\t\t// Authorization: `Bearer ${jwt}`,\n\t\t// },\n\t\t// },\n\t\t// );\n\t\t// if (vectorReq.ok) {\n\t\t// resData.vectorized = true;\n\t\t// return resData;\n\t\t// } else {\n\t\t// const errorData = await vectorReq.text();\n\t\t// throw new NetworkError(\n\t\t// `HTTP error during vectorization: ${errorData}`,\n\t\t// vectorReq.status,\n\t\t// {\n\t\t// error: errorData,\n\t\t// code: \"HTTP_ERROR\",\n\t\t// metadata: {\n\t\t// requestUrl: request.url,\n\t\t// },\n\t\t// },\n\t\t// );\n\t\t// }\n\t\t// }\n\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing fileArray: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while uploading an array of files\",\n\t\t);\n\t}\n};\n","import type {\n\tPinataConfig,\n\tUploadResponse,\n\tUploadOptions,\n\tJsonBody,\n} from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const uploadJson = async <T extends JsonBody>(\n\tconfig: PinataConfig | undefined,\n\tjsonData: T,\n\tnetwork: \"public\" | \"private\",\n\toptions?: UploadOptions,\n) => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst jwt: string | undefined = options?.keys || config?.pinataJwt;\n\n\tconst json = JSON.stringify(jsonData);\n\tconst blob = new Blob([json]);\n\tconst file = new File([blob], \"data.json\", { type: \"application/json\" });\n\n\tconst data = new FormData();\n\tdata.append(\"file\", file, file.name);\n\tdata.append(\"network\", network);\n\tdata.append(\"name\", options?.metadata?.name || file.name || \"File from SDK\");\n\tif (options?.groupId) {\n\t\tdata.append(\"group_id\", options.groupId);\n\t}\n\tif (options?.metadata?.keyvalues) {\n\t\tdata.append(\"keyvalues\", JSON.stringify(options.metadata.keyvalues));\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\tSource: \"sdk/json\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://uploads.pinata.cloud/v3\";\n\n\tif (config.uploadUrl) {\n\t\tendpoint = config.uploadUrl;\n\t}\n\n\tif (options?.url) {\n\t\ttry {\n\t\t\tconst request = await fetch(options.url, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tbody: data,\n\t\t\t});\n\n\t\t\tif (!request.ok) {\n\t\t\t\tconst errorData = await request.text();\n\t\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\t\trequest.status,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\t\terror: errorData,\n\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst res = await request.json();\n\t\t\tconst resData: UploadResponse = res.data;\n\t\t\treturn resData;\n\t\t} catch (error) {\n\t\t\tif (error instanceof PinataError) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tif (error instanceof Error) {\n\t\t\t\tthrow new PinataError(`Error processing base64: ${error.message}`);\n\t\t\t}\n\t\t\tthrow new PinataError(\n\t\t\t\t\"An unknown error occurred while trying to upload base64\",\n\t\t\t);\n\t\t}\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/files`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: headers,\n\t\t\tbody: data,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: UploadResponse = res.data;\n\t\tif (options?.vectorize) {\n\t\t\tconst vectorReq = await fetch(\n\t\t\t\t`${endpoint}/vectorize/files/${resData.id}`,\n\t\t\t\t{\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\t\t\tif (vectorReq.ok) {\n\t\t\t\tresData.vectorized = true;\n\t\t\t\treturn resData;\n\t\t\t} else {\n\t\t\t\tconst errorData = await vectorReq.text();\n\t\t\t\tthrow new NetworkError(\n\t\t\t\t\t`HTTP error during vectorization: ${errorData}`,\n\t\t\t\t\tvectorReq.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing json: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while uploading json\");\n\t}\n};\n","import type { PinataConfig, UploadResponse, UploadOptions } from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const uploadUrl = async (\n\tconfig: PinataConfig | undefined,\n\turl: string,\n\tnetwork: \"public\" | \"private\",\n\toptions?: UploadOptions,\n) => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst jwt: string | undefined = options?.keys || config?.pinataJwt;\n\tconst data = new FormData();\n\n\tconst stream = await fetch(url);\n\n\tif (!stream.ok) {\n\t\tconst errorData = await stream.text();\n\t\tthrow new NetworkError(`HTTP error: ${errorData}`, stream.status, {\n\t\t\terror: errorData,\n\t\t\tcode: \"HTTP_ERROR\",\n\t\t\tmetadata: {\n\t\t\t\trequestUrl: stream.url,\n\t\t\t},\n\t\t});\n\t}\n\n\tconst arrayBuffer = await stream.arrayBuffer();\n\n\tconst blob = new Blob([arrayBuffer]);\n\n\tconst name = options?.metadata?.name ?? \"url_upload\";\n\n\tconst file = new File([blob], name);\n\n\tdata.append(\"file\", file, name);\n\tdata.append(\"network\", network);\n\tdata.append(\"name\", name);\n\tif (options?.groupId) {\n\t\tdata.append(\"group_id\", options.groupId);\n\t}\n\n\tif (options?.metadata?.keyvalues) {\n\t\tdata.append(\"keyvalues\", JSON.stringify(options.metadata.keyvalues));\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\tSource: \"sdk/url\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://uploads.pinata.cloud/v3\";\n\n\tif (config.uploadUrl) {\n\t\tendpoint = config.uploadUrl;\n\t}\n\n\tif (options?.url) {\n\t\ttry {\n\t\t\tconst request = await fetch(options.url, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tbody: data,\n\t\t\t});\n\n\t\t\tif (!request.ok) {\n\t\t\t\tconst errorData = await request.text();\n\t\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\t\trequest.status,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\t\terror: errorData,\n\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst res = await request.json();\n\t\t\tconst resData: UploadResponse = res.data;\n\t\t\treturn resData;\n\t\t} catch (error) {\n\t\t\tif (error instanceof PinataError) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tif (error instanceof Error) {\n\t\t\t\tthrow new PinataError(`Error processing base64: ${error.message}`);\n\t\t\t}\n\t\t\tthrow new PinataError(\n\t\t\t\t\"An unknown error occurred while trying to upload base64\",\n\t\t\t);\n\t\t}\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/files`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: headers,\n\t\t\tbody: data,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: UploadResponse = res.data;\n\t\tif (options?.vectorize) {\n\t\t\tconst vectorReq = await fetch(\n\t\t\t\t`${endpoint}/vectorize/files/${resData.id}`,\n\t\t\t\t{\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\t\t\tif (vectorReq.ok) {\n\t\t\t\tresData.vectorized = true;\n\t\t\t\treturn resData;\n\t\t\t} else {\n\t\t\t\tconst errorData = await vectorReq.text();\n\t\t\t\tthrow new NetworkError(\n\t\t\t\t\t`HTTP error during vectorization: ${errorData}`,\n\t\t\t\t\tvectorReq.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing url: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while uploading by url\");\n\t}\n};\n","import type {\n\tPinataConfig,\n\tPinByCIDResponse,\n\tUploadCIDOptions,\n} from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const uploadCid = async (\n\tconfig: PinataConfig | undefined,\n\tcid: string,\n\toptions?: UploadCIDOptions,\n) => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst jwt: string | undefined = options?.keys || config?.pinataJwt;\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/cid\",\n\t\t};\n\t}\n\n\tconst requestBody: Record<string, any> = {\n\t\tcid: cid,\n\t\tname: options?.metadata ? options?.metadata?.name : cid,\n\t\tkeyvalues: options?.metadata?.keyvalues,\n\t\tgroup_id: options?.groupId,\n\t\thost_nodes: options?.peerAddresses,\n\t};\n\n\tconst data = JSON.stringify(requestBody);\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/files/public/pin_by_cid`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: headers,\n\t\t\tbody: data,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: PinByCIDResponse = res.data;\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing cid: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while pinning by CID\");\n\t}\n};\n","import type { PinataConfig } from \"../../types/\";\nimport {\n\tAnalyticsRequests,\n\tAnalyticsBandwidth,\n\tTimeIntervalAnalyticsBuilder,\n} from \"./\";\nimport { formatConfig } from \"../../../utils/format-config\";\n\nexport class Analytics {\n\tconfig: PinataConfig | undefined;\n\trequests: AnalyticsRequests;\n\tbandwidth: AnalyticsBandwidth;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t\tthis.requests = new AnalyticsRequests(this.config);\n\t\tthis.bandwidth = new AnalyticsBandwidth(this.config);\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t\tthis.requests.updateConfig(newConfig);\n\t\tthis.bandwidth.updateConfig(newConfig);\n\t}\n\n\tsummary(options: {\n\t\tdomain: string;\n\t\tstart: string;\n\t\tend: string;\n\t\tinterval: \"day\" | \"week\";\n\t}): TimeIntervalAnalyticsBuilder {\n\t\treturn new TimeIntervalAnalyticsBuilder(\n\t\t\tthis.config,\n\t\t\toptions.domain,\n\t\t\toptions.start,\n\t\t\toptions.end,\n\t\t\toptions.interval,\n\t\t);\n\t}\n}\n","export const calculateDates = (\n\tdays: number,\n): { start: string; end: string } => {\n\tconst end = new Date();\n\tconst start = new Date();\n\tstart.setDate(start.getDate() - days);\n\n\t// Format dates to ISO string and trim time portion\n\treturn {\n\t\tstart: start.toISOString().split(\"T\")[0],\n\t\tend: end.toISOString().split(\"T\")[0],\n\t};\n};\n","import {\n\tPinataConfig,\n\tTopAnalyticsQuery,\n\tTopAnalyticsResponse,\n} from \"../../types\";\nimport { analyticsTopUsage } from \"../../functions\";\nimport { calculateDates } from \"./utils\";\n\nexport class AnalyticsFilter {\n\tprotected config: PinataConfig | undefined;\n\tprotected query: TopAnalyticsQuery;\n\n\tconstructor(\n\t\tconfig: PinataConfig | undefined,\n\t\tdomain: string,\n\t\tstart: string,\n\t\tend: string,\n\t) {\n\t\tthis.config = config;\n\t\tthis.query = {\n\t\t\tgateway_domain: domain,\n\t\t\tstart_date: start,\n\t\t\tend_date: end,\n\t\t\tsort_by: \"requests\", // Will be overridden in child classes\n\t\t\tattribute: \"cid\",\n\t\t};\n\t}\n\n\tcid(cid?: string): this {\n\t\tthis.query.attribute = \"cid\";\n\t\tif (cid) {\n\t\t\tthis.query.cid = cid;\n\t\t}\n\t\treturn this;\n\t}\n\n\tfileName(fileName?: string): this {\n\t\tthis.query.attribute = \"file_name\";\n\t\tif (fileName) {\n\t\t\tthis.query.file_name = fileName;\n\t\t}\n\t\treturn this;\n\t}\n\n\tuserAgent(userAgent?: string): this {\n\t\tthis.query.attribute = \"user_agent\";\n\t\tif (userAgent) {\n\t\t\tthis.query.user_agent = userAgent;\n\t\t}\n\t\treturn this;\n\t}\n\n\tcountry(country?: string): this {\n\t\tthis.query.attribute = \"country\";\n\t\tif (country) {\n\t\t\tthis.query.country = country;\n\t\t}\n\t\treturn this;\n\t}\n\n\tregion(region?: string): this {\n\t\tthis.query.attribute = \"region\";\n\t\tif (region) {\n\t\t\tthis.query.region = region;\n\t\t}\n\t\treturn this;\n\t}\n\n\treferer(referer?: string): this {\n\t\tthis.query.attribute = \"referer\";\n\t\tif (referer) {\n\t\t\tthis.query.referer = referer;\n\t\t}\n\t\treturn this;\n\t}\n\n\tlimit(limit: number): this {\n\t\tthis.query.limit = limit;\n\t\treturn this;\n\t}\n\n\tsort(order: \"asc\" | \"desc\"): this {\n\t\tthis.query.sort_order = order;\n\t\treturn this;\n\t}\n\n\tdays(numberOfDays: number): this {\n\t\tconst { start, end } = calculateDates(numberOfDays);\n\t\tthis.query.start_date = start;\n\t\tthis.query.end_date = end;\n\t\treturn this;\n\t}\n\n\tthen(\n\t\tonfulfilled?: ((value: TopAnalyticsResponse) => any) | null,\n\t): Promise<any> {\n\t\treturn analyticsTopUsage(this.config, this.query).then(onfulfilled);\n\t}\n}\n","import type { PinataConfig } from \"../../types\";\nimport { AnalyticsFilter } from \"./AnalyticsFilter\";\n\nexport class AnalyticsBandwidth extends AnalyticsFilter {\n\tconstructor(config?: PinataConfig) {\n\t\tsuper(config, \"\", \"\", \"\"); // These will need to be set through methods\n\t\tthis.query.sort_by = \"bandwidth\";\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t}\n\n\tcustomDates(start?: string, end?: string): this {\n\t\tif (start) this.query.start_date = start;\n\t\tif (end) this.query.end_date = end;\n\t\treturn this;\n\t}\n\n\tfrom(domain: string): this {\n\t\tthis.query.gateway_domain = domain;\n\t\treturn this;\n\t}\n}\n","import type { AnalyticsQuery, PinataConfig } from \"../../types\";\n\nexport class AnalyticsBuilder<T extends AnalyticsQuery, R> {\n\tprotected config: PinataConfig | undefined;\n\tprotected query: T;\n\tprivate requestCount = 0;\n\tprivate lastRequestTime = 0;\n\tprivate readonly MAX_REQUESTS_PER_MINUTE = 30;\n\tprivate readonly MINUTE_IN_MS = 60000;\n\n\tconstructor(config: PinataConfig | undefined, query: T) {\n\t\tthis.config = config;\n\t\tthis.query = query;\n\t}\n\n\tcid(cid: string): this {\n\t\tthis.query.cid = cid;\n\t\treturn this;\n\t}\n\n\tfileName(fileName: string): this {\n\t\tthis.query.file_name = fileName;\n\t\treturn this;\n\t}\n\n\tuserAgent(userAgent: string): this {\n\t\tthis.query.user_agent = userAgent;\n\t\treturn this;\n\t}\n\n\tcountry(country: string): this {\n\t\tthis.query.country = country;\n\t\treturn this;\n\t}\n\n\tregion(region: string): this {\n\t\tthis.query.region = region;\n\t\treturn this;\n\t}\n\n\treferer(referer: string): this {\n\t\tthis.query.referer = referer;\n\t\treturn this;\n\t}\n\n\tlimit(limit: number): this {\n\t\tthis.query.limit = limit;\n\t\treturn this;\n\t}\n\n\tsort(order: \"asc\" | \"desc\"): this {\n\t\tthis.query.sort_order = order;\n\t\treturn this;\n\t}\n\n\t// private async rateLimit(): Promise<void> {\n\t// \tthis.requestCount++;\n\t// \tconst now = Date.now();\n\t// \tif (this.requestCount >= this.MAX_REQUESTS_PER_MINUTE) {\n\t// \t\tconst timePassedSinceLastRequest = now - this.lastRequestTime;\n\t// \t\tif (timePassedSinceLastRequest < this.MINUTE_IN_MS) {\n\t// \t\t\tconst delayTime = this.MINUTE_IN_MS - timePassedSinceLastRequest;\n\t// \t\t\tawait new Promise((resolve) => setTimeout(resolve, delayTime));\n\t// \t\t}\n\t// \t\tthis.requestCount = 0;\n\t// \t}\n\t// \tthis.lastRequestTime = Date.now();\n\t// }\n\n\tprotected async getAnalytics(): Promise<R> {\n\t\t//await this.rateLimit();\n\t\tthrow new Error(\"getAnalytics method must be implemented in derived class\");\n\t}\n\n\tthen(onfulfilled?: ((value: R) => any) | null): Promise<any> {\n\t\treturn this.getAnalytics().then(onfulfilled);\n\t}\n}\n","import { PinataConfig } from \"../../types\";\nimport { AnalyticsFilter } from \"./AnalyticsFilter\";\n\nexport class AnalyticsRequests extends AnalyticsFilter {\n\tconstructor(config?: PinataConfig) {\n\t\tsuper(config, \"\", \"\", \"\"); // These will need to be set through methods\n\t\tthis.query.sort_by = \"requests\";\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t}\n\n\tcustomDates(start?: string, end?: string): this {\n\t\tif (start) this.query.start_date = start;\n\t\tif (end) this.query.end_date = end;\n\t\treturn this;\n\t}\n\n\tfrom(domain: string): this {\n\t\tthis.query.gateway_domain = domain;\n\t\treturn this;\n\t}\n}\n","import { AnalyticsBuilder } from \"./AnalyticsBuilder\";\nimport {\n\tTimeIntervalAnalyticsQuery,\n\tTimeIntervalAnalyticsResponse,\n\tPinataConfig,\n} from \"../../types\";\nimport { analyticsDateInterval } from \"../../functions\";\n\nexport class TimeIntervalAnalyticsBuilder extends AnalyticsBuilder<\n\tTimeIntervalAnalyticsQuery,\n\tTimeIntervalAnalyticsResponse\n> {\n\tconstructor(\n\t\tconfig: PinataConfig | undefined,\n\t\tdomain: string,\n\t\tstart: string,\n\t\tend: string,\n\t\tdateInterval: \"day\" | \"week\",\n\t) {\n\t\tsuper(config, {\n\t\t\tgateway_domain: domain,\n\t\t\tstart_date: start,\n\t\t\tend_date: end,\n\t\t\tdate_interval: dateInterval,\n\t\t});\n\t}\n\n\tsortBy(sortBy: \"requests\" | \"bandwidth\"): this {\n\t\tthis.query.sort_by = sortBy;\n\t\treturn this;\n\t}\n\n\tprotected async getAnalytics(): Promise<TimeIntervalAnalyticsResponse> {\n\t\treturn analyticsDateInterval(this.config, this.query);\n\t}\n\n\tasync all(): Promise<TimeIntervalAnalyticsResponse> {\n\t\treturn this.getAnalytics();\n\t}\n}\n","import type {\n\tPinataConfig,\n\tGroupQueryOptions,\n\tGroupListResponse,\n\tGroupResponseItem,\n} from \"../../types\";\nimport { listGroups } from \"../../functions\";\n\nexport class FilterGroups {\n\tprivate config: PinataConfig | undefined;\n\tprivate query: GroupQueryOptions = {};\n\tprivate privacy: \"private\" | \"public\";\n\t// rate limit vars\n\t// private requestCount = 0;\n\t// private lastRequestTime = 0;\n\t// private readonly MAX_REQUESTS_PER_MINUTE = 30;\n\t// private readonly MINUTE_IN_MS = 60000;\n\tprivate nextPageToken: string | undefined;\n\n\tconstructor(config: PinataConfig | undefined, privacy: \"private\" | \"public\") {\n\t\tthis.config = config;\n\t\tthis.privacy = privacy;\n\t}\n\n\tname(name: string): FilterGroups {\n\t\tthis.query.name = name;\n\t\treturn this;\n\t}\n\n\tlimit(limit: number): FilterGroups {\n\t\tthis.query.limit = limit;\n\t\treturn this;\n\t}\n\n\tisPublic(isPublic: boolean): FilterGroups {\n\t\tthis.query.isPublic = isPublic;\n\t\treturn this;\n\t}\n\n\tpageToken(pageToken: string): FilterGroups {\n\t\tthis.query.pageToken = pageToken;\n\t\treturn this;\n\t}\n\n\tthen(\n\t\tonfulfilled?: ((value: GroupListResponse) => any) | null,\n\t): Promise<GroupListResponse> {\n\t\treturn this.fetchPage()\n\t\t\t.then((response) => {\n\t\t\t\tthis.nextPageToken = response.next_page_token;\n\t\t\t\treturn response;\n\t\t\t})\n\t\t\t.then(onfulfilled);\n\t}\n\n\tprivate async fetchPage(): Promise<GroupListResponse> {\n\t\tif (this.nextPageToken) {\n\t\t\tthis.query.pageToken = this.nextPageToken;\n\t\t}\n\t\treturn listGroups(this.config, this.privacy, this.query);\n\t}\n\n\t// rate limit, hopefully temporary?\n\t// private async rateLimit(): Promise<void> {\n\t// \tthis.requestCount++;\n\t// \tconst now = Date.now();\n\t// \tif (this.requestCount >= this.MAX_REQUESTS_PER_MINUTE) {\n\t// \t\tconst timePassedSinceLastRequest = now - this.lastRequestTime;\n\t// \t\tif (timePassedSinceLastRequest < this.MINUTE_IN_MS) {\n\t// \t\t\tconst delayTime = this.MINUTE_IN_MS - timePassedSinceLastRequest;\n\t// \t\t\tawait new Promise((resolve) => setTimeout(resolve, delayTime));\n\t// \t\t}\n\t// \t\tthis.requestCount = 0;\n\t// \t}\n\t// \tthis.lastRequestTime = Date.now();\n\t// }\n\n\tasync *[Symbol.asyncIterator](): AsyncGenerator<\n\t\tGroupResponseItem,\n\t\tvoid,\n\t\tunknown\n\t> {\n\t\twhile (true) {\n\t\t\tconst response = await this.fetchPage();\n\t\t\tfor (const item of response.groups) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\tif (!response.next_page_token) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis.nextPageToken = response.next_page_token;\n\t\t}\n\t}\n\n\tasync all(): Promise<GroupResponseItem[]> {\n\t\tconst allItems: GroupResponseItem[] = [];\n\t\tfor await (const item of this) {\n\t\t\tallItems.push(item);\n\t\t}\n\t\treturn allItems;\n\t}\n}\n","import { formatConfig } from \"../../../utils/format-config\";\nimport {\n\taddToGroup,\n\tcreateGroup,\n\tdeleteGroup,\n\tgetGroup,\n\tremoveFromGroup,\n\tupdateGroup,\n} from \"../../functions\";\nimport {\n\tGetGroupOptions,\n\tGroupCIDOptions,\n\tGroupOptions,\n\tGroupResponseItem,\n\tPinataConfig,\n\tUpdateGroupFilesResponse,\n\tUpdateGroupOptions,\n} from \"../../types\";\nimport { FilterGroups } from \"./GroupsFilter\";\n\nexport class PublicGroups {\n\tconfig: PinataConfig | undefined;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t}\n\n\tcreate(options: GroupOptions): Promise<GroupResponseItem> {\n\t\treturn createGroup(this.config, options, \"public\");\n\t}\n\n\tlist(): FilterGroups {\n\t\treturn new FilterGroups(this.config, \"public\");\n\t}\n\n\tget(options: GetGroupOptions): Promise<GroupResponseItem> {\n\t\treturn getGroup(this.config, options, \"public\");\n\t}\n\n\taddFiles(options: GroupCIDOptions): Promise<UpdateGroupFilesResponse[]> {\n\t\treturn addToGroup(this.config, options, \"public\");\n\t}\n\n\tremoveFiles(options: GroupCIDOptions): Promise<UpdateGroupFilesResponse[]> {\n\t\treturn removeFromGroup(this.config, options, \"public\");\n\t}\n\n\tupdate(options: UpdateGroupOptions): Promise<GroupResponseItem> {\n\t\treturn updateGroup(this.config, options, \"public\");\n\t}\n\n\tdelete(options: GetGroupOptions): Promise<string> {\n\t\treturn deleteGroup(this.config, options, \"public\");\n\t}\n}\n","import { formatConfig } from \"../../../utils/format-config\";\nimport {\n\taddToGroup,\n\tcreateGroup,\n\tdeleteGroup,\n\tgetGroup,\n\tremoveFromGroup,\n\tupdateGroup,\n} from \"../../functions\";\nimport {\n\tGetGroupOptions,\n\tGroupCIDOptions,\n\tGroupOptions,\n\tGroupResponseItem,\n\tPinataConfig,\n\tUpdateGroupFilesResponse,\n\tUpdateGroupOptions,\n} from \"../../types\";\nimport { FilterGroups } from \"./GroupsFilter\";\n\nexport class PrivateGroups {\n\tconfig: PinataConfig | undefined;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t}\n\n\tcreate(options: GroupOptions): Promise<GroupResponseItem> {\n\t\treturn createGroup(this.config, options, \"private\");\n\t}\n\n\tlist(): FilterGroups {\n\t\treturn new FilterGroups(this.config, \"private\");\n\t}\n\n\tget(options: GetGroupOptions): Promise<GroupResponseItem> {\n\t\treturn getGroup(this.config, options, \"private\");\n\t}\n\n\taddFiles(options: GroupCIDOptions): Promise<UpdateGroupFilesResponse[]> {\n\t\treturn addToGroup(this.config, options, \"private\");\n\t}\n\n\tremoveFiles(options: GroupCIDOptions): Promise<UpdateGroupFilesResponse[]> {\n\t\treturn removeFromGroup(this.config, options, \"private\");\n\t}\n\n\tupdate(options: UpdateGroupOptions): Promise<GroupResponseItem> {\n\t\treturn updateGroup(this.config, options, \"private\");\n\t}\n\n\tdelete(options: GetGroupOptions): Promise<string> {\n\t\treturn deleteGroup(this.config, options, \"private\");\n\t}\n}\n","import type { PinataConfig } from \"../../types\";\nimport { formatConfig } from \"../../../utils/format-config\";\nimport { PublicGroups } from \"./PublicGroups\";\nimport { PrivateGroups } from \"./PrivateGroups\";\n\nexport class Groups {\n\tconfig: PinataConfig | undefined;\n\tpublic: PublicGroups;\n\tprivate: PrivateGroups;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t\tthis.public = new PublicGroups(config);\n\t\tthis.private = new PrivateGroups(config);\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t}\n}\n","import { FilterKeys } from \"./\";\nimport type {\n\tPinataConfig,\n\tKeyOptions,\n\tKeyResponse,\n\tRevokeKeyResponse,\n} from \"../../types\";\nimport { formatConfig } from \"../../../utils/format-config\";\nimport { createKey, revokeKeys } from \"../../functions\";\n\nexport class Keys {\n\tconfig: PinataConfig | undefined;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t}\n\n\tcreate(options: KeyOptions): Promise<KeyResponse> {\n\t\treturn createKey(this.config, options);\n\t}\n\n\tlist(): FilterKeys {\n\t\treturn new FilterKeys(this.config);\n\t}\n\n\trevoke(keys: string[]): Promise<RevokeKeyResponse[]> {\n\t\treturn revokeKeys(this.config, keys);\n\t}\n}\n","import { listKeys } from \"../../functions\";\nimport type { PinataConfig, KeyListQuery, KeyListItem } from \"../../types\";\n\nexport class FilterKeys {\n\tprivate config: PinataConfig | undefined;\n\tprivate query: KeyListQuery = {};\n\t// rate limit vars\n\t// private requestCount = 0;\n\t// private lastRequestTime = 0;\n\t// private readonly MAX_REQUESTS_PER_MINUTE = 30;\n\t// private readonly MINUTE_IN_MS = 60000;\n\n\tconstructor(config: PinataConfig | undefined) {\n\t\tthis.config = config;\n\t}\n\n\toffset(offset: number): FilterKeys {\n\t\tthis.query.offset = offset;\n\t\treturn this;\n\t}\n\n\trevoked(revoked: boolean): FilterKeys {\n\t\tthis.query.revoked = revoked;\n\t\treturn this;\n\t}\n\n\tlimitedUse(limitedUse: boolean): FilterKeys {\n\t\tthis.query.limitedUse = limitedUse;\n\t\treturn this;\n\t}\n\n\texhausted(exhausted: boolean): FilterKeys {\n\t\tthis.query.exhausted = exhausted;\n\t\treturn this;\n\t}\n\n\tname(name: string): FilterKeys {\n\t\tthis.query.name = name;\n\t\treturn this;\n\t}\n\n\tthen(onfulfilled?: ((value: KeyListItem[]) => any) | null): Promise<any> {\n\t\treturn listKeys(this.config, this.query).then(onfulfilled);\n\t}\n\n\t// private async rateLimit(): Promise<void> {\n\t// \tthis.requestCount++;\n\t// \tconst now = Date.now();\n\t// \tif (this.requestCount >= this.MAX_REQUESTS_PER_MINUTE) {\n\t// \t\tconst timePassedSinceLastRequest = now - this.lastRequestTime;\n\t// \t\tif (timePassedSinceLastRequest < this.MINUTE_IN_MS) {\n\t// \t\t\tconst delayTime = this.MINUTE_IN_MS - timePassedSinceLastRequest;\n\t// \t\t\tawait new Promise((resolve) => setTimeout(resolve, delayTime));\n\t// \t\t}\n\t// \t\tthis.requestCount = 0;\n\t// \t}\n\t// \tthis.lastRequestTime = Date.now();\n\t// }\n\n\tasync *[Symbol.asyncIterator](): AsyncGenerator<KeyListItem, void, unknown> {\n\t\tlet hasMore = true;\n\t\tlet offset = 0;\n\n\t\twhile (hasMore) {\n\t\t\t//await this.rateLimit(); // applying rate limit\n\t\t\tthis.query.offset = offset;\n\n\t\t\tconst items = await listKeys(this.config, this.query);\n\n\t\t\tfor (const item of items) {\n\t\t\t\tyield item;\n\t\t\t}\n\n\t\t\tif (items.length === 0) {\n\t\t\t\thasMore = false;\n\t\t\t} else {\n\t\t\t\toffset += items.length;\n\t\t\t}\n\t\t}\n\t}\n\n\tasync all(): Promise<KeyListItem[]> {\n\t\tconst allItems: KeyListItem[] = [];\n\t\tfor await (const item of this) {\n\t\t\tallItems.push(item);\n\t\t}\n\t\treturn allItems;\n\t}\n}\n","import type { PinataConfig } from \"../../types\";\nimport { PublicGateways, PrivateGateways } from \"./\";\nimport { formatConfig } from \"../../../utils/format-config\";\n\nexport class Gateways {\n\tconfig: PinataConfig | undefined;\n\tpublic: PublicGateways;\n\tprivate: PrivateGateways;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t\tthis.public = new PublicGateways(config);\n\t\tthis.private = new PrivateGateways(config);\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t}\n}\n","import {\n\tPinataConfig,\n\tAccessLinkOptions,\n\tOptimizeImageOptions,\n} from \"../../types\";\nimport { createAccessLink } from \"../../functions/gateway/createAccessLink\";\n\nexport class OptimizeImageCreateAccessLink {\n\tprivate config: PinataConfig | undefined;\n\tprivate urlOpts: AccessLinkOptions;\n\tprivate imgOpts: OptimizeImageOptions = {};\n\n\tconstructor(config: PinataConfig | undefined, urlOpts: AccessLinkOptions) {\n\t\tthis.config = config;\n\t\tthis.urlOpts = urlOpts;\n\t}\n\n\toptimizeImage(options: OptimizeImageOptions): OptimizeImageCreateAccessLink {\n\t\tthis.imgOpts = { ...this.imgOpts, ...options };\n\t\treturn this;\n\t}\n\n\tthen(onfulfilled?: ((value: string) => any) | null): Promise<any> {\n\t\treturn createAccessLink(this.config, this.urlOpts, this.imgOpts).then(\n\t\t\tonfulfilled,\n\t\t);\n\t}\n}\n","import type {\n\tPinataConfig,\n\tOptimizeImageOptions,\n\tGetCIDResponse,\n} from \"../../types\";\nimport { getCid } from \"../../functions\";\n\nexport class OptimizeImageGetCid {\n\tprivate config: PinataConfig | undefined;\n\tprivate cid: string;\n\tprivate gatewayType?: \"ipfs\" | \"files\";\n\tprivate options: OptimizeImageOptions = {};\n\n\tconstructor(\n\t\tconfig: PinataConfig | undefined,\n\t\tcid: string,\n\t\tgatewayType?: \"ipfs\" | \"files\",\n\t) {\n\t\tthis.config = config;\n\t\tthis.cid = cid;\n\t\tthis.gatewayType = gatewayType;\n\t}\n\n\toptimizeImage(options: OptimizeImageOptions): OptimizeImageGetCid {\n\t\tthis.options = { ...this.options, ...options };\n\t\treturn this;\n\t}\n\n\tthen(onfulfilled?: ((value: GetCIDResponse) => any) | null): Promise<any> {\n\t\treturn getCid(this.config, this.cid, this.gatewayType, this.options).then(\n\t\t\tonfulfilled,\n\t\t);\n\t}\n}\n","import type { PinataConfig, AccessLinkOptions } from \"../../types\";\nimport { OptimizeImageGetCid, OptimizeImageCreateAccessLink } from \"./\";\n\nexport class PrivateGateways {\n\tprivate config: PinataConfig | undefined;\n\n\tconstructor(config: PinataConfig | undefined) {\n\t\tthis.config = config;\n\t}\n\n\tget(cid: string): OptimizeImageGetCid {\n\t\treturn new OptimizeImageGetCid(this.config, cid, \"files\");\n\t}\n\n\tcreateAccessLink(options: AccessLinkOptions): OptimizeImageCreateAccessLink {\n\t\treturn new OptimizeImageCreateAccessLink(this.config, options);\n\t}\n}\n","import { convertIPFSUrl } from \"../../functions\";\nimport { PinataConfig } from \"../../types\";\nimport { OptimizeImageGetCid } from \"./\";\n\nexport class PublicGateways {\n\tprivate config: PinataConfig | undefined;\n\n\tconstructor(config: PinataConfig | undefined) {\n\t\tthis.config = config;\n\t}\n\n\tget(cid: string): OptimizeImageGetCid {\n\t\treturn new OptimizeImageGetCid(this.config, cid, \"ipfs\");\n\t}\n\n\tconvert(url: string, gatewayPrefix?: string): Promise<string> {\n\t\treturn convertIPFSUrl(this.config, url, gatewayPrefix);\n\t}\n}\n","import type { PinataConfig, FileListItem } from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const getFile = async (\n\tconfig: PinataConfig | undefined,\n\tid: string,\n\tprivacy: \"public\" | \"private\",\n): Promise<FileListItem> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/getFile\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/files/${privacy}/${id}`, {\n\t\t\tmethod: \"GET\",\n\t\t\theaders: headers,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: FileListItem = res.data;\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing getGroup: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while getting info for a group\",\n\t\t);\n\t}\n};\n","import {\n\tPinataConfig,\n\tFileListQuery,\n\tFileListResponse,\n\tFileListItem,\n} from \"../../types\";\nimport { listFiles } from \"../../functions\";\n\nexport class FilterFiles {\n\tprivate config: PinataConfig | undefined;\n\tprivate query: FileListQuery = {};\n\tprivate currentPageToken: string | undefined;\n\tprivate privacy: \"private\" | \"public\";\n\t// rate limit vars\n\t// private requestCount = 0;\n\t// private lastRequestTime = 0;\n\t// private readonly MAX_REQUESTS_PER_MINUTE = 30;\n\t// private readonly MINUTE_IN_MS = 60000;\n\n\tconstructor(config: PinataConfig | undefined, privacy: \"private\" | \"public\") {\n\t\tthis.config = config;\n\t\tthis.privacy = privacy;\n\t}\n\n\tname(name: string): FilterFiles {\n\t\tthis.query.name = name;\n\t\treturn this;\n\t}\n\n\tgroup(group: string): FilterFiles {\n\t\tthis.query.group = group;\n\t\treturn this;\n\t}\n\n\tcid(cid: string): FilterFiles {\n\t\tthis.query.cid = cid;\n\t\treturn this;\n\t}\n\n\tmimeType(mimeType: string): FilterFiles {\n\t\tthis.query.mimeType = mimeType;\n\t\treturn this;\n\t}\n\n\torder(order: \"ASC\" | \"DESC\"): FilterFiles {\n\t\tthis.query.order = order;\n\t\treturn this;\n\t}\n\n\tlimit(limit: number): FilterFiles {\n\t\tthis.query.limit = limit;\n\t\treturn this;\n\t}\n\n\tcidPending(cidPending: boolean): FilterFiles {\n\t\tthis.query.cidPending = cidPending;\n\t\treturn this;\n\t}\n\n\tkeyvalues(keyvalues: Record<string, string>): FilterFiles {\n\t\tthis.query.metadata = keyvalues;\n\t\treturn this;\n\t}\n\n\tnoGroup(noGroup: boolean): FilterFiles {\n\t\tthis.query.noGroup = noGroup;\n\t\treturn this;\n\t}\n\n\tpageToken(pageToken: string): FilterFiles {\n\t\tthis.query.pageToken = pageToken;\n\t\treturn this;\n\t}\n\n\tthen(onfulfilled?: ((value: FileListResponse) => any) | null): Promise<any> {\n\t\treturn this.fetchPage().then(onfulfilled);\n\t}\n\n\tprivate async fetchPage(): Promise<FileListResponse> {\n\t\tif (this.currentPageToken) {\n\t\t\tthis.query.pageToken = this.currentPageToken;\n\t\t}\n\t\tconst response = await listFiles(this.config, this.privacy, this.query);\n\t\tthis.currentPageToken = response.next_page_token;\n\t\treturn response;\n\t}\n\n\t// // rate limit, hopefully temporary?\n\t// private async rateLimit(): Promise<void> {\n\t// \tthis.requestCount++;\n\t// \tconst now = Date.now();\n\t// \tif (this.requestCount >= this.MAX_REQUESTS_PER_MINUTE) {\n\t// \t\tconst timePassedSinceLastRequest = now - this.lastRequestTime;\n\t// \t\tif (timePassedSinceLastRequest < this.MINUTE_IN_MS) {\n\t// \t\t\tconst delayTime = this.MINUTE_IN_MS - timePassedSinceLastRequest;\n\t// \t\t\tawait new Promise((resolve) => setTimeout(resolve, delayTime));\n\t// \t\t}\n\t// \t\tthis.requestCount = 0;\n\t// \t}\n\t// \tthis.lastRequestTime = Date.now();\n\t// }\n\n\tasync *[Symbol.asyncIterator](): AsyncGenerator<FileListItem, void, unknown> {\n\t\twhile (true) {\n\t\t\tconst items = await this.fetchPage();\n\t\t\tfor (const item of items.files) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\tif (!this.currentPageToken) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tasync all(): Promise<FileListItem[]> {\n\t\tconst allItems: FileListItem[] = [];\n\t\tfor await (const item of this) {\n\t\t\tallItems.push(item);\n\t\t}\n\t\treturn allItems;\n\t}\n}\n","import {\n\tPinQueueItem,\n\tPinQueueQuery,\n\tPinQueueResponse,\n\tPinataConfig,\n} from \"../../types\";\nimport { queue } from \"../../functions\";\n\nexport class FilterQueue {\n\tprivate config: PinataConfig | undefined;\n\tprivate query: PinQueueQuery = {};\n\tprivate currentPageToken: string | undefined;\n\t// rate limit vars\n\tprivate requestCount = 0;\n\tprivate lastRequestTime = 0;\n\tprivate readonly MAX_REQUESTS_PER_MINUTE = 30;\n\tprivate readonly MINUTE_IN_MS = 60000;\n\n\tconstructor(config: PinataConfig | undefined) {\n\t\tthis.config = config;\n\t}\n\n\tcid(cid: string): FilterQueue {\n\t\tthis.query.cid = cid;\n\t\treturn this;\n\t}\n\n\tstatus(\n\t\tstatus:\n\t\t\t| \"prechecking\"\n\t\t\t| \"retrieving\"\n\t\t\t| \"expired\"\n\t\t\t| \"backfilled\"\n\t\t\t| \"over_free_limit\"\n\t\t\t| \"over_max_size\"\n\t\t\t| \"invalid_object\"\n\t\t\t| \"bad_host_node\",\n\t): FilterQueue {\n\t\tthis.query.status = status;\n\t\treturn this;\n\t}\n\n\tpageLimit(limit: number): FilterQueue {\n\t\tthis.query.limit = limit;\n\t\treturn this;\n\t}\n\n\tpageToken(pageToken: string): FilterQueue {\n\t\tthis.query.pageToken = pageToken;\n\t\treturn this;\n\t}\n\n\tprivate async fetchPage(): Promise<PinQueueResponse> {\n\t\tif (this.currentPageToken) {\n\t\t\tthis.query.pageToken = this.currentPageToken;\n\t\t}\n\t\tconst response = await queue(this.config, this.query);\n\t\tthis.currentPageToken = response.next_page_token;\n\t\treturn response;\n\t}\n\n\tsort(sort: \"ASC\" | \"DSC\"): FilterQueue {\n\t\tthis.query.sort = sort;\n\t\treturn this;\n\t}\n\n\tthen(onfulfilled?: ((value: PinQueueResponse) => any) | null): Promise<any> {\n\t\treturn queue(this.config, this.query).then(onfulfilled);\n\t}\n\n\t// rate limit, hopefully temporary?\n\tprivate async rateLimit(): Promise<void> {\n\t\tthis.requestCount++;\n\t\tconst now = Date.now();\n\t\tif (this.requestCount >= this.MAX_REQUESTS_PER_MINUTE) {\n\t\t\tconst timePassedSinceLastRequest = now - this.lastRequestTime;\n\t\t\tif (timePassedSinceLastRequest < this.MINUTE_IN_MS) {\n\t\t\t\tconst delayTime = this.MINUTE_IN_MS - timePassedSinceLastRequest;\n\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, delayTime));\n\t\t\t}\n\t\t\tthis.requestCount = 0;\n\t\t}\n\t\tthis.lastRequestTime = Date.now();\n\t}\n\n\tasync *[Symbol.asyncIterator](): AsyncGenerator<PinQueueItem, void, unknown> {\n\t\twhile (true) {\n\t\t\tconst items = await this.fetchPage();\n\t\t\tfor (const item of items.jobs) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\tif (!this.currentPageToken) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tasync all(): Promise<PinQueueItem[]> {\n\t\tconst allItems: PinQueueItem[] = [];\n\t\tfor await (const item of this) {\n\t\t\tallItems.push(item);\n\t\t}\n\t\treturn allItems;\n\t}\n}\n","import { formatConfig } from \"../../../utils/format-config\";\nimport {\n\tdeleteFile,\n\tupdateFile,\n\tswapCid,\n\tswapHistory,\n\tdeleteSwap,\n\tdeletePinRequest,\n} from \"../../functions\";\nimport { getFile } from \"../../functions/files/getFile\";\nimport {\n\tPinataConfig,\n\tDeleteResponse,\n\tUpdateFileOptions,\n\tFileListItem,\n\tSwapCidOptions,\n\tSwapCidResponse,\n\tSwapHistoryOptions,\n} from \"../../types\";\nimport { FilterFiles } from \"./FilterFiles\";\nimport { FilterQueue } from \"./FilterQueue\";\n\nexport class PublicFiles {\n\tprivate config: PinataConfig | undefined;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t}\n\n\tlist(): FilterFiles {\n\t\treturn new FilterFiles(this.config, \"public\");\n\t}\n\n\tget(id: string): Promise<FileListItem> {\n\t\treturn getFile(this.config, id, \"public\");\n\t}\n\n\tdelete(files: string[]): Promise<DeleteResponse[]> {\n\t\treturn deleteFile(this.config, files, \"public\");\n\t}\n\n\tupdate(options: UpdateFileOptions): Promise<FileListItem> {\n\t\treturn updateFile(this.config, options, \"public\");\n\t}\n\n\taddSwap(options: SwapCidOptions): Promise<SwapCidResponse> {\n\t\treturn swapCid(this.config, options, \"public\");\n\t}\n\n\tgetSwapHistory(options: SwapHistoryOptions): Promise<SwapCidResponse[]> {\n\t\treturn swapHistory(this.config, options, \"public\");\n\t}\n\n\tdeleteSwap(cid: string): Promise<string> {\n\t\treturn deleteSwap(this.config, cid, \"public\");\n\t}\n\n\tqueue(): FilterQueue {\n\t\treturn new FilterQueue(this.config);\n\t}\n\n\tdeletePinRequest(requestId: string): Promise<string> {\n\t\treturn deletePinRequest(this.config, requestId);\n\t}\n}\n","import { formatConfig } from \"../../../utils/format-config\";\nimport {\n\tdeleteFile,\n\tupdateFile,\n\tswapCid,\n\tswapHistory,\n\tdeleteSwap,\n\tvectorizeFile,\n\tvectorizeQuery,\n\tdeleteFileVectors,\n} from \"../../functions\";\nimport { getFile } from \"../../functions/files/getFile\";\nimport {\n\tPinataConfig,\n\tDeleteResponse,\n\tUpdateFileOptions,\n\tFileListItem,\n\tSwapCidOptions,\n\tSwapCidResponse,\n\tSwapHistoryOptions,\n\tVectorizeFileResponse,\n\tVectorizeQuery,\n\tVectorizeQueryResponse,\n\tGetCIDResponse,\n} from \"../../types\";\nimport { FilterFiles } from \"./FilterFiles\";\n\nexport class PrivateFiles {\n\tprivate config: PinataConfig | undefined;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t}\n\n\tlist(): FilterFiles {\n\t\treturn new FilterFiles(this.config, \"private\");\n\t}\n\n\tget(id: string): Promise<FileListItem> {\n\t\treturn getFile(this.config, id, \"private\");\n\t}\n\n\tdelete(files: string[]): Promise<DeleteResponse[]> {\n\t\treturn deleteFile(this.config, files, \"private\");\n\t}\n\n\tupdate(options: UpdateFileOptions): Promise<FileListItem> {\n\t\treturn updateFile(this.config, options, \"private\");\n\t}\n\n\taddSwap(options: SwapCidOptions): Promise<SwapCidResponse> {\n\t\treturn swapCid(this.config, options, \"private\");\n\t}\n\n\tgetSwapHistory(options: SwapHistoryOptions): Promise<SwapCidResponse[]> {\n\t\treturn swapHistory(this.config, options, \"private\");\n\t}\n\n\tdeleteSwap(cid: string): Promise<string> {\n\t\treturn deleteSwap(this.config, cid, \"private\");\n\t}\n\n\tvectorize(fileId: string): Promise<VectorizeFileResponse> {\n\t\treturn vectorizeFile(this.config, fileId);\n\t}\n\n\tqueryVectors(\n\t\toptions: VectorizeQuery,\n\t): Promise<VectorizeQueryResponse | GetCIDResponse> {\n\t\treturn vectorizeQuery(this.config, options);\n\t}\n\n\tdeleteVectors(fileId: string): Promise<VectorizeFileResponse> {\n\t\treturn deleteFileVectors(this.config, fileId);\n\t}\n}\n","import { PinataConfig } from \"../../types\";\n\nimport { formatConfig } from \"../../../utils/format-config\";\n\nimport { PublicFiles } from \"./PublicFiles\";\nimport { PrivateFiles } from \"./PrivateFiles\";\n\nexport class Files {\n\tconfig: PinataConfig | undefined;\n\tpublic: PublicFiles;\n\tprivate: PrivateFiles;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t\tthis.public = new PublicFiles(config);\n\t\tthis.private = new PrivateFiles(config);\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t}\n}\n","import type { PinataConfig, PinataMetadata, UploadOptions } from \"../../types\";\n\nexport class UploadBuilder<T> {\n\tprivate config: PinataConfig | undefined;\n\tprivate uploadFunction: (\n\t\tconfig: PinataConfig | undefined,\n\t\t...args: any[]\n\t) => Promise<T>;\n\tprivate args: any[];\n\tprivate metadata: PinataMetadata | undefined = {};\n\tprivate keys: string | undefined;\n\tprivate groupId: string | undefined;\n\tprivate vector: boolean | undefined;\n\tprivate uploadUrl: string | undefined;\n\tprivate isStreamable: boolean | undefined;\n\tprivate peerAddresses: string[] | undefined;\n\n\tconstructor(\n\t\tconfig: PinataConfig | undefined,\n\t\tuploadFunction: (\n\t\t\tconfig: PinataConfig | undefined,\n\t\t\t...args: any[]\n\t\t) => Promise<T>,\n\t\t...args: any[]\n\t) {\n\t\tthis.config = config;\n\t\tthis.uploadFunction = uploadFunction;\n\t\tthis.args = args;\n\t}\n\n\t// Replace addMetadata with these two methods:\n\tname(name: string): UploadBuilder<T> {\n\t\tif (!this.metadata) {\n\t\t\tthis.metadata = {};\n\t\t}\n\t\tthis.metadata.name = name;\n\t\treturn this;\n\t}\n\n\tkeyvalues(keyvalues: Record<string, string>): UploadBuilder<T> {\n\t\tif (!this.metadata) {\n\t\t\tthis.metadata = {};\n\t\t}\n\t\tthis.metadata.keyvalues = keyvalues;\n\t\treturn this;\n\t}\n\n\tkey(jwt: string): UploadBuilder<T> {\n\t\tthis.keys = jwt;\n\t\treturn this;\n\t}\n\n\tvectorize(): UploadBuilder<T> {\n\t\tthis.vector = true;\n\t\treturn this;\n\t}\n\n\turl(url: string): UploadBuilder<T> {\n\t\tthis.uploadUrl = url;\n\t\treturn this;\n\t}\n\n\t// cidVersion(v: 0 | 1): UploadBuilder<T> {\n\t// \tthis.version = v;\n\t// \treturn this;\n\t// }\n\n\tgroup(groupId: string): UploadBuilder<T> {\n\t\tthis.groupId = groupId;\n\t\treturn this;\n\t}\n\n\tstreamable(): UploadBuilder<T> {\n\t\tthis.isStreamable = true;\n\t\treturn this;\n\t}\n\n\tpeerAddress(peerAddresses: string[]): UploadBuilder<T> {\n\t\tthis.peerAddresses = peerAddresses;\n\t\treturn this;\n\t}\n\n\tthen<TResult1 = T, TResult2 = never>(\n\t\tonfulfilled?:\n\t\t\t| ((value: T) => TResult1 | PromiseLike<TResult1>)\n\t\t\t| null\n\t\t\t| undefined,\n\t\tonrejected?:\n\t\t\t| ((reason: any) => TResult2 | PromiseLike<TResult2>)\n\t\t\t| null\n\t\t\t| undefined,\n\t): Promise<TResult1 | TResult2> {\n\t\tconst options: UploadOptions = this.args[this.args.length - 1] || {};\n\t\tif (this.metadata) {\n\t\t\toptions.metadata = this.metadata;\n\t\t}\n\t\tif (this.keys) {\n\t\t\toptions.keys = this.keys;\n\t\t}\n\t\tif (this.groupId) {\n\t\t\toptions.groupId = this.groupId;\n\t\t}\n\t\tif (this.vector) {\n\t\t\toptions.vectorize = this.vector;\n\t\t}\n\t\tif (this.uploadUrl) {\n\t\t\toptions.url = this.uploadUrl;\n\t\t}\n\t\tif (this.isStreamable) {\n\t\t\toptions.streamable = this.isStreamable;\n\t\t}\n\t\tif (this.peerAddresses) {\n\t\t\toptions.peerAddresses = this.peerAddresses;\n\t\t}\n\t\tthis.args[this.args.length - 1] = options;\n\t\treturn this.uploadFunction(this.config, ...this.args).then(\n\t\t\tonfulfilled,\n\t\t\tonrejected,\n\t\t);\n\t}\n}\n","import { formatConfig } from \"../../../utils/format-config\";\nimport {\n\tcreateSignedUploadURL,\n\tuploadBase64,\n\tuploadFile,\n\tuploadFileArray,\n\tuploadJson,\n\tuploadUrl,\n} from \"../../functions\";\nimport { uploadCid } from \"../../functions/uploads/cid\";\nimport {\n\tFileObject,\n\tPinataConfig,\n\tSignedUploadUrlOptions,\n\tUploadOptions,\n\tUploadResponse,\n\tUploadCIDOptions,\n\tPinByCIDResponse,\n} from \"../../types\";\nimport { UploadBuilder } from \"./UploadBuilder\";\n\nexport class PublicUpload {\n\tconfig: PinataConfig | undefined;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t}\n\n\tfile(file: File, options?: UploadOptions): UploadBuilder<UploadResponse> {\n\t\treturn new UploadBuilder(\n\t\t\tthis.config,\n\t\t\t(config, file, options) => uploadFile(config, file, \"public\", options),\n\t\t\tfile,\n\t\t\toptions,\n\t\t);\n\t}\n\n\tfileArray(\n\t\tfiles: File[],\n\t\toptions?: UploadOptions,\n\t): UploadBuilder<UploadResponse> {\n\t\treturn new UploadBuilder(\n\t\t\tthis.config,\n\t\t\t(config, file, options) =>\n\t\t\t\tuploadFileArray(config, file, \"public\", options),\n\t\t\tfiles,\n\t\t\toptions,\n\t\t);\n\t}\n\n\tbase64(\n\t\tbase64String: string,\n\t\toptions?: UploadOptions,\n\t): UploadBuilder<UploadResponse> {\n\t\treturn new UploadBuilder(\n\t\t\tthis.config,\n\t\t\t(config, base64String, options) =>\n\t\t\t\tuploadBase64(config, base64String, \"public\", options),\n\t\t\tbase64String,\n\t\t\toptions,\n\t\t);\n\t}\n\n\turl(url: string, options?: UploadOptions): UploadBuilder<UploadResponse> {\n\t\treturn new UploadBuilder(\n\t\t\tthis.config,\n\t\t\t(config, url, options) => uploadUrl(config, url, \"public\", options),\n\t\t\turl,\n\t\t\toptions,\n\t\t);\n\t}\n\n\tjson(data: object, options?: UploadOptions): UploadBuilder<UploadResponse> {\n\t\treturn new UploadBuilder(\n\t\t\tthis.config,\n\t\t\t(config, data, options) => uploadJson(config, data, \"public\", options),\n\t\t\tdata,\n\t\t\toptions,\n\t\t);\n\t}\n\n\tcid(\n\t\tcid: string,\n\t\toptions?: UploadCIDOptions,\n\t): UploadBuilder<PinByCIDResponse> {\n\t\treturn new UploadBuilder(\n\t\t\tthis.config,\n\t\t\t(config, cid, options) => uploadCid(config, cid, options),\n\t\t\tcid,\n\t\t\toptions,\n\t\t);\n\t}\n\n\tcreateSignedURL(options: SignedUploadUrlOptions): Promise<string> {\n\t\treturn createSignedUploadURL(this.config, options, \"public\");\n\t}\n}\n","import { formatConfig } from \"../../../utils/format-config\";\nimport {\n\tcreateSignedUploadURL,\n\tuploadBase64,\n\tuploadFile,\n\tuploadFileArray,\n\tuploadJson,\n\tuploadUrl,\n} from \"../../functions\";\nimport {\n\tFileObject,\n\tPinataConfig,\n\tSignedUploadUrlOptions,\n\tUploadOptions,\n\tUploadResponse,\n} from \"../../types\";\nimport { UploadBuilder } from \"./UploadBuilder\";\n\nexport class PrivateUpload {\n\tconfig: PinataConfig | undefined;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t}\n\n\tfile(file: File, options?: UploadOptions): UploadBuilder<UploadResponse> {\n\t\treturn new UploadBuilder(\n\t\t\tthis.config,\n\t\t\t(config, file, options) => uploadFile(config, file, \"private\", options),\n\t\t\tfile,\n\t\t\toptions,\n\t\t);\n\t}\n\n\t// Reserved for future release\n\t// fileArray(\n\t// \tfiles: FileObject[],\n\t// \toptions?: UploadOptions,\n\t// ): UploadBuilder<UploadResponse> {\n\t// \treturn new UploadBuilder(\n\t// \t\tthis.config,\n\t// \t\t(config, file, options) =>\n\t// \t\t\tuploadFileArray(config, file, \"private\", options),\n\t// \t\tfiles,\n\t// \t\toptions,\n\t// \t);\n\t// }\n\n\tbase64(\n\t\tbase64String: string,\n\t\toptions?: UploadOptions,\n\t): UploadBuilder<UploadResponse> {\n\t\treturn new UploadBuilder(\n\t\t\tthis.config,\n\t\t\t(config, base64String, options) =>\n\t\t\t\tuploadBase64(config, base64String, \"private\", options),\n\t\t\tbase64String,\n\t\t\toptions,\n\t\t);\n\t}\n\n\turl(url: string, options?: UploadOptions): UploadBuilder<UploadResponse> {\n\t\treturn new UploadBuilder(\n\t\t\tthis.config,\n\t\t\t(config, url, options) => uploadUrl(config, url, \"private\", options),\n\t\t\turl,\n\t\t\toptions,\n\t\t);\n\t}\n\n\tjson(data: object, options?: UploadOptions): UploadBuilder<UploadResponse> {\n\t\treturn new UploadBuilder(\n\t\t\tthis.config,\n\t\t\t(config, data, options) => uploadJson(config, data, \"private\", options),\n\t\t\tdata,\n\t\t\toptions,\n\t\t);\n\t}\n\n\tcreateSignedURL(options: SignedUploadUrlOptions): Promise<string> {\n\t\treturn createSignedUploadURL(this.config, options, \"private\");\n\t}\n}\n","import { PinataConfig } from \"../../types\";\nimport { formatConfig } from \"../../../utils/format-config\";\n\nimport { PublicUpload } from \"./PublicUpload\";\nimport { PrivateUpload } from \"./PrivateUpload\";\n\nexport class Upload {\n\tconfig: PinataConfig | undefined;\n\tpublic: PublicUpload;\n\tprivate: PrivateUpload;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t\tthis.public = new PublicUpload(config);\n\t\tthis.private = new PrivateUpload(config);\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t}\n}\n","import type {\n\tSignatureOptions,\n\tPinataConfig,\n\tSignatureResponse,\n} from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const addSignature = async (\n\tconfig: PinataConfig | undefined,\n\toptions: SignatureOptions,\n\tnetwork: \"public\" | \"private\",\n): Promise<SignatureResponse> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst data = JSON.stringify({\n\t\tsignature: options.signature,\n\t\taddress: options.address,\n\t});\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = { ...config.customHeaders };\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/addSignature\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(\n\t\t\t`${endpoint}/files/${network}/signature/${options.cid}`,\n\t\t\t{\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: headers,\n\t\t\t\tbody: data,\n\t\t\t},\n\t\t);\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (request.status === 403) {\n\t\t\t\tthrow new PinataError(\n\t\t\t\t\t\"Unauthorized signing, you must be the original owner of the file and it must not have a signature\",\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\treturn res.data;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing addSignature: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while adding signature to CID\",\n\t\t);\n\t}\n};\n","import type { PinataConfig, SignatureResponse } from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const getSignature = async (\n\tconfig: PinataConfig | undefined,\n\tcid: string,\n\tnetwork: \"public\" | \"private\",\n): Promise<SignatureResponse> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = { ...config.customHeaders };\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/getSignature\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(\n\t\t\t`${endpoint}/files/${network}/signature/${cid}`,\n\t\t\t{\n\t\t\t\tmethod: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t},\n\t\t);\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\treturn res.data;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing getSignature: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while fetching signature for CID\",\n\t\t);\n\t}\n};\n","import type { PinataConfig } from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const removeSignature = async (\n\tconfig: PinataConfig | undefined,\n\tcid: string,\n\tnetwork: \"public\" | \"private\",\n): Promise<string> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = { ...config.customHeaders };\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/removeSignature\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(\n\t\t\t`${endpoint}/files/${network}/signature/${cid}`,\n\t\t\t{\n\t\t\t\tmethod: \"DELETE\",\n\t\t\t\theaders: headers,\n\t\t\t},\n\t\t);\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\treturn \"OK\";\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing addSignature: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while adding signature to CID\",\n\t\t);\n\t}\n};\n","import { formatConfig } from \"../../../utils/format-config\";\nimport {\n\taddSignature,\n\tgetSignature,\n\tremoveSignature,\n} from \"../../functions/signatures\";\nimport { PinataConfig, SignatureOptions, SignatureResponse } from \"../../types\";\n\nexport class PublicSignatures {\n\tconfig: PinataConfig | undefined;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t}\n\n\tadd(options: SignatureOptions): Promise<SignatureResponse> {\n\t\treturn addSignature(this.config, options, \"public\");\n\t}\n\n\tget(cid: string): Promise<SignatureResponse> {\n\t\treturn getSignature(this.config, cid, \"public\");\n\t}\n\n\tdelete(cid: string): Promise<string> {\n\t\treturn removeSignature(this.config, cid, \"public\");\n\t}\n}\n","import { formatConfig } from \"../../../utils/format-config\";\nimport { PinataConfig } from \"../../types\";\nimport { PrivateSignatures } from \"./PrivateSignatures\";\nimport { PublicSignatures } from \"./PublicSignatures\";\n\nexport class Signatures {\n\tconfig: PinataConfig | undefined;\n\tpublic: PublicSignatures;\n\t//private: PrivateSignatures\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t\tthis.public = new PublicSignatures(config);\n\t\t// this.private = new PrivateSignatures(config)\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t}\n}\n","import { testAuthentication } from \"./functions\";\nimport { formatConfig } from \"../utils\";\nimport {\n\tAnalytics,\n\tGroups,\n\tKeys,\n\tGateways,\n\tFiles,\n\tUpload,\n\tSignatures,\n} from \"./classes\";\nimport { PinataConfig } from \"./types\";\n\nexport class PinataSDK {\n\tconfig: PinataConfig | undefined;\n\tfiles: Files;\n\tupload: Upload;\n\tgateways: Gateways;\n\t//\tusage: Usage;\n\tkeys: Keys;\n\tgroups: Groups;\n\tanalytics: Analytics;\n\tsignatures: Signatures;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t\tthis.files = new Files(this.config);\n\t\tthis.upload = new Upload(this.config);\n\t\tthis.gateways = new Gateways(this.config);\n\t\t//\t\tthis.usage = new Usage(this.config);\n\t\tthis.keys = new Keys(this.config);\n\t\tthis.groups = new Groups(this.config);\n\t\tthis.analytics = new Analytics(this.config);\n\t\tthis.signatures = new Signatures(this.config);\n\t}\n\n\tsetNewHeaders(headers: Record<string, string>): void {\n\t\tif (!this.config) {\n\t\t\tthis.config = { pinataJwt: \"\", customHeaders: {} };\n\t\t}\n\t\tthis.config.customHeaders = { ...this.config.customHeaders, ...headers };\n\n\t\t// Update headers for all sub-modules\n\t\tthis.files.updateConfig(this.config);\n\t\tthis.upload.updateConfig(this.config);\n\t\tthis.gateways.updateConfig(this.config);\n\t\t//\t\tthis.usage.updateConfig(this.config);\n\t\tthis.keys.updateConfig(this.config);\n\t\tthis.groups.updateConfig(this.config);\n\t\tthis.analytics.updateConfig(this.config);\n\t\tthis.signatures.updateConfig(this.config);\n\t}\n\n\tsetNewJwt(jwt: string): void {\n\t\tif (!this.config) {\n\t\t\tthis.config = { pinataJwt: \"\" };\n\t\t}\n\t\tthis.config.pinataJwt = jwt;\n\n\t\t// Update headers for all sub-modules\n\t\tthis.files.updateConfig(this.config);\n\t\tthis.upload.updateConfig(this.config);\n\t\tthis.gateways.updateConfig(this.config);\n\t\t//\t\tthis.usage.updateConfig(this.config);\n\t\tthis.keys.updateConfig(this.config);\n\t\tthis.groups.updateConfig(this.config);\n\t\tthis.analytics.updateConfig(this.config);\n\t\tthis.signatures.updateConfig(this.config);\n\t}\n\n\ttestAuthentication(): Promise<string> {\n\t\treturn testAuthentication(this.config);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/core/functions/analytics/analyticsDateInterval.ts","../src/core/functions/analytics/analyticsTopUsage.ts","../src/core/functions/authentication/testAuthentication.ts","../src/core/functions/files/delete.ts","../src/core/functions/files/deleteFileVectors.ts","../src/core/functions/files/deleteSwap.ts","../src/core/functions/files/list.ts","../src/core/functions/files/pinnedFileUsage.ts","../src/core/functions/files/swapCid.ts","../src/core/functions/files/swapHistory.ts","../src/core/functions/files/totalStorageUsage.ts","../src/core/functions/files/updateFile.ts","../src/core/functions/files/vectorizeFile.ts","../src/core/functions/files/vectorizeQuery.ts","../src/core/functions/files/queue.ts","../src/core/functions/files/deletePinRequest.ts","../src/core/functions/gateway/getCid.ts","../src/core/functions/gateway/convertIPFSUrl.ts","../src/core/functions/gateway/createAccessLink.ts","../src/core/functions/groups/addToGroup.ts","../src/core/functions/groups/createGroup.ts","../src/core/functions/groups/deleteGroup.ts","../src/core/functions/groups/getGroup.ts","../src/core/functions/groups/listGroups.ts","../src/core/functions/groups/removeFromGroup.ts","../src/core/functions/groups/updateGroup.ts","../src/core/functions/keys/createKey.ts","../src/core/functions/keys/listKeys.ts","../src/core/functions/keys/revokeKeys.ts","../src/core/functions/uploads/base64.ts","../src/core/functions/uploads/createSignedUploadURL.ts","../src/core/functions/uploads/file.ts","../src/core/functions/uploads/fileArray.ts","../src/core/functions/uploads/json.ts","../src/core/functions/uploads/url.ts","../src/core/functions/uploads/cid.ts","../src/core/classes/analytics/Analytics.ts","../src/core/classes/analytics/utils.ts","../src/core/classes/analytics/AnalyticsFilter.ts","../src/core/classes/analytics/AnalyticsBandwidth.ts","../src/core/classes/analytics/AnalyticsBuilder.ts","../src/core/classes/analytics/AnalyticsRequests.ts","../src/core/classes/analytics/TimeIntervalAnalyticsBuilder.ts","../src/core/classes/groups/GroupsFilter.ts","../src/core/classes/groups/PublicGroups.ts","../src/core/classes/groups/PrivateGroups.ts","../src/core/classes/groups/Groups.ts","../src/core/classes/keys/Keys.ts","../src/core/classes/keys/FilterKeys.ts","../src/core/classes/gateways/Gateways.ts","../src/core/classes/gateways/OptimizeImageCreateSignedUrl.ts","../src/core/classes/gateways/OptimizeImageGetCid.ts","../src/core/classes/gateways/PrivateGateways.ts","../src/core/classes/gateways/PublicGateways.ts","../src/core/functions/files/getFile.ts","../src/core/classes/files/FilterFiles.ts","../src/core/classes/files/FilterQueue.ts","../src/core/classes/files/PublicFiles.ts","../src/core/classes/files/PrivateFiles.ts","../src/core/classes/files/Files.ts","../src/core/classes/uploads/UploadBuilder.ts","../src/core/classes/uploads/PublicUpload.ts","../src/core/classes/uploads/PrivateUpload.ts","../src/core/classes/uploads/Upload.ts","../src/core/functions/signatures/addSignature.ts","../src/core/functions/signatures/getSignature.ts","../src/core/functions/signatures/removeSignature.ts","../src/core/classes/signatures/PublicSignatures.ts","../src/core/classes/signatures/Signatures.ts","../src/core/pinataSDK.ts"],"names":["wait","headers","data","file","options","base64String","url","cid"],"mappings":";;;;AAYa,IAAA,qBAAA,GAAwB,OACpC,MAAA,EACA,OAC4C,KAAA;AAC5C,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAM,MAAA,MAAA,GAAS,IAAI,eAAgB,EAAA;AAEnC,EAAA,IAAI,OAAS,EAAA;AACZ,IAAM,MAAA;AAAA,MACL,GAAA;AAAA,MACA,cAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA,KACG,GAAA,OAAA;AAEJ,IAAA,IAAI,GAAK,EAAA,MAAA,CAAO,MAAO,CAAA,KAAA,EAAO,GAAG,CAAA;AACjC,IAAA,IAAI,cAAgB,EAAA,MAAA,CAAO,MAAO,CAAA,gBAAA,EAAkB,cAAc,CAAA;AAClE,IAAA,IAAI,UAAY,EAAA,MAAA,CAAO,MAAO,CAAA,YAAA,EAAc,UAAU,CAAA;AACtD,IAAA,IAAI,QAAU,EAAA,MAAA,CAAO,MAAO,CAAA,UAAA,EAAY,QAAQ,CAAA;AAChD,IAAA,IAAI,SAAW,EAAA,MAAA,CAAO,MAAO,CAAA,WAAA,EAAa,SAAS,CAAA;AACnD,IAAA,IAAI,YAAmB,MAAA,CAAA,MAAA,CAAO,YAAc,EAAA,UAAA,CAAW,UAAU,CAAA;AACjE,IAAA,IAAI,SAAgB,MAAA,CAAA,MAAA,CAAO,SAAW,EAAA,OAAA,CAAQ,UAAU,CAAA;AACxD,IAAA,IAAI,MAAQ,EAAA,MAAA,CAAO,MAAO,CAAA,QAAA,EAAU,MAAM,CAAA;AAC1C,IAAA,IAAI,SAAgB,MAAA,CAAA,MAAA,CAAO,SAAW,EAAA,OAAA,CAAQ,UAAU,CAAA;AACxD,IAAA,IAAI,OAAc,MAAA,CAAA,MAAA,CAAO,OAAS,EAAA,KAAA,CAAM,UAAU,CAAA;AAClD,IAAA,IAAI,UAAY,EAAA,MAAA,CAAO,MAAO,CAAA,YAAA,EAAc,UAAU,CAAA;AACtD,IAAA,IAAI,OAAS,EAAA,MAAA,CAAO,MAAO,CAAA,SAAA,EAAW,OAAO,CAAA;AAC7C,IAAA,IAAI,aAAe,EAAA,MAAA,CAAO,MAAO,CAAA,IAAA,EAAM,aAAa,CAAA;AAAA;AAGrD,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAA,MAAM,MAAM,CAAG,EAAA,QAAQ,CAAuC,oCAAA,EAAA,MAAA,CAAO,UAAU,CAAA,CAAA;AAE/E,EAAI,IAAA;AACH,IAAI,IAAA,OAAA;AAEJ,IAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,MAAU,OAAA,GAAA,EAAE,GAAG,MAAA,CAAO,aAAc,EAAA;AAAA,KAC9B,MAAA;AACN,MAAU,OAAA,GAAA;AAAA,QACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,QACzC,MAAQ,EAAA;AAAA,OACT;AAAA;AAGD,IAAM,MAAA,OAAA,GAAU,MAAM,KAAA,CAAM,GAAK,EAAA;AAAA,MAChC,MAAQ,EAAA,KAAA;AAAA,MACR;AAAA,KACA,CAAA;AACD,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC/B,IAAA,MAAM,UAAyC,GAAI,CAAA,IAAA;AACnD,IAAO,OAAA,OAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA;AAAA,QACT,CAAA,iCAAA,EAAoC,MAAM,OAAO,CAAA;AAAA,OAClD;AAAA;AAED,IAAA,MAAM,IAAI,WAAA;AAAA,MACT;AAAA,KACD;AAAA;AAEF;;;ACzGa,IAAA,iBAAA,GAAoB,OAChC,MAAA,EACA,OACmC,KAAA;AACnC,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAM,MAAA,MAAA,GAAS,IAAI,eAAgB,EAAA;AAEnC,EAAA,IAAI,OAAS,EAAA;AACZ,IAAM,MAAA;AAAA,MACL,GAAA;AAAA,MACA,cAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACG,GAAA,OAAA;AAEJ,IAAM,MAAA,MAAA,GAAS,kBAAkB,MAAO,CAAA,aAAA;AACxC,IAAA,IAAI,MAAQ,EAAA;AAEX,MAAA,MAAM,WAAc,GAAA,MAAA,CAAO,OAAQ,CAAA,cAAA,EAAgB,EAAE,CAAA;AACrD,MAAO,MAAA,CAAA,MAAA,CAAO,kBAAkB,WAAW,CAAA;AAAA;AAE5C,IAAA,IAAI,GAAK,EAAA;AACR,MAAO,MAAA,CAAA,MAAA,CAAO,OAAO,GAAG,CAAA;AAAA;AAEzB,IAAA,IAAI,UAAY,EAAA,MAAA,CAAO,MAAO,CAAA,YAAA,EAAc,UAAU,CAAA;AACtD,IAAA,IAAI,QAAU,EAAA,MAAA,CAAO,MAAO,CAAA,UAAA,EAAY,QAAQ,CAAA;AAChD,IAAA,IAAI,SAAW,EAAA,MAAA,CAAO,MAAO,CAAA,WAAA,EAAa,SAAS,CAAA;AACnD,IAAA,IAAI,YAAmB,MAAA,CAAA,MAAA,CAAO,YAAc,EAAA,UAAA,CAAW,UAAU,CAAA;AACjE,IAAA,IAAI,SAAgB,MAAA,CAAA,MAAA,CAAO,SAAW,EAAA,OAAA,CAAQ,UAAU,CAAA;AACxD,IAAA,IAAI,MAAQ,EAAA,MAAA,CAAO,MAAO,CAAA,QAAA,EAAU,MAAM,CAAA;AAC1C,IAAA,IAAI,SAAgB,MAAA,CAAA,MAAA,CAAO,SAAW,EAAA,OAAA,CAAQ,UAAU,CAAA;AACxD,IAAA,IAAI,OAAc,MAAA,CAAA,MAAA,CAAO,OAAS,EAAA,KAAA,CAAM,UAAU,CAAA;AAClD,IAAA,IAAI,UAAY,EAAA,MAAA,CAAO,MAAO,CAAA,YAAA,EAAc,UAAU,CAAA;AACtD,IAAA,IAAI,OAAS,EAAA,MAAA,CAAO,MAAO,CAAA,SAAA,EAAW,OAAO,CAAA;AAC7C,IAAA,IAAI,SAAW,EAAA,MAAA,CAAO,MAAO,CAAA,IAAA,EAAM,SAAS,CAAA;AAAA;AAG7C,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAA,MAAM,MAAM,CAAG,EAAA,QAAQ,CAA+B,4BAAA,EAAA,MAAA,CAAO,UAAU,CAAA,CAAA;AAEvE,EAAI,IAAA;AACH,IAAI,IAAA,OAAA;AAEJ,IAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,MAAU,OAAA,GAAA,EAAE,GAAG,MAAA,CAAO,aAAc,EAAA;AAAA,KAC9B,MAAA;AACN,MAAU,OAAA,GAAA;AAAA,QACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,QACzC,MAAQ,EAAA;AAAA,OACT;AAAA;AAGD,IAAM,MAAA,OAAA,GAAU,MAAM,KAAA,CAAM,GAAK,EAAA;AAAA,MAChC,MAAQ,EAAA,KAAA;AAAA,MACR;AAAA,KACA,CAAA;AACD,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,GAAA,GAA4B,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrD,IAAO,OAAA,GAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA;AAAA,QACT,CAAA,iCAAA,EAAoC,MAAM,OAAO,CAAA;AAAA,OAClD;AAAA;AAED,IAAA,MAAM,IAAI,WAAA;AAAA,MACT;AAAA,KACD;AAAA;AAEF;;;ACrHa,IAAA,kBAAA,GAAqB,OAAO,MAAqC,KAAA;AAC7E,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAI,IAAA,OAAA;AACJ,EAAA,IAAI,QAAmB,GAAA,0BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAI,IAAA;AACH,IAAA,MAAM,OAAU,GAAA,MAAM,KAAM,CAAA,CAAA,EAAG,QAAQ,CAA4B,wBAAA,CAAA,EAAA;AAAA,MAClE,MAAQ,EAAA,KAAA;AAAA,MACR;AAAA,KACA,CAAA;AACD,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,GAAA,GAAc,MAAM,OAAA,CAAQ,IAAK,EAAA;AACvC,IAAO,OAAA,GAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA;AAAA,QACT,CAAA,iCAAA,EAAoC,MAAM,OAAO,CAAA;AAAA,OAClD;AAAA;AAED,IAAA,MAAM,IAAI,WAAA;AAAA,MACT;AAAA,KACD;AAAA;AAEF;;;ACpEA,IAAM,IAAA,GAAO,CAAC,YAAwC,KAAA;AACrD,EAAO,OAAA,IAAI,OAAQ,CAAA,CAAC,OAAY,KAAA;AAC/B,IAAA,UAAA,CAAW,SAAS,YAAY,CAAA;AAAA,GAChC,CAAA;AACF,CAAA;AAEO,IAAM,UAAa,GAAA,OACzB,MACA,EAAA,KAAA,EACA,OAC+B,KAAA;AAC/B,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAA,MAAM,YAA8B,EAAC;AAErC,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAA,KAAA,MAAW,MAAM,KAAO,EAAA;AACvB,IAAI,IAAA;AACH,MAAM,MAAA,QAAA,GAAW,MAAM,KAAM,CAAA,CAAA,EAAG,QAAQ,CAAU,OAAA,EAAA,OAAO,CAAI,CAAA,EAAA,EAAE,CAAI,CAAA,EAAA;AAAA,QAClE,MAAQ,EAAA,QAAA;AAAA,QACR;AAAA,OACA,CAAA;AAED,MAAA,MAAM,KAAK,GAAG,CAAA;AAEd,MAAI,IAAA,CAAC,SAAS,EAAI,EAAA;AACjB,QAAM,MAAA,SAAA,GAAY,MAAM,QAAA,CAAS,IAAK,EAAA;AACtC,QAAI,IAAA,QAAA,CAAS,WAAW,GAAK,EAAA;AAC5B,UAAA,MAAM,IAAI,mBAAA;AAAA,YACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,YACnC,QAAS,CAAA,MAAA;AAAA,YACT;AAAA,cACC,KAAO,EAAA,SAAA;AAAA,cACP,IAAM,EAAA,YAAA;AAAA,cACN,QAAU,EAAA;AAAA,gBACT,YAAY,QAAS,CAAA;AAAA;AACtB;AACD,WACD;AAAA;AAED,QAAA,MAAM,IAAI,YAAA,CAAa,CAAc,UAAA,CAAA,EAAA,QAAA,CAAS,MAAQ,EAAA;AAAA,UACrD,KAAO,EAAA,SAAA;AAAA,UACP,IAAM,EAAA,YAAA;AAAA,UACN,QAAU,EAAA;AAAA,YACT,YAAY,QAAS,CAAA;AAAA;AACtB,SACA,CAAA;AAAA;AAGF,MAAA,SAAA,CAAU,IAAK,CAAA;AAAA,QACd,EAAA;AAAA,QACA,QAAQ,QAAS,CAAA;AAAA,OACjB,CAAA;AAAA,aACO,KAAO,EAAA;AACf,MAAI,IAAA,YAAA;AAEJ,MAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,QAAA,YAAA,GAAe,KAAM,CAAA,OAAA;AAAA,OACtB,MAAA,IAAW,iBAAiB,KAAO,EAAA;AAClC,QAAA,YAAA,GAAe,CAAuB,oBAAA,EAAA,EAAE,CAAK,EAAA,EAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AAAA,OACpD,MAAA;AACN,QAAA,YAAA,GAAe,iDAAiD,EAAE,CAAA,CAAA;AAAA;AAGnE,MAAA,SAAA,CAAU,IAAK,CAAA;AAAA,QACd,EAAA;AAAA,QACA,MAAQ,EAAA;AAAA,OACR,CAAA;AAAA;AACF;AAED,EAAO,OAAA,SAAA;AACR;;;AC5Fa,IAAA,iBAAA,GAAoB,OAChC,MAAA,EACA,MACoC,KAAA;AACpC,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAA,IAAI,QAAmB,GAAA,iCAAA;AAEvB,EAAA,IAAI,OAAO,SAAW,EAAA;AACrB,IAAA,QAAA,GAAW,MAAO,CAAA,SAAA;AAAA;AAGnB,EAAI,IAAA;AACH,IAAA,MAAM,UAAU,MAAM,KAAA,CAAM,GAAG,QAAQ,CAAA,iBAAA,EAAoB,MAAM,CAAI,CAAA,EAAA;AAAA,MACpE,MAAQ,EAAA,QAAA;AAAA,MACR;AAAA,KACA,CAAA;AAED,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,GAAA,GAA6B,MAAM,OAAA,CAAQ,IAAK,EAAA;AACtD,IAAO,OAAA,GAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA;AAAA,QACT,CAAA,iCAAA,EAAoC,MAAM,OAAO,CAAA;AAAA,OAClD;AAAA;AAED,IAAM,MAAA,IAAI,YAAY,kDAAkD,CAAA;AAAA;AAE1E;;;ACtEO,IAAM,UAAa,GAAA,OACzB,MACA,EAAA,GAAA,EACA,OACqB,KAAA;AACrB,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAI,IAAA;AACH,IAAM,MAAA,OAAA,GAAU,MAAM,KAAM,CAAA,CAAA,EAAG,QAAQ,CAAU,OAAA,EAAA,OAAO,CAAS,MAAA,EAAA,GAAG,CAAI,CAAA,EAAA;AAAA,MACvE,MAAQ,EAAA,QAAA;AAAA,MACR;AAAA,KACA,CAAA;AAED,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA,CAAoB,CAAyB,qBAAA,CAAA,EAAA,OAAA,CAAQ,MAAQ,EAAA;AAAA,UACtE,KAAO,EAAA,SAAA;AAAA,UACP,IAAM,EAAA;AAAA,SACN,CAAA;AAAA;AAEF,MAAI,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AAC3B,QAAA,MAAM,IAAI,WAAA;AAAA,UACT,gCAAA;AAAA,UACA,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA;AAAA;AACP,SACD;AAAA;AAED,MAAI,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AAC3B,QAAA,MAAM,IAAI,WAAA,CAAY,2BAA6B,EAAA,OAAA,CAAQ,MAAQ,EAAA;AAAA,UAClE,KAAO,EAAA,SAAA;AAAA,UACP,IAAM,EAAA;AAAA,SACN,CAAA;AAAA;AAEF,MAAA,MAAM,IAAI,YAAA,CAAa,CAAuB,mBAAA,CAAA,EAAA,OAAA,CAAQ,MAAQ,EAAA;AAAA,QAC7D,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA;AAAA,OACN,CAAA;AAAA;AAGF,IAAA,OAAO,OAAQ,CAAA,UAAA;AAAA,WACP,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA;AAAA,QACT,CAAA,6BAAA,EAAgC,MAAM,OAAO,CAAA,CAAA;AAAA,QAC7C,MAAA;AAAA,QACA;AAAA,UACC,IAAM,EAAA;AAAA;AACP,OACD;AAAA;AAED,IAAA,MAAM,IAAI,WAAA;AAAA,MACT,+CAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA,QACC,IAAM,EAAA;AAAA;AACP,KACD;AAAA;AAEF;;;ACtFO,IAAM,SAAY,GAAA,OACxB,MACA,EAAA,OAAA,EACA,OAC+B,KAAA;AAC/B,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAM,MAAA,MAAA,GAAS,IAAI,eAAgB,EAAA;AAEnC,EAAA,IAAI,OAAS,EAAA;AACZ,IAAM,MAAA;AAAA,MACL,IAAA;AAAA,MACA,KAAA;AAAA,MACA,GAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACG,GAAA,OAAA;AAEJ,IAAA,IAAI,OAAc,MAAA,CAAA,MAAA,CAAO,OAAS,EAAA,KAAA,CAAM,UAAU,CAAA;AAClD,IAAA,IAAI,IAAM,EAAA,MAAA,CAAO,MAAO,CAAA,MAAA,EAAQ,IAAI,CAAA;AACpC,IAAA,IAAI,KAAO,EAAA,MAAA,CAAO,MAAO,CAAA,OAAA,EAAS,KAAK,CAAA;AACvC,IAAA,IAAI,GAAK,EAAA,MAAA,CAAO,MAAO,CAAA,KAAA,EAAO,GAAG,CAAA;AACjC,IAAA,IAAI,QAAU,EAAA,MAAA,CAAO,MAAO,CAAA,UAAA,EAAY,QAAQ,CAAA;AAChD,IAAA,IAAI,KAAO,EAAA,MAAA,CAAO,MAAO,CAAA,OAAA,EAAS,KAAK,CAAA;AACvC,IAAA,IAAI,SAAW,EAAA,MAAA,CAAO,MAAO,CAAA,WAAA,EAAa,SAAS,CAAA;AACnD,IAAA,IAAI,UAAY,EAAA,MAAA,CAAO,MAAO,CAAA,YAAA,EAAc,MAAM,CAAA;AAClD,IAAA,IAAI,OAAS,EAAA,MAAA,CAAO,MAAO,CAAA,OAAA,EAAS,MAAM,CAAA;AAC1C,IAAI,IAAA,QAAA,IAAY,OAAO,QAAA,KAAa,QAAU,EAAA;AAC7C,MAAO,MAAA,CAAA,OAAA,CAAQ,QAAQ,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,CAAM,KAAA;AAClD,QAAO,MAAA,CAAA,MAAA,CAAO,aAAa,GAAI,CAAA,QAAA,EAAU,CAAK,CAAA,CAAA,EAAA,KAAA,CAAM,UAAU,CAAA;AAAA,OAC9D,CAAA;AAAA;AACF;AAGD,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAM,MAAA,GAAA,GAAM,GAAG,QAAQ,CAAA,OAAA,EAAU,OAAO,CAAI,CAAA,EAAA,MAAA,CAAO,UAAU,CAAA,CAAA;AAE7D,EAAI,IAAA;AACH,IAAI,IAAA,OAAA;AAEJ,IAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,MAAU,OAAA,GAAA;AAAA,QACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,QACzC,GAAG,MAAO,CAAA;AAAA,OACX;AAAA,KACM,MAAA;AACN,MAAU,OAAA,GAAA;AAAA,QACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,QACzC,MAAQ,EAAA;AAAA,OACT;AAAA;AAGD,IAAM,MAAA,OAAA,GAAU,MAAM,KAAA,CAAM,GAAK,EAAA;AAAA,MAChC,MAAQ,EAAA,KAAA;AAAA,MACR;AAAA,KACA,CAAA;AACD,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC/B,IAAA,MAAM,UAA4B,GAAI,CAAA,IAAA;AACtC,IAAO,OAAA,OAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA,CAAY,CAAgC,6BAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAEtE,IAAM,MAAA,IAAI,YAAY,+CAA+C,CAAA;AAAA;AAEvE;;;AC5Ga,IAAA,eAAA,GAAkB,OAC9B,MACqB,KAAA;AACrB,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAA,IAAI,QAAmB,GAAA,0BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAI,IAAA;AACH,IAAA,MAAM,OAAU,GAAA,MAAM,KAAM,CAAA,CAAA,EAAG,QAAQ,CAA6B,yBAAA,CAAA,EAAA;AAAA,MACnE,MAAQ,EAAA,KAAA;AAAA,MACR;AAAA,KACA,CAAA;AACD,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAEF,IAAM,MAAA,GAAA,GAA8B,MAAM,OAAA,CAAQ,IAAK,EAAA;AACvD,IAAA,OAAO,GAAI,CAAA,SAAA;AAAA,WACH,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA;AAAA,QACT,CAAA,kCAAA,EAAqC,MAAM,OAAO,CAAA;AAAA,OACnD;AAAA;AAED,IAAA,MAAM,IAAI,WAAA;AAAA,MACT;AAAA,KACD;AAAA;AAEF;;;ACjEO,IAAM,OAAU,GAAA,OACtB,MACA,EAAA,OAAA,EACA,OAC8B,KAAA;AAC9B,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAM,MAAA,IAAA,GAAO,KAAK,SAAU,CAAA;AAAA,IAC3B,UAAU,OAAQ,CAAA;AAAA,GAClB,CAAA;AAED,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAI,IAAA;AACH,IAAA,MAAM,UAAU,MAAM,KAAA;AAAA,MACrB,GAAG,QAAQ,CAAA,OAAA,EAAU,OAAO,CAAA,MAAA,EAAS,QAAQ,GAAG,CAAA,CAAA;AAAA,MAChD;AAAA,QACC,MAAQ,EAAA,KAAA;AAAA,QACR,OAAA;AAAA,QACA,IAAM,EAAA;AAAA;AACP,KACD;AAEA,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAI,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AAC3B,QAAA,MAAM,IAAI,WAAA,CAAY,uBAAyB,EAAA,OAAA,CAAQ,MAAQ,EAAA;AAAA,UAC9D,KAAO,EAAA,SAAA;AAAA,UACP,IAAM,EAAA,YAAA;AAAA,UACN,QAAU,EAAA;AAAA,YACT,YAAY,OAAQ,CAAA;AAAA;AACrB,SACA,CAAA;AAAA;AAEF,MAAI,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AAC3B,QAAA,MAAM,IAAI,WAAA,CAAY,2BAA6B,EAAA,OAAA,CAAQ,MAAQ,EAAA;AAAA,UAClE,KAAO,EAAA,SAAA;AAAA,UACP,IAAM,EAAA,YAAA;AAAA,UACN,QAAU,EAAA;AAAA,YACT,YAAY,OAAQ,CAAA;AAAA;AACrB,SACA,CAAA;AAAA;AAEF,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC/B,IAAA,MAAM,UAA2B,GAAI,CAAA,IAAA;AACrC,IAAO,OAAA,OAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA,CAAY,CAA8B,2BAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAEpE,IAAM,MAAA,IAAI,YAAY,8CAA8C,CAAA;AAAA;AAEtE;;;ACnGO,IAAM,WAAc,GAAA,OAC1B,MACA,EAAA,OAAA,EACA,OACgC,KAAA;AAChC,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAI,IAAA;AACH,IAAA,MAAM,UAAU,MAAM,KAAA;AAAA,MACrB,CAAA,EAAG,QAAQ,CAAU,OAAA,EAAA,OAAO,SAAS,OAAQ,CAAA,GAAG,CAAW,QAAA,EAAA,OAAA,CAAQ,MAAM,CAAA,CAAA;AAAA,MACzE;AAAA,QACC,MAAQ,EAAA,KAAA;AAAA,QACR;AAAA;AACD,KACD;AAEA,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAI,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AAC3B,QAAA,MAAM,IAAI,WAAA,CAAY,2BAA6B,EAAA,OAAA,CAAQ,MAAQ,EAAA;AAAA,UAClE,KAAO,EAAA,SAAA;AAAA,UACP,IAAM,EAAA,YAAA;AAAA,UACN,QAAU,EAAA;AAAA,YACT,YAAY,OAAQ,CAAA;AAAA;AACrB,SACA,CAAA;AAAA;AAEF,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC/B,IAAA,MAAM,UAA6B,GAAI,CAAA,IAAA;AACvC,IAAO,OAAA,OAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA,CAAY,CAAgC,6BAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAEtE,IAAA,MAAM,IAAI,WAAA;AAAA,MACT;AAAA,KACD;AAAA;AAEF;;;AC5Fa,IAAA,iBAAA,GAAoB,OAChC,MACqB,KAAA;AACrB,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAA,IAAI,QAAmB,GAAA,0BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA,EAAE,GAAG,MAAA,CAAO,aAAc,EAAA;AAAA,GAC9B,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAI,IAAA;AACH,IAAA,MAAM,OAAU,GAAA,MAAM,KAAM,CAAA,CAAA,EAAG,QAAQ,CAA6B,yBAAA,CAAA,EAAA;AAAA,MACnE,MAAQ,EAAA,KAAA;AAAA,MACR;AAAA,KACA,CAAA;AACD,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAEF,IAAM,MAAA,GAAA,GAA8B,MAAM,OAAA,CAAQ,IAAK,EAAA;AACvD,IAAA,OAAO,GAAI,CAAA,cAAA;AAAA,WACH,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA;AAAA,QACT,CAAA,oCAAA,EAAuC,MAAM,OAAO,CAAA;AAAA,OACrD;AAAA;AAED,IAAA,MAAM,IAAI,WAAA;AAAA,MACT;AAAA,KACD;AAAA;AAEF;;;AC/DO,IAAM,UAAa,GAAA,OACzB,MACA,EAAA,OAAA,EACA,OAC2B,KAAA;AAC3B,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAA,IACC,CAAC,OAAA,CAAQ,IACR,KAAA,CAAC,OAAQ,CAAA,SAAA,IAAa,MAAO,CAAA,IAAA,CAAK,OAAQ,CAAA,SAAS,CAAE,CAAA,MAAA,KAAW,CAChE,CAAA,EAAA;AACD,IAAA,MAAM,IAAI,eAAA;AAAA,MACT;AAAA,KACD;AAAA;AAGD,EAAA,MAAM,OAA4B,EAAC;AAEnC,EAAI,IAAA,OAAA,CAAQ,SAAS,MAAW,EAAA;AAC/B,IAAA,IAAA,CAAK,OAAO,OAAQ,CAAA,IAAA;AAAA;AAErB,EAAI,IAAA,OAAA,CAAQ,aAAa,MAAO,CAAA,IAAA,CAAK,QAAQ,SAAS,CAAA,CAAE,SAAS,CAAG,EAAA;AACnE,IAAA,IAAA,CAAK,YAAY,OAAQ,CAAA,SAAA;AAAA;AAG1B,EAAM,MAAA,IAAA,GAAO,IAAK,CAAA,SAAA,CAAU,IAAI,CAAA;AAEhC,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAI,IAAA;AACH,IAAM,MAAA,OAAA,GAAU,MAAM,KAAA,CAAM,CAAG,EAAA,QAAQ,UAAU,OAAO,CAAA,CAAA,EAAI,OAAQ,CAAA,EAAE,CAAI,CAAA,EAAA;AAAA,MACzE,MAAQ,EAAA,KAAA;AAAA,MACR,OAAA;AAAA,MACA;AAAA,KACA,CAAA;AAED,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC/B,IAAA,MAAM,UAAwB,GAAI,CAAA,IAAA;AAClC,IAAO,OAAA,OAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA,CAAY,CAAgC,6BAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAEtE,IAAM,MAAA,IAAI,YAAY,+CAA+C,CAAA;AAAA;AAEvE;;;AClGa,IAAA,aAAA,GAAgB,OAC5B,MAAA,EACA,MACoC,KAAA;AACpC,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAA,IAAI,QAAmB,GAAA,iCAAA;AAEvB,EAAA,IAAI,OAAO,SAAW,EAAA;AACrB,IAAA,QAAA,GAAW,MAAO,CAAA,SAAA;AAAA;AAGnB,EAAI,IAAA;AACH,IAAA,MAAM,UAAU,MAAM,KAAA,CAAM,GAAG,QAAQ,CAAA,iBAAA,EAAoB,MAAM,CAAI,CAAA,EAAA;AAAA,MACpE,MAAQ,EAAA,MAAA;AAAA,MACR;AAAA,KACA,CAAA;AAED,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,GAAA,GAA6B,MAAM,OAAA,CAAQ,IAAK,EAAA;AACtD,IAAO,OAAA,GAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA;AAAA,QACT,CAAA,iCAAA,EAAoC,MAAM,OAAO,CAAA;AAAA,OAClD;AAAA;AAED,IAAM,MAAA,IAAI,YAAY,kDAAkD,CAAA;AAAA;AAE1E;;;AChEa,IAAA,cAAA,GAAiB,OAC7B,MAAA,EACA,OACsD,KAAA;AACtD,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAA,IAAI,QAAmB,GAAA,iCAAA;AAEvB,EAAA,IAAI,OAAO,SAAW,EAAA;AACrB,IAAA,QAAA,GAAW,MAAO,CAAA,SAAA;AAAA;AAGnB,EAAM,MAAA,IAAA,GAAO,KAAK,SAAU,CAAA;AAAA,IAC3B,MAAM,OAAQ,CAAA;AAAA,GACd,CAAA;AAED,EAAI,IAAA;AACH,IAAA,MAAM,UAAU,MAAM,KAAA;AAAA,MACrB,CAAG,EAAA,QAAQ,CAAqB,kBAAA,EAAA,OAAA,CAAQ,OAAO,CAAA,MAAA,CAAA;AAAA,MAC/C;AAAA,QACC,MAAQ,EAAA,MAAA;AAAA,QACR,OAAA;AAAA,QACA;AAAA;AACD,KACD;AAEA,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC/B,IAAA,MAAM,UAAkC,GAAI,CAAA,IAAA;AAE5C,IAAA,IAAI,QAAQ,UAAY,EAAA;AACvB,MAAI,IAAA,OAAA,CAAQ,OAAQ,CAAA,MAAA,KAAW,CAAG,EAAA;AACjC,QAAM,MAAA,IAAI,YAAY,CAAqC,mCAAA,CAAA,CAAA;AAAA;AAE5D,MAAA,MAAM,GAAM,GAAA,OAAA,CAAQ,OAAQ,CAAA,CAAC,CAAE,CAAA,GAAA;AAC/B,MAAA,MAAM,OAA0B,GAAA,MAAM,MAAO,CAAA,MAAA,EAAQ,KAAK,OAAO,CAAA;AACjE,MAAO,OAAA,OAAA;AAAA;AAGR,IAAO,OAAA,OAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA;AAAA,QACT,CAAA,iCAAA,EAAoC,MAAM,OAAO,CAAA;AAAA,OAClD;AAAA;AAED,IAAM,MAAA,IAAI,YAAY,kDAAkD,CAAA;AAAA;AAE1E;;;AC5Fa,IAAA,KAAA,GAAQ,OACpB,MAAA,EACA,OAC+B,KAAA;AAC/B,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAM,MAAA,MAAA,GAAS,IAAI,eAAgB,CAAA;AAAA,IAClC,aAAe,EAAA;AAAA,GACf,CAAA;AAED,EAAA,IAAI,OAAS,EAAA;AACZ,IAAA,MAAM,EAAE,GAAK,EAAA,MAAA,EAAQ,IAAM,EAAA,KAAA,EAAO,WAAc,GAAA,OAAA;AAEhD,IAAA,IAAI,KAAY,MAAA,CAAA,MAAA,CAAO,KAAO,EAAA,GAAA,CAAI,UAAU,CAAA;AAC5C,IAAA,IAAI,QAAe,MAAA,CAAA,MAAA,CAAO,QAAU,EAAA,MAAA,CAAO,UAAU,CAAA;AACrD,IAAA,IAAI,MAAa,MAAA,CAAA,MAAA,CAAO,MAAQ,EAAA,IAAA,CAAK,UAAU,CAAA;AAC/C,IAAA,IAAI,OAAc,MAAA,CAAA,MAAA,CAAO,OAAS,EAAA,KAAA,CAAM,UAAU,CAAA;AAClD,IAAA,IAAI,WAAkB,MAAA,CAAA,MAAA,CAAO,WAAa,EAAA,SAAA,CAAU,UAAU,CAAA;AAAA;AAG/D,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAA,MAAM,MAAM,CAAG,EAAA,QAAQ,CAA4B,yBAAA,EAAA,MAAA,CAAO,UAAU,CAAA,CAAA;AAEpE,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MAEzC,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAI,IAAA;AACH,IAAM,MAAA,OAAA,GAAU,MAAM,KAAA,CAAM,GAAK,EAAA;AAAA,MAChC,MAAQ,EAAA,KAAA;AAAA,MACR;AAAA,KACA,CAAA;AACD,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAEF,IAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC/B,IAAA,MAAM,UAA4B,GAAI,CAAA,IAAA;AACtC,IAAO,OAAA,OAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA,CAAY,CAA6B,0BAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAEnE,IAAM,MAAA,IAAI,YAAY,kDAAkD,CAAA;AAAA;AAE1E;;;AC1Fa,IAAA,gBAAA,GAAmB,OAC/B,MAAA,EACA,EACqB,KAAA;AACrB,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAI,IAAA;AACH,IAAA,MAAM,WAAW,MAAM,KAAA,CAAM,GAAG,QAAQ,CAAA,yBAAA,EAA4B,EAAE,CAAI,CAAA,EAAA;AAAA,MACzE,MAAQ,EAAA,QAAA;AAAA,MACR;AAAA,KACA,CAAA;AAED,IAAI,IAAA,CAAC,SAAS,EAAI,EAAA;AACjB,MAAM,MAAA,SAAA,GAAY,MAAM,QAAA,CAAS,IAAK,EAAA;AACtC,MAAI,IAAA,QAAA,CAAS,WAAW,GAAK,EAAA;AAC5B,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,QAAS,CAAA,MAAA;AAAA,UACT;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,QAAS,CAAA;AAAA;AACtB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAA,CAAa,CAAc,UAAA,CAAA,EAAA,QAAA,CAAS,MAAQ,EAAA;AAAA,QACrD,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,QAAS,CAAA;AAAA;AACtB,OACA,CAAA;AAAA;AAEF,IAAO,OAAA,IAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA,CAAY,CAAkC,+BAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAExE,IAAA,MAAM,IAAI,WAAA;AAAA,MACT;AAAA,KACD;AAAA;AAEF;;;ACjEO,IAAM,MAAS,GAAA,OACrB,MACA,EAAA,GAAA,EACA,aACA,OAC6B,KAAA;AAC7B,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAI,IAAA,IAAA;AACJ,EAAA,IAAI,SAAiB,CAAG,EAAA,MAAA,EAAQ,aAAa,CAAI,CAAA,EAAA,WAAW,IAAI,GAAG,CAAA,CAAA;AAEnE,EAAM,MAAA,MAAA,GAAS,IAAI,eAAgB,EAAA;AAEnC,EAAA,IAAI,OAAS,EAAA;AACZ,IAAI,IAAA,OAAA,CAAQ,OAAc,MAAA,CAAA,MAAA,CAAO,aAAa,OAAQ,CAAA,KAAA,CAAM,UAAU,CAAA;AACtE,IAAI,IAAA,OAAA,CAAQ,QAAe,MAAA,CAAA,MAAA,CAAO,cAAc,OAAQ,CAAA,MAAA,CAAO,UAAU,CAAA;AACzE,IAAI,IAAA,OAAA,CAAQ,KAAY,MAAA,CAAA,MAAA,CAAO,WAAW,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAA;AAChE,IAAA,IAAI,QAAQ,GAAK,EAAA,MAAA,CAAO,MAAO,CAAA,SAAA,EAAW,QAAQ,GAAG,CAAA;AACrD,IAAA,IAAI,QAAQ,OAAS,EAAA,MAAA,CAAO,MAAO,CAAA,aAAA,EAAe,QAAQ,OAAO,CAAA;AACjE,IAAA,IAAI,OAAQ,CAAA,OAAA;AACX,MAAA,MAAA,CAAO,MAAO,CAAA,aAAA,EAAe,OAAQ,CAAA,OAAA,CAAQ,UAAU,CAAA;AACxD,IAAA,IAAI,QAAQ,MAAQ,EAAA,MAAA,CAAO,MAAO,CAAA,YAAA,EAAc,QAAQ,MAAM,CAAA;AAC9D,IAAA,IAAI,QAAQ,SAAc,KAAA,MAAA;AACzB,MAAA,MAAA,CAAO,MAAO,CAAA,UAAA,EAAY,OAAQ,CAAA,SAAA,CAAU,UAAU,CAAA;AACvD,IAAA,IAAI,OAAQ,CAAA,OAAA;AACX,MAAA,MAAA,CAAO,MAAO,CAAA,aAAA,EAAe,OAAQ,CAAA,OAAA,CAAQ,UAAU,CAAA;AACxD,IAAA,IAAI,QAAQ,OAAY,KAAA,IAAA,EAAa,MAAA,CAAA,MAAA,CAAO,eAAe,UAAU,CAAA;AACrE,IAAA,IAAI,QAAQ,QAAU,EAAA,MAAA,CAAO,MAAO,CAAA,cAAA,EAAgB,QAAQ,QAAQ,CAAA;AAAA;AAGrE,EAAA,IAAI,QAAQ,gBAAkB,EAAA;AAC7B,IAAO,MAAA,CAAA,MAAA,CAAO,oBAAsB,EAAA,MAAA,CAAO,gBAAgB,CAAA;AAAA;AAG5D,EAAM,MAAA,WAAA,GAAc,OAAO,QAAS,EAAA;AACpC,EAAA,IAAI,WAAa,EAAA;AAChB,IAAA,MAAA,IAAU,IAAI,WAAW,CAAA,CAAA;AAAA;AAG1B,EAAA,IAAI,gBAAgB,MAAQ,EAAA;AAC3B,IAAM,MAAA,OAAA,GAAU,MAAM,KAAA,CAAM,MAAM,CAAA;AAElC,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,WAAA,GACL,OAAQ,CAAA,OAAA,CAAQ,GAAI,CAAA,cAAc,GAAG,KAAM,CAAA,GAAG,CAAE,CAAA,CAAC,CAAK,IAAA,IAAA;AAEvD,IAAI,IAAA,WAAA,EAAa,QAAS,CAAA,kBAAkB,CAAG,EAAA;AAC9C,MAAO,IAAA,GAAA,MAAM,QAAQ,IAAK,EAAA;AAAA,KAChB,MAAA,IAAA,WAAA,EAAa,QAAS,CAAA,OAAO,CAAG,EAAA;AAC1C,MAAO,IAAA,GAAA,MAAM,QAAQ,IAAK,EAAA;AAAA,KACpB,MAAA;AACN,MAAO,IAAA,GAAA,MAAM,QAAQ,IAAK,EAAA;AAAA;AAG3B,IAAA,MAAM,GAAsB,GAAA;AAAA,MAC3B,IAAA;AAAA,MACA;AAAA,KACD;AAEA,IAAO,OAAA,GAAA;AAAA;AAGR,EAAM,MAAA,IAAA,GAAO,KAAK,KAAM,CAAA,iBAAA,IAAI,MAAO,EAAA,OAAA,KAAY,GAAI,CAAA;AAEnD,EAAM,MAAA,OAAA,GAAU,KAAK,SAAU,CAAA;AAAA,IAC9B,GAAK,EAAA,MAAA;AAAA,IACL,IAAA;AAAA,IACA,OAAS,EAAA,EAAA;AAAA,IACT,MAAQ,EAAA;AAAA,GACR,CAAA;AAED,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,cAAgB,EAAA,kBAAA;AAAA,MAChB,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAA,MAAM,gBAAmB,GAAA,MAAM,KAAM,CAAA,CAAA,EAAG,QAAQ,CAAe,WAAA,CAAA,EAAA;AAAA,IAC9D,MAAQ,EAAA,MAAA;AAAA,IACR,OAAA;AAAA,IACA,IAAM,EAAA;AAAA,GACN,CAAA;AAED,EAAM,MAAA,SAAA,GAAY,MAAM,gBAAA,CAAiB,IAAK,EAAA;AAE9C,EAAI,IAAA;AACH,IAAA,MAAM,OAAU,GAAA,MAAM,KAAM,CAAA,SAAA,CAAU,IAAI,CAAA;AAE1C,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,WAAA,GACL,OAAQ,CAAA,OAAA,CAAQ,GAAI,CAAA,cAAc,GAAG,KAAM,CAAA,GAAG,CAAE,CAAA,CAAC,CAAK,IAAA,IAAA;AAEvD,IAAI,IAAA,WAAA,EAAa,QAAS,CAAA,kBAAkB,CAAG,EAAA;AAC9C,MAAO,IAAA,GAAA,MAAM,QAAQ,IAAK,EAAA;AAAA,KAChB,MAAA,IAAA,WAAA,EAAa,QAAS,CAAA,OAAO,CAAG,EAAA;AAC1C,MAAO,IAAA,GAAA,MAAM,QAAQ,IAAK,EAAA;AAAA,KACpB,MAAA;AACN,MAAO,IAAA,GAAA,MAAM,QAAQ,IAAK,EAAA;AAAA;AAG3B,IAAA,MAAM,GAAsB,GAAA;AAAA,MAC3B,IAAA;AAAA,MACA;AAAA,KACD;AAEA,IAAO,OAAA,GAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA,CAAY,CAA4B,yBAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAElE,IAAA,MAAM,IAAI,WAAA;AAAA,MACT;AAAA,KACD;AAAA;AAEF;;;AC9LO,IAAM,cAAiB,GAAA,OAC7B,MACA,EAAA,GAAA,EACA,aACqB,KAAA;AACrB,EAAI,IAAA,MAAA;AACJ,EAAI,IAAA,MAAA,GACH,aAAiB,IAAA,MAAA,EAAQ,aAAiB,IAAA,8BAAA;AAC3C,EAAS,MAAA,GAAA,MAAM,uBAAwB,CAAA,GAAA,EAAK,MAAM,CAAA;AAClD,EAAA,IAAI,QAAQ,gBAAkB,EAAA;AAC7B,IAAG,CAAA,EAAA,MAAM,CAAuB,oBAAA,EAAA,MAAA,EAAQ,gBAAgB,CAAA,CAAA;AAAA;AAEzD,EAAO,OAAA,MAAA;AACR;;;ACJO,IAAM,gBAAmB,GAAA,OAC/B,MACA,EAAA,OAAA,EACA,OACqB,KAAA;AACrB,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAI,IAAA,OAAA;AAEJ,EAAA,IAAI,SAAS,OAAS,EAAA;AACrB,IAAU,OAAA,GAAA,OAAA,CAAQ,QAAQ,UAAW,CAAA,UAAU,IAC5C,OAAQ,CAAA,OAAA,GACR,CAAW,QAAA,EAAA,OAAA,CAAQ,OAAO,CAAA,CAAA;AAAA,GACvB,MAAA;AACN,IAAA,OAAA,GAAU,MAAO,CAAA,aAAA;AAAA;AAGlB,EAAA,IAAI,MAAiB,GAAA,CAAA,EAAG,OAAO,CAAA,OAAA,EAAU,QAAQ,GAAG,CAAA,CAAA;AAEpD,EAAM,MAAA,MAAA,GAAS,IAAI,eAAgB,EAAA;AAEnC,EAAA,IAAI,OAAS,EAAA;AACZ,IAAI,IAAA,OAAA,CAAQ,OAAc,MAAA,CAAA,MAAA,CAAO,aAAa,OAAQ,CAAA,KAAA,CAAM,UAAU,CAAA;AACtE,IAAI,IAAA,OAAA,CAAQ,QAAe,MAAA,CAAA,MAAA,CAAO,cAAc,OAAQ,CAAA,MAAA,CAAO,UAAU,CAAA;AACzE,IAAI,IAAA,OAAA,CAAQ,KAAY,MAAA,CAAA,MAAA,CAAO,WAAW,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAA;AAChE,IAAA,IAAI,QAAQ,GAAK,EAAA,MAAA,CAAO,MAAO,CAAA,SAAA,EAAW,QAAQ,GAAG,CAAA;AACrD,IAAA,IAAI,QAAQ,OAAS,EAAA,MAAA,CAAO,MAAO,CAAA,aAAA,EAAe,QAAQ,OAAO,CAAA;AACjE,IAAA,IAAI,OAAQ,CAAA,OAAA;AACX,MAAA,MAAA,CAAO,MAAO,CAAA,aAAA,EAAe,OAAQ,CAAA,OAAA,CAAQ,UAAU,CAAA;AACxD,IAAA,IAAI,QAAQ,MAAQ,EAAA,MAAA,CAAO,MAAO,CAAA,YAAA,EAAc,QAAQ,MAAM,CAAA;AAC9D,IAAA,IAAI,QAAQ,SAAc,KAAA,MAAA;AACzB,MAAA,MAAA,CAAO,MAAO,CAAA,UAAA,EAAY,OAAQ,CAAA,SAAA,CAAU,UAAU,CAAA;AACvD,IAAA,IAAI,OAAQ,CAAA,OAAA;AACX,MAAA,MAAA,CAAO,MAAO,CAAA,aAAA,EAAe,OAAQ,CAAA,OAAA,CAAQ,UAAU,CAAA;AACxD,IAAA,IAAI,QAAQ,OAAY,KAAA,IAAA,EAAa,MAAA,CAAA,MAAA,CAAO,eAAe,UAAU,CAAA;AACrE,IAAA,IAAI,QAAQ,QAAU,EAAA,MAAA,CAAO,MAAO,CAAA,cAAA,EAAgB,QAAQ,QAAQ,CAAA;AAAA;AAGrE,EAAM,MAAA,WAAA,GAAc,OAAO,QAAS,EAAA;AAEpC,EAAA,IAAI,WAAa,EAAA;AAChB,IAAA,MAAA,IAAU,IAAI,WAAW,CAAA,CAAA;AAAA;AAG1B,EAAM,MAAA,IAAA,GAAO,OAAS,EAAA,IAAA,IAAQ,IAAK,CAAA,KAAA,CAAA,qBAAU,IAAK,EAAA,EAAE,OAAQ,EAAA,GAAI,GAAI,CAAA;AAEpE,EAAM,MAAA,OAAA,GAAU,KAAK,SAAU,CAAA;AAAA,IAC9B,GAAK,EAAA,MAAA;AAAA,IACL,IAAA;AAAA,IACA,SAAS,OAAQ,CAAA,OAAA;AAAA,IACjB,MAAQ,EAAA;AAAA,GACR,CAAA;AAED,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,cAAgB,EAAA,kBAAA;AAAA,MAChB,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAI,IAAA;AACH,IAAA,MAAM,OAAU,GAAA,MAAM,KAAM,CAAA,CAAA,EAAG,QAAQ,CAAgC,4BAAA,CAAA,EAAA;AAAA,MACtE,MAAQ,EAAA,MAAA;AAAA,MACR,OAAA;AAAA,MACA,IAAM,EAAA;AAAA,KACN,CAAA;AAED,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC/B,IAAA,OAAO,GAAI,CAAA,IAAA;AAAA,WACH,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA;AAAA,QACT,CAAA,kCAAA,EAAqC,MAAM,OAAO,CAAA;AAAA,OACnD;AAAA;AAED,IAAM,MAAA,IAAI,YAAY,oDAAoD,CAAA;AAAA;AAE5E;;;ACxHO,IAAM,UAAa,GAAA,OACzB,MACA,EAAA,OAAA,EACA,OACyC,KAAA;AACzC,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAMA,MAAAA,KAAAA,GAAO,CAAC,YAAwC,KAAA;AACrD,IAAO,OAAA,IAAI,OAAQ,CAAA,CAAC,OAAY,KAAA;AAC/B,MAAA,UAAA,CAAW,SAAS,YAAY,CAAA;AAAA,KAChC,CAAA;AAAA,GACF;AAEA,EAAA,MAAM,YAAwC,EAAC;AAE/C,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAW,KAAA,MAAA,EAAA,IAAM,QAAQ,KAAO,EAAA;AAC/B,IAAI,IAAA;AACH,MAAA,MAAM,WAAW,MAAM,KAAA;AAAA,QACtB,CAAA,EAAG,QAAQ,CAAW,QAAA,EAAA,OAAO,IAAI,OAAQ,CAAA,OAAO,QAAQ,EAAE,CAAA,CAAA;AAAA,QAC1D;AAAA,UACC,MAAQ,EAAA,KAAA;AAAA,UACR;AAAA;AACD,OACD;AAEA,MAAA,MAAMA,MAAK,GAAG,CAAA;AAEd,MAAI,IAAA,CAAC,SAAS,EAAI,EAAA;AACjB,QAAM,MAAA,SAAA,GAAY,MAAM,QAAA,CAAS,IAAK,EAAA;AACtC,QAAI,IAAA,QAAA,CAAS,WAAW,GAAK,EAAA;AAC5B,UAAA,MAAM,IAAI,mBAAA;AAAA,YACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,YACnC,QAAS,CAAA,MAAA;AAAA,YACT;AAAA,cACC,KAAO,EAAA,SAAA;AAAA,cACP,IAAM,EAAA,YAAA;AAAA,cACN,QAAU,EAAA;AAAA,gBACT,YAAY,QAAS,CAAA;AAAA;AACtB;AACD,WACD;AAAA;AAED,QAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,SAAS,MAAQ,EAAA;AAAA,UACnE,KAAO,EAAA,SAAA;AAAA,UACP,IAAM,EAAA,YAAA;AAAA,UACN,QAAU,EAAA;AAAA,YACT,YAAY,QAAS,CAAA;AAAA;AACtB,SACA,CAAA;AAAA;AAGF,MAAA,SAAA,CAAU,IAAK,CAAA;AAAA,QACd,EAAA;AAAA,QACA,QAAQ,QAAS,CAAA;AAAA,OACjB,CAAA;AAAA,aACO,KAAO,EAAA;AACf,MAAI,IAAA,YAAA;AAEJ,MAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,QAAA,YAAA,GAAe,KAAM,CAAA,OAAA;AAAA,OACtB,MAAA,IAAW,iBAAiB,KAAO,EAAA;AAClC,QAAA,YAAA,GAAe,CAAqB,kBAAA,EAAA,EAAE,CAAc,WAAA,EAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AAAA,OAC3D,MAAA;AACN,QAAA,YAAA,GAAe,+CAA+C,EAAE,CAAA,SAAA,CAAA;AAAA;AAGjE,MAAA,SAAA,CAAU,IAAK,CAAA;AAAA,QACd,EAAA;AAAA,QACA,MAAQ,EAAA;AAAA,OACR,CAAA;AAAA;AACF;AAED,EAAO,OAAA,SAAA;AACR;;;ACjGO,IAAM,WAAc,GAAA,OAC1B,MACA,EAAA,OAAA,EACA,OACgC,KAAA;AAChC,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAM,MAAA,IAAA,GAAO,KAAK,SAAU,CAAA;AAAA,IAC3B,MAAM,OAAQ,CAAA,IAAA;AAAA,IACd,WAAW,OAAQ,CAAA;AAAA,GACnB,CAAA;AAED,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAI,IAAA;AACH,IAAA,MAAM,UAAU,MAAM,KAAA,CAAM,GAAG,QAAQ,CAAA,QAAA,EAAW,OAAO,CAAI,CAAA,EAAA;AAAA,MAC5D,MAAQ,EAAA,MAAA;AAAA,MACR,OAAA;AAAA,MACA,IAAM,EAAA;AAAA,KACN,CAAA;AAED,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC/B,IAAA,MAAM,UAA6B,GAAI,CAAA,IAAA;AACvC,IAAO,OAAA,OAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA,CAAY,CAAiC,8BAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAEvE,IAAM,MAAA,IAAI,YAAY,kDAAkD,CAAA;AAAA;AAE1E;;;ACnFO,IAAM,WAAc,GAAA,OAC1B,MACA,EAAA,OAAA,EACA,OACqB,KAAA;AACrB,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAI,IAAA;AACH,IAAA,MAAM,UAAU,MAAM,KAAA;AAAA,MACrB,GAAG,QAAQ,CAAA,QAAA,EAAW,OAAO,CAAA,CAAA,EAAI,QAAQ,OAAO,CAAA,CAAA;AAAA,MAChD;AAAA,QACC,MAAQ,EAAA,QAAA;AAAA,QACR;AAAA;AACD,KACD;AAEA,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAA,MAAM,MAAc,OAAQ,CAAA,UAAA;AAC5B,IAAO,OAAA,GAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA,CAAY,CAAiC,8BAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAEvE,IAAM,MAAA,IAAI,YAAY,kDAAkD,CAAA;AAAA;AAE1E;;;ACvEO,IAAM,QAAW,GAAA,OACvB,MACA,EAAA,OAAA,EACA,OACgC,KAAA;AAChC,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAI,IAAA;AACH,IAAA,MAAM,UAAU,MAAM,KAAA;AAAA,MACrB,GAAG,QAAQ,CAAA,QAAA,EAAW,OAAO,CAAA,CAAA,EAAI,QAAQ,OAAO,CAAA,CAAA;AAAA,MAChD;AAAA,QACC,MAAQ,EAAA,KAAA;AAAA,QACR;AAAA;AACD,KACD;AAEA,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC/B,IAAA,MAAM,UAA6B,GAAI,CAAA,IAAA;AACvC,IAAO,OAAA,OAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA,CAAY,CAA8B,2BAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAEpE,IAAA,MAAM,IAAI,WAAA;AAAA,MACT;AAAA,KACD;AAAA;AAEF;;;AC7EO,IAAM,UAAa,GAAA,OACzB,MACA,EAAA,OAAA,EACA,OACgC,KAAA;AAChC,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAM,MAAA,MAAA,GAAS,IAAI,eAAgB,EAAA;AAEnC,EAAA,IAAI,OAAS,EAAA;AACZ,IAAA,MAAM,EAAE,SAAA,EAAW,IAAM,EAAA,KAAA,EAAO,UAAa,GAAA,OAAA;AAE7C,IAAA,IAAI,WAAkB,MAAA,CAAA,MAAA,CAAO,WAAa,EAAA,SAAA,CAAU,UAAU,CAAA;AAC9D,IAAA,IAAI,UAAiB,MAAA,CAAA,MAAA,CAAO,UAAY,EAAA,QAAA,CAAS,UAAU,CAAA;AAC3D,IAAA,IAAI,IAAM,EAAA,MAAA,CAAO,MAAO,CAAA,MAAA,EAAQ,IAAI,CAAA;AACpC,IAAA,IAAI,UAAU,MAAW,EAAA,MAAA,CAAO,OAAO,OAAS,EAAA,KAAA,CAAM,UAAU,CAAA;AAAA;AAGjE,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAI,IAAA;AACH,IAAA,MAAM,UAAU,MAAM,KAAA;AAAA,MACrB,GAAG,QAAQ,CAAA,QAAA,EAAW,OAAO,CAAI,CAAA,EAAA,MAAA,CAAO,UAAU,CAAA,CAAA;AAAA,MAClD;AAAA,QACC,MAAQ,EAAA,KAAA;AAAA,QACR;AAAA;AACD,KACD;AAEA,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC/B,IAAA,MAAM,UAA6B,GAAI,CAAA,IAAA;AACvC,IAAO,OAAA,OAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA,CAAY,CAAgC,6BAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAEtE,IAAM,MAAA,IAAI,YAAY,gDAAgD,CAAA;AAAA;AAExE;;;ACxFO,IAAM,eAAkB,GAAA,OAC9B,MACA,EAAA,OAAA,EACA,OACyC,KAAA;AACzC,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAMA,MAAAA,KAAAA,GAAO,CAAC,YAAwC,KAAA;AACrD,IAAO,OAAA,IAAI,OAAQ,CAAA,CAAC,OAAY,KAAA;AAC/B,MAAA,UAAA,CAAW,SAAS,YAAY,CAAA;AAAA,KAChC,CAAA;AAAA,GACF;AAEA,EAAA,MAAM,YAAwC,EAAC;AAE/C,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAW,KAAA,MAAA,EAAA,IAAM,QAAQ,KAAO,EAAA;AAC/B,IAAI,IAAA;AACH,MAAA,MAAM,WAAW,MAAM,KAAA;AAAA,QACtB,CAAA,EAAG,QAAQ,CAAW,QAAA,EAAA,OAAO,IAAI,OAAQ,CAAA,OAAO,QAAQ,EAAE,CAAA,CAAA;AAAA,QAC1D;AAAA,UACC,MAAQ,EAAA,QAAA;AAAA,UACR;AAAA;AACD,OACD;AAEA,MAAA,MAAMA,MAAK,GAAG,CAAA;AAEd,MAAI,IAAA,CAAC,SAAS,EAAI,EAAA;AACjB,QAAM,MAAA,SAAA,GAAY,MAAM,QAAA,CAAS,IAAK,EAAA;AACtC,QAAI,IAAA,QAAA,CAAS,WAAW,GAAK,EAAA;AAC5B,UAAA,MAAM,IAAI,mBAAA;AAAA,YACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,YACnC,QAAS,CAAA,MAAA;AAAA,YACT;AAAA,cACC,KAAO,EAAA,SAAA;AAAA,cACP,IAAM,EAAA,YAAA;AAAA,cACN,QAAU,EAAA;AAAA,gBACT,YAAY,QAAS,CAAA;AAAA;AACtB;AACD,WACD;AAAA;AAED,QAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,SAAS,MAAQ,EAAA;AAAA,UACnE,KAAO,EAAA,SAAA;AAAA,UACP,IAAM,EAAA,YAAA;AAAA,UACN,QAAU,EAAA;AAAA,YACT,YAAY,QAAS,CAAA;AAAA;AACtB,SACA,CAAA;AAAA;AAGF,MAAA,SAAA,CAAU,IAAK,CAAA;AAAA,QACd,EAAA;AAAA,QACA,QAAQ,QAAS,CAAA;AAAA,OACjB,CAAA;AAAA,aACO,KAAO,EAAA;AACf,MAAI,IAAA,YAAA;AAEJ,MAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,QAAA,YAAA,GAAe,KAAM,CAAA,OAAA;AAAA,OACtB,MAAA,IAAW,iBAAiB,KAAO,EAAA;AAClC,QAAA,YAAA,GAAe,CAAqB,kBAAA,EAAA,EAAE,CAAc,WAAA,EAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AAAA,OAC3D,MAAA;AACN,QAAA,YAAA,GAAe,+CAA+C,EAAE,CAAA,SAAA,CAAA;AAAA;AAGjE,MAAA,SAAA,CAAU,IAAK,CAAA;AAAA,QACd,EAAA;AAAA,QACA,MAAQ,EAAA;AAAA,OACR,CAAA;AAAA;AACF;AAED,EAAO,OAAA,SAAA;AACR;;;ACjGO,IAAM,WAAc,GAAA,OAC1B,MACA,EAAA,OAAA,EACA,OACgC,KAAA;AAChC,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAM,MAAA,IAAA,GAAO,KAAK,SAAU,CAAA;AAAA,IAC3B,MAAM,OAAQ,CAAA,IAAA;AAAA,IACd,WAAW,OAAQ,CAAA;AAAA,GACnB,CAAA;AAED,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAI,IAAA;AACH,IAAA,MAAM,UAAU,MAAM,KAAA;AAAA,MACrB,GAAG,QAAQ,CAAA,QAAA,EAAW,OAAO,CAAA,CAAA,EAAI,QAAQ,OAAO,CAAA,CAAA;AAAA,MAChD;AAAA,QACC,MAAQ,EAAA,KAAA;AAAA,QACR,OAAA;AAAA,QACA,IAAM,EAAA;AAAA;AACP,KACD;AAEA,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC/B,IAAA,MAAM,UAA6B,GAAI,CAAA,IAAA;AACvC,IAAO,OAAA,OAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA,CAAY,CAAiC,8BAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAEvE,IAAM,MAAA,IAAI,YAAY,gDAAgD,CAAA;AAAA;AAExE;;;ACtFa,IAAA,SAAA,GAAY,OACxB,MAAA,EACA,OAC0B,KAAA;AAC1B,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAM,MAAA,IAAA,GAAO,IAAK,CAAA,SAAA,CAAU,OAAO,CAAA;AAEnC,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAI,IAAA;AACH,IAAA,MAAM,OAAU,GAAA,MAAM,KAAM,CAAA,CAAA,EAAG,QAAQ,CAAgB,YAAA,CAAA,EAAA;AAAA,MACtD,MAAQ,EAAA,MAAA;AAAA,MACR,OAAA;AAAA,MACA,IAAM,EAAA;AAAA,KACN,CAAA;AAED,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,GAAA,GAAmB,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC5C,IAAO,OAAA,GAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA,CAAY,CAA+B,4BAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAErE,IAAM,MAAA,IAAI,YAAY,kDAAkD,CAAA;AAAA;AAE1E;;;ACrEa,IAAA,QAAA,GAAW,OACvB,MAAA,EACA,OAC4B,KAAA;AAC5B,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAM,MAAA,MAAA,GAAS,IAAI,eAAgB,EAAA;AAEnC,EAAA,IAAI,OAAS,EAAA;AACZ,IAAA,MAAM,EAAE,MAAQ,EAAA,IAAA,EAAM,OAAS,EAAA,UAAA,EAAY,WAAc,GAAA,OAAA;AAEzD,IAAA,IAAI,QAAe,MAAA,CAAA,MAAA,CAAO,QAAU,EAAA,MAAA,CAAO,UAAU,CAAA;AACrD,IAAA,IAAI,YAAY,MAAW,EAAA,MAAA,CAAO,OAAO,SAAW,EAAA,OAAA,CAAQ,UAAU,CAAA;AACtE,IAAA,IAAI,UAAe,KAAA,MAAA;AAClB,MAAA,MAAA,CAAO,MAAO,CAAA,YAAA,EAAc,UAAW,CAAA,QAAA,EAAU,CAAA;AAClD,IAAA,IAAI,SAAc,KAAA,MAAA;AACjB,MAAA,MAAA,CAAO,MAAO,CAAA,WAAA,EAAa,SAAU,CAAA,QAAA,EAAU,CAAA;AAChD,IAAA,IAAI,IAAM,EAAA,MAAA,CAAO,MAAO,CAAA,MAAA,EAAQ,IAAI,CAAA;AAAA;AAGrC,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAI,IAAA;AACH,IAAA,MAAM,UAAU,MAAM,KAAA;AAAA,MACrB,CAAG,EAAA,QAAQ,CAAgB,aAAA,EAAA,MAAA,CAAO,UAAU,CAAA,CAAA;AAAA,MAC5C;AAAA,QACC,MAAQ,EAAA,KAAA;AAAA,QACR;AAAA;AACD,KACD;AAEA,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,GAAA,GAAuB,MAAM,OAAA,CAAQ,IAAK,EAAA;AAChD,IAAA,OAAO,GAAI,CAAA,IAAA;AAAA,WACH,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA,CAAY,CAA8B,2BAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAEpE,IAAM,MAAA,IAAI,YAAY,kDAAkD,CAAA;AAAA;AAE1E;;;AC9FA,IAAMA,KAAAA,GAAO,CAAC,YAAwC,KAAA;AACrD,EAAO,OAAA,IAAI,OAAQ,CAAA,CAAC,OAAY,KAAA;AAC/B,IAAA,UAAA,CAAW,SAAS,YAAY,CAAA;AAAA,GAChC,CAAA;AACF,CAAA;AAEa,IAAA,UAAA,GAAa,OACzB,MAAA,EACA,IACkC,KAAA;AAClC,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,GAAG,MAAO,CAAA;AAAA,KACX;AACA,IAAU,OAAA,GAAA,EAAE,GAAG,MAAA,CAAO,aAAc,EAAA;AAAA,GAC9B,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAA,MAAM,YAAiC,EAAC;AAExC,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAA,KAAA,MAAW,OAAO,IAAM,EAAA;AACvB,IAAI,IAAA;AACH,MAAA,MAAM,UAAU,MAAM,KAAA,CAAM,GAAG,QAAQ,CAAA,aAAA,EAAgB,GAAG,CAAI,CAAA,EAAA;AAAA,QAC7D,MAAQ,EAAA,KAAA;AAAA,QACR;AAAA,OACA,CAAA;AAED,MAAA,MAAMA,MAAK,GAAG,CAAA;AAEd,MAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,QAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,QAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,UAAA,MAAM,IAAI,mBAAA;AAAA,YACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,YACnC,OAAQ,CAAA,MAAA;AAAA,YACR;AAAA,cACC,KAAO,EAAA,SAAA;AAAA,cACP,IAAM,EAAA,YAAA;AAAA,cACN,QAAU,EAAA;AAAA,gBACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,WACD;AAAA;AAED,QAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,UAClE,KAAO,EAAA,SAAA;AAAA,UACP,IAAM,EAAA,YAAA;AAAA,UACN,QAAU,EAAA;AAAA,YACT,YAAY,OAAQ,CAAA;AAAA;AACrB,SACA,CAAA;AAAA;AAGF,MAAM,MAAA,MAAA,GAAiB,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC1C,MAAA,SAAA,CAAU,IAAK,CAAA;AAAA,QACd,GAAA;AAAA,QACA,MAAQ,EAAA;AAAA,OACR,CAAA;AAAA,aACO,KAAO,EAAA;AACf,MAAI,IAAA,YAAA;AAEJ,MAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,QAAA,YAAA,GAAe,KAAM,CAAA,OAAA;AAAA,OACtB,MAAA,IAAW,iBAAiB,KAAO,EAAA;AAClC,QAAA,YAAA,GAAe,CAAsB,mBAAA,EAAA,GAAG,CAAK,EAAA,EAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AAAA,OACpD,MAAA;AACN,QAAA,YAAA,GAAe,gDAAgD,GAAG,CAAA,CAAA;AAAA;AAGnE,MAAA,SAAA,CAAU,IAAK,CAAA;AAAA,QACd,GAAA;AAAA,QACA,MAAQ,EAAA;AAAA,OACR,CAAA;AAAA;AACF;AAGD,EAAO,OAAA,SAAA;AACR;;;AC/FO,IAAM,YAAe,GAAA,OAC3B,MACA,EAAA,YAAA,EACA,SACA,OACI,KAAA;AACJ,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAM,MAAA,GAAA,GAA0B,OAAS,EAAA,IAAA,IAAQ,MAAQ,EAAA,SAAA;AAEzD,EAAA,MAAM,OAAO,OAAS,EAAA,QAAA,EAAU,IAC7B,GAAA,OAAA,EAAS,UAAU,IACnB,GAAA,eAAA;AAEH,EAAA,MAAM,MAAS,GAAA,MAAA,CAAO,IAAK,CAAA,YAAA,EAAc,QAAQ,CAAA;AAEjD,EAAA,MAAM,IAAO,GAAA,IAAI,IAAK,CAAA,CAAC,MAAM,CAAC,CAAA;AAE9B,EAAM,MAAA,IAAA,GAAO,IAAI,QAAS,EAAA;AAE1B,EAAK,IAAA,CAAA,MAAA,CAAO,MAAQ,EAAA,IAAA,EAAM,IAAI,CAAA;AAC9B,EAAK,IAAA,CAAA,MAAA,CAAO,WAAW,OAAO,CAAA;AAC9B,EAAK,IAAA,CAAA,MAAA,CAAO,QAAQ,IAAI,CAAA;AACxB,EAAA,IAAI,SAAS,OAAS,EAAA;AACrB,IAAK,IAAA,CAAA,MAAA,CAAO,UAAY,EAAA,OAAA,CAAQ,OAAO,CAAA;AAAA;AAExC,EAAI,IAAA,OAAA,EAAS,UAAU,SAAW,EAAA;AACjC,IAAA,IAAA,CAAK,OAAO,WAAa,EAAA,IAAA,CAAK,UAAU,OAAQ,CAAA,QAAA,CAAS,SAAS,CAAC,CAAA;AAAA;AAGpE,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,UAAU,GAAG,CAAA,CAAA;AAAA,MAC5B,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,UAAU,GAAG,CAAA,CAAA;AAAA,MAC5B,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAA,IAAI,QAAmB,GAAA,iCAAA;AAEvB,EAAA,IAAI,OAAO,SAAW,EAAA;AACrB,IAAA,QAAA,GAAW,MAAO,CAAA,SAAA;AAAA;AAGnB,EAAA,IAAI,SAAS,GAAK,EAAA;AACjB,IAAI,IAAA;AACH,MAAA,MAAM,OAAU,GAAA,MAAM,KAAM,CAAA,OAAA,CAAQ,GAAK,EAAA;AAAA,QACxC,MAAQ,EAAA,MAAA;AAAA,QACR,IAAM,EAAA;AAAA,OACN,CAAA;AAED,MAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,QAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,QAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,UAAA,MAAM,IAAI,mBAAA;AAAA,YACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,YACnC,OAAQ,CAAA,MAAA;AAAA,YACR;AAAA,cACC,KAAO,EAAA,SAAA;AAAA,cACP,IAAM,EAAA,YAAA;AAAA,cACN,QAAU,EAAA;AAAA,gBACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,WACD;AAAA;AAED,QAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,UAClE,KAAO,EAAA,SAAA;AAAA,UACP,IAAM,EAAA,YAAA;AAAA,UACN,QAAU,EAAA;AAAA,YACT,YAAY,OAAQ,CAAA;AAAA;AACrB,SACA,CAAA;AAAA;AAGF,MAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC/B,MAAA,MAAM,UAA0B,GAAI,CAAA,IAAA;AACpC,MAAO,OAAA,OAAA;AAAA,aACC,KAAO,EAAA;AACf,MAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,QAAM,MAAA,KAAA;AAAA;AAEP,MAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,QAAA,MAAM,IAAI,WAAA,CAAY,CAA4B,yBAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAElE,MAAA,MAAM,IAAI,WAAA;AAAA,QACT;AAAA,OACD;AAAA;AACD;AAGD,EAAI,IAAA;AACH,IAAA,MAAM,OAAU,GAAA,MAAM,KAAM,CAAA,CAAA,EAAG,QAAQ,CAAU,MAAA,CAAA,EAAA;AAAA,MAChD,MAAQ,EAAA,MAAA;AAAA,MACR,OAAA;AAAA,MACA,IAAM,EAAA;AAAA,KACN,CAAA;AAED,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC/B,IAAA,MAAM,UAA0B,GAAI,CAAA,IAAA;AACpC,IAAA,IAAI,SAAS,SAAW,EAAA;AACvB,MAAA,MAAM,YAAY,MAAM,KAAA;AAAA,QACvB,CAAG,EAAA,QAAQ,CAAoB,iBAAA,EAAA,OAAA,CAAQ,EAAE,CAAA,CAAA;AAAA,QACzC;AAAA,UACC,MAAQ,EAAA,MAAA;AAAA,UACR,OAAS,EAAA;AAAA,YACR,aAAA,EAAe,UAAU,GAAG,CAAA;AAAA;AAC7B;AACD,OACD;AACA,MAAA,IAAI,UAAU,EAAI,EAAA;AACjB,QAAA,OAAA,CAAQ,UAAa,GAAA,IAAA;AACrB,QAAO,OAAA,OAAA;AAAA,OACD,MAAA;AACN,QAAM,MAAA,SAAA,GAAY,MAAM,SAAA,CAAU,IAAK,EAAA;AACvC,QAAA,MAAM,IAAI,YAAA;AAAA,UACT,oCAAoC,SAAS,CAAA,CAAA;AAAA,UAC7C,SAAU,CAAA,MAAA;AAAA,UACV;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AACD;AAED,IAAO,OAAA,OAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA,CAAY,CAA4B,yBAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAElE,IAAA,MAAM,IAAI,WAAA;AAAA,MACT;AAAA,KACD;AAAA;AAEF;;;AC7KO,IAAM,qBAAwB,GAAA,OACpC,MACA,EAAA,OAAA,EACA,OACqB,KAAA;AACrB,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAe5D,EAAM,MAAA,IAAA,GAAO,OAAS,EAAA,IAAA,IAAQ,IAAK,CAAA,KAAA,CAAA,qBAAU,IAAK,EAAA,EAAE,OAAQ,EAAA,GAAI,GAAI,CAAA;AAEpE,EAAA,MAAM,OAAuB,GAAA;AAAA,IAC5B,IAAA;AAAA,IACA,SAAS,OAAQ,CAAA;AAAA,GAClB;AAEA,EAAA,IAAI,QAAQ,OAAS,EAAA;AACpB,IAAA,OAAA,CAAQ,WAAW,OAAQ,CAAA,OAAA;AAAA;AAG5B,EAAA,IAAI,QAAQ,IAAM,EAAA;AACjB,IAAA,OAAA,CAAQ,WAAW,OAAQ,CAAA,IAAA;AAAA;AAG5B,EAAA,IAAI,QAAQ,SAAW,EAAA;AACtB,IAAA,OAAA,CAAQ,YAAY,OAAQ,CAAA,SAAA;AAAA;AAG7B,EAAA,IAAI,OAAS,EAAA;AACZ,IAAA,OAAA,CAAQ,OAAU,GAAA,OAAA;AAAA;AAGnB,EAAA,IAAI,QAAQ,UAAY,EAAA;AACvB,IAAA,OAAA,CAAQ,aAAa,OAAQ,CAAA,UAAA;AAAA;AAG9B,EAAA,IAAI,QAAQ,WAAa,EAAA;AACxB,IAAA,OAAA,CAAQ,gBAAgB,OAAQ,CAAA,WAAA;AAAA;AAGjC,EAAA,IAAI,QAAQ,SAAW,EAAA;AACtB,IAAA,OAAA,CAAQ,mBAAmB,OAAQ,CAAA,SAAA;AAAA;AAGpC,EAAA,IAAI,QAAmB,GAAA,iCAAA;AAEvB,EAAA,IAAI,OAAO,SAAW,EAAA;AACrB,IAAA,QAAA,GAAW,MAAO,CAAA,SAAA;AAAA;AAGnB,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,cAAgB,EAAA,kBAAA;AAAA,MAChB,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAI,IAAA;AACH,IAAA,MAAM,OAAU,GAAA,MAAM,KAAM,CAAA,CAAA,EAAG,QAAQ,CAAe,WAAA,CAAA,EAAA;AAAA,MACrD,MAAQ,EAAA,MAAA;AAAA,MACR,OAAA;AAAA,MACA,KAAO,EAAA,UAAA;AAAA,MACP,IAAA,EAAM,IAAK,CAAA,SAAA,CAAU,OAAO;AAAA,KAC5B,CAAA;AAED,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC/B,IAAA,OAAO,GAAI,CAAA,IAAA;AAAA,WACH,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA;AAAA,QACT,CAAA,kCAAA,EAAqC,MAAM,OAAO,CAAA;AAAA,OACnD;AAAA;AAED,IAAM,MAAA,IAAI,YAAY,oDAAoD,CAAA;AAAA;AAE5E;;;AC1HO,IAAM,UAAa,GAAA,OACzB,MACA,EAAA,IAAA,EACA,SACA,OACI,KAAA;AACJ,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAM,MAAA,GAAA,GAA0B,OAAS,EAAA,IAAA,IAAQ,MAAO,CAAA,SAAA;AAExD,EAAA,IAAI,QAAmB,GAAA,iCAAA;AAEvB,EAAA,IAAI,OAAO,SAAW,EAAA;AACrB,IAAA,QAAA,GAAW,MAAO,CAAA,SAAA;AAAA;AAGnB,EAAI,IAAA,IAAA,CAAK,OAAO,QAAU,EAAA;AACzB,IAAIC,IAAAA,QAAAA;AAEJ,IAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,MAAAA,QAAU,GAAA;AAAA,QACT,aAAA,EAAe,UAAU,GAAG,CAAA,CAAA;AAAA,QAC5B,GAAG,MAAO,CAAA;AAAA,OACX;AAAA,KACM,MAAA;AACN,MAAAA,QAAU,GAAA;AAAA,QACT,aAAA,EAAe,UAAU,GAAG,CAAA,CAAA;AAAA,QAC5B,MAAQ,EAAA;AAAA,OACT;AAAA;AAGD,IAAA,MAAM,IAAO,GAAA,OAAA,EAAS,QAAU,EAAA,IAAA,IAAQ,KAAK,IAAQ,IAAA,eAAA;AAErD,IAAA,IAAI,QAAmB,GAAA,CAAA,SAAA,EAAY,IAAK,CAAA,IAAI,CAAC,CAAA,UAAA,EAAa,IAAK,CAAA,IAAA,CAAK,IAAI,CAAC,CAAY,SAAA,EAAA,IAAA,CAAK,OAAO,CAAC,CAAA,CAAA;AAElG,IAAA,IAAI,SAAS,OAAS,EAAA;AACrB,MAAA,QAAA,GAAW,CAAa,UAAA,EAAA,IAAA,CAAK,OAAQ,CAAA,OAAO,CAAC,CAAA,CAAA;AAAA;AAG9C,IAAI,IAAA,OAAA,EAAS,UAAU,SAAW,EAAA;AACjC,MACC,QAAA,GAAA,CAAA,WAAA,EAAc,KAAK,IAAK,CAAA,SAAA,CAAU,QAAQ,QAAS,CAAA,SAAS,CAAC,CAAC,CAAA,CAAA;AAAA;AAGhE,IAAA,IAAI,SAAS,UAAY,EAAA;AACxB,MAAW,QAAA,GAAA,CAAA,WAAA,EAAc,IAAK,CAAA,MAAM,CAAC,CAAA,CAAA;AAAA;AAGtC,IAAI,IAAA,eAAA,GAA0B,GAAG,QAAQ,CAAA,MAAA,CAAA;AAEzC,IAAA,IAAI,SAAS,GAAK,EAAA;AACjB,MAAA,eAAA,GAAkB,OAAQ,CAAA,GAAA;AAAA;AAG3B,IAAM,MAAA,MAAA,GAAS,MAAM,KAAA,CAAM,eAAiB,EAAA;AAAA,MAC3C,MAAQ,EAAA,MAAA;AAAA,MACR,OAAS,EAAA;AAAA,QACR,eAAA,EAAiB,CAAG,EAAA,IAAA,CAAK,IAAI,CAAA,CAAA;AAAA,QAC7B,iBAAmB,EAAA,QAAA;AAAA,QACnB,GAAGA;AAAA;AACJ,KACA,CAAA;AACD,IAAA,MAAM,GAAM,GAAA,MAAA,CAAO,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAA;AACzC,IAAA,IAAI,CAAC,GAAK,EAAA;AACT,MAAM,MAAA,SAAA,GAAY,MAAM,MAAA,CAAO,IAAK,EAAA;AACpC,MAAA,MAAM,IAAI,YAAA,CAAa,yBAA2B,EAAA,MAAA,CAAO,MAAQ,EAAA;AAAA,QAChE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,MAAO,CAAA,GAAA;AAAA,UACnB,gBAAgB,MAAO,CAAA;AAAA;AACxB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,SAAA,GAAY,KAAK,IAAO,GAAA,IAAA;AAC9B,IAAA,MAAM,WAAc,GAAA,IAAA,CAAK,IAAK,CAAA,IAAA,CAAK,OAAO,SAAS,CAAA;AACnD,IAAA,IAAI,MAAS,GAAA,CAAA;AACb,IAAI,IAAA,SAAA;AAEJ,IAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,WAAA,EAAa,CAAK,EAAA,EAAA;AACrC,MAAA,MAAM,KAAQ,GAAA,IAAA,CAAK,KAAM,CAAA,MAAA,EAAQ,SAAS,SAAS,CAAA;AACnD,MAAA,IAAI,UAAa,GAAA,CAAA;AACjB,MAAA,MAAM,UAAa,GAAA,CAAA;AAEnB,MAAA,OAAO,cAAc,UAAY,EAAA;AAChC,QAAI,IAAA;AACH,UAAY,SAAA,GAAA,MAAM,MAAM,GAAe,EAAA;AAAA,YACtC,MAAQ,EAAA,OAAA;AAAA,YACR,OAAS,EAAA;AAAA,cACR,cAAgB,EAAA,iCAAA;AAAA,cAChB,eAAA,EAAiB,OAAO,QAAS,EAAA;AAAA,cACjC,GAAGA;AAAA,aACJ;AAAA,YACA,IAAM,EAAA;AAAA,WACN,CAAA;AAED,UAAA,IAAI,UAAU,EAAI,EAAA;AACjB,YAAA;AAAA,WACM,MAAA;AACN,YAAM,MAAA,SAAA,GAAY,MAAM,SAAA,CAAU,IAAK,EAAA;AACvC,YAAA,MAAM,IAAI,KAAM,CAAA,CAAA,KAAA,EAAQ,UAAU,MAAM,CAAA,EAAA,EAAK,SAAS,CAAE,CAAA,CAAA;AAAA;AACzD,iBACQ,KAAO,EAAA;AACf,UAAA,UAAA,EAAA;AAEA,UAAA,IAAI,aAAa,UAAY,EAAA;AAE5B,YAAA,MAAM,SAAY,GAAA,SAAA,GACf,MAAM,SAAA,CAAU,MAAO,CAAA,KAAA,CAAM,MAAM,eAAe,IAClD,KAAiB,YAAA,KAAA,GAChB,KAAM,CAAA,OAAA,GACN,OAAO,KAAK,CAAA;AAChB,YAAA,MAAM,IAAI,YAAA;AAAA,cACT,CAAA,qCAAA,EAAwC,UAAU,CAAA,UAAA,EAAa,SAAS,CAAA,CAAA;AAAA,cACxE,WAAW,MAAU,IAAA,CAAA;AAAA,cACrB;AAAA,gBACC,KAAO,EAAA,SAAA;AAAA,gBACP,IAAM,EAAA,YAAA;AAAA,gBACN,QAAU,EAAA;AAAA,kBACT,UAAA,EAAY,WAAW,GAAO,IAAA,GAAA;AAAA,kBAC9B,gBAAkB,EAAA;AAAA;AACnB;AACD,aACD;AAAA;AAED,UAAM,MAAA,KAAA,GAAQ,IAAK,CAAA,GAAA,CAAI,GAAO,GAAA,IAAA,CAAK,IAAI,CAAG,EAAA,UAAA,GAAa,CAAC,CAAA,EAAG,GAAK,CAAA;AAChE,UAAA,MAAM,IAAI,OAAQ,CAAA,CAAC,YAAY,UAAW,CAAA,OAAA,EAAS,KAAK,CAAC,CAAA;AAAA;AAC1D;AAED,MAAA,MAAA,IAAU,KAAM,CAAA,IAAA;AAAA;AAGjB,IAAI,IAAA,SAAA,CAAU,WAAW,GAAK,EAAA;AAC7B,MAAA,MAAM,GAAM,GAAA,SAAA,CAAU,OAAQ,CAAA,GAAA,CAAI,YAAY,CAAA;AAC9C,MAAI,IAAA,YAAA;AACJ,MAAA,IAAI,OAAO,WAAa,EAAA;AACvB,QAAA,YAAA,GAAe,MAAO,CAAA,WAAA;AAAA,OAChB,MAAA;AACN,QAAe,YAAA,GAAA,6BAAA;AAAA;AAEhB,MAAA,MAAM,cAAc,MAAM,KAAA;AAAA,QACzB,CAAG,EAAA,YAAY,CAAU,OAAA,EAAA,OAAO,QAAQ,GAAG,CAAA,CAAA;AAAA,QAC3C;AAAA,UACC,MAAQ,EAAA,KAAA;AAAA,UACR,OAAS,EAAA;AAAA,YACR,aAAA,EAAe,UAAU,GAAG,CAAA;AAAA;AAC7B;AACD,OACD;AACA,MAAM,MAAA,QAAA,GAAW,MAAM,WAAA,CAAY,IAAK,EAAA;AACxC,MAAA,MAAMC,KAAuB,GAAA,QAAA,CAAS,IAAK,CAAA,KAAA,CAAM,CAAC,CAAA;AAClD,MAAA,IAAI,SAAS,SAAW,EAAA;AACvB,QAAA,MAAM,YAAY,MAAM,KAAA;AAAA,UACvB,CAAG,EAAA,QAAQ,CAAoBA,iBAAAA,EAAAA,KAAAA,CAAK,EAAE,CAAA,CAAA;AAAA,UACtC;AAAA,YACC,MAAQ,EAAA,MAAA;AAAA,YACR,OAAS,EAAA;AAAA,cACR,aAAA,EAAe,UAAU,GAAG,CAAA;AAAA;AAC7B;AACD,SACD;AACA,QAAA,IAAI,UAAU,EAAI,EAAA;AACjB,UAAAA,MAAK,UAAa,GAAA,IAAA;AAClB,UAAOA,OAAAA,KAAAA;AAAA,SACD,MAAA;AACN,UAAM,MAAA,SAAA,GAAY,MAAM,SAAA,CAAU,IAAK,EAAA;AACvC,UAAA,MAAM,IAAI,YAAA;AAAA,YACT,oCAAoC,SAAS,CAAA,CAAA;AAAA,YAC7C,SAAU,CAAA,MAAA;AAAA,YACV;AAAA,cACC,KAAO,EAAA,SAAA;AAAA,cACP,IAAM,EAAA,YAAA;AAAA,cACN,QAAU,EAAA;AAAA,gBACT,YAAY,SAAU,CAAA;AAAA;AACvB;AACD,WACD;AAAA;AACD;AAED,MAAOA,OAAAA,KAAAA;AAAA;AACR;AAGD,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,UAAU,GAAG,CAAA,CAAA;AAAA,MAC5B,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,UAAU,GAAG,CAAA,CAAA;AAAA,MAC5B,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAM,MAAA,IAAA,GAAO,IAAI,QAAS,EAAA;AAC1B,EAAA,IAAA,CAAK,MAAO,CAAA,MAAA,EAAQ,IAAM,EAAA,IAAA,CAAK,IAAI,CAAA;AAEnC,EAAK,IAAA,CAAA,MAAA,CAAO,WAAW,OAAO,CAAA;AAE9B,EAAA,IAAA,CAAK,OAAO,MAAQ,EAAA,OAAA,EAAS,UAAU,IAAQ,IAAA,IAAA,CAAK,QAAQ,eAAe,CAAA;AAE3E,EAAA,IAAI,SAAS,OAAS,EAAA;AACrB,IAAK,IAAA,CAAA,MAAA,CAAO,UAAY,EAAA,OAAA,CAAQ,OAAO,CAAA;AAAA;AAGxC,EAAI,IAAA,OAAA,EAAS,UAAU,SAAW,EAAA;AACjC,IAAA,IAAA,CAAK,OAAO,WAAa,EAAA,IAAA,CAAK,UAAU,OAAQ,CAAA,QAAA,CAAS,SAAS,CAAC,CAAA;AAAA;AAGpE,EAAA,IAAI,SAAS,UAAY,EAAA;AACxB,IAAK,IAAA,CAAA,MAAA,CAAO,cAAc,MAAM,CAAA;AAAA;AAGjC,EAAA,IAAI,SAAS,GAAK,EAAA;AACjB,IAAI,IAAA;AACH,MAAA,MAAM,OAAU,GAAA,MAAM,KAAM,CAAA,OAAA,CAAQ,GAAK,EAAA;AAAA,QACxC,MAAQ,EAAA,MAAA;AAAA,QACR,OAAA;AAAA,QACA,IAAM,EAAA;AAAA,OACN,CAAA;AAED,MAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,QAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,QAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,UAAA,MAAM,IAAI,mBAAA;AAAA,YACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,YACnC,OAAQ,CAAA,MAAA;AAAA,YACR;AAAA,cACC,KAAO,EAAA,SAAA;AAAA,cACP,IAAM,EAAA,YAAA;AAAA,cACN,QAAU,EAAA;AAAA,gBACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,WACD;AAAA;AAED,QAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,UAClE,KAAO,EAAA,SAAA;AAAA,UACP,IAAM,EAAA,YAAA;AAAA,UACN,QAAU,EAAA;AAAA,YACT,YAAY,OAAQ,CAAA;AAAA;AACrB,SACA,CAAA;AAAA;AAGF,MAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC/B,MAAA,MAAM,UAA0B,GAAI,CAAA,IAAA;AACpC,MAAO,OAAA,OAAA;AAAA,aACC,KAAO,EAAA;AACf,MAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,QAAM,MAAA,KAAA;AAAA;AAEP,MAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,QAAA,MAAM,IAAI,WAAA,CAAY,CAA4B,yBAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAElE,MAAA,MAAM,IAAI,WAAA;AAAA,QACT;AAAA,OACD;AAAA;AACD;AAGD,EAAI,IAAA;AACH,IAAA,MAAM,OAAU,GAAA,MAAM,KAAM,CAAA,CAAA,EAAG,QAAQ,CAAU,MAAA,CAAA,EAAA;AAAA,MAChD,MAAQ,EAAA,MAAA;AAAA,MACR,OAAA;AAAA,MACA,IAAM,EAAA;AAAA,KACN,CAAA;AAED,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAEF,IAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC/B,IAAA,MAAM,UAA0B,GAAI,CAAA,IAAA;AACpC,IAAA,IAAI,SAAS,SAAW,EAAA;AACvB,MAAA,MAAM,YAAY,MAAM,KAAA;AAAA,QACvB,CAAG,EAAA,QAAQ,CAAoB,iBAAA,EAAA,OAAA,CAAQ,EAAE,CAAA,CAAA;AAAA,QACzC;AAAA,UACC,MAAQ,EAAA,MAAA;AAAA,UACR,OAAS,EAAA;AAAA,YACR,aAAA,EAAe,UAAU,GAAG,CAAA;AAAA;AAC7B;AACD,OACD;AACA,MAAA,IAAI,UAAU,EAAI,EAAA;AACjB,QAAA,OAAA,CAAQ,UAAa,GAAA,IAAA;AACrB,QAAO,OAAA,OAAA;AAAA,OACD,MAAA;AACN,QAAM,MAAA,SAAA,GAAY,MAAM,SAAA,CAAU,IAAK,EAAA;AACvC,QAAA,MAAM,IAAI,YAAA;AAAA,UACT,oCAAoC,SAAS,CAAA,CAAA;AAAA,UAC7C,SAAU,CAAA,MAAA;AAAA,UACV;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AACD;AAED,IAAO,OAAA,OAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA,CAAY,CAAyB,sBAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAE/D,IAAM,MAAA,IAAI,YAAY,oDAAoD,CAAA;AAAA;AAE5E;;;ACjVO,IAAM,eAAkB,GAAA,OAC9B,MACA,EAAA,KAAA,EACA,SACA,OACI,KAAA;AACJ,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAM,MAAA,GAAA,GAA0B,OAAS,EAAA,IAAA,IAAQ,MAAQ,EAAA,SAAA;AAEzD,EAAM,MAAA,MAAA,GAAS,OAAS,EAAA,QAAA,EAAU,IAAQ,IAAA,iBAAA;AAE1C,EAAM,MAAA,IAAA,GAAO,IAAI,QAAS,EAAA;AAE1B,EAAA,KAAA,MAAW,IAAQ,IAAA,KAAA,CAAM,IAAK,CAAA,KAAK,CAAG,EAAA;AACrC,IAAA,MAAM,OAAO,IAAK,CAAA,kBAAA,IAAsB,GAAG,MAAM,CAAA,CAAA,EAAI,KAAK,IAAI,CAAA,CAAA;AAC9D,IAAK,IAAA,CAAA,MAAA,CAAO,MAAQ,EAAA,IAAA,EAAM,IAAI,CAAA;AAAA;AAiB/B,EAAK,IAAA,CAAA,MAAA;AAAA,IACJ,gBAAA;AAAA,IACA,KAAK,SAAU,CAAA;AAAA,MACd,IAAM,EAAA,MAAA;AAAA,MACN,SAAA,EAAW,SAAS,QAAU,EAAA;AAAA,KAC9B;AAAA,GACF;AAEA,EAAK,IAAA,CAAA,MAAA;AAAA,IACJ,eAAA;AAAA,IACA,KAAK,SAAU,CAAA;AAAA,MACd,SAAS,OAAS,EAAA,OAAA;AAAA,MAClB,UAAY,EAAA;AAAA,KACZ;AAAA,GACF;AAEA,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,UAAU,GAAG,CAAA,CAAA;AAAA,MAC5B,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,UAAU,GAAG,CAAA,CAAA;AAAA,MAC5B,MAAQ,EAAA;AAAA,KACT;AAAA;AAID,EAAA,IAAI,QAAmB,GAAA,gDAAA;AAEvB,EAAA,IAAI,OAAO,eAAiB,EAAA;AAC3B,IAAA,QAAA,GAAW,MAAO,CAAA,eAAA;AAAA;AAGnB,EAAI,IAAA;AAOH,IAAA,MAAM,OAAU,GAAA,MAAM,KAAM,CAAA,CAAA,EAAG,QAAQ,CAAI,CAAA,EAAA;AAAA,MAC1C,MAAQ,EAAA,MAAA;AAAA,MACR,OAAA;AAAA,MACA,IAAM,EAAA;AAAA,KACN,CAAA;AAED,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,EAAA;AAE/B,IAAA,MAAM,OAA0B,GAAA;AAAA,MAC/B,IAAI,GAAI,CAAA,EAAA;AAAA,MACR,MAAM,GAAI,CAAA,IAAA;AAAA,MACV,KAAK,GAAI,CAAA,QAAA;AAAA,MACT,MAAM,GAAI,CAAA,OAAA;AAAA,MACV,YAAY,GAAI,CAAA,SAAA;AAAA,MAChB,iBAAiB,GAAI,CAAA,aAAA;AAAA,MACrB,WAAW,GAAI,CAAA,QAAA;AAAA,MACf,UAAU,GAAI,CAAA,OAAA;AAAA,MACd,WAAW,GAAI,CAAA,SAAA;AAAA,MACf,UAAY,EAAA,KAAA;AAAA,MACZ,OAAS,EAAA;AAAA,KACV;AA+BA,IAAO,OAAA,OAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA,CAAY,CAA+B,4BAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAErE,IAAA,MAAM,IAAI,WAAA;AAAA,MACT;AAAA,KACD;AAAA;AAEF;;;ACjKO,IAAM,UAAa,GAAA,OACzB,MACA,EAAA,QAAA,EACA,SACA,OACI,KAAA;AACJ,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAM,MAAA,GAAA,GAA0B,OAAS,EAAA,IAAA,IAAQ,MAAQ,EAAA,SAAA;AAEzD,EAAM,MAAA,IAAA,GAAO,IAAK,CAAA,SAAA,CAAU,QAAQ,CAAA;AACpC,EAAA,MAAM,IAAO,GAAA,IAAI,IAAK,CAAA,CAAC,IAAI,CAAC,CAAA;AAC5B,EAAM,MAAA,IAAA,GAAO,IAAI,IAAA,CAAK,CAAC,IAAI,GAAG,WAAa,EAAA,EAAE,IAAM,EAAA,kBAAA,EAAoB,CAAA;AAEvE,EAAM,MAAA,IAAA,GAAO,IAAI,QAAS,EAAA;AAC1B,EAAA,IAAA,CAAK,MAAO,CAAA,MAAA,EAAQ,IAAM,EAAA,IAAA,CAAK,IAAI,CAAA;AACnC,EAAK,IAAA,CAAA,MAAA,CAAO,WAAW,OAAO,CAAA;AAC9B,EAAA,IAAA,CAAK,OAAO,MAAQ,EAAA,OAAA,EAAS,UAAU,IAAQ,IAAA,IAAA,CAAK,QAAQ,eAAe,CAAA;AAC3E,EAAA,IAAI,SAAS,OAAS,EAAA;AACrB,IAAK,IAAA,CAAA,MAAA,CAAO,UAAY,EAAA,OAAA,CAAQ,OAAO,CAAA;AAAA;AAExC,EAAI,IAAA,OAAA,EAAS,UAAU,SAAW,EAAA;AACjC,IAAA,IAAA,CAAK,OAAO,WAAa,EAAA,IAAA,CAAK,UAAU,OAAQ,CAAA,QAAA,CAAS,SAAS,CAAC,CAAA;AAAA;AAGpE,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,UAAU,GAAG,CAAA,CAAA;AAAA,MAC5B,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,UAAU,GAAG,CAAA,CAAA;AAAA,MAC5B,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAA,IAAI,QAAmB,GAAA,iCAAA;AAEvB,EAAA,IAAI,OAAO,SAAW,EAAA;AACrB,IAAA,QAAA,GAAW,MAAO,CAAA,SAAA;AAAA;AAGnB,EAAA,IAAI,SAAS,GAAK,EAAA;AACjB,IAAI,IAAA;AACH,MAAA,MAAM,OAAU,GAAA,MAAM,KAAM,CAAA,OAAA,CAAQ,GAAK,EAAA;AAAA,QACxC,MAAQ,EAAA,MAAA;AAAA,QACR,IAAM,EAAA;AAAA,OACN,CAAA;AAED,MAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,QAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,QAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,UAAA,MAAM,IAAI,mBAAA;AAAA,YACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,YACnC,OAAQ,CAAA,MAAA;AAAA,YACR;AAAA,cACC,KAAO,EAAA,SAAA;AAAA,cACP,IAAM,EAAA,YAAA;AAAA,cACN,QAAU,EAAA;AAAA,gBACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,WACD;AAAA;AAED,QAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,UAClE,KAAO,EAAA,SAAA;AAAA,UACP,IAAM,EAAA,YAAA;AAAA,UACN,QAAU,EAAA;AAAA,YACT,YAAY,OAAQ,CAAA;AAAA;AACrB,SACA,CAAA;AAAA;AAGF,MAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC/B,MAAA,MAAM,UAA0B,GAAI,CAAA,IAAA;AACpC,MAAO,OAAA,OAAA;AAAA,aACC,KAAO,EAAA;AACf,MAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,QAAM,MAAA,KAAA;AAAA;AAEP,MAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,QAAA,MAAM,IAAI,WAAA,CAAY,CAA4B,yBAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAElE,MAAA,MAAM,IAAI,WAAA;AAAA,QACT;AAAA,OACD;AAAA;AACD;AAGD,EAAI,IAAA;AACH,IAAA,MAAM,OAAU,GAAA,MAAM,KAAM,CAAA,CAAA,EAAG,QAAQ,CAAU,MAAA,CAAA,EAAA;AAAA,MAChD,MAAQ,EAAA,MAAA;AAAA,MACR,OAAA;AAAA,MACA,IAAM,EAAA;AAAA,KACN,CAAA;AAED,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC/B,IAAA,MAAM,UAA0B,GAAI,CAAA,IAAA;AACpC,IAAA,IAAI,SAAS,SAAW,EAAA;AACvB,MAAA,MAAM,YAAY,MAAM,KAAA;AAAA,QACvB,CAAG,EAAA,QAAQ,CAAoB,iBAAA,EAAA,OAAA,CAAQ,EAAE,CAAA,CAAA;AAAA,QACzC;AAAA,UACC,MAAQ,EAAA,MAAA;AAAA,UACR,OAAS,EAAA;AAAA,YACR,aAAA,EAAe,UAAU,GAAG,CAAA;AAAA;AAC7B;AACD,OACD;AACA,MAAA,IAAI,UAAU,EAAI,EAAA;AACjB,QAAA,OAAA,CAAQ,UAAa,GAAA,IAAA;AACrB,QAAO,OAAA,OAAA;AAAA,OACD,MAAA;AACN,QAAM,MAAA,SAAA,GAAY,MAAM,SAAA,CAAU,IAAK,EAAA;AACvC,QAAA,MAAM,IAAI,YAAA;AAAA,UACT,oCAAoC,SAAS,CAAA,CAAA;AAAA,UAC7C,SAAU,CAAA,MAAA;AAAA,UACV;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AACD;AAED,IAAO,OAAA,OAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA,CAAY,CAA0B,uBAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAEhE,IAAM,MAAA,IAAI,YAAY,gDAAgD,CAAA;AAAA;AAExE;;;AC1KO,IAAM,SAAY,GAAA,OACxB,MACA,EAAA,GAAA,EACA,SACA,OACI,KAAA;AACJ,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAM,MAAA,GAAA,GAA0B,OAAS,EAAA,IAAA,IAAQ,MAAQ,EAAA,SAAA;AACzD,EAAM,MAAA,IAAA,GAAO,IAAI,QAAS,EAAA;AAE1B,EAAM,MAAA,MAAA,GAAS,MAAM,KAAA,CAAM,GAAG,CAAA;AAE9B,EAAI,IAAA,CAAC,OAAO,EAAI,EAAA;AACf,IAAM,MAAA,SAAA,GAAY,MAAM,MAAA,CAAO,IAAK,EAAA;AACpC,IAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,OAAO,MAAQ,EAAA;AAAA,MACjE,KAAO,EAAA,SAAA;AAAA,MACP,IAAM,EAAA,YAAA;AAAA,MACN,QAAU,EAAA;AAAA,QACT,YAAY,MAAO,CAAA;AAAA;AACpB,KACA,CAAA;AAAA;AAGF,EAAM,MAAA,WAAA,GAAc,MAAM,MAAA,CAAO,WAAY,EAAA;AAE7C,EAAA,MAAM,IAAO,GAAA,IAAI,IAAK,CAAA,CAAC,WAAW,CAAC,CAAA;AAEnC,EAAM,MAAA,IAAA,GAAO,OAAS,EAAA,QAAA,EAAU,IAAQ,IAAA,YAAA;AAExC,EAAA,MAAM,OAAO,IAAI,IAAA,CAAK,CAAC,IAAI,GAAG,IAAI,CAAA;AAElC,EAAK,IAAA,CAAA,MAAA,CAAO,MAAQ,EAAA,IAAA,EAAM,IAAI,CAAA;AAC9B,EAAK,IAAA,CAAA,MAAA,CAAO,WAAW,OAAO,CAAA;AAC9B,EAAK,IAAA,CAAA,MAAA,CAAO,QAAQ,IAAI,CAAA;AACxB,EAAA,IAAI,SAAS,OAAS,EAAA;AACrB,IAAK,IAAA,CAAA,MAAA,CAAO,UAAY,EAAA,OAAA,CAAQ,OAAO,CAAA;AAAA;AAGxC,EAAI,IAAA,OAAA,EAAS,UAAU,SAAW,EAAA;AACjC,IAAA,IAAA,CAAK,OAAO,WAAa,EAAA,IAAA,CAAK,UAAU,OAAQ,CAAA,QAAA,CAAS,SAAS,CAAC,CAAA;AAAA;AAGpE,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,UAAU,GAAG,CAAA,CAAA;AAAA,MAC5B,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,UAAU,GAAG,CAAA,CAAA;AAAA,MAC5B,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAA,IAAI,QAAmB,GAAA,iCAAA;AAEvB,EAAA,IAAI,OAAO,SAAW,EAAA;AACrB,IAAA,QAAA,GAAW,MAAO,CAAA,SAAA;AAAA;AAGnB,EAAA,IAAI,SAAS,GAAK,EAAA;AACjB,IAAI,IAAA;AACH,MAAA,MAAM,OAAU,GAAA,MAAM,KAAM,CAAA,OAAA,CAAQ,GAAK,EAAA;AAAA,QACxC,MAAQ,EAAA,MAAA;AAAA,QACR,IAAM,EAAA;AAAA,OACN,CAAA;AAED,MAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,QAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,QAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,UAAA,MAAM,IAAI,mBAAA;AAAA,YACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,YACnC,OAAQ,CAAA,MAAA;AAAA,YACR;AAAA,cACC,KAAO,EAAA,SAAA;AAAA,cACP,IAAM,EAAA,YAAA;AAAA,cACN,QAAU,EAAA;AAAA,gBACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,WACD;AAAA;AAED,QAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,UAClE,KAAO,EAAA,SAAA;AAAA,UACP,IAAM,EAAA,YAAA;AAAA,UACN,QAAU,EAAA;AAAA,YACT,YAAY,OAAQ,CAAA;AAAA;AACrB,SACA,CAAA;AAAA;AAGF,MAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC/B,MAAA,MAAM,UAA0B,GAAI,CAAA,IAAA;AACpC,MAAO,OAAA,OAAA;AAAA,aACC,KAAO,EAAA;AACf,MAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,QAAM,MAAA,KAAA;AAAA;AAEP,MAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,QAAA,MAAM,IAAI,WAAA,CAAY,CAA4B,yBAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAElE,MAAA,MAAM,IAAI,WAAA;AAAA,QACT;AAAA,OACD;AAAA;AACD;AAGD,EAAI,IAAA;AACH,IAAA,MAAM,OAAU,GAAA,MAAM,KAAM,CAAA,CAAA,EAAG,QAAQ,CAAU,MAAA,CAAA,EAAA;AAAA,MAChD,MAAQ,EAAA,MAAA;AAAA,MACR,OAAA;AAAA,MACA,IAAM,EAAA;AAAA,KACN,CAAA;AAED,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC/B,IAAA,MAAM,UAA0B,GAAI,CAAA,IAAA;AACpC,IAAA,IAAI,SAAS,SAAW,EAAA;AACvB,MAAA,MAAM,YAAY,MAAM,KAAA;AAAA,QACvB,CAAG,EAAA,QAAQ,CAAoB,iBAAA,EAAA,OAAA,CAAQ,EAAE,CAAA,CAAA;AAAA,QACzC;AAAA,UACC,MAAQ,EAAA,MAAA;AAAA,UACR,OAAS,EAAA;AAAA,YACR,aAAA,EAAe,UAAU,GAAG,CAAA;AAAA;AAC7B;AACD,OACD;AACA,MAAA,IAAI,UAAU,EAAI,EAAA;AACjB,QAAA,OAAA,CAAQ,UAAa,GAAA,IAAA;AACrB,QAAO,OAAA,OAAA;AAAA,OACD,MAAA;AACN,QAAM,MAAA,SAAA,GAAY,MAAM,SAAA,CAAU,IAAK,EAAA;AACvC,QAAA,MAAM,IAAI,YAAA;AAAA,UACT,oCAAoC,SAAS,CAAA,CAAA;AAAA,UAC7C,SAAU,CAAA,MAAA;AAAA,UACV;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AACD;AAED,IAAO,OAAA,OAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA,CAAY,CAAyB,sBAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAE/D,IAAM,MAAA,IAAI,YAAY,kDAAkD,CAAA;AAAA;AAE1E;;;ACnLO,IAAM,SAAY,GAAA,OACxB,MACA,EAAA,GAAA,EACA,OACI,KAAA;AACJ,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAM,MAAA,GAAA,GAA0B,OAAS,EAAA,IAAA,IAAQ,MAAQ,EAAA,SAAA;AAEzD,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,UAAU,GAAG,CAAA,CAAA;AAAA,MAC5B,cAAgB,EAAA,kBAAA;AAAA,MAChB,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,UAAU,GAAG,CAAA,CAAA;AAAA,MAC5B,cAAgB,EAAA,kBAAA;AAAA,MAChB,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAA,MAAM,WAAmC,GAAA;AAAA,IACxC,GAAA;AAAA,IACA,IAAM,EAAA,OAAA,EAAS,QAAW,GAAA,OAAA,EAAS,UAAU,IAAO,GAAA,GAAA;AAAA,IACpD,SAAA,EAAW,SAAS,QAAU,EAAA,SAAA;AAAA,IAC9B,UAAU,OAAS,EAAA,OAAA;AAAA,IACnB,YAAY,OAAS,EAAA;AAAA,GACtB;AAEA,EAAM,MAAA,IAAA,GAAO,IAAK,CAAA,SAAA,CAAU,WAAW,CAAA;AAEvC,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAI,IAAA;AACH,IAAA,MAAM,OAAU,GAAA,MAAM,KAAM,CAAA,CAAA,EAAG,QAAQ,CAA4B,wBAAA,CAAA,EAAA;AAAA,MAClE,MAAQ,EAAA,MAAA;AAAA,MACR,OAAA;AAAA,MACA,IAAM,EAAA;AAAA,KACN,CAAA;AAED,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC/B,IAAA,MAAM,UAA4B,GAAI,CAAA,IAAA;AACtC,IAAO,OAAA,OAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA,CAAY,CAAyB,sBAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAE/D,IAAM,MAAA,IAAI,YAAY,gDAAgD,CAAA;AAAA;AAExE;;;AC3FO,IAAM,YAAN,MAAgB;AAAA,EAKtB,YAAY,MAAuB,EAAA;AAClC,IAAK,IAAA,CAAA,MAAA,GAAS,aAAa,MAAM,CAAA;AACjC,IAAA,IAAA,CAAK,QAAW,GAAA,IAAI,iBAAkB,CAAA,IAAA,CAAK,MAAM,CAAA;AACjD,IAAA,IAAA,CAAK,SAAY,GAAA,IAAI,kBAAmB,CAAA,IAAA,CAAK,MAAM,CAAA;AAAA;AACpD,EAEA,aAAa,SAA+B,EAAA;AAC3C,IAAA,IAAA,CAAK,MAAS,GAAA,SAAA;AACd,IAAK,IAAA,CAAA,QAAA,CAAS,aAAa,SAAS,CAAA;AACpC,IAAK,IAAA,CAAA,SAAA,CAAU,aAAa,SAAS,CAAA;AAAA;AACtC,EAEA,QAAQ,OAKyB,EAAA;AAChC,IAAA,OAAO,IAAI,4BAAA;AAAA,MACV,IAAK,CAAA,MAAA;AAAA,MACL,OAAQ,CAAA,MAAA;AAAA,MACR,OAAQ,CAAA,KAAA;AAAA,MACR,OAAQ,CAAA,GAAA;AAAA,MACR,OAAQ,CAAA;AAAA,KACT;AAAA;AAEF,CAAA;;;ACvCO,IAAM,cAAA,GAAiB,CAC7B,IACoC,KAAA;AACpC,EAAM,MAAA,GAAA,uBAAU,IAAK,EAAA;AACrB,EAAM,MAAA,KAAA,uBAAY,IAAK,EAAA;AACvB,EAAA,KAAA,CAAM,OAAQ,CAAA,KAAA,CAAM,OAAQ,EAAA,GAAI,IAAI,CAAA;AAGpC,EAAO,OAAA;AAAA,IACN,OAAO,KAAM,CAAA,WAAA,GAAc,KAAM,CAAA,GAAG,EAAE,CAAC,CAAA;AAAA,IACvC,KAAK,GAAI,CAAA,WAAA,GAAc,KAAM,CAAA,GAAG,EAAE,CAAC;AAAA,GACpC;AACD,CAAA;;;ACJO,IAAM,kBAAN,MAAsB;AAAA,EAI5B,WACC,CAAA,MAAA,EACA,MACA,EAAA,KAAA,EACA,GACC,EAAA;AACD,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA;AACd,IAAA,IAAA,CAAK,KAAQ,GAAA;AAAA,MACZ,cAAgB,EAAA,MAAA;AAAA,MAChB,UAAY,EAAA,KAAA;AAAA,MACZ,QAAU,EAAA,GAAA;AAAA,MACV,OAAS,EAAA,UAAA;AAAA;AAAA,MACT,SAAW,EAAA;AAAA,KACZ;AAAA;AACD,EAEA,IAAI,GAAoB,EAAA;AACvB,IAAA,IAAA,CAAK,MAAM,SAAY,GAAA,KAAA;AACvB,IAAA,IAAI,GAAK,EAAA;AACR,MAAA,IAAA,CAAK,MAAM,GAAM,GAAA,GAAA;AAAA;AAElB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,SAAS,QAAyB,EAAA;AACjC,IAAA,IAAA,CAAK,MAAM,SAAY,GAAA,WAAA;AACvB,IAAA,IAAI,QAAU,EAAA;AACb,MAAA,IAAA,CAAK,MAAM,SAAY,GAAA,QAAA;AAAA;AAExB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,UAAU,SAA0B,EAAA;AACnC,IAAA,IAAA,CAAK,MAAM,SAAY,GAAA,YAAA;AACvB,IAAA,IAAI,SAAW,EAAA;AACd,MAAA,IAAA,CAAK,MAAM,UAAa,GAAA,SAAA;AAAA;AAEzB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,QAAQ,OAAwB,EAAA;AAC/B,IAAA,IAAA,CAAK,MAAM,SAAY,GAAA,SAAA;AACvB,IAAA,IAAI,OAAS,EAAA;AACZ,MAAA,IAAA,CAAK,MAAM,OAAU,GAAA,OAAA;AAAA;AAEtB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,OAAO,MAAuB,EAAA;AAC7B,IAAA,IAAA,CAAK,MAAM,SAAY,GAAA,QAAA;AACvB,IAAA,IAAI,MAAQ,EAAA;AACX,MAAA,IAAA,CAAK,MAAM,MAAS,GAAA,MAAA;AAAA;AAErB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,QAAQ,OAAwB,EAAA;AAC/B,IAAA,IAAA,CAAK,MAAM,SAAY,GAAA,SAAA;AACvB,IAAA,IAAI,OAAS,EAAA;AACZ,MAAA,IAAA,CAAK,MAAM,OAAU,GAAA,OAAA;AAAA;AAEtB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,MAAM,KAAqB,EAAA;AAC1B,IAAA,IAAA,CAAK,MAAM,KAAQ,GAAA,KAAA;AACnB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,KAAK,KAA6B,EAAA;AACjC,IAAA,IAAA,CAAK,MAAM,UAAa,GAAA,KAAA;AACxB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,KAAK,YAA4B,EAAA;AAChC,IAAA,MAAM,EAAE,KAAA,EAAO,GAAI,EAAA,GAAI,eAAe,YAAY,CAAA;AAClD,IAAA,IAAA,CAAK,MAAM,UAAa,GAAA,KAAA;AACxB,IAAA,IAAA,CAAK,MAAM,QAAW,GAAA,GAAA;AACtB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,KACC,WACe,EAAA;AACf,IAAA,OAAO,kBAAkB,IAAK,CAAA,MAAA,EAAQ,KAAK,KAAK,CAAA,CAAE,KAAK,WAAW,CAAA;AAAA;AAEpE,CAAA;;;AC/FO,IAAM,kBAAA,GAAN,cAAiC,eAAgB,CAAA;AAAA,EACvD,YAAY,MAAuB,EAAA;AAClC,IAAM,KAAA,CAAA,MAAA,EAAQ,EAAI,EAAA,EAAA,EAAI,EAAE,CAAA;AACxB,IAAA,IAAA,CAAK,MAAM,OAAU,GAAA,WAAA;AAAA;AACtB,EAEA,aAAa,SAA+B,EAAA;AAC3C,IAAA,IAAA,CAAK,MAAS,GAAA,SAAA;AAAA;AACf,EAEA,WAAA,CAAY,OAAgB,GAAoB,EAAA;AAC/C,IAAI,IAAA,KAAA,EAAY,IAAA,CAAA,KAAA,CAAM,UAAa,GAAA,KAAA;AACnC,IAAI,IAAA,GAAA,EAAU,IAAA,CAAA,KAAA,CAAM,QAAW,GAAA,GAAA;AAC/B,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,KAAK,MAAsB,EAAA;AAC1B,IAAA,IAAA,CAAK,MAAM,cAAiB,GAAA,MAAA;AAC5B,IAAO,OAAA,IAAA;AAAA;AAET,CAAA;;;ACrBO,IAAM,mBAAN,MAAoD;AAAA,EAQ1D,WAAA,CAAY,QAAkC,KAAU,EAAA;AALxD,IAAA,IAAA,CAAQ,YAAe,GAAA,CAAA;AACvB,IAAA,IAAA,CAAQ,eAAkB,GAAA,CAAA;AAC1B,IAAA,IAAA,CAAiB,uBAA0B,GAAA,EAAA;AAC3C,IAAA,IAAA,CAAiB,YAAe,GAAA,GAAA;AAG/B,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA;AACd,IAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAAA;AACd,EAEA,IAAI,GAAmB,EAAA;AACtB,IAAA,IAAA,CAAK,MAAM,GAAM,GAAA,GAAA;AACjB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,SAAS,QAAwB,EAAA;AAChC,IAAA,IAAA,CAAK,MAAM,SAAY,GAAA,QAAA;AACvB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,UAAU,SAAyB,EAAA;AAClC,IAAA,IAAA,CAAK,MAAM,UAAa,GAAA,SAAA;AACxB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,QAAQ,OAAuB,EAAA;AAC9B,IAAA,IAAA,CAAK,MAAM,OAAU,GAAA,OAAA;AACrB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,OAAO,MAAsB,EAAA;AAC5B,IAAA,IAAA,CAAK,MAAM,MAAS,GAAA,MAAA;AACpB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,QAAQ,OAAuB,EAAA;AAC9B,IAAA,IAAA,CAAK,MAAM,OAAU,GAAA,OAAA;AACrB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,MAAM,KAAqB,EAAA;AAC1B,IAAA,IAAA,CAAK,MAAM,KAAQ,GAAA,KAAA;AACnB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,KAAK,KAA6B,EAAA;AACjC,IAAA,IAAA,CAAK,MAAM,UAAa,GAAA,KAAA;AACxB,IAAO,OAAA,IAAA;AAAA;AACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,MAAgB,YAA2B,GAAA;AAE1C,IAAM,MAAA,IAAI,MAAM,0DAA0D,CAAA;AAAA;AAC3E,EAEA,KAAK,WAAwD,EAAA;AAC5D,IAAA,OAAO,IAAK,CAAA,YAAA,EAAe,CAAA,IAAA,CAAK,WAAW,CAAA;AAAA;AAE7C,CAAA;;;AC1EO,IAAM,iBAAA,GAAN,cAAgC,eAAgB,CAAA;AAAA,EACtD,YAAY,MAAuB,EAAA;AAClC,IAAM,KAAA,CAAA,MAAA,EAAQ,EAAI,EAAA,EAAA,EAAI,EAAE,CAAA;AACxB,IAAA,IAAA,CAAK,MAAM,OAAU,GAAA,UAAA;AAAA;AACtB,EAEA,aAAa,SAA+B,EAAA;AAC3C,IAAA,IAAA,CAAK,MAAS,GAAA,SAAA;AAAA;AACf,EAEA,WAAA,CAAY,OAAgB,GAAoB,EAAA;AAC/C,IAAI,IAAA,KAAA,EAAY,IAAA,CAAA,KAAA,CAAM,UAAa,GAAA,KAAA;AACnC,IAAI,IAAA,GAAA,EAAU,IAAA,CAAA,KAAA,CAAM,QAAW,GAAA,GAAA;AAC/B,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,KAAK,MAAsB,EAAA;AAC1B,IAAA,IAAA,CAAK,MAAM,cAAiB,GAAA,MAAA;AAC5B,IAAO,OAAA,IAAA;AAAA;AAET,CAAA;;;ACfO,IAAM,4BAAA,GAAN,cAA2C,gBAGhD,CAAA;AAAA,EACD,WACC,CAAA,MAAA,EACA,MACA,EAAA,KAAA,EACA,KACA,YACC,EAAA;AACD,IAAA,KAAA,CAAM,MAAQ,EAAA;AAAA,MACb,cAAgB,EAAA,MAAA;AAAA,MAChB,UAAY,EAAA,KAAA;AAAA,MACZ,QAAU,EAAA,GAAA;AAAA,MACV,aAAe,EAAA;AAAA,KACf,CAAA;AAAA;AACF,EAEA,OAAO,MAAwC,EAAA;AAC9C,IAAA,IAAA,CAAK,MAAM,OAAU,GAAA,MAAA;AACrB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,MAAgB,YAAuD,GAAA;AACtE,IAAA,OAAO,qBAAsB,CAAA,IAAA,CAAK,MAAQ,EAAA,IAAA,CAAK,KAAK,CAAA;AAAA;AACrD,EAEA,MAAM,GAA8C,GAAA;AACnD,IAAA,OAAO,KAAK,YAAa,EAAA;AAAA;AAE3B,CAAA;;;AC/BO,IAAM,eAAN,MAAmB;AAAA,EAWzB,WAAA,CAAY,QAAkC,OAA+B,EAAA;AAT7E,IAAA,IAAA,CAAQ,QAA2B,EAAC;AAUnC,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA;AACd,IAAA,IAAA,CAAK,OAAU,GAAA,OAAA;AAAA;AAChB,EAEA,KAAK,IAA4B,EAAA;AAChC,IAAA,IAAA,CAAK,MAAM,IAAO,GAAA,IAAA;AAClB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,MAAM,KAA6B,EAAA;AAClC,IAAA,IAAA,CAAK,MAAM,KAAQ,GAAA,KAAA;AACnB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,SAAS,QAAiC,EAAA;AACzC,IAAA,IAAA,CAAK,MAAM,QAAW,GAAA,QAAA;AACtB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,UAAU,SAAiC,EAAA;AAC1C,IAAA,IAAA,CAAK,MAAM,SAAY,GAAA,SAAA;AACvB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,KACC,WAC6B,EAAA;AAC7B,IAAA,OAAO,IAAK,CAAA,SAAA,EACV,CAAA,IAAA,CAAK,CAAC,QAAa,KAAA;AACnB,MAAA,IAAA,CAAK,gBAAgB,QAAS,CAAA,eAAA;AAC9B,MAAO,OAAA,QAAA;AAAA,KACP,CACA,CAAA,IAAA,CAAK,WAAW,CAAA;AAAA;AACnB,EAEA,MAAc,SAAwC,GAAA;AACrD,IAAA,IAAI,KAAK,aAAe,EAAA;AACvB,MAAK,IAAA,CAAA,KAAA,CAAM,YAAY,IAAK,CAAA,aAAA;AAAA;AAE7B,IAAA,OAAO,WAAW,IAAK,CAAA,MAAA,EAAQ,IAAK,CAAA,OAAA,EAAS,KAAK,KAAK,CAAA;AAAA;AACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,QAAQ,MAAO,CAAA,aAAa,CAI1B,GAAA;AACD,IAAA,OAAO,IAAM,EAAA;AACZ,MAAM,MAAA,QAAA,GAAW,MAAM,IAAA,CAAK,SAAU,EAAA;AACtC,MAAW,KAAA,MAAA,IAAA,IAAQ,SAAS,MAAQ,EAAA;AACnC,QAAM,MAAA,IAAA;AAAA;AAEP,MAAI,IAAA,CAAC,SAAS,eAAiB,EAAA;AAC9B,QAAA;AAAA;AAED,MAAA,IAAA,CAAK,gBAAgB,QAAS,CAAA,eAAA;AAAA;AAC/B;AACD,EAEA,MAAM,GAAoC,GAAA;AACzC,IAAA,MAAM,WAAgC,EAAC;AACvC,IAAA,WAAA,MAAiB,QAAQ,IAAM,EAAA;AAC9B,MAAA,QAAA,CAAS,KAAK,IAAI,CAAA;AAAA;AAEnB,IAAO,OAAA,QAAA;AAAA;AAET,CAAA;;;ACjFO,IAAM,eAAN,MAAmB;AAAA,EAGzB,YAAY,MAAuB,EAAA;AAClC,IAAK,IAAA,CAAA,MAAA,GAAS,aAAa,MAAM,CAAA;AAAA;AAClC,EAEA,aAAa,SAA+B,EAAA;AAC3C,IAAA,IAAA,CAAK,MAAS,GAAA,SAAA;AAAA;AACf,EAEA,OAAO,OAAmD,EAAA;AACzD,IAAA,OAAO,WAAY,CAAA,IAAA,CAAK,MAAQ,EAAA,OAAA,EAAS,QAAQ,CAAA;AAAA;AAClD,EAEA,IAAqB,GAAA;AACpB,IAAA,OAAO,IAAI,YAAA,CAAa,IAAK,CAAA,MAAA,EAAQ,QAAQ,CAAA;AAAA;AAC9C,EAEA,IAAI,OAAsD,EAAA;AACzD,IAAA,OAAO,QAAS,CAAA,IAAA,CAAK,MAAQ,EAAA,OAAA,EAAS,QAAQ,CAAA;AAAA;AAC/C,EAEA,SAAS,OAA+D,EAAA;AACvE,IAAA,OAAO,UAAW,CAAA,IAAA,CAAK,MAAQ,EAAA,OAAA,EAAS,QAAQ,CAAA;AAAA;AACjD,EAEA,YAAY,OAA+D,EAAA;AAC1E,IAAA,OAAO,eAAgB,CAAA,IAAA,CAAK,MAAQ,EAAA,OAAA,EAAS,QAAQ,CAAA;AAAA;AACtD,EAEA,OAAO,OAAyD,EAAA;AAC/D,IAAA,OAAO,WAAY,CAAA,IAAA,CAAK,MAAQ,EAAA,OAAA,EAAS,QAAQ,CAAA;AAAA;AAClD,EAEA,OAAO,OAA2C,EAAA;AACjD,IAAA,OAAO,WAAY,CAAA,IAAA,CAAK,MAAQ,EAAA,OAAA,EAAS,QAAQ,CAAA;AAAA;AAEnD,CAAA;;;ACtCO,IAAM,gBAAN,MAAoB;AAAA,EAG1B,YAAY,MAAuB,EAAA;AAClC,IAAK,IAAA,CAAA,MAAA,GAAS,aAAa,MAAM,CAAA;AAAA;AAClC,EAEA,aAAa,SAA+B,EAAA;AAC3C,IAAA,IAAA,CAAK,MAAS,GAAA,SAAA;AAAA;AACf,EAEA,OAAO,OAAmD,EAAA;AACzD,IAAA,OAAO,WAAY,CAAA,IAAA,CAAK,MAAQ,EAAA,OAAA,EAAS,SAAS,CAAA;AAAA;AACnD,EAEA,IAAqB,GAAA;AACpB,IAAA,OAAO,IAAI,YAAA,CAAa,IAAK,CAAA,MAAA,EAAQ,SAAS,CAAA;AAAA;AAC/C,EAEA,IAAI,OAAsD,EAAA;AACzD,IAAA,OAAO,QAAS,CAAA,IAAA,CAAK,MAAQ,EAAA,OAAA,EAAS,SAAS,CAAA;AAAA;AAChD,EAEA,SAAS,OAA+D,EAAA;AACvE,IAAA,OAAO,UAAW,CAAA,IAAA,CAAK,MAAQ,EAAA,OAAA,EAAS,SAAS,CAAA;AAAA;AAClD,EAEA,YAAY,OAA+D,EAAA;AAC1E,IAAA,OAAO,eAAgB,CAAA,IAAA,CAAK,MAAQ,EAAA,OAAA,EAAS,SAAS,CAAA;AAAA;AACvD,EAEA,OAAO,OAAyD,EAAA;AAC/D,IAAA,OAAO,WAAY,CAAA,IAAA,CAAK,MAAQ,EAAA,OAAA,EAAS,SAAS,CAAA;AAAA;AACnD,EAEA,OAAO,OAA2C,EAAA;AACjD,IAAA,OAAO,WAAY,CAAA,IAAA,CAAK,MAAQ,EAAA,OAAA,EAAS,SAAS,CAAA;AAAA;AAEpD,CAAA;;;ACrDO,IAAM,SAAN,MAAa;AAAA,EAKnB,YAAY,MAAuB,EAAA;AAClC,IAAK,IAAA,CAAA,MAAA,GAAS,aAAa,MAAM,CAAA;AACjC,IAAK,IAAA,CAAA,MAAA,GAAS,IAAI,YAAA,CAAa,MAAM,CAAA;AACrC,IAAK,IAAA,CAAA,OAAA,GAAU,IAAI,aAAA,CAAc,MAAM,CAAA;AAAA;AACxC,EAEA,aAAa,SAA+B,EAAA;AAC3C,IAAA,IAAA,CAAK,MAAS,GAAA,SAAA;AAAA;AAEhB,CAAA;;;ACTO,IAAM,OAAN,MAAW;AAAA,EAGjB,YAAY,MAAuB,EAAA;AAClC,IAAK,IAAA,CAAA,MAAA,GAAS,aAAa,MAAM,CAAA;AAAA;AAClC,EAEA,aAAa,SAA+B,EAAA;AAC3C,IAAA,IAAA,CAAK,MAAS,GAAA,SAAA;AAAA;AACf,EAEA,OAAO,OAA2C,EAAA;AACjD,IAAO,OAAA,SAAA,CAAU,IAAK,CAAA,MAAA,EAAQ,OAAO,CAAA;AAAA;AACtC,EAEA,IAAmB,GAAA;AAClB,IAAO,OAAA,IAAI,UAAW,CAAA,IAAA,CAAK,MAAM,CAAA;AAAA;AAClC,EAEA,OAAO,IAA8C,EAAA;AACpD,IAAO,OAAA,UAAA,CAAW,IAAK,CAAA,MAAA,EAAQ,IAAI,CAAA;AAAA;AAErC,CAAA;;;AC7BO,IAAM,aAAN,MAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASvB,YAAY,MAAkC,EAAA;AAP9C,IAAA,IAAA,CAAQ,QAAsB,EAAC;AAQ9B,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA;AAAA;AACf,EAEA,OAAO,MAA4B,EAAA;AAClC,IAAA,IAAA,CAAK,MAAM,MAAS,GAAA,MAAA;AACpB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,QAAQ,OAA8B,EAAA;AACrC,IAAA,IAAA,CAAK,MAAM,OAAU,GAAA,OAAA;AACrB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,WAAW,UAAiC,EAAA;AAC3C,IAAA,IAAA,CAAK,MAAM,UAAa,GAAA,UAAA;AACxB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,UAAU,SAAgC,EAAA;AACzC,IAAA,IAAA,CAAK,MAAM,SAAY,GAAA,SAAA;AACvB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,KAAK,IAA0B,EAAA;AAC9B,IAAA,IAAA,CAAK,MAAM,IAAO,GAAA,IAAA;AAClB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,KAAK,WAAoE,EAAA;AACxE,IAAA,OAAO,SAAS,IAAK,CAAA,MAAA,EAAQ,KAAK,KAAK,CAAA,CAAE,KAAK,WAAW,CAAA;AAAA;AAC1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,QAAQ,MAAO,CAAA,aAAa,CAAgD,GAAA;AAC3E,IAAA,IAAI,OAAU,GAAA,IAAA;AACd,IAAA,IAAI,MAAS,GAAA,CAAA;AAEb,IAAA,OAAO,OAAS,EAAA;AAEf,MAAA,IAAA,CAAK,MAAM,MAAS,GAAA,MAAA;AAEpB,MAAA,MAAM,QAAQ,MAAM,QAAA,CAAS,IAAK,CAAA,MAAA,EAAQ,KAAK,KAAK,CAAA;AAEpD,MAAA,KAAA,MAAW,QAAQ,KAAO,EAAA;AACzB,QAAM,MAAA,IAAA;AAAA;AAGP,MAAI,IAAA,KAAA,CAAM,WAAW,CAAG,EAAA;AACvB,QAAU,OAAA,GAAA,KAAA;AAAA,OACJ,MAAA;AACN,QAAA,MAAA,IAAU,KAAM,CAAA,MAAA;AAAA;AACjB;AACD;AACD,EAEA,MAAM,GAA8B,GAAA;AACnC,IAAA,MAAM,WAA0B,EAAC;AACjC,IAAA,WAAA,MAAiB,QAAQ,IAAM,EAAA;AAC9B,MAAA,QAAA,CAAS,KAAK,IAAI,CAAA;AAAA;AAEnB,IAAO,OAAA,QAAA;AAAA;AAET,CAAA;;;ACpFO,IAAM,WAAN,MAAe;AAAA,EAKrB,YAAY,MAAuB,EAAA;AAClC,IAAK,IAAA,CAAA,MAAA,GAAS,aAAa,MAAM,CAAA;AACjC,IAAK,IAAA,CAAA,MAAA,GAAS,IAAI,cAAA,CAAe,MAAM,CAAA;AACvC,IAAK,IAAA,CAAA,OAAA,GAAU,IAAI,eAAA,CAAgB,MAAM,CAAA;AAAA;AAC1C,EAEA,aAAa,SAA+B,EAAA;AAC3C,IAAA,IAAA,CAAK,MAAS,GAAA,SAAA;AAAA;AAEhB,CAAA;;;ACXO,IAAM,gCAAN,MAAoC;AAAA,EAK1C,WAAA,CAAY,QAAkC,OAA4B,EAAA;AAF1E,IAAA,IAAA,CAAQ,UAAgC,EAAC;AAGxC,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA;AACd,IAAA,IAAA,CAAK,OAAU,GAAA,OAAA;AAAA;AAChB,EAEA,cAAc,OAA8D,EAAA;AAC3E,IAAA,IAAA,CAAK,UAAU,EAAE,GAAG,IAAK,CAAA,OAAA,EAAS,GAAG,OAAQ,EAAA;AAC7C,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,KAAK,WAA6D,EAAA;AACjE,IAAA,OAAO,iBAAiB,IAAK,CAAA,MAAA,EAAQ,KAAK,OAAS,EAAA,IAAA,CAAK,OAAO,CAAE,CAAA,IAAA;AAAA,MAChE;AAAA,KACD;AAAA;AAEF,CAAA;;;ACpBO,IAAM,sBAAN,MAA0B;AAAA,EAMhC,WAAA,CACC,MACA,EAAA,GAAA,EACA,WACC,EAAA;AANF,IAAA,IAAA,CAAQ,UAAgC,EAAC;AAOxC,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA;AACd,IAAA,IAAA,CAAK,GAAM,GAAA,GAAA;AACX,IAAA,IAAA,CAAK,WAAc,GAAA,WAAA;AAAA;AACpB,EAEA,cAAc,OAAoD,EAAA;AACjE,IAAA,IAAA,CAAK,UAAU,EAAE,GAAG,IAAK,CAAA,OAAA,EAAS,GAAG,OAAQ,EAAA;AAC7C,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,KAAK,WAAqE,EAAA;AACzE,IAAO,OAAA,MAAA,CAAO,KAAK,MAAQ,EAAA,IAAA,CAAK,KAAK,IAAK,CAAA,WAAA,EAAa,IAAK,CAAA,OAAO,CAAE,CAAA,IAAA;AAAA,MACpE;AAAA,KACD;AAAA;AAEF,CAAA;;;AC9BO,IAAM,kBAAN,MAAsB;AAAA,EAG5B,YAAY,MAAkC,EAAA;AAC7C,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA;AAAA;AACf,EAEA,IAAI,GAAkC,EAAA;AACrC,IAAA,OAAO,IAAI,mBAAA,CAAoB,IAAK,CAAA,MAAA,EAAQ,KAAK,OAAO,CAAA;AAAA;AACzD,EAEA,iBAAiB,OAA2D,EAAA;AAC3E,IAAA,OAAO,IAAI,6BAAA,CAA8B,IAAK,CAAA,MAAA,EAAQ,OAAO,CAAA;AAAA;AAE/D,CAAA;;;ACbO,IAAM,iBAAN,MAAqB;AAAA,EAG3B,YAAY,MAAkC,EAAA;AAC7C,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA;AAAA;AACf,EAEA,IAAI,GAAkC,EAAA;AACrC,IAAA,OAAO,IAAI,mBAAA,CAAoB,IAAK,CAAA,MAAA,EAAQ,KAAK,MAAM,CAAA;AAAA;AACxD,EAEA,OAAA,CAAQ,KAAa,aAAyC,EAAA;AAC7D,IAAA,OAAO,cAAe,CAAA,IAAA,CAAK,MAAQ,EAAA,GAAA,EAAK,aAAa,CAAA;AAAA;AAEvD,CAAA;;;ACTO,IAAM,OAAU,GAAA,OACtB,MACA,EAAA,EAAA,EACA,OAC2B,KAAA;AAC3B,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,GAAG,MAAO,CAAA;AAAA,KACX;AAAA,GACM,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAI,IAAA;AACH,IAAM,MAAA,OAAA,GAAU,MAAM,KAAM,CAAA,CAAA,EAAG,QAAQ,CAAU,OAAA,EAAA,OAAO,CAAI,CAAA,EAAA,EAAE,CAAI,CAAA,EAAA;AAAA,MACjE,MAAQ,EAAA,KAAA;AAAA,MACR;AAAA,KACA,CAAA;AAED,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC/B,IAAA,MAAM,UAAwB,GAAI,CAAA,IAAA;AAClC,IAAO,OAAA,OAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA,CAAY,CAA8B,2BAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAEpE,IAAA,MAAM,IAAI,WAAA;AAAA,MACT;AAAA,KACD;AAAA;AAEF,CAAA;;;AC5EO,IAAM,cAAN,MAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWxB,WAAA,CAAY,QAAkC,OAA+B,EAAA;AAT7E,IAAA,IAAA,CAAQ,QAAuB,EAAC;AAU/B,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA;AACd,IAAA,IAAA,CAAK,OAAU,GAAA,OAAA;AAAA;AAChB,EAEA,KAAK,IAA2B,EAAA;AAC/B,IAAA,IAAA,CAAK,MAAM,IAAO,GAAA,IAAA;AAClB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,MAAM,KAA4B,EAAA;AACjC,IAAA,IAAA,CAAK,MAAM,KAAQ,GAAA,KAAA;AACnB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,IAAI,GAA0B,EAAA;AAC7B,IAAA,IAAA,CAAK,MAAM,GAAM,GAAA,GAAA;AACjB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,SAAS,QAA+B,EAAA;AACvC,IAAA,IAAA,CAAK,MAAM,QAAW,GAAA,QAAA;AACtB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,MAAM,KAAoC,EAAA;AACzC,IAAA,IAAA,CAAK,MAAM,KAAQ,GAAA,KAAA;AACnB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,MAAM,KAA4B,EAAA;AACjC,IAAA,IAAA,CAAK,MAAM,KAAQ,GAAA,KAAA;AACnB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,WAAW,UAAkC,EAAA;AAC5C,IAAA,IAAA,CAAK,MAAM,UAAa,GAAA,UAAA;AACxB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,UAAU,SAAgD,EAAA;AACzD,IAAA,IAAA,CAAK,MAAM,QAAW,GAAA,SAAA;AACtB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,QAAQ,OAA+B,EAAA;AACtC,IAAA,IAAA,CAAK,MAAM,OAAU,GAAA,OAAA;AACrB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,UAAU,SAAgC,EAAA;AACzC,IAAA,IAAA,CAAK,MAAM,SAAY,GAAA,SAAA;AACvB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,KAAK,WAAuE,EAAA;AAC3E,IAAA,OAAO,IAAK,CAAA,SAAA,EAAY,CAAA,IAAA,CAAK,WAAW,CAAA;AAAA;AACzC,EAEA,MAAc,SAAuC,GAAA;AACpD,IAAA,IAAI,KAAK,gBAAkB,EAAA;AAC1B,MAAK,IAAA,CAAA,KAAA,CAAM,YAAY,IAAK,CAAA,gBAAA;AAAA;AAE7B,IAAM,MAAA,QAAA,GAAW,MAAM,SAAU,CAAA,IAAA,CAAK,QAAQ,IAAK,CAAA,OAAA,EAAS,KAAK,KAAK,CAAA;AACtE,IAAA,IAAA,CAAK,mBAAmB,QAAS,CAAA,eAAA;AACjC,IAAO,OAAA,QAAA;AAAA;AACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,QAAQ,MAAO,CAAA,aAAa,CAAiD,GAAA;AAC5E,IAAA,OAAO,IAAM,EAAA;AACZ,MAAM,MAAA,KAAA,GAAQ,MAAM,IAAA,CAAK,SAAU,EAAA;AACnC,MAAW,KAAA,MAAA,IAAA,IAAQ,MAAM,KAAO,EAAA;AAC/B,QAAM,MAAA,IAAA;AAAA;AAEP,MAAI,IAAA,CAAC,KAAK,gBAAkB,EAAA;AAC3B,QAAA;AAAA;AACD;AACD;AACD,EAEA,MAAM,GAA+B,GAAA;AACpC,IAAA,MAAM,WAA2B,EAAC;AAClC,IAAA,WAAA,MAAiB,QAAQ,IAAM,EAAA;AAC9B,MAAA,QAAA,CAAS,KAAK,IAAI,CAAA;AAAA;AAEnB,IAAO,OAAA,QAAA;AAAA;AAET,CAAA;;;ACjHO,IAAM,cAAN,MAAkB;AAAA,EAUxB,YAAY,MAAkC,EAAA;AAR9C,IAAA,IAAA,CAAQ,QAAuB,EAAC;AAGhC;AAAA,IAAA,IAAA,CAAQ,YAAe,GAAA,CAAA;AACvB,IAAA,IAAA,CAAQ,eAAkB,GAAA,CAAA;AAC1B,IAAA,IAAA,CAAiB,uBAA0B,GAAA,EAAA;AAC3C,IAAA,IAAA,CAAiB,YAAe,GAAA,GAAA;AAG/B,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA;AAAA;AACf,EAEA,IAAI,GAA0B,EAAA;AAC7B,IAAA,IAAA,CAAK,MAAM,GAAM,GAAA,GAAA;AACjB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,OACC,MASc,EAAA;AACd,IAAA,IAAA,CAAK,MAAM,MAAS,GAAA,MAAA;AACpB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,UAAU,KAA4B,EAAA;AACrC,IAAA,IAAA,CAAK,MAAM,KAAQ,GAAA,KAAA;AACnB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,UAAU,SAAgC,EAAA;AACzC,IAAA,IAAA,CAAK,MAAM,SAAY,GAAA,SAAA;AACvB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,MAAc,SAAuC,GAAA;AACpD,IAAA,IAAI,KAAK,gBAAkB,EAAA;AAC1B,MAAK,IAAA,CAAA,KAAA,CAAM,YAAY,IAAK,CAAA,gBAAA;AAAA;AAE7B,IAAA,MAAM,WAAW,MAAM,KAAA,CAAM,IAAK,CAAA,MAAA,EAAQ,KAAK,KAAK,CAAA;AACpD,IAAA,IAAA,CAAK,mBAAmB,QAAS,CAAA,eAAA;AACjC,IAAO,OAAA,QAAA;AAAA;AACR,EAEA,KAAK,IAAkC,EAAA;AACtC,IAAA,IAAA,CAAK,MAAM,IAAO,GAAA,IAAA;AAClB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,KAAK,WAAuE,EAAA;AAC3E,IAAA,OAAO,MAAM,IAAK,CAAA,MAAA,EAAQ,KAAK,KAAK,CAAA,CAAE,KAAK,WAAW,CAAA;AAAA;AACvD;AAAA,EAGA,MAAc,SAA2B,GAAA;AACxC,IAAK,IAAA,CAAA,YAAA,EAAA;AACL,IAAM,MAAA,GAAA,GAAM,KAAK,GAAI,EAAA;AACrB,IAAI,IAAA,IAAA,CAAK,YAAgB,IAAA,IAAA,CAAK,uBAAyB,EAAA;AACtD,MAAM,MAAA,0BAAA,GAA6B,MAAM,IAAK,CAAA,eAAA;AAC9C,MAAI,IAAA,0BAAA,GAA6B,KAAK,YAAc,EAAA;AACnD,QAAM,MAAA,SAAA,GAAY,KAAK,YAAe,GAAA,0BAAA;AACtC,QAAA,MAAM,IAAI,OAAQ,CAAA,CAAC,YAAY,UAAW,CAAA,OAAA,EAAS,SAAS,CAAC,CAAA;AAAA;AAE9D,MAAA,IAAA,CAAK,YAAe,GAAA,CAAA;AAAA;AAErB,IAAK,IAAA,CAAA,eAAA,GAAkB,KAAK,GAAI,EAAA;AAAA;AACjC,EAEA,QAAQ,MAAO,CAAA,aAAa,CAAiD,GAAA;AAC5E,IAAA,OAAO,IAAM,EAAA;AACZ,MAAM,MAAA,KAAA,GAAQ,MAAM,IAAA,CAAK,SAAU,EAAA;AACnC,MAAW,KAAA,MAAA,IAAA,IAAQ,MAAM,IAAM,EAAA;AAC9B,QAAM,MAAA,IAAA;AAAA;AAEP,MAAI,IAAA,CAAC,KAAK,gBAAkB,EAAA;AAC3B,QAAA;AAAA;AACD;AACD;AACD,EAEA,MAAM,GAA+B,GAAA;AACpC,IAAA,MAAM,WAA2B,EAAC;AAClC,IAAA,WAAA,MAAiB,QAAQ,IAAM,EAAA;AAC9B,MAAA,QAAA,CAAS,KAAK,IAAI,CAAA;AAAA;AAEnB,IAAO,OAAA,QAAA;AAAA;AAET,CAAA;;;AClFO,IAAM,cAAN,MAAkB;AAAA,EAGxB,YAAY,MAAuB,EAAA;AAClC,IAAK,IAAA,CAAA,MAAA,GAAS,aAAa,MAAM,CAAA;AAAA;AAClC,EAEA,IAAoB,GAAA;AACnB,IAAA,OAAO,IAAI,WAAA,CAAY,IAAK,CAAA,MAAA,EAAQ,QAAQ,CAAA;AAAA;AAC7C,EAEA,IAAI,EAAmC,EAAA;AACtC,IAAA,OAAO,OAAQ,CAAA,IAAA,CAAK,MAAQ,EAAA,EAAA,EAAI,QAAQ,CAAA;AAAA;AACzC,EAEA,OAAO,KAA4C,EAAA;AAClD,IAAA,OAAO,UAAW,CAAA,IAAA,CAAK,MAAQ,EAAA,KAAA,EAAO,QAAQ,CAAA;AAAA;AAC/C,EAEA,OAAO,OAAmD,EAAA;AACzD,IAAA,OAAO,UAAW,CAAA,IAAA,CAAK,MAAQ,EAAA,OAAA,EAAS,QAAQ,CAAA;AAAA;AACjD,EAEA,QAAQ,OAAmD,EAAA;AAC1D,IAAA,OAAO,OAAQ,CAAA,IAAA,CAAK,MAAQ,EAAA,OAAA,EAAS,QAAQ,CAAA;AAAA;AAC9C,EAEA,eAAe,OAAyD,EAAA;AACvE,IAAA,OAAO,WAAY,CAAA,IAAA,CAAK,MAAQ,EAAA,OAAA,EAAS,QAAQ,CAAA;AAAA;AAClD,EAEA,WAAW,GAA8B,EAAA;AACxC,IAAA,OAAO,UAAW,CAAA,IAAA,CAAK,MAAQ,EAAA,GAAA,EAAK,QAAQ,CAAA;AAAA;AAC7C,EAEA,KAAqB,GAAA;AACpB,IAAO,OAAA,IAAI,WAAY,CAAA,IAAA,CAAK,MAAM,CAAA;AAAA;AACnC,EAEA,iBAAiB,SAAoC,EAAA;AACpD,IAAO,OAAA,gBAAA,CAAiB,IAAK,CAAA,MAAA,EAAQ,SAAS,CAAA;AAAA;AAEhD,CAAA;;;ACrCO,IAAM,eAAN,MAAmB;AAAA,EAGzB,YAAY,MAAuB,EAAA;AAClC,IAAK,IAAA,CAAA,MAAA,GAAS,aAAa,MAAM,CAAA;AAAA;AAClC,EAEA,IAAoB,GAAA;AACnB,IAAA,OAAO,IAAI,WAAA,CAAY,IAAK,CAAA,MAAA,EAAQ,SAAS,CAAA;AAAA;AAC9C,EAEA,IAAI,EAAmC,EAAA;AACtC,IAAA,OAAO,OAAQ,CAAA,IAAA,CAAK,MAAQ,EAAA,EAAA,EAAI,SAAS,CAAA;AAAA;AAC1C,EAEA,OAAO,KAA4C,EAAA;AAClD,IAAA,OAAO,UAAW,CAAA,IAAA,CAAK,MAAQ,EAAA,KAAA,EAAO,SAAS,CAAA;AAAA;AAChD,EAEA,OAAO,OAAmD,EAAA;AACzD,IAAA,OAAO,UAAW,CAAA,IAAA,CAAK,MAAQ,EAAA,OAAA,EAAS,SAAS,CAAA;AAAA;AAClD,EAEA,QAAQ,OAAmD,EAAA;AAC1D,IAAA,OAAO,OAAQ,CAAA,IAAA,CAAK,MAAQ,EAAA,OAAA,EAAS,SAAS,CAAA;AAAA;AAC/C,EAEA,eAAe,OAAyD,EAAA;AACvE,IAAA,OAAO,WAAY,CAAA,IAAA,CAAK,MAAQ,EAAA,OAAA,EAAS,SAAS,CAAA;AAAA;AACnD,EAEA,WAAW,GAA8B,EAAA;AACxC,IAAA,OAAO,UAAW,CAAA,IAAA,CAAK,MAAQ,EAAA,GAAA,EAAK,SAAS,CAAA;AAAA;AAC9C,EAEA,UAAU,MAAgD,EAAA;AACzD,IAAO,OAAA,aAAA,CAAc,IAAK,CAAA,MAAA,EAAQ,MAAM,CAAA;AAAA;AACzC,EAEA,aACC,OACmD,EAAA;AACnD,IAAO,OAAA,cAAA,CAAe,IAAK,CAAA,MAAA,EAAQ,OAAO,CAAA;AAAA;AAC3C,EAEA,cAAc,MAAgD,EAAA;AAC7D,IAAO,OAAA,iBAAA,CAAkB,IAAK,CAAA,MAAA,EAAQ,MAAM,CAAA;AAAA;AAE9C,CAAA;;;ACpEO,IAAM,QAAN,MAAY;AAAA,EAKlB,YAAY,MAAuB,EAAA;AAClC,IAAK,IAAA,CAAA,MAAA,GAAS,aAAa,MAAM,CAAA;AACjC,IAAK,IAAA,CAAA,MAAA,GAAS,IAAI,WAAA,CAAY,MAAM,CAAA;AACpC,IAAK,IAAA,CAAA,OAAA,GAAU,IAAI,YAAA,CAAa,MAAM,CAAA;AAAA;AACvC,EAEA,aAAa,SAA+B,EAAA;AAC3C,IAAA,IAAA,CAAK,MAAS,GAAA,SAAA;AAAA;AAEhB,CAAA;;;ACnBO,IAAM,gBAAN,MAAuB;AAAA,EAe7B,WAAA,CACC,MACA,EAAA,cAAA,EAAA,GAIG,IACF,EAAA;AAfF,IAAA,IAAA,CAAQ,WAAuC,EAAC;AAgB/C,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA;AACd,IAAA,IAAA,CAAK,cAAiB,GAAA,cAAA;AACtB,IAAA,IAAA,CAAK,IAAO,GAAA,IAAA;AAAA;AACb;AAAA,EAGA,KAAK,IAAgC,EAAA;AACpC,IAAI,IAAA,CAAC,KAAK,QAAU,EAAA;AACnB,MAAA,IAAA,CAAK,WAAW,EAAC;AAAA;AAElB,IAAA,IAAA,CAAK,SAAS,IAAO,GAAA,IAAA;AACrB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,UAAU,SAAqD,EAAA;AAC9D,IAAI,IAAA,CAAC,KAAK,QAAU,EAAA;AACnB,MAAA,IAAA,CAAK,WAAW,EAAC;AAAA;AAElB,IAAA,IAAA,CAAK,SAAS,SAAY,GAAA,SAAA;AAC1B,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,IAAI,GAA+B,EAAA;AAClC,IAAA,IAAA,CAAK,IAAO,GAAA,GAAA;AACZ,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,SAA8B,GAAA;AAC7B,IAAA,IAAA,CAAK,MAAS,GAAA,IAAA;AACd,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,IAAI,GAA+B,EAAA;AAClC,IAAA,IAAA,CAAK,SAAY,GAAA,GAAA;AACjB,IAAO,OAAA,IAAA;AAAA;AACR;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,OAAmC,EAAA;AACxC,IAAA,IAAA,CAAK,OAAU,GAAA,OAAA;AACf,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,UAA+B,GAAA;AAC9B,IAAA,IAAA,CAAK,YAAe,GAAA,IAAA;AACpB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,YAAY,aAA2C,EAAA;AACtD,IAAA,IAAA,CAAK,aAAgB,GAAA,aAAA;AACrB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,IAAA,CACC,aAIA,UAI+B,EAAA;AAC/B,IAAM,MAAA,OAAA,GAAyB,KAAK,IAAK,CAAA,IAAA,CAAK,KAAK,MAAS,GAAA,CAAC,KAAK,EAAC;AACnE,IAAA,IAAI,KAAK,QAAU,EAAA;AAClB,MAAA,OAAA,CAAQ,WAAW,IAAK,CAAA,QAAA;AAAA;AAEzB,IAAA,IAAI,KAAK,IAAM,EAAA;AACd,MAAA,OAAA,CAAQ,OAAO,IAAK,CAAA,IAAA;AAAA;AAErB,IAAA,IAAI,KAAK,OAAS,EAAA;AACjB,MAAA,OAAA,CAAQ,UAAU,IAAK,CAAA,OAAA;AAAA;AAExB,IAAA,IAAI,KAAK,MAAQ,EAAA;AAChB,MAAA,OAAA,CAAQ,YAAY,IAAK,CAAA,MAAA;AAAA;AAE1B,IAAA,IAAI,KAAK,SAAW,EAAA;AACnB,MAAA,OAAA,CAAQ,MAAM,IAAK,CAAA,SAAA;AAAA;AAEpB,IAAA,IAAI,KAAK,YAAc,EAAA;AACtB,MAAA,OAAA,CAAQ,aAAa,IAAK,CAAA,YAAA;AAAA;AAE3B,IAAA,IAAI,KAAK,aAAe,EAAA;AACvB,MAAA,OAAA,CAAQ,gBAAgB,IAAK,CAAA,aAAA;AAAA;AAE9B,IAAA,IAAA,CAAK,IAAK,CAAA,IAAA,CAAK,IAAK,CAAA,MAAA,GAAS,CAAC,CAAI,GAAA,OAAA;AAClC,IAAA,OAAO,KAAK,cAAe,CAAA,IAAA,CAAK,QAAQ,GAAG,IAAA,CAAK,IAAI,CAAE,CAAA,IAAA;AAAA,MACrD,WAAA;AAAA,MACA;AAAA,KACD;AAAA;AAEF,CAAA;;;ACnGO,IAAM,eAAN,MAAmB;AAAA,EAGzB,YAAY,MAAuB,EAAA;AAClC,IAAK,IAAA,CAAA,MAAA,GAAS,aAAa,MAAM,CAAA;AAAA;AAClC,EAEA,aAAa,SAA+B,EAAA;AAC3C,IAAA,IAAA,CAAK,MAAS,GAAA,SAAA;AAAA;AACf,EAEA,IAAA,CAAK,MAAY,OAAwD,EAAA;AACxE,IAAA,OAAO,IAAI,aAAA;AAAA,MACV,IAAK,CAAA,MAAA;AAAA,MACL,CAAC,QAAQC,KAAMC,EAAAA,QAAAA,KAAY,WAAW,MAAQD,EAAAA,KAAAA,EAAM,UAAUC,QAAO,CAAA;AAAA,MACrE,IAAA;AAAA,MACA;AAAA,KACD;AAAA;AACD,EAEA,SAAA,CACC,OACA,OACgC,EAAA;AAChC,IAAA,OAAO,IAAI,aAAA;AAAA,MACV,IAAK,CAAA,MAAA;AAAA,MACL,CAAC,QAAQ,IAAMA,EAAAA,QAAAA,KACd,gBAAgB,MAAQ,EAAA,IAAA,EAAM,UAAUA,QAAO,CAAA;AAAA,MAChD,KAAA;AAAA,MACA;AAAA,KACD;AAAA;AACD,EAEA,MAAA,CACC,cACA,OACgC,EAAA;AAChC,IAAA,OAAO,IAAI,aAAA;AAAA,MACV,IAAK,CAAA,MAAA;AAAA,MACL,CAAC,QAAQC,aAAcD,EAAAA,QAAAA,KACtB,aAAa,MAAQC,EAAAA,aAAAA,EAAc,UAAUD,QAAO,CAAA;AAAA,MACrD,YAAA;AAAA,MACA;AAAA,KACD;AAAA;AACD,EAEA,GAAA,CAAI,KAAa,OAAwD,EAAA;AACxE,IAAA,OAAO,IAAI,aAAA;AAAA,MACV,IAAK,CAAA,MAAA;AAAA,MACL,CAAC,QAAQE,IAAKF,EAAAA,QAAAA,KAAY,UAAU,MAAQE,EAAAA,IAAAA,EAAK,UAAUF,QAAO,CAAA;AAAA,MAClE,GAAA;AAAA,MACA;AAAA,KACD;AAAA;AACD,EAEA,IAAA,CAAK,MAAc,OAAwD,EAAA;AAC1E,IAAA,OAAO,IAAI,aAAA;AAAA,MACV,IAAK,CAAA,MAAA;AAAA,MACL,CAAC,QAAQF,KAAME,EAAAA,QAAAA,KAAY,WAAW,MAAQF,EAAAA,KAAAA,EAAM,UAAUE,QAAO,CAAA;AAAA,MACrE,IAAA;AAAA,MACA;AAAA,KACD;AAAA;AACD,EAEA,GAAA,CACC,KACA,OACkC,EAAA;AAClC,IAAA,OAAO,IAAI,aAAA;AAAA,MACV,IAAK,CAAA,MAAA;AAAA,MACL,CAAC,MAAQG,EAAAA,IAAAA,EAAKH,aAAY,SAAU,CAAA,MAAA,EAAQG,MAAKH,QAAO,CAAA;AAAA,MACxD,GAAA;AAAA,MACA;AAAA,KACD;AAAA;AACD,EAEA,gBAAgB,OAAkD,EAAA;AACjE,IAAA,OAAO,qBAAsB,CAAA,IAAA,CAAK,MAAQ,EAAA,OAAA,EAAS,QAAQ,CAAA;AAAA;AAE7D,CAAA;;;AClFO,IAAM,gBAAN,MAAoB;AAAA,EAG1B,YAAY,MAAuB,EAAA;AAClC,IAAK,IAAA,CAAA,MAAA,GAAS,aAAa,MAAM,CAAA;AAAA;AAClC,EAEA,aAAa,SAA+B,EAAA;AAC3C,IAAA,IAAA,CAAK,MAAS,GAAA,SAAA;AAAA;AACf,EAEA,IAAA,CAAK,MAAY,OAAwD,EAAA;AACxE,IAAA,OAAO,IAAI,aAAA;AAAA,MACV,IAAK,CAAA,MAAA;AAAA,MACL,CAAC,QAAQD,KAAMC,EAAAA,QAAAA,KAAY,WAAW,MAAQD,EAAAA,KAAAA,EAAM,WAAWC,QAAO,CAAA;AAAA,MACtE,IAAA;AAAA,MACA;AAAA,KACD;AAAA;AACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,MAAA,CACC,cACA,OACgC,EAAA;AAChC,IAAA,OAAO,IAAI,aAAA;AAAA,MACV,IAAK,CAAA,MAAA;AAAA,MACL,CAAC,QAAQC,aAAcD,EAAAA,QAAAA,KACtB,aAAa,MAAQC,EAAAA,aAAAA,EAAc,WAAWD,QAAO,CAAA;AAAA,MACtD,YAAA;AAAA,MACA;AAAA,KACD;AAAA;AACD,EAEA,GAAA,CAAI,KAAa,OAAwD,EAAA;AACxE,IAAA,OAAO,IAAI,aAAA;AAAA,MACV,IAAK,CAAA,MAAA;AAAA,MACL,CAAC,QAAQE,IAAKF,EAAAA,QAAAA,KAAY,UAAU,MAAQE,EAAAA,IAAAA,EAAK,WAAWF,QAAO,CAAA;AAAA,MACnE,GAAA;AAAA,MACA;AAAA,KACD;AAAA;AACD,EAEA,IAAA,CAAK,MAAc,OAAwD,EAAA;AAC1E,IAAA,OAAO,IAAI,aAAA;AAAA,MACV,IAAK,CAAA,MAAA;AAAA,MACL,CAAC,QAAQF,KAAME,EAAAA,QAAAA,KAAY,WAAW,MAAQF,EAAAA,KAAAA,EAAM,WAAWE,QAAO,CAAA;AAAA,MACtE,IAAA;AAAA,MACA;AAAA,KACD;AAAA;AACD,EAEA,gBAAgB,OAAkD,EAAA;AACjE,IAAA,OAAO,qBAAsB,CAAA,IAAA,CAAK,MAAQ,EAAA,OAAA,EAAS,SAAS,CAAA;AAAA;AAE9D,CAAA;;;AChFO,IAAM,SAAN,MAAa;AAAA,EAKnB,YAAY,MAAuB,EAAA;AAClC,IAAK,IAAA,CAAA,MAAA,GAAS,aAAa,MAAM,CAAA;AACjC,IAAK,IAAA,CAAA,MAAA,GAAS,IAAI,YAAA,CAAa,MAAM,CAAA;AACrC,IAAK,IAAA,CAAA,OAAA,GAAU,IAAI,aAAA,CAAc,MAAM,CAAA;AAAA;AACxC,EAEA,aAAa,SAA+B,EAAA;AAC3C,IAAA,IAAA,CAAK,MAAS,GAAA,SAAA;AAAA;AAEhB,CAAA;;;ACPO,IAAM,YAAe,GAAA,OAC3B,MACA,EAAA,OAAA,EACA,OACgC,KAAA;AAChC,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAM,MAAA,IAAA,GAAO,KAAK,SAAU,CAAA;AAAA,IAC3B,WAAW,OAAQ,CAAA,SAAA;AAAA,IACnB,SAAS,OAAQ,CAAA;AAAA,GACjB,CAAA;AAED,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA,EAAE,GAAG,MAAA,CAAO,aAAc,EAAA;AAAA,GAC9B,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAI,IAAA;AACH,IAAA,MAAM,UAAU,MAAM,KAAA;AAAA,MACrB,GAAG,QAAQ,CAAA,OAAA,EAAU,OAAO,CAAA,WAAA,EAAc,QAAQ,GAAG,CAAA,CAAA;AAAA,MACrD;AAAA,QACC,MAAQ,EAAA,MAAA;AAAA,QACR,OAAA;AAAA,QACA,IAAM,EAAA;AAAA;AACP,KACD;AAEA,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAI,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AAC3B,QAAA,MAAM,IAAI,WAAA;AAAA,UACT,mGAAA;AAAA,UACA,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC/B,IAAA,OAAO,GAAI,CAAA,IAAA;AAAA,WACH,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA,CAAY,CAAkC,+BAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAExE,IAAA,MAAM,IAAI,WAAA;AAAA,MACT;AAAA,KACD;AAAA;AAEF,CAAA;;;AChGO,IAAM,YAAe,GAAA,OAC3B,MACA,EAAA,GAAA,EACA,OACgC,KAAA;AAChC,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA,EAAE,GAAG,MAAA,CAAO,aAAc,EAAA;AAAA,GAC9B,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAI,IAAA;AACH,IAAA,MAAM,UAAU,MAAM,KAAA;AAAA,MACrB,CAAG,EAAA,QAAQ,CAAU,OAAA,EAAA,OAAO,cAAc,GAAG,CAAA,CAAA;AAAA,MAC7C;AAAA,QACC,MAAQ,EAAA,KAAA;AAAA,QACR;AAAA;AACD,KACD;AAEA,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAGF,IAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,EAAA;AAC/B,IAAA,OAAO,GAAI,CAAA,IAAA;AAAA,WACH,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA,CAAY,CAAkC,+BAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAExE,IAAA,MAAM,IAAI,WAAA;AAAA,MACT;AAAA,KACD;AAAA;AAEF,CAAA;;;ACzEO,IAAM,eAAkB,GAAA,OAC9B,MACA,EAAA,GAAA,EACA,OACqB,KAAA;AACrB,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAM,MAAA,IAAI,gBAAgB,iCAAiC,CAAA;AAAA;AAG5D,EAAI,IAAA,OAAA;AAEJ,EAAI,IAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,IAAA,CAAK,OAAO,aAAa,CAAA,CAAE,SAAS,CAAG,EAAA;AACzE,IAAU,OAAA,GAAA,EAAE,GAAG,MAAA,CAAO,aAAc,EAAA;AAAA,GAC9B,MAAA;AACN,IAAU,OAAA,GAAA;AAAA,MACT,aAAA,EAAe,CAAU,OAAA,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAAA,MACzC,cAAgB,EAAA,kBAAA;AAAA,MAChB,MAAQ,EAAA;AAAA,KACT;AAAA;AAGD,EAAA,IAAI,QAAmB,GAAA,6BAAA;AAEvB,EAAA,IAAI,OAAO,WAAa,EAAA;AACvB,IAAA,QAAA,GAAW,MAAO,CAAA,WAAA;AAAA;AAGnB,EAAI,IAAA;AACH,IAAA,MAAM,UAAU,MAAM,KAAA;AAAA,MACrB,CAAG,EAAA,QAAQ,CAAU,OAAA,EAAA,OAAO,cAAc,GAAG,CAAA,CAAA;AAAA,MAC7C;AAAA,QACC,MAAQ,EAAA,QAAA;AAAA,QACR;AAAA;AACD,KACD;AAEA,IAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AAChB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAA,CAAQ,IAAK,EAAA;AACrC,MAAA,IAAI,OAAQ,CAAA,MAAA,KAAW,GAAO,IAAA,OAAA,CAAQ,WAAW,GAAK,EAAA;AACrD,QAAA,MAAM,IAAI,mBAAA;AAAA,UACT,0BAA0B,SAAS,CAAA,CAAA;AAAA,UACnC,OAAQ,CAAA,MAAA;AAAA,UACR;AAAA,YACC,KAAO,EAAA,SAAA;AAAA,YACP,IAAM,EAAA,YAAA;AAAA,YACN,QAAU,EAAA;AAAA,cACT,YAAY,OAAQ,CAAA;AAAA;AACrB;AACD,SACD;AAAA;AAED,MAAA,MAAM,IAAI,YAAa,CAAA,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,EAAI,QAAQ,MAAQ,EAAA;AAAA,QAClE,KAAO,EAAA,SAAA;AAAA,QACP,IAAM,EAAA,YAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACT,YAAY,OAAQ,CAAA;AAAA;AACrB,OACA,CAAA;AAAA;AAEF,IAAO,OAAA,IAAA;AAAA,WACC,KAAO,EAAA;AACf,IAAA,IAAI,iBAAiB,WAAa,EAAA;AACjC,MAAM,MAAA,KAAA;AAAA;AAEP,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC3B,MAAA,MAAM,IAAI,WAAA,CAAY,CAAkC,+BAAA,EAAA,KAAA,CAAM,OAAO,CAAE,CAAA,CAAA;AAAA;AAExE,IAAA,MAAM,IAAI,WAAA;AAAA,MACT;AAAA,KACD;AAAA;AAEF,CAAA;;;ACxEO,IAAM,mBAAN,MAAuB;AAAA,EAG7B,YAAY,MAAuB,EAAA;AAClC,IAAK,IAAA,CAAA,MAAA,GAAS,aAAa,MAAM,CAAA;AAAA;AAClC,EAEA,aAAa,SAA+B,EAAA;AAC3C,IAAA,IAAA,CAAK,MAAS,GAAA,SAAA;AAAA;AACf,EAEA,IAAI,OAAuD,EAAA;AAC1D,IAAA,OAAO,YAAa,CAAA,IAAA,CAAK,MAAQ,EAAA,OAAA,EAAS,QAAQ,CAAA;AAAA;AACnD,EAEA,IAAI,GAAyC,EAAA;AAC5C,IAAA,OAAO,YAAa,CAAA,IAAA,CAAK,MAAQ,EAAA,GAAA,EAAK,QAAQ,CAAA;AAAA;AAC/C,EAEA,OAAO,GAA8B,EAAA;AACpC,IAAA,OAAO,eAAgB,CAAA,IAAA,CAAK,MAAQ,EAAA,GAAA,EAAK,QAAQ,CAAA;AAAA;AAEnD,CAAA;;;ACzBO,IAAM,aAAN,MAAiB;AAAA;AAAA,EAKvB,YAAY,MAAuB,EAAA;AAClC,IAAK,IAAA,CAAA,MAAA,GAAS,aAAa,MAAM,CAAA;AACjC,IAAK,IAAA,CAAA,MAAA,GAAS,IAAI,gBAAA,CAAiB,MAAM,CAAA;AAAA;AAE1C,EAEA,aAAa,SAA+B,EAAA;AAC3C,IAAA,IAAA,CAAK,MAAS,GAAA,SAAA;AAAA;AAEhB,CAAA;;;ACNO,IAAM,YAAN,MAAgB;AAAA,EAWtB,YAAY,MAAuB,EAAA;AAClC,IAAK,IAAA,CAAA,MAAA,GAAS,aAAa,MAAM,CAAA;AACjC,IAAA,IAAA,CAAK,KAAQ,GAAA,IAAI,KAAM,CAAA,IAAA,CAAK,MAAM,CAAA;AAClC,IAAA,IAAA,CAAK,MAAS,GAAA,IAAI,MAAO,CAAA,IAAA,CAAK,MAAM,CAAA;AACpC,IAAA,IAAA,CAAK,QAAW,GAAA,IAAI,QAAS,CAAA,IAAA,CAAK,MAAM,CAAA;AAExC,IAAA,IAAA,CAAK,IAAO,GAAA,IAAI,IAAK,CAAA,IAAA,CAAK,MAAM,CAAA;AAChC,IAAA,IAAA,CAAK,MAAS,GAAA,IAAI,MAAO,CAAA,IAAA,CAAK,MAAM,CAAA;AACpC,IAAA,IAAA,CAAK,SAAY,GAAA,IAAI,SAAU,CAAA,IAAA,CAAK,MAAM,CAAA;AAC1C,IAAA,IAAA,CAAK,UAAa,GAAA,IAAI,UAAW,CAAA,IAAA,CAAK,MAAM,CAAA;AAAA;AAC7C,EAEA,cAAc,OAAuC,EAAA;AACpD,IAAI,IAAA,CAAC,KAAK,MAAQ,EAAA;AACjB,MAAA,IAAA,CAAK,SAAS,EAAE,SAAA,EAAW,EAAI,EAAA,aAAA,EAAe,EAAG,EAAA;AAAA;AAElD,IAAK,IAAA,CAAA,MAAA,CAAO,gBAAgB,EAAE,GAAG,KAAK,MAAO,CAAA,aAAA,EAAe,GAAG,OAAQ,EAAA;AAGvE,IAAK,IAAA,CAAA,KAAA,CAAM,YAAa,CAAA,IAAA,CAAK,MAAM,CAAA;AACnC,IAAK,IAAA,CAAA,MAAA,CAAO,YAAa,CAAA,IAAA,CAAK,MAAM,CAAA;AACpC,IAAK,IAAA,CAAA,QAAA,CAAS,YAAa,CAAA,IAAA,CAAK,MAAM,CAAA;AAEtC,IAAK,IAAA,CAAA,IAAA,CAAK,YAAa,CAAA,IAAA,CAAK,MAAM,CAAA;AAClC,IAAK,IAAA,CAAA,MAAA,CAAO,YAAa,CAAA,IAAA,CAAK,MAAM,CAAA;AACpC,IAAK,IAAA,CAAA,SAAA,CAAU,YAAa,CAAA,IAAA,CAAK,MAAM,CAAA;AACvC,IAAK,IAAA,CAAA,UAAA,CAAW,YAAa,CAAA,IAAA,CAAK,MAAM,CAAA;AAAA;AACzC,EAEA,UAAU,GAAmB,EAAA;AAC5B,IAAI,IAAA,CAAC,KAAK,MAAQ,EAAA;AACjB,MAAK,IAAA,CAAA,MAAA,GAAS,EAAE,SAAA,EAAW,EAAG,EAAA;AAAA;AAE/B,IAAA,IAAA,CAAK,OAAO,SAAY,GAAA,GAAA;AAGxB,IAAK,IAAA,CAAA,KAAA,CAAM,YAAa,CAAA,IAAA,CAAK,MAAM,CAAA;AACnC,IAAK,IAAA,CAAA,MAAA,CAAO,YAAa,CAAA,IAAA,CAAK,MAAM,CAAA;AACpC,IAAK,IAAA,CAAA,QAAA,CAAS,YAAa,CAAA,IAAA,CAAK,MAAM,CAAA;AAEtC,IAAK,IAAA,CAAA,IAAA,CAAK,YAAa,CAAA,IAAA,CAAK,MAAM,CAAA;AAClC,IAAK,IAAA,CAAA,MAAA,CAAO,YAAa,CAAA,IAAA,CAAK,MAAM,CAAA;AACpC,IAAK,IAAA,CAAA,SAAA,CAAU,YAAa,CAAA,IAAA,CAAK,MAAM,CAAA;AACvC,IAAK,IAAA,CAAA,UAAA,CAAW,YAAa,CAAA,IAAA,CAAK,MAAM,CAAA;AAAA;AACzC,EAEA,kBAAsC,GAAA;AACrC,IAAO,OAAA,kBAAA,CAAmB,KAAK,MAAM,CAAA;AAAA;AAEvC","file":"index.mjs","sourcesContent":["import type {\n\tTimeIntervalAnalyticsQuery,\n\tTimeIntervalAnalyticsResponse,\n\tPinataConfig,\n} from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const analyticsDateInterval = async (\n\tconfig: PinataConfig | undefined,\n\toptions?: TimeIntervalAnalyticsQuery,\n): Promise<TimeIntervalAnalyticsResponse> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst params = new URLSearchParams();\n\n\tif (options) {\n\t\tconst {\n\t\t\tcid,\n\t\t\tgateway_domain,\n\t\t\tstart_date,\n\t\t\tend_date,\n\t\t\tfile_name,\n\t\t\tuser_agent,\n\t\t\tcountry,\n\t\t\tregion,\n\t\t\treferer,\n\t\t\tlimit,\n\t\t\tsort_order,\n\t\t\tdate_interval,\n\t\t\tsort_by,\n\t\t} = options;\n\n\t\tif (cid) params.append(\"cid\", cid);\n\t\tif (gateway_domain) params.append(\"gateway_domain\", gateway_domain);\n\t\tif (start_date) params.append(\"start_date\", start_date);\n\t\tif (end_date) params.append(\"end_date\", end_date);\n\t\tif (file_name) params.append(\"file_name\", file_name);\n\t\tif (user_agent) params.append(\"user_agent\", user_agent.toString());\n\t\tif (country) params.append(\"country\", country.toString());\n\t\tif (region) params.append(\"region\", region);\n\t\tif (referer) params.append(\"referer\", referer.toString());\n\t\tif (limit) params.append(\"limit\", limit.toString());\n\t\tif (sort_order) params.append(\"sort_order\", sort_order);\n\t\tif (sort_by) params.append(\"sort_by\", sort_by);\n\t\tif (date_interval) params.append(\"by\", date_interval);\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\tconst url = `${endpoint}/ipfs/gateway_analytics_time_series?${params.toString()}`;\n\n\ttry {\n\t\tlet headers: Record<string, string>;\n\n\t\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\t\theaders = { ...config.customHeaders };\n\t\t} else {\n\t\t\theaders = {\n\t\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\tSource: \"sdk/analyticsDateInterval\",\n\t\t\t};\n\t\t}\n\n\t\tconst request = await fetch(url, {\n\t\t\tmethod: \"GET\",\n\t\t\theaders: headers,\n\t\t});\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: TimeIntervalAnalyticsResponse = res.data;\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(\n\t\t\t\t`Error processing anaytics usage: ${error.message}`,\n\t\t\t);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while fetching gateway usage\",\n\t\t);\n\t}\n};\n","import type {\n\tTopAnalyticsQuery,\n\tTopAnalyticsItem,\n\tPinataConfig,\n\tTopAnalyticsResponse,\n} from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const analyticsTopUsage = async (\n\tconfig: PinataConfig | undefined,\n\toptions?: TopAnalyticsQuery,\n): Promise<TopAnalyticsResponse> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst params = new URLSearchParams();\n\n\tif (options) {\n\t\tconst {\n\t\t\tcid,\n\t\t\tgateway_domain,\n\t\t\tstart_date,\n\t\t\tend_date,\n\t\t\tfile_name,\n\t\t\tuser_agent,\n\t\t\tcountry,\n\t\t\tregion,\n\t\t\treferer,\n\t\t\tlimit,\n\t\t\tsort_order,\n\t\t\tsort_by,\n\t\t\tattribute,\n\t\t} = options;\n\n\t\tconst domain = gateway_domain || config.pinataGateway;\n\t\tif (domain) {\n\t\t\t// Remove 'https://' if present\n\t\t\tconst cleanDomain = domain.replace(/^https?:\\/\\//, \"\");\n\t\t\tparams.append(\"gateway_domain\", cleanDomain);\n\t\t}\n\t\tif (cid) {\n\t\t\tparams.append(\"cid\", cid);\n\t\t}\n\t\tif (start_date) params.append(\"start_date\", start_date);\n\t\tif (end_date) params.append(\"end_date\", end_date);\n\t\tif (file_name) params.append(\"file_name\", file_name);\n\t\tif (user_agent) params.append(\"user_agent\", user_agent.toString());\n\t\tif (country) params.append(\"country\", country.toString());\n\t\tif (region) params.append(\"region\", region);\n\t\tif (referer) params.append(\"referer\", referer.toString());\n\t\tif (limit) params.append(\"limit\", limit.toString());\n\t\tif (sort_order) params.append(\"sort_order\", sort_order);\n\t\tif (sort_by) params.append(\"sort_by\", sort_by);\n\t\tif (attribute) params.append(\"by\", attribute);\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\tconst url = `${endpoint}/ipfs/gateway_analytics_top?${params.toString()}`;\n\n\ttry {\n\t\tlet headers: Record<string, string>;\n\n\t\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\t\theaders = { ...config.customHeaders };\n\t\t} else {\n\t\t\theaders = {\n\t\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\tSource: \"sdk/analyticsTopUsage\",\n\t\t\t};\n\t\t}\n\n\t\tconst request = await fetch(url, {\n\t\t\tmethod: \"GET\",\n\t\t\theaders: headers,\n\t\t});\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res: TopAnalyticsResponse = await request.json();\n\t\treturn res;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(\n\t\t\t\t`Error processing anaytics usage: ${error.message}`,\n\t\t\t);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while fetching gateway usage\",\n\t\t);\n\t}\n};\n","import type { PinataConfig } from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const testAuthentication = async (config: PinataConfig | undefined) => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\tlet endpoint: string = \"https://api.pinata.cloud\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\tSource: \"sdk/testAuthentication\",\n\t\t};\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/data/testAuthentication`, {\n\t\t\tmethod: \"GET\",\n\t\t\theaders: headers,\n\t\t});\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res: string = await request.json();\n\t\treturn res;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(\n\t\t\t\t`Error processing authentication: ${error.message}`,\n\t\t\t);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while testing authentication\",\n\t\t);\n\t}\n};\n","import type { PinataConfig, DeleteResponse } from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nconst wait = (milliseconds: number): Promise<void> => {\n\treturn new Promise((resolve) => {\n\t\tsetTimeout(resolve, milliseconds);\n\t});\n};\n\nexport const deleteFile = async (\n\tconfig: PinataConfig | undefined,\n\tfiles: string[],\n\tprivacy: \"public\" | \"private\",\n): Promise<DeleteResponse[]> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst responses: DeleteResponse[] = [];\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\tSource: \"sdk/deleteFile\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\tfor (const id of files) {\n\t\ttry {\n\t\t\tconst response = await fetch(`${endpoint}/files/${privacy}/${id}`, {\n\t\t\t\tmethod: \"DELETE\",\n\t\t\t\theaders: headers,\n\t\t\t});\n\n\t\t\tawait wait(300);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tconst errorData = await response.text();\n\t\t\t\tif (response.status === 401) {\n\t\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\t\tresponse.status,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\trequestUrl: response.url,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tthrow new NetworkError(`HTTP error`, response.status, {\n\t\t\t\t\terror: errorData,\n\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\trequestUrl: response.url,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tresponses.push({\n\t\t\t\tid: id,\n\t\t\t\tstatus: response.statusText,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tlet errorMessage: string;\n\n\t\t\tif (error instanceof PinataError) {\n\t\t\t\terrorMessage = error.message;\n\t\t\t} else if (error instanceof Error) {\n\t\t\t\terrorMessage = `Error deleting file ${id}: ${error.message}`;\n\t\t\t} else {\n\t\t\t\terrorMessage = `An unknown error occurred while deleting file ${id}`;\n\t\t\t}\n\n\t\t\tresponses.push({\n\t\t\t\tid: id,\n\t\t\t\tstatus: errorMessage,\n\t\t\t});\n\t\t}\n\t}\n\treturn responses;\n};\n","import type { PinataConfig, VectorizeFileResponse } from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const deleteFileVectors = async (\n\tconfig: PinataConfig | undefined,\n\tfileId: string,\n): Promise<VectorizeFileResponse> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\tSource: \"sdk/vectorizeFile\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://uploads.pinata.cloud/v3\";\n\n\tif (config.uploadUrl) {\n\t\tendpoint = config.uploadUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/vectorize/files/${fileId}`, {\n\t\t\tmethod: \"DELETE\",\n\t\t\theaders: headers,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res: VectorizeFileResponse = await request.json();\n\t\treturn res;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(\n\t\t\t\t`Error processing vectorize file: ${error.message}`,\n\t\t\t);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while vectorizing file\");\n\t}\n};\n","import type { SwapCidResponse, PinataConfig } from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const deleteSwap = async (\n\tconfig: PinataConfig | undefined,\n\tcid: string,\n\tnetwork: \"public\" | \"private\",\n): Promise<string> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/deleteSwap\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/files/${network}/swap/${cid}`, {\n\t\t\tmethod: \"DELETE\",\n\t\t\theaders: headers,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(`Authentication failed`, request.status, {\n\t\t\t\t\terror: errorData,\n\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (request.status === 403) {\n\t\t\t\tthrow new PinataError(\n\t\t\t\t\t\"Unauthorized CID Swap Deletion\",\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"UNAUTHORIZED\",\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (request.status === 404) {\n\t\t\t\tthrow new PinataError(\"CID not pinned to account\", request.status, {\n\t\t\t\t\terror: errorData,\n\t\t\t\t\tcode: \"NOT_FOUND\",\n\t\t\t\t});\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error occurred`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"NETWORK_ERROR\",\n\t\t\t});\n\t\t}\n\n\t\treturn request.statusText;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(\n\t\t\t\t`Error processing deleteSwap: ${error.message}`,\n\t\t\t\tundefined,\n\t\t\t\t{\n\t\t\t\t\tcode: \"DELETE_SWAP_ERROR\",\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while deleting swap\",\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\tcode: \"UNKNOWN_ERROR\",\n\t\t\t},\n\t\t);\n\t}\n};\n","import type {\n\tFileListQuery,\n\tFileListResponse,\n\tPinataConfig,\n} from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const listFiles = async (\n\tconfig: PinataConfig | undefined,\n\tprivacy: \"private\" | \"public\",\n\toptions?: FileListQuery,\n): Promise<FileListResponse> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst params = new URLSearchParams();\n\n\tif (options) {\n\t\tconst {\n\t\t\tname,\n\t\t\tgroup,\n\t\t\tcid,\n\t\t\torder,\n\t\t\tlimit,\n\t\t\tmimeType,\n\t\t\tpageToken,\n\t\t\tcidPending,\n\t\t\tmetadata,\n\t\t\tnoGroup,\n\t\t} = options;\n\n\t\tif (limit) params.append(\"limit\", limit.toString());\n\t\tif (name) params.append(\"name\", name);\n\t\tif (group) params.append(\"group\", group);\n\t\tif (cid) params.append(\"cid\", cid);\n\t\tif (mimeType) params.append(\"mimeType\", mimeType);\n\t\tif (order) params.append(\"order\", order);\n\t\tif (pageToken) params.append(\"pageToken\", pageToken);\n\t\tif (cidPending) params.append(\"cidPending\", \"true\");\n\t\tif (noGroup) params.append(\"group\", \"null\");\n\t\tif (metadata && typeof metadata === \"object\") {\n\t\t\tObject.entries(metadata).forEach(([key, value]) => {\n\t\t\t\tparams.append(`keyvalues[${key.toString()}]`, value.toString());\n\t\t\t});\n\t\t}\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\tconst url = `${endpoint}/files/${privacy}?${params.toString()}`;\n\n\ttry {\n\t\tlet headers: Record<string, string>;\n\n\t\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\t\theaders = {\n\t\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\t...config.customHeaders,\n\t\t\t};\n\t\t} else {\n\t\t\theaders = {\n\t\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\tSource: \"sdk/listFiles\",\n\t\t\t};\n\t\t}\n\n\t\tconst request = await fetch(url, {\n\t\t\tmethod: \"GET\",\n\t\t\theaders: headers,\n\t\t});\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: FileListResponse = res.data;\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing list files: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while listing files\");\n\t}\n};\n","import type { PinataConfig, UserPinnedDataResponse } from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const pinnedFileCount = async (\n\tconfig: PinataConfig | undefined,\n): Promise<number> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\tSource: \"sdk/pinnedFileUsage\",\n\t\t};\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/data/userPinnedDataTotal`, {\n\t\t\tmethod: \"GET\",\n\t\t\theaders: headers,\n\t\t});\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\tconst res: UserPinnedDataResponse = await request.json();\n\t\treturn res.pin_count;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(\n\t\t\t\t`Error processing pinnedFileUsage: ${error.message}`,\n\t\t\t);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while getting pinned file usage\",\n\t\t);\n\t}\n};\n","import type {\n\tSwapCidOptions,\n\tSwapCidResponse,\n\tPinataConfig,\n} from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const swapCid = async (\n\tconfig: PinataConfig | undefined,\n\toptions: SwapCidOptions,\n\tnetwork: \"public\" | \"private\",\n): Promise<SwapCidResponse> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst data = JSON.stringify({\n\t\tswap_cid: options.swapCid,\n\t});\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/swapCid\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(\n\t\t\t`${endpoint}/files/${network}/swap/${options.cid}`,\n\t\t\t{\n\t\t\t\tmethod: \"PUT\",\n\t\t\t\theaders: headers,\n\t\t\t\tbody: data,\n\t\t\t},\n\t\t);\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (request.status === 403) {\n\t\t\t\tthrow new PinataError(\"Unauthorized CID Swap\", request.status, {\n\t\t\t\t\terror: errorData,\n\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (request.status === 404) {\n\t\t\t\tthrow new PinataError(\"CID not pinned to account\", request.status, {\n\t\t\t\t\terror: errorData,\n\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: SwapCidResponse = res.data;\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing CID Swap: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while swapping CID\");\n\t}\n};\n","import type {\n\tSwapCidResponse,\n\tPinataConfig,\n\tSwapHistoryOptions,\n} from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const swapHistory = async (\n\tconfig: PinataConfig | undefined,\n\toptions: SwapHistoryOptions,\n\tnetwork: \"public\" | \"private\",\n): Promise<SwapCidResponse[]> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/swapHistory\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(\n\t\t\t`${endpoint}/files/${network}/swap/${options.cid}?domain=${options.domain}`,\n\t\t\t{\n\t\t\t\tmethod: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t},\n\t\t);\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (request.status === 404) {\n\t\t\t\tthrow new PinataError(\"CID does not have history\", request.status, {\n\t\t\t\t\terror: errorData,\n\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: SwapCidResponse[] = res.data;\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error fetching swap history: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while fetching swap history\",\n\t\t);\n\t}\n};\n","import type { PinataConfig, UserPinnedDataResponse } from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const totalStorageUsage = async (\n\tconfig: PinataConfig | undefined,\n): Promise<number> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = { ...config.customHeaders };\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\tSource: \"sdk/totalStorageUsage\",\n\t\t};\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/data/userPinnedDataTotal`, {\n\t\t\tmethod: \"GET\",\n\t\t\theaders: headers,\n\t\t});\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\tconst res: UserPinnedDataResponse = await request.json();\n\t\treturn res.pin_size_total;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(\n\t\t\t\t`Error processing totalStorageUsage: ${error.message}`,\n\t\t\t);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while getting total storage usage\",\n\t\t);\n\t}\n};\n","import type {\n\tFileListItem,\n\tPinataConfig,\n\tUpdateFileOptions,\n} from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const updateFile = async (\n\tconfig: PinataConfig | undefined,\n\toptions: UpdateFileOptions,\n\tprivacy: \"public\" | \"private\",\n): Promise<FileListItem> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tif (\n\t\t!options.name &&\n\t\t(!options.keyvalues || Object.keys(options.keyvalues).length === 0)\n\t) {\n\t\tthrow new ValidationError(\n\t\t\t\"At least one of 'name' or 'keyvalues' must be provided\",\n\t\t);\n\t}\n\n\tconst data: Record<string, any> = {};\n\n\tif (options.name !== undefined) {\n\t\tdata.name = options.name;\n\t}\n\tif (options.keyvalues && Object.keys(options.keyvalues).length > 0) {\n\t\tdata.keyvalues = options.keyvalues;\n\t}\n\n\tconst body = JSON.stringify(data);\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/updateMetadata\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/files/${privacy}/${options.id}`, {\n\t\t\tmethod: \"PUT\",\n\t\t\theaders: headers,\n\t\t\tbody: body,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: FileListItem = res.data;\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing updateFile: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while updating file\");\n\t}\n};\n","import type { PinataConfig, VectorizeFileResponse } from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const vectorizeFile = async (\n\tconfig: PinataConfig | undefined,\n\tfileId: string,\n): Promise<VectorizeFileResponse> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\tSource: \"sdk/vectorizeFile\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://uploads.pinata.cloud/v3\";\n\n\tif (config.uploadUrl) {\n\t\tendpoint = config.uploadUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/vectorize/files/${fileId}`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: headers,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res: VectorizeFileResponse = await request.json();\n\t\treturn res;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(\n\t\t\t\t`Error processing vectorize file: ${error.message}`,\n\t\t\t);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while vectorizing file\");\n\t}\n};\n","import type {\n\tGetCIDResponse,\n\tPinataConfig,\n\tVectorizeQuery,\n\tVectorizeQueryResponse,\n} from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nimport { getCid } from \"../../functions\";\n\nexport const vectorizeQuery = async (\n\tconfig: PinataConfig | undefined,\n\toptions: VectorizeQuery,\n): Promise<VectorizeQueryResponse | GetCIDResponse> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\tSource: \"sdk/vectorQuery\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://uploads.pinata.cloud/v3\";\n\n\tif (config.uploadUrl) {\n\t\tendpoint = config.uploadUrl;\n\t}\n\n\tconst body = JSON.stringify({\n\t\ttext: options.query,\n\t});\n\n\ttry {\n\t\tconst request = await fetch(\n\t\t\t`${endpoint}/vectorize/groups/${options.groupId}/query`,\n\t\t\t{\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: headers,\n\t\t\t\tbody: body,\n\t\t\t},\n\t\t);\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: VectorizeQueryResponse = res.data;\n\n\t\tif (options.returnFile) {\n\t\t\tif (resData.matches.length === 0) {\n\t\t\t\tthrow new PinataError(`No files returned in query to fetch`);\n\t\t\t}\n\t\t\tconst cid = resData.matches[0].cid;\n\t\t\tconst fileRes: GetCIDResponse = await getCid(config, cid, \"files\");\n\t\t\treturn fileRes;\n\t\t}\n\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(\n\t\t\t\t`Error processing vectorize file: ${error.message}`,\n\t\t\t);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while vectorizing file\");\n\t}\n};\n","import type {\n\tPinQueueItem,\n\tPinQueueQuery,\n\tPinQueueResponse,\n\tPinataConfig,\n} from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const queue = async (\n\tconfig: PinataConfig | undefined,\n\toptions?: PinQueueQuery,\n): Promise<PinQueueResponse> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst params = new URLSearchParams({\n\t\tincludesCount: \"false\",\n\t});\n\n\tif (options) {\n\t\tconst { cid, status, sort, limit, pageToken } = options;\n\n\t\tif (cid) params.append(\"cid\", cid.toString());\n\t\tif (status) params.append(\"status\", status.toString());\n\t\tif (sort) params.append(\"sort\", sort.toString());\n\t\tif (limit) params.append(\"limit\", limit.toString());\n\t\tif (pageToken) params.append(\"pageToken\", pageToken.toString());\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\tconst url = `${endpoint}/files/public/pin_by_cid?${params.toString()}`;\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\tSource: \"sdk/pinJobs\",\n\t\t};\n\t}\n\n\ttry {\n\t\tconst request = await fetch(url, {\n\t\t\tmethod: \"GET\",\n\t\t\theaders: headers,\n\t\t});\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\tconst res = await request.json();\n\t\tconst resData: PinQueueResponse = res.data;\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing pinJobs: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while listing pin jobs\");\n\t}\n};\n","import type { PinataConfig } from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const deletePinRequest = async (\n\tconfig: PinataConfig | undefined,\n\tid: string,\n): Promise<string> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\tSource: \"sdk/deletePinRequest\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst response = await fetch(`${endpoint}/files/public/pin_by_cid/${id}`, {\n\t\t\tmethod: \"DELETE\",\n\t\t\theaders: headers,\n\t\t});\n\n\t\tif (!response.ok) {\n\t\t\tconst errorData = await response.text();\n\t\t\tif (response.status === 401) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\tresponse.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: response.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error`, response.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: response.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\treturn \"OK\";\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error deleting pin by request: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while deleting pin by CID request\",\n\t\t);\n\t}\n};\n","import type {\n\tGetCIDResponse,\n\tPinataConfig,\n\tOptimizeImageOptions,\n} from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const getCid = async (\n\tconfig: PinataConfig | undefined,\n\tcid: string,\n\tgatewayType?: \"ipfs\" | \"files\",\n\toptions?: OptimizeImageOptions,\n): Promise<GetCIDResponse> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet data: JSON | string | Blob;\n\tlet newUrl: string = `${config?.pinataGateway}/${gatewayType}/${cid}`;\n\n\tconst params = new URLSearchParams();\n\n\tif (options) {\n\t\tif (options.width) params.append(\"img-width\", options.width.toString());\n\t\tif (options.height) params.append(\"img-height\", options.height.toString());\n\t\tif (options.dpr) params.append(\"img-dpr\", options.dpr.toString());\n\t\tif (options.fit) params.append(\"img-fit\", options.fit);\n\t\tif (options.gravity) params.append(\"img-gravity\", options.gravity);\n\t\tif (options.quality)\n\t\t\tparams.append(\"img-quality\", options.quality.toString());\n\t\tif (options.format) params.append(\"img-format\", options.format);\n\t\tif (options.animation !== undefined)\n\t\t\tparams.append(\"img-anim\", options.animation.toString());\n\t\tif (options.sharpen)\n\t\t\tparams.append(\"img-sharpen\", options.sharpen.toString());\n\t\tif (options.onError === true) params.append(\"img-onerror\", \"redirect\");\n\t\tif (options.metadata) params.append(\"img-metadata\", options.metadata);\n\t}\n\n\tif (config?.pinataGatewayKey) {\n\t\tparams.append(\"pinataGatewayToken\", config.pinataGatewayKey);\n\t}\n\n\tconst queryString = params.toString();\n\tif (queryString) {\n\t\tnewUrl += `?${queryString}`;\n\t}\n\n\tif (gatewayType === \"ipfs\") {\n\t\tconst request = await fetch(newUrl);\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication Failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst contentType: string | null =\n\t\t\trequest.headers.get(\"content-type\")?.split(\";\")[0] || null;\n\n\t\tif (contentType?.includes(\"application/json\")) {\n\t\t\tdata = await request.json();\n\t\t} else if (contentType?.includes(\"text/\")) {\n\t\t\tdata = await request.text();\n\t\t} else {\n\t\t\tdata = await request.blob();\n\t\t}\n\n\t\tconst res: GetCIDResponse = {\n\t\t\tdata: data,\n\t\t\tcontentType: contentType,\n\t\t};\n\n\t\treturn res;\n\t}\n\n\tconst date = Math.floor(new Date().getTime() / 1000);\n\n\tconst payload = JSON.stringify({\n\t\turl: newUrl,\n\t\tdate: date,\n\t\texpires: 30,\n\t\tmethod: \"GET\",\n\t});\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\tSource: \"sdk/getCid\",\n\t\t};\n\t}\n\n\tconst signedUrlRequest = await fetch(`${endpoint}/files/sign`, {\n\t\tmethod: \"POST\",\n\t\theaders: headers,\n\t\tbody: payload,\n\t});\n\n\tconst signedUrl = await signedUrlRequest.json();\n\n\ttry {\n\t\tconst request = await fetch(signedUrl.data);\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication Failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst contentType: string | null =\n\t\t\trequest.headers.get(\"content-type\")?.split(\";\")[0] || null;\n\n\t\tif (contentType?.includes(\"application/json\")) {\n\t\t\tdata = await request.json();\n\t\t} else if (contentType?.includes(\"text/\")) {\n\t\t\tdata = await request.text();\n\t\t} else {\n\t\t\tdata = await request.blob();\n\t\t}\n\n\t\tconst res: GetCIDResponse = {\n\t\t\tdata: data,\n\t\t\tcontentType: contentType,\n\t\t};\n\n\t\treturn res;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing getCid: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while getting CID contents\",\n\t\t);\n\t}\n};\n","import { convertToDesiredGateway } from \"../../../utils/gateway-tools\";\nimport type { PinataConfig } from \"../../types\";\n\nexport const convertIPFSUrl = async (\n\tconfig: PinataConfig | undefined,\n\turl: string,\n\tgatewayPrefix?: string,\n): Promise<string> => {\n\tlet newUrl: string;\n\tlet prefix: string =\n\t\tgatewayPrefix || config?.pinataGateway || \"https://gateway.pinata.cloud\";\n\tnewUrl = await convertToDesiredGateway(url, prefix);\n\tif (config?.pinataGatewayKey) {\n\t\t`${newUrl}?pinataGatewayToken=${config?.pinataGatewayKey}`;\n\t}\n\treturn newUrl;\n};\n","import type {\n\tPinataConfig,\n\tOptimizeImageOptions,\n\tAccessLinkOptions,\n} from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const createAccessLink = async (\n\tconfig: PinataConfig | undefined,\n\toptions: AccessLinkOptions,\n\timgOpts: OptimizeImageOptions,\n): Promise<string> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet baseUrl: string | undefined;\n\n\tif (options?.gateway) {\n\t\tbaseUrl = options.gateway.startsWith(\"https://\")\n\t\t\t? options.gateway\n\t\t\t: `https://${options.gateway}`;\n\t} else {\n\t\tbaseUrl = config.pinataGateway;\n\t}\n\n\tlet newUrl: string = `${baseUrl}/files/${options.cid}`;\n\n\tconst params = new URLSearchParams();\n\n\tif (imgOpts) {\n\t\tif (imgOpts.width) params.append(\"img-width\", imgOpts.width.toString());\n\t\tif (imgOpts.height) params.append(\"img-height\", imgOpts.height.toString());\n\t\tif (imgOpts.dpr) params.append(\"img-dpr\", imgOpts.dpr.toString());\n\t\tif (imgOpts.fit) params.append(\"img-fit\", imgOpts.fit);\n\t\tif (imgOpts.gravity) params.append(\"img-gravity\", imgOpts.gravity);\n\t\tif (imgOpts.quality)\n\t\t\tparams.append(\"img-quality\", imgOpts.quality.toString());\n\t\tif (imgOpts.format) params.append(\"img-format\", imgOpts.format);\n\t\tif (imgOpts.animation !== undefined)\n\t\t\tparams.append(\"img-anim\", imgOpts.animation.toString());\n\t\tif (imgOpts.sharpen)\n\t\t\tparams.append(\"img-sharpen\", imgOpts.sharpen.toString());\n\t\tif (imgOpts.onError === true) params.append(\"img-onerror\", \"redirect\");\n\t\tif (imgOpts.metadata) params.append(\"img-metadata\", imgOpts.metadata);\n\t}\n\n\tconst queryString = params.toString();\n\n\tif (queryString) {\n\t\tnewUrl += `?${queryString}`;\n\t}\n\n\tconst date = options?.date || Math.floor(new Date().getTime() / 1000);\n\n\tconst payload = JSON.stringify({\n\t\turl: newUrl,\n\t\tdate: date,\n\t\texpires: options.expires,\n\t\tmethod: \"GET\",\n\t});\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\tSource: \"sdk/createSignURL\",\n\t\t};\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/files/private/download_link`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: headers,\n\t\t\tbody: payload,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication Failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\treturn res.data;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(\n\t\t\t\t`Error processing createSignedURL: ${error.message}`,\n\t\t\t);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while getting signed url\");\n\t}\n};\n","import type {\n\tGroupCIDOptions,\n\tPinataConfig,\n\tUpdateGroupFilesResponse,\n} from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const addToGroup = async (\n\tconfig: PinataConfig | undefined,\n\toptions: GroupCIDOptions,\n\tprivacy: \"public\" | \"private\",\n): Promise<UpdateGroupFilesResponse[]> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst wait = (milliseconds: number): Promise<void> => {\n\t\treturn new Promise((resolve) => {\n\t\t\tsetTimeout(resolve, milliseconds);\n\t\t});\n\t};\n\n\tconst responses: UpdateGroupFilesResponse[] = [];\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/addToGroup\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\tfor (const id of options.files) {\n\t\ttry {\n\t\t\tconst response = await fetch(\n\t\t\t\t`${endpoint}/groups/${privacy}/${options.groupId}/ids/${id}`,\n\t\t\t\t{\n\t\t\t\t\tmethod: \"PUT\",\n\t\t\t\t\theaders: headers,\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tawait wait(300);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tconst errorData = await response.text();\n\t\t\t\tif (response.status === 401) {\n\t\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\t\tresponse.status,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\trequestUrl: response.url,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, response.status, {\n\t\t\t\t\terror: errorData,\n\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\trequestUrl: response.url,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tresponses.push({\n\t\t\t\tid: id,\n\t\t\t\tstatus: response.statusText,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tlet errorMessage: string;\n\n\t\t\tif (error instanceof PinataError) {\n\t\t\t\terrorMessage = error.message;\n\t\t\t} else if (error instanceof Error) {\n\t\t\t\terrorMessage = `Error adding file ${id} to group: ${error.message}`;\n\t\t\t} else {\n\t\t\t\terrorMessage = `An unknown error occurred while adding file ${id} to group`;\n\t\t\t}\n\n\t\t\tresponses.push({\n\t\t\t\tid: id,\n\t\t\t\tstatus: errorMessage,\n\t\t\t});\n\t\t}\n\t}\n\treturn responses;\n};\n","import type {\n\tPinataConfig,\n\tGroupOptions,\n\tGroupResponseItem,\n} from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const createGroup = async (\n\tconfig: PinataConfig | undefined,\n\toptions: GroupOptions,\n\tprivacy: \"public\" | \"private\",\n): Promise<GroupResponseItem> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst data = JSON.stringify({\n\t\tname: options.name,\n\t\tis_public: options.isPublic,\n\t});\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/createGroup\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/groups/${privacy}`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: headers,\n\t\t\tbody: data,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: GroupResponseItem = res.data;\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing createGroup: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while creating a group\");\n\t}\n};\n","import type { GetGroupOptions, PinataConfig } from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const deleteGroup = async (\n\tconfig: PinataConfig | undefined,\n\toptions: GetGroupOptions,\n\tprivacy: \"public\" | \"private\",\n): Promise<string> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/deleteGroup\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(\n\t\t\t`${endpoint}/groups/${privacy}/${options.groupId}`,\n\t\t\t{\n\t\t\t\tmethod: \"DELETE\",\n\t\t\t\theaders: headers,\n\t\t\t},\n\t\t);\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res: string = request.statusText;\n\t\treturn res;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing deleteGroup: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while deleting a group\");\n\t}\n};\n","import type {\n\tPinataConfig,\n\tGroupResponseItem,\n\tGetGroupOptions,\n} from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const getGroup = async (\n\tconfig: PinataConfig | undefined,\n\toptions: GetGroupOptions,\n\tprivacy: \"public\" | \"private\",\n): Promise<GroupResponseItem> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/getGroup\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(\n\t\t\t`${endpoint}/groups/${privacy}/${options.groupId}`,\n\t\t\t{\n\t\t\t\tmethod: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t},\n\t\t);\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: GroupResponseItem = res.data;\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing getGroup: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while getting info for a group\",\n\t\t);\n\t}\n};\n","import type {\n\tPinataConfig,\n\tGroupResponseItem,\n\tGroupQueryOptions,\n\tGroupListResponse,\n} from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const listGroups = async (\n\tconfig: PinataConfig | undefined,\n\tprivacy: \"public\" | \"private\",\n\toptions?: GroupQueryOptions,\n): Promise<GroupListResponse> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/listGroups\",\n\t\t};\n\t}\n\n\tconst params = new URLSearchParams();\n\n\tif (options) {\n\t\tconst { pageToken, name, limit, isPublic } = options;\n\n\t\tif (pageToken) params.append(\"pageToken\", pageToken.toString());\n\t\tif (isPublic) params.append(\"isPublic\", isPublic.toString());\n\t\tif (name) params.append(\"name\", name);\n\t\tif (limit !== undefined) params.append(\"limit\", limit.toString());\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(\n\t\t\t`${endpoint}/groups/${privacy}?${params.toString()}`,\n\t\t\t{\n\t\t\t\tmethod: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t},\n\t\t);\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: GroupListResponse = res.data;\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing listGroups: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while listing groups\");\n\t}\n};\n","import type {\n\tGroupCIDOptions,\n\tPinataConfig,\n\tUpdateGroupFilesResponse,\n} from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const removeFromGroup = async (\n\tconfig: PinataConfig | undefined,\n\toptions: GroupCIDOptions,\n\tprivacy: \"public\" | \"private\",\n): Promise<UpdateGroupFilesResponse[]> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst wait = (milliseconds: number): Promise<void> => {\n\t\treturn new Promise((resolve) => {\n\t\t\tsetTimeout(resolve, milliseconds);\n\t\t});\n\t};\n\n\tconst responses: UpdateGroupFilesResponse[] = [];\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/addToGroup\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\tfor (const id of options.files) {\n\t\ttry {\n\t\t\tconst response = await fetch(\n\t\t\t\t`${endpoint}/groups/${privacy}/${options.groupId}/ids/${id}`,\n\t\t\t\t{\n\t\t\t\t\tmethod: \"DELETE\",\n\t\t\t\t\theaders: headers,\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tawait wait(300);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tconst errorData = await response.text();\n\t\t\t\tif (response.status === 401) {\n\t\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\t\tresponse.status,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\trequestUrl: response.url,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, response.status, {\n\t\t\t\t\terror: errorData,\n\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\trequestUrl: response.url,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tresponses.push({\n\t\t\t\tid: id,\n\t\t\t\tstatus: response.statusText,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tlet errorMessage: string;\n\n\t\t\tif (error instanceof PinataError) {\n\t\t\t\terrorMessage = error.message;\n\t\t\t} else if (error instanceof Error) {\n\t\t\t\terrorMessage = `Error adding file ${id} to group: ${error.message}`;\n\t\t\t} else {\n\t\t\t\terrorMessage = `An unknown error occurred while adding file ${id} to group`;\n\t\t\t}\n\n\t\t\tresponses.push({\n\t\t\t\tid: id,\n\t\t\t\tstatus: errorMessage,\n\t\t\t});\n\t\t}\n\t}\n\treturn responses;\n};\n","import type {\n\tPinataConfig,\n\tGroupResponseItem,\n\tUpdateGroupOptions,\n} from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const updateGroup = async (\n\tconfig: PinataConfig | undefined,\n\toptions: UpdateGroupOptions,\n\tprivacy: \"public\" | \"private\",\n): Promise<GroupResponseItem> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst data = JSON.stringify({\n\t\tname: options.name,\n\t\tis_public: options.isPublic,\n\t});\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/updateGroup\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(\n\t\t\t`${endpoint}/groups/${privacy}/${options.groupId}`,\n\t\t\t{\n\t\t\t\tmethod: \"PUT\",\n\t\t\t\theaders: headers,\n\t\t\t\tbody: data,\n\t\t\t},\n\t\t);\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: GroupResponseItem = res.data;\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing updateGroup: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while updating group\");\n\t}\n};\n","import type { PinataConfig, KeyOptions, KeyResponse } from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const createKey = async (\n\tconfig: PinataConfig | undefined,\n\toptions: KeyOptions,\n): Promise<KeyResponse> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/createKey\",\n\t\t};\n\t}\n\n\tconst data = JSON.stringify(options);\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/pinata/keys`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: headers,\n\t\t\tbody: data,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res: KeyResponse = await request.json();\n\t\treturn res;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing createKey: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while creating API key\");\n\t}\n};\n","import type {\n\tKeyListItem,\n\tKeyListQuery,\n\tKeyListResponse,\n\tPinataConfig,\n} from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const listKeys = async (\n\tconfig: PinataConfig | undefined,\n\toptions?: KeyListQuery,\n): Promise<KeyListItem[]> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/listKeys\",\n\t\t};\n\t}\n\n\tconst params = new URLSearchParams();\n\n\tif (options) {\n\t\tconst { offset, name, revoked, limitedUse, exhausted } = options;\n\n\t\tif (offset) params.append(\"offset\", offset.toString());\n\t\tif (revoked !== undefined) params.append(\"revoked\", revoked.toString());\n\t\tif (limitedUse !== undefined)\n\t\t\tparams.append(\"limitedUse\", limitedUse.toString());\n\t\tif (exhausted !== undefined)\n\t\t\tparams.append(\"exhausted\", exhausted.toString());\n\t\tif (name) params.append(\"name\", name);\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(\n\t\t\t`${endpoint}/pinata/keys?${params.toString()}`,\n\t\t\t{\n\t\t\t\tmethod: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t},\n\t\t);\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res: KeyListResponse = await request.json();\n\t\treturn res.keys;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing listKeys: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while listing API keys\");\n\t}\n};\n","import type { PinataConfig, RevokeKeyResponse } from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nconst wait = (milliseconds: number): Promise<void> => {\n\treturn new Promise((resolve) => {\n\t\tsetTimeout(resolve, milliseconds);\n\t});\n};\n\nexport const revokeKeys = async (\n\tconfig: PinataConfig | undefined,\n\tkeys: string[],\n): Promise<RevokeKeyResponse[]> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t\theaders = { ...config.customHeaders };\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/revokeKeys\",\n\t\t};\n\t}\n\n\tconst responses: RevokeKeyResponse[] = [];\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\tfor (const key of keys) {\n\t\ttry {\n\t\t\tconst request = await fetch(`${endpoint}/pinata/keys/${key}`, {\n\t\t\t\tmethod: \"PUT\",\n\t\t\t\theaders: headers,\n\t\t\t});\n\n\t\t\tawait wait(300);\n\n\t\t\tif (!request.ok) {\n\t\t\t\tconst errorData = await request.text();\n\t\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\t\trequest.status,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\t\terror: errorData,\n\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst result: string = await request.json();\n\t\t\tresponses.push({\n\t\t\t\tkey: key,\n\t\t\t\tstatus: result,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tlet errorMessage: string;\n\n\t\t\tif (error instanceof PinataError) {\n\t\t\t\terrorMessage = error.message;\n\t\t\t} else if (error instanceof Error) {\n\t\t\t\terrorMessage = `Error revoking key ${key}: ${error.message}`;\n\t\t\t} else {\n\t\t\t\terrorMessage = `An unknown error occurred while revoking key ${key}`;\n\t\t\t}\n\n\t\t\tresponses.push({\n\t\t\t\tkey: key,\n\t\t\t\tstatus: errorMessage,\n\t\t\t});\n\t\t}\n\t}\n\n\treturn responses;\n};\n","import type { PinataConfig, UploadResponse, UploadOptions } from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const uploadBase64 = async (\n\tconfig: PinataConfig | undefined,\n\tbase64String: string,\n\tnetwork: \"private\" | \"public\",\n\toptions?: UploadOptions,\n) => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst jwt: string | undefined = options?.keys || config?.pinataJwt;\n\n\tconst name = options?.metadata?.name\n\t\t? options?.metadata?.name\n\t\t: \"base64 string\";\n\n\tconst buffer = Buffer.from(base64String, \"base64\");\n\n\tconst blob = new Blob([buffer]);\n\n\tconst data = new FormData();\n\n\tdata.append(\"file\", blob, name);\n\tdata.append(\"network\", network);\n\tdata.append(\"name\", name);\n\tif (options?.groupId) {\n\t\tdata.append(\"group_id\", options.groupId);\n\t}\n\tif (options?.metadata?.keyvalues) {\n\t\tdata.append(\"keyvalues\", JSON.stringify(options.metadata.keyvalues));\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\tSource: \"sdk/base64\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://uploads.pinata.cloud/v3\";\n\n\tif (config.uploadUrl) {\n\t\tendpoint = config.uploadUrl;\n\t}\n\n\tif (options?.url) {\n\t\ttry {\n\t\t\tconst request = await fetch(options.url, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tbody: data,\n\t\t\t});\n\n\t\t\tif (!request.ok) {\n\t\t\t\tconst errorData = await request.text();\n\t\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\t\trequest.status,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\t\terror: errorData,\n\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst res = await request.json();\n\t\t\tconst resData: UploadResponse = res.data;\n\t\t\treturn resData;\n\t\t} catch (error) {\n\t\t\tif (error instanceof PinataError) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tif (error instanceof Error) {\n\t\t\t\tthrow new PinataError(`Error processing base64: ${error.message}`);\n\t\t\t}\n\t\t\tthrow new PinataError(\n\t\t\t\t\"An unknown error occurred while trying to upload base64\",\n\t\t\t);\n\t\t}\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/files`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: headers,\n\t\t\tbody: data,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: UploadResponse = res.data;\n\t\tif (options?.vectorize) {\n\t\t\tconst vectorReq = await fetch(\n\t\t\t\t`${endpoint}/vectorize/files/${resData.id}`,\n\t\t\t\t{\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\t\t\tif (vectorReq.ok) {\n\t\t\t\tresData.vectorized = true;\n\t\t\t\treturn resData;\n\t\t\t} else {\n\t\t\t\tconst errorData = await vectorReq.text();\n\t\t\t\tthrow new NetworkError(\n\t\t\t\t\t`HTTP error during vectorization: ${errorData}`,\n\t\t\t\t\tvectorReq.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing base64: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while trying to upload base64\",\n\t\t);\n\t}\n};\n","import type { PinataConfig, SignedUploadUrlOptions } from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const createSignedUploadURL = async (\n\tconfig: PinataConfig | undefined,\n\toptions: SignedUploadUrlOptions,\n\tnetwork: \"public\" | \"private\",\n): Promise<string> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\ttype PayloadData = {\n\t\tdate: number;\n\t\texpires: number;\n\t\tgroup_id?: string;\n\t\tfilename?: string;\n\t\tkeyvalues?: Record<string, string>;\n\t\tnetwork?: \"public\" | \"private\";\n\t\tmax_file_size?: number;\n\t\tallow_mime_types?: string[];\n\t\tstreamable?: boolean;\n\t};\n\n\tconst date = options?.date || Math.floor(new Date().getTime() / 1000);\n\n\tconst payload: PayloadData = {\n\t\tdate: date,\n\t\texpires: options.expires,\n\t};\n\n\tif (options.groupId) {\n\t\tpayload.group_id = options.groupId;\n\t}\n\n\tif (options.name) {\n\t\tpayload.filename = options.name;\n\t}\n\n\tif (options.keyvalues) {\n\t\tpayload.keyvalues = options.keyvalues;\n\t}\n\n\tif (network) {\n\t\tpayload.network = network;\n\t}\n\n\tif (options.streamable) {\n\t\tpayload.streamable = options.streamable;\n\t}\n\n\tif (options.maxFileSize) {\n\t\tpayload.max_file_size = options.maxFileSize;\n\t}\n\n\tif (options.mimeTypes) {\n\t\tpayload.allow_mime_types = options.mimeTypes;\n\t}\n\n\tlet endpoint: string = \"https://uploads.pinata.cloud/v3\";\n\n\tif (config.uploadUrl) {\n\t\tendpoint = config.uploadUrl;\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\tSource: \"sdk/createSignURL\",\n\t\t};\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/files/sign`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: headers,\n\t\t\tcache: \"no-store\",\n\t\t\tbody: JSON.stringify(payload),\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication Failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\treturn res.data;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(\n\t\t\t\t`Error processing createSignedURL: ${error.message}`,\n\t\t\t);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while getting signed url\");\n\t}\n};\n","import type { PinataConfig, UploadResponse, UploadOptions } from \"../../types\";\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\nimport { getFileIdFromUrl } from \"../../../utils/resumable\";\n\nexport const uploadFile = async (\n\tconfig: PinataConfig | undefined,\n\tfile: File,\n\tnetwork: \"public\" | \"private\",\n\toptions?: UploadOptions,\n) => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst jwt: string | undefined = options?.keys || config.pinataJwt;\n\n\tlet endpoint: string = \"https://uploads.pinata.cloud/v3\";\n\n\tif (config.uploadUrl) {\n\t\tendpoint = config.uploadUrl;\n\t}\n\n\tif (file.size > 94371840) {\n\t\tlet headers: Record<string, string>;\n\n\t\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\t\theaders = {\n\t\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t\t...config.customHeaders,\n\t\t\t};\n\t\t} else {\n\t\t\theaders = {\n\t\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t\tSource: \"sdk/file\",\n\t\t\t};\n\t\t}\n\n\t\tconst name = options?.metadata?.name || file.name || \"File from SDK\";\n\n\t\tlet metadata: string = `filename ${btoa(name)},filetype ${btoa(file.type)},network ${btoa(network)}`;\n\n\t\tif (options?.groupId) {\n\t\t\tmetadata + `,group_id ${btoa(options.groupId)}`;\n\t\t}\n\n\t\tif (options?.metadata?.keyvalues) {\n\t\t\tmetadata +\n\t\t\t\t`,keyvalues ${btoa(JSON.stringify(options.metadata.keyvalues))}`;\n\t\t}\n\n\t\tif (options?.streamable) {\n\t\t\tmetadata + `,keyvalues ${btoa(\"true\")}`;\n\t\t}\n\n\t\tlet updatedEndpoint: string = `${endpoint}/files`;\n\n\t\tif (options?.url) {\n\t\t\tupdatedEndpoint = options.url;\n\t\t}\n\n\t\tconst urlReq = await fetch(updatedEndpoint, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: {\n\t\t\t\t\"Upload-Length\": `${file.size}`,\n\t\t\t\t\"Upload-Metadata\": metadata,\n\t\t\t\t...headers,\n\t\t\t},\n\t\t});\n\t\tconst url = urlReq.headers.get(\"Location\");\n\t\tif (!url) {\n\t\t\tconst errorData = await urlReq.text();\n\t\t\tthrow new NetworkError(\"Upload URL not provided\", urlReq.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: urlReq.url,\n\t\t\t\t\trequestHeaders: urlReq.headers,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst chunkSize = 50 * 1024 * 1024; // 50MB in bytes\n\t\tconst totalChunks = Math.ceil(file.size / chunkSize);\n\t\tlet offset = 0;\n\t\tlet uploadReq: any;\n\n\t\tfor (let i = 0; i < totalChunks; i++) {\n\t\t\tconst chunk = file.slice(offset, offset + chunkSize);\n\t\t\tlet retryCount = 0;\n\t\t\tconst maxRetries = 5;\n\n\t\t\twhile (retryCount <= maxRetries) {\n\t\t\t\ttry {\n\t\t\t\t\tuploadReq = await fetch(url as string, {\n\t\t\t\t\t\tmethod: \"PATCH\",\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\"Content-Type\": \"application/offset+octet-stream\",\n\t\t\t\t\t\t\t\"Upload-Offset\": offset.toString(),\n\t\t\t\t\t\t\t...headers,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: chunk,\n\t\t\t\t\t});\n\n\t\t\t\t\tif (uploadReq.ok) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst errorData = await uploadReq.text();\n\t\t\t\t\t\tthrow new Error(`HTTP ${uploadReq.status}: ${errorData}`);\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tretryCount++;\n\n\t\t\t\t\tif (retryCount > maxRetries) {\n\t\t\t\t\t\t// All retries exhausted - throw final error\n\t\t\t\t\t\tconst errorData = uploadReq\n\t\t\t\t\t\t\t? await uploadReq.text().catch(() => \"Unknown error\")\n\t\t\t\t\t\t\t: error instanceof Error\n\t\t\t\t\t\t\t\t? error.message\n\t\t\t\t\t\t\t\t: String(error);\n\t\t\t\t\t\tthrow new NetworkError(\n\t\t\t\t\t\t\t`HTTP error during chunk upload after ${maxRetries} retries: ${errorData}`,\n\t\t\t\t\t\t\tuploadReq?.status || 0,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\t\trequestUrl: uploadReq?.url || url,\n\t\t\t\t\t\t\t\t\tretriesAttempted: maxRetries,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst delay = Math.min(1000 * Math.pow(2, retryCount - 1), 10000); // Cap at 10 seconds\n\t\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, delay));\n\t\t\t\t}\n\t\t\t}\n\t\t\toffset += chunk.size;\n\t\t}\n\n\t\tif (uploadReq.status === 204) {\n\t\t\tconst cid = uploadReq.headers.get(\"upload-cid\");\n\t\t\tlet dataEndpoint: string;\n\t\t\tif (config.endpointUrl) {\n\t\t\t\tdataEndpoint = config.endpointUrl;\n\t\t\t} else {\n\t\t\t\tdataEndpoint = \"https://api.pinata.cloud/v3\";\n\t\t\t}\n\t\t\tconst fileInfoReq = await fetch(\n\t\t\t\t`${dataEndpoint}/files/${network}?cid=${cid}`,\n\t\t\t\t{\n\t\t\t\t\tmethod: \"GET\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\t\t\tconst fileInfo = await fileInfoReq.json();\n\t\t\tconst data: UploadResponse = fileInfo.data.files[0];\n\t\t\tif (options?.vectorize) {\n\t\t\t\tconst vectorReq = await fetch(\n\t\t\t\t\t`${endpoint}/vectorize/files/${data.id}`,\n\t\t\t\t\t{\n\t\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\tif (vectorReq.ok) {\n\t\t\t\t\tdata.vectorized = true;\n\t\t\t\t\treturn data;\n\t\t\t\t} else {\n\t\t\t\t\tconst errorData = await vectorReq.text();\n\t\t\t\t\tthrow new NetworkError(\n\t\t\t\t\t\t`HTTP error during vectorization: ${errorData}`,\n\t\t\t\t\t\tvectorReq.status,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\trequestUrl: vectorReq.url,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn data;\n\t\t}\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\tSource: \"sdk/file\",\n\t\t};\n\t}\n\n\tconst data = new FormData();\n\tdata.append(\"file\", file, file.name);\n\n\tdata.append(\"network\", network);\n\n\tdata.append(\"name\", options?.metadata?.name || file.name || \"File from SDK\");\n\n\tif (options?.groupId) {\n\t\tdata.append(\"group_id\", options.groupId);\n\t}\n\n\tif (options?.metadata?.keyvalues) {\n\t\tdata.append(\"keyvalues\", JSON.stringify(options.metadata.keyvalues));\n\t}\n\n\tif (options?.streamable) {\n\t\tdata.append(\"streamable\", \"true\");\n\t}\n\n\tif (options?.url) {\n\t\ttry {\n\t\t\tconst request = await fetch(options.url, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: headers,\n\t\t\t\tbody: data,\n\t\t\t});\n\n\t\t\tif (!request.ok) {\n\t\t\t\tconst errorData = await request.text();\n\t\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\t\trequest.status,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\t\terror: errorData,\n\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst res = await request.json();\n\t\t\tconst resData: UploadResponse = res.data;\n\t\t\treturn resData;\n\t\t} catch (error) {\n\t\t\tif (error instanceof PinataError) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tif (error instanceof Error) {\n\t\t\t\tthrow new PinataError(`Error processing base64: ${error.message}`);\n\t\t\t}\n\t\t\tthrow new PinataError(\n\t\t\t\t\"An unknown error occurred while trying to upload base64\",\n\t\t\t);\n\t\t}\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/files`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: headers,\n\t\t\tbody: data,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\tconst res = await request.json();\n\t\tconst resData: UploadResponse = res.data;\n\t\tif (options?.vectorize) {\n\t\t\tconst vectorReq = await fetch(\n\t\t\t\t`${endpoint}/vectorize/files/${resData.id}`,\n\t\t\t\t{\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\t\t\tif (vectorReq.ok) {\n\t\t\t\tresData.vectorized = true;\n\t\t\t\treturn resData;\n\t\t\t} else {\n\t\t\t\tconst errorData = await vectorReq.text();\n\t\t\t\tthrow new NetworkError(\n\t\t\t\t\t`HTTP error during vectorization: ${errorData}`,\n\t\t\t\t\tvectorReq.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error uploading file: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while uploading the file\");\n\t}\n};\n","import type { PinataConfig, UploadResponse, UploadOptions } from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const uploadFileArray = async (\n\tconfig: PinataConfig | undefined,\n\tfiles: File[],\n\tnetwork: \"public\" | \"private\",\n\toptions?: UploadOptions,\n) => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst jwt: string | undefined = options?.keys || config?.pinataJwt;\n\n\tconst folder = options?.metadata?.name || \"folder_from_sdk\";\n\n\tconst data = new FormData();\n\n\tfor (const file of Array.from(files)) {\n\t\tconst path = file.webkitRelativePath || `${folder}/${file.name}`;\n\t\tdata.append(\"file\", file, path);\n\t}\n\n\t// Reserved for later release\n\t// data.append(\"name\", folder);\n\n\t// data.append(\"network\", network);\n\n\t// if (options?.groupId) {\n\t// data.append(\"group_id\", options.groupId);\n\t// }\n\n\t// if (options?.metadata?.keyvalues) {\n\t// data.append(\"keyvalues\", JSON.stringify(options.metadata.keyvalues));\n\t// }\n\n\t// Legacy\n\tdata.append(\n\t\t\"pinataMetadata\",\n\t\tJSON.stringify({\n\t\t\tname: folder,\n\t\t\tkeyvalues: options?.metadata?.keyvalues,\n\t\t}),\n\t);\n\n\tdata.append(\n\t\t\"pinataOptions\",\n\t\tJSON.stringify({\n\t\t\tgroupId: options?.groupId,\n\t\t\tcidVersion: 1,\n\t\t}),\n\t);\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\tSource: \"sdk/fileArray\",\n\t\t};\n\t}\n\t// Reserved for later release\n\t//let endpoint: string = \"https://uploads.pinata.cloud/v3\";\n\tlet endpoint: string = \"https://api.pinata.cloud/pinning/pinFileToIPFS\";\n\n\tif (config.legacyUploadUrl) {\n\t\tendpoint = config.legacyUploadUrl;\n\t}\n\n\ttry {\n\t\t// Reserved for later release\n\t\t// const request = await fetch(`${endpoint}/files`, {\n\t\t// \tmethod: \"POST\",\n\t\t// \theaders: headers,\n\t\t// \tbody: data,\n\t\t// });\n\t\tconst request = await fetch(`${endpoint}`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: headers,\n\t\t\tbody: data,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\n\t\tconst resData: UploadResponse = {\n\t\t\tid: res.ID,\n\t\t\tname: res.Name,\n\t\t\tcid: res.IpfsHash,\n\t\t\tsize: res.PinSize,\n\t\t\tcreated_at: res.Timestamp,\n\t\t\tnumber_of_files: res.NumberOfFiles,\n\t\t\tmime_type: res.MimeType,\n\t\t\tgroup_id: res.GroupId,\n\t\t\tkeyvalues: res.Keyvalues,\n\t\t\tvectorized: false,\n\t\t\tnetwork: \"public\",\n\t\t};\n\n\t\t// if (options?.vectorize) {\n\t\t// const vectorReq = await fetch(\n\t\t// `${endpoint}/vectorize/files/${resData.id}`,\n\t\t// {\n\t\t// method: \"POST\",\n\t\t// headers: {\n\t\t// Authorization: `Bearer ${jwt}`,\n\t\t// },\n\t\t// },\n\t\t// );\n\t\t// if (vectorReq.ok) {\n\t\t// resData.vectorized = true;\n\t\t// return resData;\n\t\t// } else {\n\t\t// const errorData = await vectorReq.text();\n\t\t// throw new NetworkError(\n\t\t// `HTTP error during vectorization: ${errorData}`,\n\t\t// vectorReq.status,\n\t\t// {\n\t\t// error: errorData,\n\t\t// code: \"HTTP_ERROR\",\n\t\t// metadata: {\n\t\t// requestUrl: request.url,\n\t\t// },\n\t\t// },\n\t\t// );\n\t\t// }\n\t\t// }\n\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing fileArray: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while uploading an array of files\",\n\t\t);\n\t}\n};\n","import type {\n\tPinataConfig,\n\tUploadResponse,\n\tUploadOptions,\n\tJsonBody,\n} from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const uploadJson = async <T extends JsonBody>(\n\tconfig: PinataConfig | undefined,\n\tjsonData: T,\n\tnetwork: \"public\" | \"private\",\n\toptions?: UploadOptions,\n) => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst jwt: string | undefined = options?.keys || config?.pinataJwt;\n\n\tconst json = JSON.stringify(jsonData);\n\tconst blob = new Blob([json]);\n\tconst file = new File([blob], \"data.json\", { type: \"application/json\" });\n\n\tconst data = new FormData();\n\tdata.append(\"file\", file, file.name);\n\tdata.append(\"network\", network);\n\tdata.append(\"name\", options?.metadata?.name || file.name || \"File from SDK\");\n\tif (options?.groupId) {\n\t\tdata.append(\"group_id\", options.groupId);\n\t}\n\tif (options?.metadata?.keyvalues) {\n\t\tdata.append(\"keyvalues\", JSON.stringify(options.metadata.keyvalues));\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\tSource: \"sdk/json\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://uploads.pinata.cloud/v3\";\n\n\tif (config.uploadUrl) {\n\t\tendpoint = config.uploadUrl;\n\t}\n\n\tif (options?.url) {\n\t\ttry {\n\t\t\tconst request = await fetch(options.url, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tbody: data,\n\t\t\t});\n\n\t\t\tif (!request.ok) {\n\t\t\t\tconst errorData = await request.text();\n\t\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\t\trequest.status,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\t\terror: errorData,\n\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst res = await request.json();\n\t\t\tconst resData: UploadResponse = res.data;\n\t\t\treturn resData;\n\t\t} catch (error) {\n\t\t\tif (error instanceof PinataError) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tif (error instanceof Error) {\n\t\t\t\tthrow new PinataError(`Error processing base64: ${error.message}`);\n\t\t\t}\n\t\t\tthrow new PinataError(\n\t\t\t\t\"An unknown error occurred while trying to upload base64\",\n\t\t\t);\n\t\t}\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/files`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: headers,\n\t\t\tbody: data,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: UploadResponse = res.data;\n\t\tif (options?.vectorize) {\n\t\t\tconst vectorReq = await fetch(\n\t\t\t\t`${endpoint}/vectorize/files/${resData.id}`,\n\t\t\t\t{\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\t\t\tif (vectorReq.ok) {\n\t\t\t\tresData.vectorized = true;\n\t\t\t\treturn resData;\n\t\t\t} else {\n\t\t\t\tconst errorData = await vectorReq.text();\n\t\t\t\tthrow new NetworkError(\n\t\t\t\t\t`HTTP error during vectorization: ${errorData}`,\n\t\t\t\t\tvectorReq.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing json: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while uploading json\");\n\t}\n};\n","import type { PinataConfig, UploadResponse, UploadOptions } from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const uploadUrl = async (\n\tconfig: PinataConfig | undefined,\n\turl: string,\n\tnetwork: \"public\" | \"private\",\n\toptions?: UploadOptions,\n) => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst jwt: string | undefined = options?.keys || config?.pinataJwt;\n\tconst data = new FormData();\n\n\tconst stream = await fetch(url);\n\n\tif (!stream.ok) {\n\t\tconst errorData = await stream.text();\n\t\tthrow new NetworkError(`HTTP error: ${errorData}`, stream.status, {\n\t\t\terror: errorData,\n\t\t\tcode: \"HTTP_ERROR\",\n\t\t\tmetadata: {\n\t\t\t\trequestUrl: stream.url,\n\t\t\t},\n\t\t});\n\t}\n\n\tconst arrayBuffer = await stream.arrayBuffer();\n\n\tconst blob = new Blob([arrayBuffer]);\n\n\tconst name = options?.metadata?.name ?? \"url_upload\";\n\n\tconst file = new File([blob], name);\n\n\tdata.append(\"file\", file, name);\n\tdata.append(\"network\", network);\n\tdata.append(\"name\", name);\n\tif (options?.groupId) {\n\t\tdata.append(\"group_id\", options.groupId);\n\t}\n\n\tif (options?.metadata?.keyvalues) {\n\t\tdata.append(\"keyvalues\", JSON.stringify(options.metadata.keyvalues));\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\tSource: \"sdk/url\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://uploads.pinata.cloud/v3\";\n\n\tif (config.uploadUrl) {\n\t\tendpoint = config.uploadUrl;\n\t}\n\n\tif (options?.url) {\n\t\ttry {\n\t\t\tconst request = await fetch(options.url, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tbody: data,\n\t\t\t});\n\n\t\t\tif (!request.ok) {\n\t\t\t\tconst errorData = await request.text();\n\t\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\t\trequest.status,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\t\terror: errorData,\n\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst res = await request.json();\n\t\t\tconst resData: UploadResponse = res.data;\n\t\t\treturn resData;\n\t\t} catch (error) {\n\t\t\tif (error instanceof PinataError) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tif (error instanceof Error) {\n\t\t\t\tthrow new PinataError(`Error processing base64: ${error.message}`);\n\t\t\t}\n\t\t\tthrow new PinataError(\n\t\t\t\t\"An unknown error occurred while trying to upload base64\",\n\t\t\t);\n\t\t}\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/files`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: headers,\n\t\t\tbody: data,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: UploadResponse = res.data;\n\t\tif (options?.vectorize) {\n\t\t\tconst vectorReq = await fetch(\n\t\t\t\t`${endpoint}/vectorize/files/${resData.id}`,\n\t\t\t\t{\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\t\t\tif (vectorReq.ok) {\n\t\t\t\tresData.vectorized = true;\n\t\t\t\treturn resData;\n\t\t\t} else {\n\t\t\t\tconst errorData = await vectorReq.text();\n\t\t\t\tthrow new NetworkError(\n\t\t\t\t\t`HTTP error during vectorization: ${errorData}`,\n\t\t\t\t\tvectorReq.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing url: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while uploading by url\");\n\t}\n};\n","import type {\n\tPinataConfig,\n\tPinByCIDResponse,\n\tUploadCIDOptions,\n} from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const uploadCid = async (\n\tconfig: PinataConfig | undefined,\n\tcid: string,\n\toptions?: UploadCIDOptions,\n) => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst jwt: string | undefined = options?.keys || config?.pinataJwt;\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${jwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/cid\",\n\t\t};\n\t}\n\n\tconst requestBody: Record<string, any> = {\n\t\tcid: cid,\n\t\tname: options?.metadata ? options?.metadata?.name : cid,\n\t\tkeyvalues: options?.metadata?.keyvalues,\n\t\tgroup_id: options?.groupId,\n\t\thost_nodes: options?.peerAddresses,\n\t};\n\n\tconst data = JSON.stringify(requestBody);\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/files/public/pin_by_cid`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: headers,\n\t\t\tbody: data,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: PinByCIDResponse = res.data;\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing cid: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\"An unknown error occurred while pinning by CID\");\n\t}\n};\n","import type { PinataConfig } from \"../../types/\";\nimport {\n\tAnalyticsRequests,\n\tAnalyticsBandwidth,\n\tTimeIntervalAnalyticsBuilder,\n} from \"./\";\nimport { formatConfig } from \"../../../utils/format-config\";\n\nexport class Analytics {\n\tconfig: PinataConfig | undefined;\n\trequests: AnalyticsRequests;\n\tbandwidth: AnalyticsBandwidth;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t\tthis.requests = new AnalyticsRequests(this.config);\n\t\tthis.bandwidth = new AnalyticsBandwidth(this.config);\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t\tthis.requests.updateConfig(newConfig);\n\t\tthis.bandwidth.updateConfig(newConfig);\n\t}\n\n\tsummary(options: {\n\t\tdomain: string;\n\t\tstart: string;\n\t\tend: string;\n\t\tinterval: \"day\" | \"week\";\n\t}): TimeIntervalAnalyticsBuilder {\n\t\treturn new TimeIntervalAnalyticsBuilder(\n\t\t\tthis.config,\n\t\t\toptions.domain,\n\t\t\toptions.start,\n\t\t\toptions.end,\n\t\t\toptions.interval,\n\t\t);\n\t}\n}\n","export const calculateDates = (\n\tdays: number,\n): { start: string; end: string } => {\n\tconst end = new Date();\n\tconst start = new Date();\n\tstart.setDate(start.getDate() - days);\n\n\t// Format dates to ISO string and trim time portion\n\treturn {\n\t\tstart: start.toISOString().split(\"T\")[0],\n\t\tend: end.toISOString().split(\"T\")[0],\n\t};\n};\n","import {\n\tPinataConfig,\n\tTopAnalyticsQuery,\n\tTopAnalyticsResponse,\n} from \"../../types\";\nimport { analyticsTopUsage } from \"../../functions\";\nimport { calculateDates } from \"./utils\";\n\nexport class AnalyticsFilter {\n\tprotected config: PinataConfig | undefined;\n\tprotected query: TopAnalyticsQuery;\n\n\tconstructor(\n\t\tconfig: PinataConfig | undefined,\n\t\tdomain: string,\n\t\tstart: string,\n\t\tend: string,\n\t) {\n\t\tthis.config = config;\n\t\tthis.query = {\n\t\t\tgateway_domain: domain,\n\t\t\tstart_date: start,\n\t\t\tend_date: end,\n\t\t\tsort_by: \"requests\", // Will be overridden in child classes\n\t\t\tattribute: \"cid\",\n\t\t};\n\t}\n\n\tcid(cid?: string): this {\n\t\tthis.query.attribute = \"cid\";\n\t\tif (cid) {\n\t\t\tthis.query.cid = cid;\n\t\t}\n\t\treturn this;\n\t}\n\n\tfileName(fileName?: string): this {\n\t\tthis.query.attribute = \"file_name\";\n\t\tif (fileName) {\n\t\t\tthis.query.file_name = fileName;\n\t\t}\n\t\treturn this;\n\t}\n\n\tuserAgent(userAgent?: string): this {\n\t\tthis.query.attribute = \"user_agent\";\n\t\tif (userAgent) {\n\t\t\tthis.query.user_agent = userAgent;\n\t\t}\n\t\treturn this;\n\t}\n\n\tcountry(country?: string): this {\n\t\tthis.query.attribute = \"country\";\n\t\tif (country) {\n\t\t\tthis.query.country = country;\n\t\t}\n\t\treturn this;\n\t}\n\n\tregion(region?: string): this {\n\t\tthis.query.attribute = \"region\";\n\t\tif (region) {\n\t\t\tthis.query.region = region;\n\t\t}\n\t\treturn this;\n\t}\n\n\treferer(referer?: string): this {\n\t\tthis.query.attribute = \"referer\";\n\t\tif (referer) {\n\t\t\tthis.query.referer = referer;\n\t\t}\n\t\treturn this;\n\t}\n\n\tlimit(limit: number): this {\n\t\tthis.query.limit = limit;\n\t\treturn this;\n\t}\n\n\tsort(order: \"asc\" | \"desc\"): this {\n\t\tthis.query.sort_order = order;\n\t\treturn this;\n\t}\n\n\tdays(numberOfDays: number): this {\n\t\tconst { start, end } = calculateDates(numberOfDays);\n\t\tthis.query.start_date = start;\n\t\tthis.query.end_date = end;\n\t\treturn this;\n\t}\n\n\tthen(\n\t\tonfulfilled?: ((value: TopAnalyticsResponse) => any) | null,\n\t): Promise<any> {\n\t\treturn analyticsTopUsage(this.config, this.query).then(onfulfilled);\n\t}\n}\n","import type { PinataConfig } from \"../../types\";\nimport { AnalyticsFilter } from \"./AnalyticsFilter\";\n\nexport class AnalyticsBandwidth extends AnalyticsFilter {\n\tconstructor(config?: PinataConfig) {\n\t\tsuper(config, \"\", \"\", \"\"); // These will need to be set through methods\n\t\tthis.query.sort_by = \"bandwidth\";\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t}\n\n\tcustomDates(start?: string, end?: string): this {\n\t\tif (start) this.query.start_date = start;\n\t\tif (end) this.query.end_date = end;\n\t\treturn this;\n\t}\n\n\tfrom(domain: string): this {\n\t\tthis.query.gateway_domain = domain;\n\t\treturn this;\n\t}\n}\n","import type { AnalyticsQuery, PinataConfig } from \"../../types\";\n\nexport class AnalyticsBuilder<T extends AnalyticsQuery, R> {\n\tprotected config: PinataConfig | undefined;\n\tprotected query: T;\n\tprivate requestCount = 0;\n\tprivate lastRequestTime = 0;\n\tprivate readonly MAX_REQUESTS_PER_MINUTE = 30;\n\tprivate readonly MINUTE_IN_MS = 60000;\n\n\tconstructor(config: PinataConfig | undefined, query: T) {\n\t\tthis.config = config;\n\t\tthis.query = query;\n\t}\n\n\tcid(cid: string): this {\n\t\tthis.query.cid = cid;\n\t\treturn this;\n\t}\n\n\tfileName(fileName: string): this {\n\t\tthis.query.file_name = fileName;\n\t\treturn this;\n\t}\n\n\tuserAgent(userAgent: string): this {\n\t\tthis.query.user_agent = userAgent;\n\t\treturn this;\n\t}\n\n\tcountry(country: string): this {\n\t\tthis.query.country = country;\n\t\treturn this;\n\t}\n\n\tregion(region: string): this {\n\t\tthis.query.region = region;\n\t\treturn this;\n\t}\n\n\treferer(referer: string): this {\n\t\tthis.query.referer = referer;\n\t\treturn this;\n\t}\n\n\tlimit(limit: number): this {\n\t\tthis.query.limit = limit;\n\t\treturn this;\n\t}\n\n\tsort(order: \"asc\" | \"desc\"): this {\n\t\tthis.query.sort_order = order;\n\t\treturn this;\n\t}\n\n\t// private async rateLimit(): Promise<void> {\n\t// \tthis.requestCount++;\n\t// \tconst now = Date.now();\n\t// \tif (this.requestCount >= this.MAX_REQUESTS_PER_MINUTE) {\n\t// \t\tconst timePassedSinceLastRequest = now - this.lastRequestTime;\n\t// \t\tif (timePassedSinceLastRequest < this.MINUTE_IN_MS) {\n\t// \t\t\tconst delayTime = this.MINUTE_IN_MS - timePassedSinceLastRequest;\n\t// \t\t\tawait new Promise((resolve) => setTimeout(resolve, delayTime));\n\t// \t\t}\n\t// \t\tthis.requestCount = 0;\n\t// \t}\n\t// \tthis.lastRequestTime = Date.now();\n\t// }\n\n\tprotected async getAnalytics(): Promise<R> {\n\t\t//await this.rateLimit();\n\t\tthrow new Error(\"getAnalytics method must be implemented in derived class\");\n\t}\n\n\tthen(onfulfilled?: ((value: R) => any) | null): Promise<any> {\n\t\treturn this.getAnalytics().then(onfulfilled);\n\t}\n}\n","import { PinataConfig } from \"../../types\";\nimport { AnalyticsFilter } from \"./AnalyticsFilter\";\n\nexport class AnalyticsRequests extends AnalyticsFilter {\n\tconstructor(config?: PinataConfig) {\n\t\tsuper(config, \"\", \"\", \"\"); // These will need to be set through methods\n\t\tthis.query.sort_by = \"requests\";\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t}\n\n\tcustomDates(start?: string, end?: string): this {\n\t\tif (start) this.query.start_date = start;\n\t\tif (end) this.query.end_date = end;\n\t\treturn this;\n\t}\n\n\tfrom(domain: string): this {\n\t\tthis.query.gateway_domain = domain;\n\t\treturn this;\n\t}\n}\n","import { AnalyticsBuilder } from \"./AnalyticsBuilder\";\nimport {\n\tTimeIntervalAnalyticsQuery,\n\tTimeIntervalAnalyticsResponse,\n\tPinataConfig,\n} from \"../../types\";\nimport { analyticsDateInterval } from \"../../functions\";\n\nexport class TimeIntervalAnalyticsBuilder extends AnalyticsBuilder<\n\tTimeIntervalAnalyticsQuery,\n\tTimeIntervalAnalyticsResponse\n> {\n\tconstructor(\n\t\tconfig: PinataConfig | undefined,\n\t\tdomain: string,\n\t\tstart: string,\n\t\tend: string,\n\t\tdateInterval: \"day\" | \"week\",\n\t) {\n\t\tsuper(config, {\n\t\t\tgateway_domain: domain,\n\t\t\tstart_date: start,\n\t\t\tend_date: end,\n\t\t\tdate_interval: dateInterval,\n\t\t});\n\t}\n\n\tsortBy(sortBy: \"requests\" | \"bandwidth\"): this {\n\t\tthis.query.sort_by = sortBy;\n\t\treturn this;\n\t}\n\n\tprotected async getAnalytics(): Promise<TimeIntervalAnalyticsResponse> {\n\t\treturn analyticsDateInterval(this.config, this.query);\n\t}\n\n\tasync all(): Promise<TimeIntervalAnalyticsResponse> {\n\t\treturn this.getAnalytics();\n\t}\n}\n","import type {\n\tPinataConfig,\n\tGroupQueryOptions,\n\tGroupListResponse,\n\tGroupResponseItem,\n} from \"../../types\";\nimport { listGroups } from \"../../functions\";\n\nexport class FilterGroups {\n\tprivate config: PinataConfig | undefined;\n\tprivate query: GroupQueryOptions = {};\n\tprivate privacy: \"private\" | \"public\";\n\t// rate limit vars\n\t// private requestCount = 0;\n\t// private lastRequestTime = 0;\n\t// private readonly MAX_REQUESTS_PER_MINUTE = 30;\n\t// private readonly MINUTE_IN_MS = 60000;\n\tprivate nextPageToken: string | undefined;\n\n\tconstructor(config: PinataConfig | undefined, privacy: \"private\" | \"public\") {\n\t\tthis.config = config;\n\t\tthis.privacy = privacy;\n\t}\n\n\tname(name: string): FilterGroups {\n\t\tthis.query.name = name;\n\t\treturn this;\n\t}\n\n\tlimit(limit: number): FilterGroups {\n\t\tthis.query.limit = limit;\n\t\treturn this;\n\t}\n\n\tisPublic(isPublic: boolean): FilterGroups {\n\t\tthis.query.isPublic = isPublic;\n\t\treturn this;\n\t}\n\n\tpageToken(pageToken: string): FilterGroups {\n\t\tthis.query.pageToken = pageToken;\n\t\treturn this;\n\t}\n\n\tthen(\n\t\tonfulfilled?: ((value: GroupListResponse) => any) | null,\n\t): Promise<GroupListResponse> {\n\t\treturn this.fetchPage()\n\t\t\t.then((response) => {\n\t\t\t\tthis.nextPageToken = response.next_page_token;\n\t\t\t\treturn response;\n\t\t\t})\n\t\t\t.then(onfulfilled);\n\t}\n\n\tprivate async fetchPage(): Promise<GroupListResponse> {\n\t\tif (this.nextPageToken) {\n\t\t\tthis.query.pageToken = this.nextPageToken;\n\t\t}\n\t\treturn listGroups(this.config, this.privacy, this.query);\n\t}\n\n\t// rate limit, hopefully temporary?\n\t// private async rateLimit(): Promise<void> {\n\t// \tthis.requestCount++;\n\t// \tconst now = Date.now();\n\t// \tif (this.requestCount >= this.MAX_REQUESTS_PER_MINUTE) {\n\t// \t\tconst timePassedSinceLastRequest = now - this.lastRequestTime;\n\t// \t\tif (timePassedSinceLastRequest < this.MINUTE_IN_MS) {\n\t// \t\t\tconst delayTime = this.MINUTE_IN_MS - timePassedSinceLastRequest;\n\t// \t\t\tawait new Promise((resolve) => setTimeout(resolve, delayTime));\n\t// \t\t}\n\t// \t\tthis.requestCount = 0;\n\t// \t}\n\t// \tthis.lastRequestTime = Date.now();\n\t// }\n\n\tasync *[Symbol.asyncIterator](): AsyncGenerator<\n\t\tGroupResponseItem,\n\t\tvoid,\n\t\tunknown\n\t> {\n\t\twhile (true) {\n\t\t\tconst response = await this.fetchPage();\n\t\t\tfor (const item of response.groups) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\tif (!response.next_page_token) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis.nextPageToken = response.next_page_token;\n\t\t}\n\t}\n\n\tasync all(): Promise<GroupResponseItem[]> {\n\t\tconst allItems: GroupResponseItem[] = [];\n\t\tfor await (const item of this) {\n\t\t\tallItems.push(item);\n\t\t}\n\t\treturn allItems;\n\t}\n}\n","import { formatConfig } from \"../../../utils/format-config\";\nimport {\n\taddToGroup,\n\tcreateGroup,\n\tdeleteGroup,\n\tgetGroup,\n\tremoveFromGroup,\n\tupdateGroup,\n} from \"../../functions\";\nimport {\n\tGetGroupOptions,\n\tGroupCIDOptions,\n\tGroupOptions,\n\tGroupResponseItem,\n\tPinataConfig,\n\tUpdateGroupFilesResponse,\n\tUpdateGroupOptions,\n} from \"../../types\";\nimport { FilterGroups } from \"./GroupsFilter\";\n\nexport class PublicGroups {\n\tconfig: PinataConfig | undefined;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t}\n\n\tcreate(options: GroupOptions): Promise<GroupResponseItem> {\n\t\treturn createGroup(this.config, options, \"public\");\n\t}\n\n\tlist(): FilterGroups {\n\t\treturn new FilterGroups(this.config, \"public\");\n\t}\n\n\tget(options: GetGroupOptions): Promise<GroupResponseItem> {\n\t\treturn getGroup(this.config, options, \"public\");\n\t}\n\n\taddFiles(options: GroupCIDOptions): Promise<UpdateGroupFilesResponse[]> {\n\t\treturn addToGroup(this.config, options, \"public\");\n\t}\n\n\tremoveFiles(options: GroupCIDOptions): Promise<UpdateGroupFilesResponse[]> {\n\t\treturn removeFromGroup(this.config, options, \"public\");\n\t}\n\n\tupdate(options: UpdateGroupOptions): Promise<GroupResponseItem> {\n\t\treturn updateGroup(this.config, options, \"public\");\n\t}\n\n\tdelete(options: GetGroupOptions): Promise<string> {\n\t\treturn deleteGroup(this.config, options, \"public\");\n\t}\n}\n","import { formatConfig } from \"../../../utils/format-config\";\nimport {\n\taddToGroup,\n\tcreateGroup,\n\tdeleteGroup,\n\tgetGroup,\n\tremoveFromGroup,\n\tupdateGroup,\n} from \"../../functions\";\nimport {\n\tGetGroupOptions,\n\tGroupCIDOptions,\n\tGroupOptions,\n\tGroupResponseItem,\n\tPinataConfig,\n\tUpdateGroupFilesResponse,\n\tUpdateGroupOptions,\n} from \"../../types\";\nimport { FilterGroups } from \"./GroupsFilter\";\n\nexport class PrivateGroups {\n\tconfig: PinataConfig | undefined;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t}\n\n\tcreate(options: GroupOptions): Promise<GroupResponseItem> {\n\t\treturn createGroup(this.config, options, \"private\");\n\t}\n\n\tlist(): FilterGroups {\n\t\treturn new FilterGroups(this.config, \"private\");\n\t}\n\n\tget(options: GetGroupOptions): Promise<GroupResponseItem> {\n\t\treturn getGroup(this.config, options, \"private\");\n\t}\n\n\taddFiles(options: GroupCIDOptions): Promise<UpdateGroupFilesResponse[]> {\n\t\treturn addToGroup(this.config, options, \"private\");\n\t}\n\n\tremoveFiles(options: GroupCIDOptions): Promise<UpdateGroupFilesResponse[]> {\n\t\treturn removeFromGroup(this.config, options, \"private\");\n\t}\n\n\tupdate(options: UpdateGroupOptions): Promise<GroupResponseItem> {\n\t\treturn updateGroup(this.config, options, \"private\");\n\t}\n\n\tdelete(options: GetGroupOptions): Promise<string> {\n\t\treturn deleteGroup(this.config, options, \"private\");\n\t}\n}\n","import type { PinataConfig } from \"../../types\";\nimport { formatConfig } from \"../../../utils/format-config\";\nimport { PublicGroups } from \"./PublicGroups\";\nimport { PrivateGroups } from \"./PrivateGroups\";\n\nexport class Groups {\n\tconfig: PinataConfig | undefined;\n\tpublic: PublicGroups;\n\tprivate: PrivateGroups;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t\tthis.public = new PublicGroups(config);\n\t\tthis.private = new PrivateGroups(config);\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t}\n}\n","import { FilterKeys } from \"./\";\nimport type {\n\tPinataConfig,\n\tKeyOptions,\n\tKeyResponse,\n\tRevokeKeyResponse,\n} from \"../../types\";\nimport { formatConfig } from \"../../../utils/format-config\";\nimport { createKey, revokeKeys } from \"../../functions\";\n\nexport class Keys {\n\tconfig: PinataConfig | undefined;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t}\n\n\tcreate(options: KeyOptions): Promise<KeyResponse> {\n\t\treturn createKey(this.config, options);\n\t}\n\n\tlist(): FilterKeys {\n\t\treturn new FilterKeys(this.config);\n\t}\n\n\trevoke(keys: string[]): Promise<RevokeKeyResponse[]> {\n\t\treturn revokeKeys(this.config, keys);\n\t}\n}\n","import { listKeys } from \"../../functions\";\nimport type { PinataConfig, KeyListQuery, KeyListItem } from \"../../types\";\n\nexport class FilterKeys {\n\tprivate config: PinataConfig | undefined;\n\tprivate query: KeyListQuery = {};\n\t// rate limit vars\n\t// private requestCount = 0;\n\t// private lastRequestTime = 0;\n\t// private readonly MAX_REQUESTS_PER_MINUTE = 30;\n\t// private readonly MINUTE_IN_MS = 60000;\n\n\tconstructor(config: PinataConfig | undefined) {\n\t\tthis.config = config;\n\t}\n\n\toffset(offset: number): FilterKeys {\n\t\tthis.query.offset = offset;\n\t\treturn this;\n\t}\n\n\trevoked(revoked: boolean): FilterKeys {\n\t\tthis.query.revoked = revoked;\n\t\treturn this;\n\t}\n\n\tlimitedUse(limitedUse: boolean): FilterKeys {\n\t\tthis.query.limitedUse = limitedUse;\n\t\treturn this;\n\t}\n\n\texhausted(exhausted: boolean): FilterKeys {\n\t\tthis.query.exhausted = exhausted;\n\t\treturn this;\n\t}\n\n\tname(name: string): FilterKeys {\n\t\tthis.query.name = name;\n\t\treturn this;\n\t}\n\n\tthen(onfulfilled?: ((value: KeyListItem[]) => any) | null): Promise<any> {\n\t\treturn listKeys(this.config, this.query).then(onfulfilled);\n\t}\n\n\t// private async rateLimit(): Promise<void> {\n\t// \tthis.requestCount++;\n\t// \tconst now = Date.now();\n\t// \tif (this.requestCount >= this.MAX_REQUESTS_PER_MINUTE) {\n\t// \t\tconst timePassedSinceLastRequest = now - this.lastRequestTime;\n\t// \t\tif (timePassedSinceLastRequest < this.MINUTE_IN_MS) {\n\t// \t\t\tconst delayTime = this.MINUTE_IN_MS - timePassedSinceLastRequest;\n\t// \t\t\tawait new Promise((resolve) => setTimeout(resolve, delayTime));\n\t// \t\t}\n\t// \t\tthis.requestCount = 0;\n\t// \t}\n\t// \tthis.lastRequestTime = Date.now();\n\t// }\n\n\tasync *[Symbol.asyncIterator](): AsyncGenerator<KeyListItem, void, unknown> {\n\t\tlet hasMore = true;\n\t\tlet offset = 0;\n\n\t\twhile (hasMore) {\n\t\t\t//await this.rateLimit(); // applying rate limit\n\t\t\tthis.query.offset = offset;\n\n\t\t\tconst items = await listKeys(this.config, this.query);\n\n\t\t\tfor (const item of items) {\n\t\t\t\tyield item;\n\t\t\t}\n\n\t\t\tif (items.length === 0) {\n\t\t\t\thasMore = false;\n\t\t\t} else {\n\t\t\t\toffset += items.length;\n\t\t\t}\n\t\t}\n\t}\n\n\tasync all(): Promise<KeyListItem[]> {\n\t\tconst allItems: KeyListItem[] = [];\n\t\tfor await (const item of this) {\n\t\t\tallItems.push(item);\n\t\t}\n\t\treturn allItems;\n\t}\n}\n","import type { PinataConfig } from \"../../types\";\nimport { PublicGateways, PrivateGateways } from \"./\";\nimport { formatConfig } from \"../../../utils/format-config\";\n\nexport class Gateways {\n\tconfig: PinataConfig | undefined;\n\tpublic: PublicGateways;\n\tprivate: PrivateGateways;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t\tthis.public = new PublicGateways(config);\n\t\tthis.private = new PrivateGateways(config);\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t}\n}\n","import {\n\tPinataConfig,\n\tAccessLinkOptions,\n\tOptimizeImageOptions,\n} from \"../../types\";\nimport { createAccessLink } from \"../../functions/gateway/createAccessLink\";\n\nexport class OptimizeImageCreateAccessLink {\n\tprivate config: PinataConfig | undefined;\n\tprivate urlOpts: AccessLinkOptions;\n\tprivate imgOpts: OptimizeImageOptions = {};\n\n\tconstructor(config: PinataConfig | undefined, urlOpts: AccessLinkOptions) {\n\t\tthis.config = config;\n\t\tthis.urlOpts = urlOpts;\n\t}\n\n\toptimizeImage(options: OptimizeImageOptions): OptimizeImageCreateAccessLink {\n\t\tthis.imgOpts = { ...this.imgOpts, ...options };\n\t\treturn this;\n\t}\n\n\tthen(onfulfilled?: ((value: string) => any) | null): Promise<any> {\n\t\treturn createAccessLink(this.config, this.urlOpts, this.imgOpts).then(\n\t\t\tonfulfilled,\n\t\t);\n\t}\n}\n","import type {\n\tPinataConfig,\n\tOptimizeImageOptions,\n\tGetCIDResponse,\n} from \"../../types\";\nimport { getCid } from \"../../functions\";\n\nexport class OptimizeImageGetCid {\n\tprivate config: PinataConfig | undefined;\n\tprivate cid: string;\n\tprivate gatewayType?: \"ipfs\" | \"files\";\n\tprivate options: OptimizeImageOptions = {};\n\n\tconstructor(\n\t\tconfig: PinataConfig | undefined,\n\t\tcid: string,\n\t\tgatewayType?: \"ipfs\" | \"files\",\n\t) {\n\t\tthis.config = config;\n\t\tthis.cid = cid;\n\t\tthis.gatewayType = gatewayType;\n\t}\n\n\toptimizeImage(options: OptimizeImageOptions): OptimizeImageGetCid {\n\t\tthis.options = { ...this.options, ...options };\n\t\treturn this;\n\t}\n\n\tthen(onfulfilled?: ((value: GetCIDResponse) => any) | null): Promise<any> {\n\t\treturn getCid(this.config, this.cid, this.gatewayType, this.options).then(\n\t\t\tonfulfilled,\n\t\t);\n\t}\n}\n","import type { PinataConfig, AccessLinkOptions } from \"../../types\";\nimport { OptimizeImageGetCid, OptimizeImageCreateAccessLink } from \"./\";\n\nexport class PrivateGateways {\n\tprivate config: PinataConfig | undefined;\n\n\tconstructor(config: PinataConfig | undefined) {\n\t\tthis.config = config;\n\t}\n\n\tget(cid: string): OptimizeImageGetCid {\n\t\treturn new OptimizeImageGetCid(this.config, cid, \"files\");\n\t}\n\n\tcreateAccessLink(options: AccessLinkOptions): OptimizeImageCreateAccessLink {\n\t\treturn new OptimizeImageCreateAccessLink(this.config, options);\n\t}\n}\n","import { convertIPFSUrl } from \"../../functions\";\nimport { PinataConfig } from \"../../types\";\nimport { OptimizeImageGetCid } from \"./\";\n\nexport class PublicGateways {\n\tprivate config: PinataConfig | undefined;\n\n\tconstructor(config: PinataConfig | undefined) {\n\t\tthis.config = config;\n\t}\n\n\tget(cid: string): OptimizeImageGetCid {\n\t\treturn new OptimizeImageGetCid(this.config, cid, \"ipfs\");\n\t}\n\n\tconvert(url: string, gatewayPrefix?: string): Promise<string> {\n\t\treturn convertIPFSUrl(this.config, url, gatewayPrefix);\n\t}\n}\n","import type { PinataConfig, FileListItem } from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const getFile = async (\n\tconfig: PinataConfig | undefined,\n\tid: string,\n\tprivacy: \"public\" | \"private\",\n): Promise<FileListItem> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...config.customHeaders,\n\t\t};\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/getFile\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(`${endpoint}/files/${privacy}/${id}`, {\n\t\t\tmethod: \"GET\",\n\t\t\theaders: headers,\n\t\t});\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\tconst resData: FileListItem = res.data;\n\t\treturn resData;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing getGroup: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while getting info for a group\",\n\t\t);\n\t}\n};\n","import {\n\tPinataConfig,\n\tFileListQuery,\n\tFileListResponse,\n\tFileListItem,\n} from \"../../types\";\nimport { listFiles } from \"../../functions\";\n\nexport class FilterFiles {\n\tprivate config: PinataConfig | undefined;\n\tprivate query: FileListQuery = {};\n\tprivate currentPageToken: string | undefined;\n\tprivate privacy: \"private\" | \"public\";\n\t// rate limit vars\n\t// private requestCount = 0;\n\t// private lastRequestTime = 0;\n\t// private readonly MAX_REQUESTS_PER_MINUTE = 30;\n\t// private readonly MINUTE_IN_MS = 60000;\n\n\tconstructor(config: PinataConfig | undefined, privacy: \"private\" | \"public\") {\n\t\tthis.config = config;\n\t\tthis.privacy = privacy;\n\t}\n\n\tname(name: string): FilterFiles {\n\t\tthis.query.name = name;\n\t\treturn this;\n\t}\n\n\tgroup(group: string): FilterFiles {\n\t\tthis.query.group = group;\n\t\treturn this;\n\t}\n\n\tcid(cid: string): FilterFiles {\n\t\tthis.query.cid = cid;\n\t\treturn this;\n\t}\n\n\tmimeType(mimeType: string): FilterFiles {\n\t\tthis.query.mimeType = mimeType;\n\t\treturn this;\n\t}\n\n\torder(order: \"ASC\" | \"DESC\"): FilterFiles {\n\t\tthis.query.order = order;\n\t\treturn this;\n\t}\n\n\tlimit(limit: number): FilterFiles {\n\t\tthis.query.limit = limit;\n\t\treturn this;\n\t}\n\n\tcidPending(cidPending: boolean): FilterFiles {\n\t\tthis.query.cidPending = cidPending;\n\t\treturn this;\n\t}\n\n\tkeyvalues(keyvalues: Record<string, string>): FilterFiles {\n\t\tthis.query.metadata = keyvalues;\n\t\treturn this;\n\t}\n\n\tnoGroup(noGroup: boolean): FilterFiles {\n\t\tthis.query.noGroup = noGroup;\n\t\treturn this;\n\t}\n\n\tpageToken(pageToken: string): FilterFiles {\n\t\tthis.query.pageToken = pageToken;\n\t\treturn this;\n\t}\n\n\tthen(onfulfilled?: ((value: FileListResponse) => any) | null): Promise<any> {\n\t\treturn this.fetchPage().then(onfulfilled);\n\t}\n\n\tprivate async fetchPage(): Promise<FileListResponse> {\n\t\tif (this.currentPageToken) {\n\t\t\tthis.query.pageToken = this.currentPageToken;\n\t\t}\n\t\tconst response = await listFiles(this.config, this.privacy, this.query);\n\t\tthis.currentPageToken = response.next_page_token;\n\t\treturn response;\n\t}\n\n\t// // rate limit, hopefully temporary?\n\t// private async rateLimit(): Promise<void> {\n\t// \tthis.requestCount++;\n\t// \tconst now = Date.now();\n\t// \tif (this.requestCount >= this.MAX_REQUESTS_PER_MINUTE) {\n\t// \t\tconst timePassedSinceLastRequest = now - this.lastRequestTime;\n\t// \t\tif (timePassedSinceLastRequest < this.MINUTE_IN_MS) {\n\t// \t\t\tconst delayTime = this.MINUTE_IN_MS - timePassedSinceLastRequest;\n\t// \t\t\tawait new Promise((resolve) => setTimeout(resolve, delayTime));\n\t// \t\t}\n\t// \t\tthis.requestCount = 0;\n\t// \t}\n\t// \tthis.lastRequestTime = Date.now();\n\t// }\n\n\tasync *[Symbol.asyncIterator](): AsyncGenerator<FileListItem, void, unknown> {\n\t\twhile (true) {\n\t\t\tconst items = await this.fetchPage();\n\t\t\tfor (const item of items.files) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\tif (!this.currentPageToken) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tasync all(): Promise<FileListItem[]> {\n\t\tconst allItems: FileListItem[] = [];\n\t\tfor await (const item of this) {\n\t\t\tallItems.push(item);\n\t\t}\n\t\treturn allItems;\n\t}\n}\n","import {\n\tPinQueueItem,\n\tPinQueueQuery,\n\tPinQueueResponse,\n\tPinataConfig,\n} from \"../../types\";\nimport { queue } from \"../../functions\";\n\nexport class FilterQueue {\n\tprivate config: PinataConfig | undefined;\n\tprivate query: PinQueueQuery = {};\n\tprivate currentPageToken: string | undefined;\n\t// rate limit vars\n\tprivate requestCount = 0;\n\tprivate lastRequestTime = 0;\n\tprivate readonly MAX_REQUESTS_PER_MINUTE = 30;\n\tprivate readonly MINUTE_IN_MS = 60000;\n\n\tconstructor(config: PinataConfig | undefined) {\n\t\tthis.config = config;\n\t}\n\n\tcid(cid: string): FilterQueue {\n\t\tthis.query.cid = cid;\n\t\treturn this;\n\t}\n\n\tstatus(\n\t\tstatus:\n\t\t\t| \"prechecking\"\n\t\t\t| \"retrieving\"\n\t\t\t| \"expired\"\n\t\t\t| \"backfilled\"\n\t\t\t| \"over_free_limit\"\n\t\t\t| \"over_max_size\"\n\t\t\t| \"invalid_object\"\n\t\t\t| \"bad_host_node\",\n\t): FilterQueue {\n\t\tthis.query.status = status;\n\t\treturn this;\n\t}\n\n\tpageLimit(limit: number): FilterQueue {\n\t\tthis.query.limit = limit;\n\t\treturn this;\n\t}\n\n\tpageToken(pageToken: string): FilterQueue {\n\t\tthis.query.pageToken = pageToken;\n\t\treturn this;\n\t}\n\n\tprivate async fetchPage(): Promise<PinQueueResponse> {\n\t\tif (this.currentPageToken) {\n\t\t\tthis.query.pageToken = this.currentPageToken;\n\t\t}\n\t\tconst response = await queue(this.config, this.query);\n\t\tthis.currentPageToken = response.next_page_token;\n\t\treturn response;\n\t}\n\n\tsort(sort: \"ASC\" | \"DSC\"): FilterQueue {\n\t\tthis.query.sort = sort;\n\t\treturn this;\n\t}\n\n\tthen(onfulfilled?: ((value: PinQueueResponse) => any) | null): Promise<any> {\n\t\treturn queue(this.config, this.query).then(onfulfilled);\n\t}\n\n\t// rate limit, hopefully temporary?\n\tprivate async rateLimit(): Promise<void> {\n\t\tthis.requestCount++;\n\t\tconst now = Date.now();\n\t\tif (this.requestCount >= this.MAX_REQUESTS_PER_MINUTE) {\n\t\t\tconst timePassedSinceLastRequest = now - this.lastRequestTime;\n\t\t\tif (timePassedSinceLastRequest < this.MINUTE_IN_MS) {\n\t\t\t\tconst delayTime = this.MINUTE_IN_MS - timePassedSinceLastRequest;\n\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, delayTime));\n\t\t\t}\n\t\t\tthis.requestCount = 0;\n\t\t}\n\t\tthis.lastRequestTime = Date.now();\n\t}\n\n\tasync *[Symbol.asyncIterator](): AsyncGenerator<PinQueueItem, void, unknown> {\n\t\twhile (true) {\n\t\t\tconst items = await this.fetchPage();\n\t\t\tfor (const item of items.jobs) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\tif (!this.currentPageToken) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tasync all(): Promise<PinQueueItem[]> {\n\t\tconst allItems: PinQueueItem[] = [];\n\t\tfor await (const item of this) {\n\t\t\tallItems.push(item);\n\t\t}\n\t\treturn allItems;\n\t}\n}\n","import { formatConfig } from \"../../../utils/format-config\";\nimport {\n\tdeleteFile,\n\tupdateFile,\n\tswapCid,\n\tswapHistory,\n\tdeleteSwap,\n\tdeletePinRequest,\n} from \"../../functions\";\nimport { getFile } from \"../../functions/files/getFile\";\nimport {\n\tPinataConfig,\n\tDeleteResponse,\n\tUpdateFileOptions,\n\tFileListItem,\n\tSwapCidOptions,\n\tSwapCidResponse,\n\tSwapHistoryOptions,\n} from \"../../types\";\nimport { FilterFiles } from \"./FilterFiles\";\nimport { FilterQueue } from \"./FilterQueue\";\n\nexport class PublicFiles {\n\tprivate config: PinataConfig | undefined;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t}\n\n\tlist(): FilterFiles {\n\t\treturn new FilterFiles(this.config, \"public\");\n\t}\n\n\tget(id: string): Promise<FileListItem> {\n\t\treturn getFile(this.config, id, \"public\");\n\t}\n\n\tdelete(files: string[]): Promise<DeleteResponse[]> {\n\t\treturn deleteFile(this.config, files, \"public\");\n\t}\n\n\tupdate(options: UpdateFileOptions): Promise<FileListItem> {\n\t\treturn updateFile(this.config, options, \"public\");\n\t}\n\n\taddSwap(options: SwapCidOptions): Promise<SwapCidResponse> {\n\t\treturn swapCid(this.config, options, \"public\");\n\t}\n\n\tgetSwapHistory(options: SwapHistoryOptions): Promise<SwapCidResponse[]> {\n\t\treturn swapHistory(this.config, options, \"public\");\n\t}\n\n\tdeleteSwap(cid: string): Promise<string> {\n\t\treturn deleteSwap(this.config, cid, \"public\");\n\t}\n\n\tqueue(): FilterQueue {\n\t\treturn new FilterQueue(this.config);\n\t}\n\n\tdeletePinRequest(requestId: string): Promise<string> {\n\t\treturn deletePinRequest(this.config, requestId);\n\t}\n}\n","import { formatConfig } from \"../../../utils/format-config\";\nimport {\n\tdeleteFile,\n\tupdateFile,\n\tswapCid,\n\tswapHistory,\n\tdeleteSwap,\n\tvectorizeFile,\n\tvectorizeQuery,\n\tdeleteFileVectors,\n} from \"../../functions\";\nimport { getFile } from \"../../functions/files/getFile\";\nimport {\n\tPinataConfig,\n\tDeleteResponse,\n\tUpdateFileOptions,\n\tFileListItem,\n\tSwapCidOptions,\n\tSwapCidResponse,\n\tSwapHistoryOptions,\n\tVectorizeFileResponse,\n\tVectorizeQuery,\n\tVectorizeQueryResponse,\n\tGetCIDResponse,\n} from \"../../types\";\nimport { FilterFiles } from \"./FilterFiles\";\n\nexport class PrivateFiles {\n\tprivate config: PinataConfig | undefined;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t}\n\n\tlist(): FilterFiles {\n\t\treturn new FilterFiles(this.config, \"private\");\n\t}\n\n\tget(id: string): Promise<FileListItem> {\n\t\treturn getFile(this.config, id, \"private\");\n\t}\n\n\tdelete(files: string[]): Promise<DeleteResponse[]> {\n\t\treturn deleteFile(this.config, files, \"private\");\n\t}\n\n\tupdate(options: UpdateFileOptions): Promise<FileListItem> {\n\t\treturn updateFile(this.config, options, \"private\");\n\t}\n\n\taddSwap(options: SwapCidOptions): Promise<SwapCidResponse> {\n\t\treturn swapCid(this.config, options, \"private\");\n\t}\n\n\tgetSwapHistory(options: SwapHistoryOptions): Promise<SwapCidResponse[]> {\n\t\treturn swapHistory(this.config, options, \"private\");\n\t}\n\n\tdeleteSwap(cid: string): Promise<string> {\n\t\treturn deleteSwap(this.config, cid, \"private\");\n\t}\n\n\tvectorize(fileId: string): Promise<VectorizeFileResponse> {\n\t\treturn vectorizeFile(this.config, fileId);\n\t}\n\n\tqueryVectors(\n\t\toptions: VectorizeQuery,\n\t): Promise<VectorizeQueryResponse | GetCIDResponse> {\n\t\treturn vectorizeQuery(this.config, options);\n\t}\n\n\tdeleteVectors(fileId: string): Promise<VectorizeFileResponse> {\n\t\treturn deleteFileVectors(this.config, fileId);\n\t}\n}\n","import { PinataConfig } from \"../../types\";\n\nimport { formatConfig } from \"../../../utils/format-config\";\n\nimport { PublicFiles } from \"./PublicFiles\";\nimport { PrivateFiles } from \"./PrivateFiles\";\n\nexport class Files {\n\tconfig: PinataConfig | undefined;\n\tpublic: PublicFiles;\n\tprivate: PrivateFiles;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t\tthis.public = new PublicFiles(config);\n\t\tthis.private = new PrivateFiles(config);\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t}\n}\n","import type { PinataConfig, PinataMetadata, UploadOptions } from \"../../types\";\n\nexport class UploadBuilder<T> {\n\tprivate config: PinataConfig | undefined;\n\tprivate uploadFunction: (\n\t\tconfig: PinataConfig | undefined,\n\t\t...args: any[]\n\t) => Promise<T>;\n\tprivate args: any[];\n\tprivate metadata: PinataMetadata | undefined = {};\n\tprivate keys: string | undefined;\n\tprivate groupId: string | undefined;\n\tprivate vector: boolean | undefined;\n\tprivate uploadUrl: string | undefined;\n\tprivate isStreamable: boolean | undefined;\n\tprivate peerAddresses: string[] | undefined;\n\n\tconstructor(\n\t\tconfig: PinataConfig | undefined,\n\t\tuploadFunction: (\n\t\t\tconfig: PinataConfig | undefined,\n\t\t\t...args: any[]\n\t\t) => Promise<T>,\n\t\t...args: any[]\n\t) {\n\t\tthis.config = config;\n\t\tthis.uploadFunction = uploadFunction;\n\t\tthis.args = args;\n\t}\n\n\t// Replace addMetadata with these two methods:\n\tname(name: string): UploadBuilder<T> {\n\t\tif (!this.metadata) {\n\t\t\tthis.metadata = {};\n\t\t}\n\t\tthis.metadata.name = name;\n\t\treturn this;\n\t}\n\n\tkeyvalues(keyvalues: Record<string, string>): UploadBuilder<T> {\n\t\tif (!this.metadata) {\n\t\t\tthis.metadata = {};\n\t\t}\n\t\tthis.metadata.keyvalues = keyvalues;\n\t\treturn this;\n\t}\n\n\tkey(jwt: string): UploadBuilder<T> {\n\t\tthis.keys = jwt;\n\t\treturn this;\n\t}\n\n\tvectorize(): UploadBuilder<T> {\n\t\tthis.vector = true;\n\t\treturn this;\n\t}\n\n\turl(url: string): UploadBuilder<T> {\n\t\tthis.uploadUrl = url;\n\t\treturn this;\n\t}\n\n\t// cidVersion(v: 0 | 1): UploadBuilder<T> {\n\t// \tthis.version = v;\n\t// \treturn this;\n\t// }\n\n\tgroup(groupId: string): UploadBuilder<T> {\n\t\tthis.groupId = groupId;\n\t\treturn this;\n\t}\n\n\tstreamable(): UploadBuilder<T> {\n\t\tthis.isStreamable = true;\n\t\treturn this;\n\t}\n\n\tpeerAddress(peerAddresses: string[]): UploadBuilder<T> {\n\t\tthis.peerAddresses = peerAddresses;\n\t\treturn this;\n\t}\n\n\tthen<TResult1 = T, TResult2 = never>(\n\t\tonfulfilled?:\n\t\t\t| ((value: T) => TResult1 | PromiseLike<TResult1>)\n\t\t\t| null\n\t\t\t| undefined,\n\t\tonrejected?:\n\t\t\t| ((reason: any) => TResult2 | PromiseLike<TResult2>)\n\t\t\t| null\n\t\t\t| undefined,\n\t): Promise<TResult1 | TResult2> {\n\t\tconst options: UploadOptions = this.args[this.args.length - 1] || {};\n\t\tif (this.metadata) {\n\t\t\toptions.metadata = this.metadata;\n\t\t}\n\t\tif (this.keys) {\n\t\t\toptions.keys = this.keys;\n\t\t}\n\t\tif (this.groupId) {\n\t\t\toptions.groupId = this.groupId;\n\t\t}\n\t\tif (this.vector) {\n\t\t\toptions.vectorize = this.vector;\n\t\t}\n\t\tif (this.uploadUrl) {\n\t\t\toptions.url = this.uploadUrl;\n\t\t}\n\t\tif (this.isStreamable) {\n\t\t\toptions.streamable = this.isStreamable;\n\t\t}\n\t\tif (this.peerAddresses) {\n\t\t\toptions.peerAddresses = this.peerAddresses;\n\t\t}\n\t\tthis.args[this.args.length - 1] = options;\n\t\treturn this.uploadFunction(this.config, ...this.args).then(\n\t\t\tonfulfilled,\n\t\t\tonrejected,\n\t\t);\n\t}\n}\n","import { formatConfig } from \"../../../utils/format-config\";\nimport {\n\tcreateSignedUploadURL,\n\tuploadBase64,\n\tuploadFile,\n\tuploadFileArray,\n\tuploadJson,\n\tuploadUrl,\n} from \"../../functions\";\nimport { uploadCid } from \"../../functions/uploads/cid\";\nimport {\n\tFileObject,\n\tPinataConfig,\n\tSignedUploadUrlOptions,\n\tUploadOptions,\n\tUploadResponse,\n\tUploadCIDOptions,\n\tPinByCIDResponse,\n} from \"../../types\";\nimport { UploadBuilder } from \"./UploadBuilder\";\n\nexport class PublicUpload {\n\tconfig: PinataConfig | undefined;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t}\n\n\tfile(file: File, options?: UploadOptions): UploadBuilder<UploadResponse> {\n\t\treturn new UploadBuilder(\n\t\t\tthis.config,\n\t\t\t(config, file, options) => uploadFile(config, file, \"public\", options),\n\t\t\tfile,\n\t\t\toptions,\n\t\t);\n\t}\n\n\tfileArray(\n\t\tfiles: File[],\n\t\toptions?: UploadOptions,\n\t): UploadBuilder<UploadResponse> {\n\t\treturn new UploadBuilder(\n\t\t\tthis.config,\n\t\t\t(config, file, options) =>\n\t\t\t\tuploadFileArray(config, file, \"public\", options),\n\t\t\tfiles,\n\t\t\toptions,\n\t\t);\n\t}\n\n\tbase64(\n\t\tbase64String: string,\n\t\toptions?: UploadOptions,\n\t): UploadBuilder<UploadResponse> {\n\t\treturn new UploadBuilder(\n\t\t\tthis.config,\n\t\t\t(config, base64String, options) =>\n\t\t\t\tuploadBase64(config, base64String, \"public\", options),\n\t\t\tbase64String,\n\t\t\toptions,\n\t\t);\n\t}\n\n\turl(url: string, options?: UploadOptions): UploadBuilder<UploadResponse> {\n\t\treturn new UploadBuilder(\n\t\t\tthis.config,\n\t\t\t(config, url, options) => uploadUrl(config, url, \"public\", options),\n\t\t\turl,\n\t\t\toptions,\n\t\t);\n\t}\n\n\tjson(data: object, options?: UploadOptions): UploadBuilder<UploadResponse> {\n\t\treturn new UploadBuilder(\n\t\t\tthis.config,\n\t\t\t(config, data, options) => uploadJson(config, data, \"public\", options),\n\t\t\tdata,\n\t\t\toptions,\n\t\t);\n\t}\n\n\tcid(\n\t\tcid: string,\n\t\toptions?: UploadCIDOptions,\n\t): UploadBuilder<PinByCIDResponse> {\n\t\treturn new UploadBuilder(\n\t\t\tthis.config,\n\t\t\t(config, cid, options) => uploadCid(config, cid, options),\n\t\t\tcid,\n\t\t\toptions,\n\t\t);\n\t}\n\n\tcreateSignedURL(options: SignedUploadUrlOptions): Promise<string> {\n\t\treturn createSignedUploadURL(this.config, options, \"public\");\n\t}\n}\n","import { formatConfig } from \"../../../utils/format-config\";\nimport {\n\tcreateSignedUploadURL,\n\tuploadBase64,\n\tuploadFile,\n\tuploadFileArray,\n\tuploadJson,\n\tuploadUrl,\n} from \"../../functions\";\nimport {\n\tFileObject,\n\tPinataConfig,\n\tSignedUploadUrlOptions,\n\tUploadOptions,\n\tUploadResponse,\n} from \"../../types\";\nimport { UploadBuilder } from \"./UploadBuilder\";\n\nexport class PrivateUpload {\n\tconfig: PinataConfig | undefined;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t}\n\n\tfile(file: File, options?: UploadOptions): UploadBuilder<UploadResponse> {\n\t\treturn new UploadBuilder(\n\t\t\tthis.config,\n\t\t\t(config, file, options) => uploadFile(config, file, \"private\", options),\n\t\t\tfile,\n\t\t\toptions,\n\t\t);\n\t}\n\n\t// Reserved for future release\n\t// fileArray(\n\t// \tfiles: FileObject[],\n\t// \toptions?: UploadOptions,\n\t// ): UploadBuilder<UploadResponse> {\n\t// \treturn new UploadBuilder(\n\t// \t\tthis.config,\n\t// \t\t(config, file, options) =>\n\t// \t\t\tuploadFileArray(config, file, \"private\", options),\n\t// \t\tfiles,\n\t// \t\toptions,\n\t// \t);\n\t// }\n\n\tbase64(\n\t\tbase64String: string,\n\t\toptions?: UploadOptions,\n\t): UploadBuilder<UploadResponse> {\n\t\treturn new UploadBuilder(\n\t\t\tthis.config,\n\t\t\t(config, base64String, options) =>\n\t\t\t\tuploadBase64(config, base64String, \"private\", options),\n\t\t\tbase64String,\n\t\t\toptions,\n\t\t);\n\t}\n\n\turl(url: string, options?: UploadOptions): UploadBuilder<UploadResponse> {\n\t\treturn new UploadBuilder(\n\t\t\tthis.config,\n\t\t\t(config, url, options) => uploadUrl(config, url, \"private\", options),\n\t\t\turl,\n\t\t\toptions,\n\t\t);\n\t}\n\n\tjson(data: object, options?: UploadOptions): UploadBuilder<UploadResponse> {\n\t\treturn new UploadBuilder(\n\t\t\tthis.config,\n\t\t\t(config, data, options) => uploadJson(config, data, \"private\", options),\n\t\t\tdata,\n\t\t\toptions,\n\t\t);\n\t}\n\n\tcreateSignedURL(options: SignedUploadUrlOptions): Promise<string> {\n\t\treturn createSignedUploadURL(this.config, options, \"private\");\n\t}\n}\n","import { PinataConfig } from \"../../types\";\nimport { formatConfig } from \"../../../utils/format-config\";\n\nimport { PublicUpload } from \"./PublicUpload\";\nimport { PrivateUpload } from \"./PrivateUpload\";\n\nexport class Upload {\n\tconfig: PinataConfig | undefined;\n\tpublic: PublicUpload;\n\tprivate: PrivateUpload;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t\tthis.public = new PublicUpload(config);\n\t\tthis.private = new PrivateUpload(config);\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t}\n}\n","import type {\n\tSignatureOptions,\n\tPinataConfig,\n\tSignatureResponse,\n} from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const addSignature = async (\n\tconfig: PinataConfig | undefined,\n\toptions: SignatureOptions,\n\tnetwork: \"public\" | \"private\",\n): Promise<SignatureResponse> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tconst data = JSON.stringify({\n\t\tsignature: options.signature,\n\t\taddress: options.address,\n\t});\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = { ...config.customHeaders };\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/addSignature\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(\n\t\t\t`${endpoint}/files/${network}/signature/${options.cid}`,\n\t\t\t{\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: headers,\n\t\t\t\tbody: data,\n\t\t\t},\n\t\t);\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (request.status === 403) {\n\t\t\t\tthrow new PinataError(\n\t\t\t\t\t\"Unauthorized signing, you must be the original owner of the file and it must not have a signature\",\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\treturn res.data;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing addSignature: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while adding signature to CID\",\n\t\t);\n\t}\n};\n","import type { PinataConfig, SignatureResponse } from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const getSignature = async (\n\tconfig: PinataConfig | undefined,\n\tcid: string,\n\tnetwork: \"public\" | \"private\",\n): Promise<SignatureResponse> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = { ...config.customHeaders };\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/getSignature\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(\n\t\t\t`${endpoint}/files/${network}/signature/${cid}`,\n\t\t\t{\n\t\t\t\tmethod: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t},\n\t\t);\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst res = await request.json();\n\t\treturn res.data;\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing getSignature: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while fetching signature for CID\",\n\t\t);\n\t}\n};\n","import type { PinataConfig } from \"../../types\";\n\nimport {\n\tPinataError,\n\tNetworkError,\n\tAuthenticationError,\n\tValidationError,\n} from \"../../../utils/custom-errors\";\n\nexport const removeSignature = async (\n\tconfig: PinataConfig | undefined,\n\tcid: string,\n\tnetwork: \"public\" | \"private\",\n): Promise<string> => {\n\tif (!config) {\n\t\tthrow new ValidationError(\"Pinata configuration is missing\");\n\t}\n\n\tlet headers: Record<string, string>;\n\n\tif (config.customHeaders && Object.keys(config.customHeaders).length > 0) {\n\t\theaders = { ...config.customHeaders };\n\t} else {\n\t\theaders = {\n\t\t\tAuthorization: `Bearer ${config.pinataJwt}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tSource: \"sdk/removeSignature\",\n\t\t};\n\t}\n\n\tlet endpoint: string = \"https://api.pinata.cloud/v3\";\n\n\tif (config.endpointUrl) {\n\t\tendpoint = config.endpointUrl;\n\t}\n\n\ttry {\n\t\tconst request = await fetch(\n\t\t\t`${endpoint}/files/${network}/signature/${cid}`,\n\t\t\t{\n\t\t\t\tmethod: \"DELETE\",\n\t\t\t\theaders: headers,\n\t\t\t},\n\t\t);\n\n\t\tif (!request.ok) {\n\t\t\tconst errorData = await request.text();\n\t\t\tif (request.status === 401 || request.status === 403) {\n\t\t\t\tthrow new AuthenticationError(\n\t\t\t\t\t`Authentication failed: ${errorData}`,\n\t\t\t\t\trequest.status,\n\t\t\t\t\t{\n\t\t\t\t\t\terror: errorData,\n\t\t\t\t\t\tcode: \"AUTH_ERROR\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new NetworkError(`HTTP error: ${errorData}`, request.status, {\n\t\t\t\terror: errorData,\n\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\tmetadata: {\n\t\t\t\t\trequestUrl: request.url,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\treturn \"OK\";\n\t} catch (error) {\n\t\tif (error instanceof PinataError) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\tthrow new PinataError(`Error processing addSignature: ${error.message}`);\n\t\t}\n\t\tthrow new PinataError(\n\t\t\t\"An unknown error occurred while adding signature to CID\",\n\t\t);\n\t}\n};\n","import { formatConfig } from \"../../../utils/format-config\";\nimport {\n\taddSignature,\n\tgetSignature,\n\tremoveSignature,\n} from \"../../functions/signatures\";\nimport { PinataConfig, SignatureOptions, SignatureResponse } from \"../../types\";\n\nexport class PublicSignatures {\n\tconfig: PinataConfig | undefined;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t}\n\n\tadd(options: SignatureOptions): Promise<SignatureResponse> {\n\t\treturn addSignature(this.config, options, \"public\");\n\t}\n\n\tget(cid: string): Promise<SignatureResponse> {\n\t\treturn getSignature(this.config, cid, \"public\");\n\t}\n\n\tdelete(cid: string): Promise<string> {\n\t\treturn removeSignature(this.config, cid, \"public\");\n\t}\n}\n","import { formatConfig } from \"../../../utils/format-config\";\nimport { PinataConfig } from \"../../types\";\nimport { PrivateSignatures } from \"./PrivateSignatures\";\nimport { PublicSignatures } from \"./PublicSignatures\";\n\nexport class Signatures {\n\tconfig: PinataConfig | undefined;\n\tpublic: PublicSignatures;\n\t//private: PrivateSignatures\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t\tthis.public = new PublicSignatures(config);\n\t\t// this.private = new PrivateSignatures(config)\n\t}\n\n\tupdateConfig(newConfig: PinataConfig): void {\n\t\tthis.config = newConfig;\n\t}\n}\n","import { testAuthentication } from \"./functions\";\nimport { formatConfig } from \"../utils\";\nimport {\n\tAnalytics,\n\tGroups,\n\tKeys,\n\tGateways,\n\tFiles,\n\tUpload,\n\tSignatures,\n} from \"./classes\";\nimport { PinataConfig } from \"./types\";\n\nexport class PinataSDK {\n\tconfig: PinataConfig | undefined;\n\tfiles: Files;\n\tupload: Upload;\n\tgateways: Gateways;\n\t//\tusage: Usage;\n\tkeys: Keys;\n\tgroups: Groups;\n\tanalytics: Analytics;\n\tsignatures: Signatures;\n\n\tconstructor(config?: PinataConfig) {\n\t\tthis.config = formatConfig(config);\n\t\tthis.files = new Files(this.config);\n\t\tthis.upload = new Upload(this.config);\n\t\tthis.gateways = new Gateways(this.config);\n\t\t//\t\tthis.usage = new Usage(this.config);\n\t\tthis.keys = new Keys(this.config);\n\t\tthis.groups = new Groups(this.config);\n\t\tthis.analytics = new Analytics(this.config);\n\t\tthis.signatures = new Signatures(this.config);\n\t}\n\n\tsetNewHeaders(headers: Record<string, string>): void {\n\t\tif (!this.config) {\n\t\t\tthis.config = { pinataJwt: \"\", customHeaders: {} };\n\t\t}\n\t\tthis.config.customHeaders = { ...this.config.customHeaders, ...headers };\n\n\t\t// Update headers for all sub-modules\n\t\tthis.files.updateConfig(this.config);\n\t\tthis.upload.updateConfig(this.config);\n\t\tthis.gateways.updateConfig(this.config);\n\t\t//\t\tthis.usage.updateConfig(this.config);\n\t\tthis.keys.updateConfig(this.config);\n\t\tthis.groups.updateConfig(this.config);\n\t\tthis.analytics.updateConfig(this.config);\n\t\tthis.signatures.updateConfig(this.config);\n\t}\n\n\tsetNewJwt(jwt: string): void {\n\t\tif (!this.config) {\n\t\t\tthis.config = { pinataJwt: \"\" };\n\t\t}\n\t\tthis.config.pinataJwt = jwt;\n\n\t\t// Update headers for all sub-modules\n\t\tthis.files.updateConfig(this.config);\n\t\tthis.upload.updateConfig(this.config);\n\t\tthis.gateways.updateConfig(this.config);\n\t\t//\t\tthis.usage.updateConfig(this.config);\n\t\tthis.keys.updateConfig(this.config);\n\t\tthis.groups.updateConfig(this.config);\n\t\tthis.analytics.updateConfig(this.config);\n\t\tthis.signatures.updateConfig(this.config);\n\t}\n\n\ttestAuthentication(): Promise<string> {\n\t\treturn testAuthentication(this.config);\n\t}\n}\n"]}
|