@transloadit/zod 4.4.1 → 5.0.0
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/README.md +37 -0
- package/dist/v3/aiMessages.d.ts +33254 -0
- package/dist/v3/aiMessages.d.ts.map +1 -0
- package/dist/v3/aiMessages.js +478 -0
- package/dist/v3/apiParameterDescription.d.ts +14 -0
- package/dist/v3/apiParameterDescription.d.ts.map +1 -0
- package/dist/v3/apiParameterDescription.js +19 -0
- package/dist/v3/assemblyStatus.d.ts +5076 -62566
- package/dist/v3/assemblyStatus.d.ts.map +1 -1
- package/dist/v3/assemblyStatus.js +74 -55
- package/dist/v3/englishList.d.ts +3 -0
- package/dist/v3/englishList.d.ts.map +1 -0
- package/dist/v3/englishList.js +11 -0
- package/dist/v3/errorReason.d.ts +7 -0
- package/dist/v3/errorReason.d.ts.map +1 -0
- package/dist/v3/errorReason.js +13 -0
- package/dist/v3/file.d.ts +7 -0
- package/dist/v3/file.d.ts.map +1 -1
- package/dist/v3/file.js +15 -0
- package/dist/v3/fileHash.d.ts +16 -0
- package/dist/v3/fileHash.d.ts.map +1 -0
- package/dist/v3/fileHash.js +9 -0
- package/dist/v3/imagemagickDensity.d.ts.map +1 -1
- package/dist/v3/imagemagickDensity.js +2 -2
- package/dist/v3/index.d.ts +4 -0
- package/dist/v3/index.d.ts.map +1 -1
- package/dist/v3/index.js +4 -0
- package/dist/v3/lib/zodInputSemantics.d.ts +18 -0
- package/dist/v3/lib/zodInputSemantics.d.ts.map +1 -0
- package/dist/v3/lib/zodInputSemantics.js +85 -0
- package/dist/v3/object.d.ts +71 -0
- package/dist/v3/object.d.ts.map +1 -0
- package/dist/v3/object.js +195 -0
- package/dist/v3/responseErrors/HttpImportRobot.d.ts +23 -0
- package/dist/v3/responseErrors/HttpImportRobot.d.ts.map +1 -0
- package/dist/v3/responseErrors/HttpImportRobot.js +22 -0
- package/dist/v3/robots/_ai-models.d.ts +28 -0
- package/dist/v3/robots/_ai-models.d.ts.map +1 -0
- package/dist/v3/robots/_ai-models.js +79 -0
- package/dist/v3/robots/_index.d.ts +619 -1235
- package/dist/v3/robots/_index.d.ts.map +1 -1
- package/dist/v3/robots/_index.js +4 -0
- package/dist/v3/robots/_instructions-primitives.d.ts +513 -138
- package/dist/v3/robots/_instructions-primitives.d.ts.map +1 -1
- package/dist/v3/robots/_instructions-primitives.js +629 -280
- package/dist/v3/robots/ai-chat.d.ts +755 -1992
- package/dist/v3/robots/ai-chat.d.ts.map +1 -1
- package/dist/v3/robots/ai-chat.js +235 -367
- package/dist/v3/robots/assembly-savejson.d.ts +28 -16
- package/dist/v3/robots/assembly-savejson.d.ts.map +1 -1
- package/dist/v3/robots/assembly-savejson.js +2 -11
- package/dist/v3/robots/audio-artwork.d.ts +124 -111
- package/dist/v3/robots/audio-artwork.d.ts.map +1 -1
- package/dist/v3/robots/audio-artwork.js +9 -38
- package/dist/v3/robots/audio-concat.d.ts +114 -101
- package/dist/v3/robots/audio-concat.d.ts.map +1 -1
- package/dist/v3/robots/audio-concat.js +11 -25
- package/dist/v3/robots/audio-encode.d.ts +124 -111
- package/dist/v3/robots/audio-encode.d.ts.map +1 -1
- package/dist/v3/robots/audio-encode.js +13 -43
- package/dist/v3/robots/audio-loop.d.ts +124 -111
- package/dist/v3/robots/audio-loop.d.ts.map +1 -1
- package/dist/v3/robots/audio-loop.js +12 -40
- package/dist/v3/robots/audio-merge.d.ts +114 -101
- package/dist/v3/robots/audio-merge.d.ts.map +1 -1
- package/dist/v3/robots/audio-merge.js +11 -25
- package/dist/v3/robots/audio-split.d.ts +124 -111
- package/dist/v3/robots/audio-split.d.ts.map +1 -1
- package/dist/v3/robots/audio-split.js +15 -45
- package/dist/v3/robots/audio-waveform.d.ts +144 -131
- package/dist/v3/robots/audio-waveform.d.ts.map +1 -1
- package/dist/v3/robots/audio-waveform.js +15 -39
- package/dist/v3/robots/azure-import.d.ts +48 -35
- package/dist/v3/robots/azure-import.d.ts.map +1 -1
- package/dist/v3/robots/azure-import.js +5 -35
- package/dist/v3/robots/azure-store.d.ts +51 -35
- package/dist/v3/robots/azure-store.d.ts.map +1 -1
- package/dist/v3/robots/azure-store.js +11 -50
- package/dist/v3/robots/backblaze-import.d.ts +48 -35
- package/dist/v3/robots/backblaze-import.d.ts.map +1 -1
- package/dist/v3/robots/backblaze-import.js +6 -39
- package/dist/v3/robots/backblaze-store.d.ts +44 -31
- package/dist/v3/robots/backblaze-store.d.ts.map +1 -1
- package/dist/v3/robots/backblaze-store.js +8 -44
- package/dist/v3/robots/box-import.d.ts +44 -27
- package/dist/v3/robots/box-import.d.ts.map +1 -1
- package/dist/v3/robots/box-import.js +7 -33
- package/dist/v3/robots/box-store.d.ts +49 -32
- package/dist/v3/robots/box-store.d.ts.map +1 -1
- package/dist/v3/robots/box-store.js +8 -40
- package/dist/v3/robots/cloudfiles-import.d.ts +56 -43
- package/dist/v3/robots/cloudfiles-import.d.ts.map +1 -1
- package/dist/v3/robots/cloudfiles-import.js +8 -45
- package/dist/v3/robots/cloudfiles-store.d.ts +52 -39
- package/dist/v3/robots/cloudfiles-store.d.ts.map +1 -1
- package/dist/v3/robots/cloudfiles-store.js +5 -36
- package/dist/v3/robots/cloudflare-import.d.ts +48 -35
- package/dist/v3/robots/cloudflare-import.d.ts.map +1 -1
- package/dist/v3/robots/cloudflare-import.js +10 -57
- package/dist/v3/robots/cloudflare-store.d.ts +44 -31
- package/dist/v3/robots/cloudflare-store.d.ts.map +1 -1
- package/dist/v3/robots/cloudflare-store.js +11 -54
- package/dist/v3/robots/digitalocean-import.d.ts +48 -35
- package/dist/v3/robots/digitalocean-import.d.ts.map +1 -1
- package/dist/v3/robots/digitalocean-import.js +8 -49
- package/dist/v3/robots/digitalocean-store.d.ts +44 -31
- package/dist/v3/robots/digitalocean-store.d.ts.map +1 -1
- package/dist/v3/robots/digitalocean-store.js +8 -56
- package/dist/v3/robots/document-autorotate.d.ts +44 -31
- package/dist/v3/robots/document-autorotate.d.ts.map +1 -1
- package/dist/v3/robots/document-autorotate.js +5 -32
- package/dist/v3/robots/document-convert.d.ts +52 -39
- package/dist/v3/robots/document-convert.d.ts.map +1 -1
- package/dist/v3/robots/document-convert.js +7 -33
- package/dist/v3/robots/document-extract.d.ts +44 -31
- package/dist/v3/robots/document-extract.d.ts.map +1 -1
- package/dist/v3/robots/document-extract.js +10 -36
- package/dist/v3/robots/document-merge.d.ts +44 -31
- package/dist/v3/robots/document-merge.d.ts.map +1 -1
- package/dist/v3/robots/document-merge.js +4 -25
- package/dist/v3/robots/document-ocr.d.ts +52 -39
- package/dist/v3/robots/document-ocr.d.ts.map +1 -1
- package/dist/v3/robots/document-ocr.js +10 -47
- package/dist/v3/robots/document-optimize.d.ts +44 -31
- package/dist/v3/robots/document-optimize.d.ts.map +1 -1
- package/dist/v3/robots/document-optimize.js +7 -31
- package/dist/v3/robots/document-split.d.ts +44 -31
- package/dist/v3/robots/document-split.d.ts.map +1 -1
- package/dist/v3/robots/document-split.js +7 -34
- package/dist/v3/robots/document-thumbs.d.ts +54 -35
- package/dist/v3/robots/document-thumbs.d.ts.map +1 -1
- package/dist/v3/robots/document-thumbs.js +24 -31
- package/dist/v3/robots/dropbox-import.d.ts +40 -27
- package/dist/v3/robots/dropbox-import.d.ts.map +1 -1
- package/dist/v3/robots/dropbox-import.js +5 -35
- package/dist/v3/robots/dropbox-store.d.ts +48 -32
- package/dist/v3/robots/dropbox-store.d.ts.map +1 -1
- package/dist/v3/robots/dropbox-store.js +8 -42
- package/dist/v3/robots/edgly-deliver.d.ts +40 -27
- package/dist/v3/robots/edgly-deliver.d.ts.map +1 -1
- package/dist/v3/robots/edgly-deliver.js +4 -24
- package/dist/v3/robots/file-compress.d.ts +44 -31
- package/dist/v3/robots/file-compress.d.ts.map +1 -1
- package/dist/v3/robots/file-compress.js +4 -20
- package/dist/v3/robots/file-decompress.d.ts +52 -39
- package/dist/v3/robots/file-decompress.d.ts.map +1 -1
- package/dist/v3/robots/file-decompress.js +10 -41
- package/dist/v3/robots/file-filter.d.ts +65 -53
- package/dist/v3/robots/file-filter.d.ts.map +1 -1
- package/dist/v3/robots/file-filter.js +11 -40
- package/dist/v3/robots/file-hash.d.ts +48 -35
- package/dist/v3/robots/file-hash.d.ts.map +1 -1
- package/dist/v3/robots/file-hash.js +12 -43
- package/dist/v3/robots/file-preview.d.ts +61 -48
- package/dist/v3/robots/file-preview.d.ts.map +1 -1
- package/dist/v3/robots/file-preview.js +14 -39
- package/dist/v3/robots/file-read.d.ts +44 -31
- package/dist/v3/robots/file-read.d.ts.map +1 -1
- package/dist/v3/robots/file-read.js +5 -26
- package/dist/v3/robots/file-serve.d.ts +45 -32
- package/dist/v3/robots/file-serve.d.ts.map +1 -1
- package/dist/v3/robots/file-serve.js +4 -21
- package/dist/v3/robots/file-verify.d.ts +52 -39
- package/dist/v3/robots/file-verify.d.ts.map +1 -1
- package/dist/v3/robots/file-verify.js +11 -41
- package/dist/v3/robots/file-virusscan.d.ts +47 -31
- package/dist/v3/robots/file-virusscan.d.ts.map +1 -1
- package/dist/v3/robots/file-virusscan.js +16 -42
- package/dist/v3/robots/file-watermark.d.ts +45 -31
- package/dist/v3/robots/file-watermark.d.ts.map +1 -1
- package/dist/v3/robots/file-watermark.js +10 -29
- package/dist/v3/robots/ftp-import.d.ts +48 -35
- package/dist/v3/robots/ftp-import.d.ts.map +1 -1
- package/dist/v3/robots/ftp-import.js +5 -33
- package/dist/v3/robots/ftp-store.d.ts +57 -39
- package/dist/v3/robots/ftp-store.d.ts.map +1 -1
- package/dist/v3/robots/ftp-store.js +7 -34
- package/dist/v3/robots/google-import.d.ts +48 -35
- package/dist/v3/robots/google-import.d.ts.map +1 -1
- package/dist/v3/robots/google-import.js +10 -43
- package/dist/v3/robots/google-store.d.ts +44 -31
- package/dist/v3/robots/google-store.d.ts.map +1 -1
- package/dist/v3/robots/google-store.js +10 -41
- package/dist/v3/robots/html-convert.d.ts +51 -33
- package/dist/v3/robots/html-convert.d.ts.map +1 -1
- package/dist/v3/robots/html-convert.js +6 -22
- package/dist/v3/robots/http-import.d.ts +34 -21
- package/dist/v3/robots/http-import.d.ts.map +1 -1
- package/dist/v3/robots/http-import.js +14 -19
- package/dist/v3/robots/http-request.d.ts +538 -0
- package/dist/v3/robots/http-request.d.ts.map +1 -0
- package/dist/v3/robots/http-request.js +161 -0
- package/dist/v3/robots/image-bgremove.d.ts +48 -35
- package/dist/v3/robots/image-bgremove.d.ts.map +1 -1
- package/dist/v3/robots/image-bgremove.js +6 -33
- package/dist/v3/robots/image-copyrightdetect.d.ts +52 -39
- package/dist/v3/robots/image-copyrightdetect.d.ts.map +1 -1
- package/dist/v3/robots/image-copyrightdetect.js +9 -33
- package/dist/v3/robots/image-describe.d.ts +52 -39
- package/dist/v3/robots/image-describe.d.ts.map +1 -1
- package/dist/v3/robots/image-describe.js +8 -37
- package/dist/v3/robots/image-enhance.d.ts +52 -39
- package/dist/v3/robots/image-enhance.d.ts.map +1 -1
- package/dist/v3/robots/image-enhance.js +7 -31
- package/dist/v3/robots/image-facedetect.d.ts +60 -47
- package/dist/v3/robots/image-facedetect.d.ts.map +1 -1
- package/dist/v3/robots/image-facedetect.js +16 -44
- package/dist/v3/robots/image-generate.d.ts +35 -25
- package/dist/v3/robots/image-generate.d.ts.map +1 -1
- package/dist/v3/robots/image-generate.js +20 -25
- package/dist/v3/robots/image-merge.d.ts +44 -31
- package/dist/v3/robots/image-merge.d.ts.map +1 -1
- package/dist/v3/robots/image-merge.js +9 -40
- package/dist/v3/robots/image-ocr.d.ts +52 -39
- package/dist/v3/robots/image-ocr.d.ts.map +1 -1
- package/dist/v3/robots/image-ocr.js +11 -47
- package/dist/v3/robots/image-optimize.d.ts +44 -31
- package/dist/v3/robots/image-optimize.d.ts.map +1 -1
- package/dist/v3/robots/image-optimize.js +6 -32
- package/dist/v3/robots/image-resize.d.ts +378 -273
- package/dist/v3/robots/image-resize.d.ts.map +1 -1
- package/dist/v3/robots/image-resize.js +15 -42
- package/dist/v3/robots/image-upscale.d.ts +61 -45
- package/dist/v3/robots/image-upscale.d.ts.map +1 -1
- package/dist/v3/robots/image-upscale.js +23 -42
- package/dist/v3/robots/mega-import.d.ts +48 -35
- package/dist/v3/robots/mega-import.d.ts.map +1 -1
- package/dist/v3/robots/mega-import.js +12 -59
- package/dist/v3/robots/mega-store.d.ts +44 -31
- package/dist/v3/robots/mega-store.d.ts.map +1 -1
- package/dist/v3/robots/mega-store.js +14 -60
- package/dist/v3/robots/meta-read.d.ts +38 -24
- package/dist/v3/robots/meta-read.d.ts.map +1 -1
- package/dist/v3/robots/meta-read.js +4 -20
- package/dist/v3/robots/meta-write.d.ts +124 -111
- package/dist/v3/robots/meta-write.d.ts.map +1 -1
- package/dist/v3/robots/meta-write.js +9 -32
- package/dist/v3/robots/minio-import.d.ts +48 -35
- package/dist/v3/robots/minio-import.d.ts.map +1 -1
- package/dist/v3/robots/minio-import.js +9 -60
- package/dist/v3/robots/minio-store.d.ts +44 -31
- package/dist/v3/robots/minio-store.d.ts.map +1 -1
- package/dist/v3/robots/minio-store.js +9 -50
- package/dist/v3/robots/progress-simulate.d.ts +16 -10
- package/dist/v3/robots/progress-simulate.d.ts.map +1 -1
- package/dist/v3/robots/progress-simulate.js +8 -28
- package/dist/v3/robots/s3-import.d.ts +48 -35
- package/dist/v3/robots/s3-import.d.ts.map +1 -1
- package/dist/v3/robots/s3-import.js +7 -38
- package/dist/v3/robots/s3-store.d.ts +52 -36
- package/dist/v3/robots/s3-store.d.ts.map +1 -1
- package/dist/v3/robots/s3-store.js +14 -44
- package/dist/v3/robots/script-run.d.ts +47 -31
- package/dist/v3/robots/script-run.d.ts.map +1 -1
- package/dist/v3/robots/script-run.js +9 -27
- package/dist/v3/robots/sftp-import.d.ts +59 -43
- package/dist/v3/robots/sftp-import.d.ts.map +1 -1
- package/dist/v3/robots/sftp-import.js +7 -36
- package/dist/v3/robots/sftp-store.d.ts +55 -39
- package/dist/v3/robots/sftp-store.d.ts.map +1 -1
- package/dist/v3/robots/sftp-store.js +9 -41
- package/dist/v3/robots/speech-transcribe.d.ts +74 -57
- package/dist/v3/robots/speech-transcribe.d.ts.map +1 -1
- package/dist/v3/robots/speech-transcribe.js +23 -44
- package/dist/v3/robots/supabase-import.d.ts +48 -35
- package/dist/v3/robots/supabase-import.d.ts.map +1 -1
- package/dist/v3/robots/supabase-import.js +12 -59
- package/dist/v3/robots/supabase-store.d.ts +44 -43
- package/dist/v3/robots/supabase-store.d.ts.map +1 -1
- package/dist/v3/robots/supabase-store.js +12 -56
- package/dist/v3/robots/swift-import.d.ts +48 -47
- package/dist/v3/robots/swift-import.d.ts.map +1 -1
- package/dist/v3/robots/swift-import.js +14 -55
- package/dist/v3/robots/swift-store.d.ts +44 -43
- package/dist/v3/robots/swift-store.d.ts.map +1 -1
- package/dist/v3/robots/swift-store.js +14 -62
- package/dist/v3/robots/text-speak.d.ts +48 -35
- package/dist/v3/robots/text-speak.d.ts.map +1 -1
- package/dist/v3/robots/text-speak.js +11 -37
- package/dist/v3/robots/text-translate.d.ts +56 -43
- package/dist/v3/robots/text-translate.d.ts.map +1 -1
- package/dist/v3/robots/text-translate.js +9 -36
- package/dist/v3/robots/tigris-import.d.ts +48 -35
- package/dist/v3/robots/tigris-import.d.ts.map +1 -1
- package/dist/v3/robots/tigris-import.js +9 -60
- package/dist/v3/robots/tigris-store.d.ts +44 -31
- package/dist/v3/robots/tigris-store.d.ts.map +1 -1
- package/dist/v3/robots/tigris-store.js +7 -48
- package/dist/v3/robots/tlcdn-deliver.d.ts +40 -27
- package/dist/v3/robots/tlcdn-deliver.d.ts.map +1 -1
- package/dist/v3/robots/tlcdn-deliver.js +4 -25
- package/dist/v3/robots/transloadit-import.d.ts +42 -29
- package/dist/v3/robots/transloadit-import.d.ts.map +1 -1
- package/dist/v3/robots/transloadit-import.js +17 -21
- package/dist/v3/robots/transloadit-store.d.ts +34 -21
- package/dist/v3/robots/transloadit-store.d.ts.map +1 -1
- package/dist/v3/robots/transloadit-store.js +14 -6
- package/dist/v3/robots/tus-store.d.ts +48 -35
- package/dist/v3/robots/tus-store.d.ts.map +1 -1
- package/dist/v3/robots/tus-store.js +8 -37
- package/dist/v3/robots/upload-handle.d.ts +40 -27
- package/dist/v3/robots/upload-handle.d.ts.map +1 -1
- package/dist/v3/robots/upload-handle.js +4 -19
- package/dist/v3/robots/video-adaptive.d.ts +124 -111
- package/dist/v3/robots/video-adaptive.d.ts.map +1 -1
- package/dist/v3/robots/video-adaptive.js +4 -26
- package/dist/v3/robots/video-artwork.d.ts +124 -111
- package/dist/v3/robots/video-artwork.d.ts.map +1 -1
- package/dist/v3/robots/video-artwork.js +7 -32
- package/dist/v3/robots/video-concat.d.ts +124 -111
- package/dist/v3/robots/video-concat.d.ts.map +1 -1
- package/dist/v3/robots/video-concat.js +6 -27
- package/dist/v3/robots/video-encode.d.ts +141 -123
- package/dist/v3/robots/video-encode.d.ts.map +1 -1
- package/dist/v3/robots/video-encode.js +13 -38
- package/dist/v3/robots/video-generate.d.ts +35 -25
- package/dist/v3/robots/video-generate.d.ts.map +1 -1
- package/dist/v3/robots/video-generate.js +11 -18
- package/dist/v3/robots/video-merge.d.ts +143 -127
- package/dist/v3/robots/video-merge.d.ts.map +1 -1
- package/dist/v3/robots/video-merge.js +12 -32
- package/dist/v3/robots/video-ondemand.d.ts +180 -163
- package/dist/v3/robots/video-ondemand.d.ts.map +1 -1
- package/dist/v3/robots/video-ondemand.js +11 -27
- package/dist/v3/robots/video-split.d.ts +124 -111
- package/dist/v3/robots/video-split.d.ts.map +1 -1
- package/dist/v3/robots/video-split.js +11 -39
- package/dist/v3/robots/video-subtitle.d.ts +124 -111
- package/dist/v3/robots/video-subtitle.d.ts.map +1 -1
- package/dist/v3/robots/video-subtitle.js +7 -30
- package/dist/v3/robots/video-thumbs.d.ts +140 -123
- package/dist/v3/robots/video-thumbs.d.ts.map +1 -1
- package/dist/v3/robots/video-thumbs.js +46 -53
- package/dist/v3/robots/vimeo-import.d.ts +30 -17
- package/dist/v3/robots/vimeo-import.d.ts.map +1 -1
- package/dist/v3/robots/vimeo-import.js +7 -17
- package/dist/v3/robots/vimeo-store.d.ts +47 -31
- package/dist/v3/robots/vimeo-store.d.ts.map +1 -1
- package/dist/v3/robots/vimeo-store.js +11 -37
- package/dist/v3/robots/wasabi-import.d.ts +48 -35
- package/dist/v3/robots/wasabi-import.d.ts.map +1 -1
- package/dist/v3/robots/wasabi-import.js +9 -56
- package/dist/v3/robots/wasabi-store.d.ts +44 -31
- package/dist/v3/robots/wasabi-store.d.ts.map +1 -1
- package/dist/v3/robots/wasabi-store.js +10 -52
- package/dist/v3/robots/youtube-store.d.ts +58 -45
- package/dist/v3/robots/youtube-store.d.ts.map +1 -1
- package/dist/v3/robots/youtube-store.js +42 -63
- package/dist/v3/stackVersions.d.ts +40 -1
- package/dist/v3/stackVersions.d.ts.map +1 -1
- package/dist/v3/stackVersions.js +25 -3
- package/dist/v3/storageAsset.d.ts +33 -1
- package/dist/v3/storageAsset.d.ts.map +1 -1
- package/dist/v3/storageAsset.js +33 -9
- package/dist/v3/template.d.ts +2 -2
- package/dist/v3/templateCredential.d.ts +4 -4
- package/dist/v3/utility.d.ts +22 -0
- package/dist/v3/utility.d.ts.map +1 -0
- package/dist/v3/utility.js +1 -0
- package/dist/v4/aiMessages.d.ts +1100 -0
- package/dist/v4/aiMessages.d.ts.map +1 -0
- package/dist/v4/aiMessages.js +479 -0
- package/dist/v4/apiParameterDescription.d.ts +14 -0
- package/dist/v4/apiParameterDescription.d.ts.map +1 -0
- package/dist/v4/apiParameterDescription.js +19 -0
- package/dist/v4/assemblyReplay.d.ts.map +1 -1
- package/dist/v4/assemblyReplay.js +13 -12
- package/dist/v4/assemblyStatus.d.ts +878 -2581
- package/dist/v4/assemblyStatus.d.ts.map +1 -1
- package/dist/v4/assemblyStatus.js +416 -408
- package/dist/v4/builtinTemplates.d.ts.map +1 -1
- package/dist/v4/builtinTemplates.js +2 -1
- package/dist/v4/englishList.d.ts +3 -0
- package/dist/v4/englishList.d.ts.map +1 -0
- package/dist/v4/englishList.js +11 -0
- package/dist/v4/errorReason.d.ts +7 -0
- package/dist/v4/errorReason.d.ts.map +1 -0
- package/dist/v4/errorReason.js +13 -0
- package/dist/v4/file.d.ts +25 -0
- package/dist/v4/file.d.ts.map +1 -1
- package/dist/v4/file.js +15 -0
- package/dist/v4/fileHash.d.ts +21 -0
- package/dist/v4/fileHash.d.ts.map +1 -0
- package/dist/v4/fileHash.js +9 -0
- package/dist/v4/imagemagickDensity.d.ts.map +1 -1
- package/dist/v4/imagemagickDensity.js +2 -2
- package/dist/v4/index.d.ts +4 -0
- package/dist/v4/index.d.ts.map +1 -1
- package/dist/v4/index.js +4 -0
- package/dist/v4/lib/sdkZodOptional.d.ts +4 -0
- package/dist/v4/lib/sdkZodOptional.d.ts.map +1 -0
- package/dist/v4/lib/sdkZodOptional.js +12 -0
- package/dist/v4/lib/zodInputSemantics.d.ts +18 -0
- package/dist/v4/lib/zodInputSemantics.d.ts.map +1 -0
- package/dist/v4/lib/zodInputSemantics.js +85 -0
- package/dist/v4/object.d.ts +71 -0
- package/dist/v4/object.d.ts.map +1 -0
- package/dist/v4/object.js +195 -0
- package/dist/v4/responseErrors/HttpImportRobot.d.ts +23 -0
- package/dist/v4/responseErrors/HttpImportRobot.d.ts.map +1 -0
- package/dist/v4/responseErrors/HttpImportRobot.js +22 -0
- package/dist/v4/robots/_ai-models.d.ts +28 -0
- package/dist/v4/robots/_ai-models.d.ts.map +1 -0
- package/dist/v4/robots/_ai-models.js +79 -0
- package/dist/v4/robots/_index.d.ts +619 -1235
- package/dist/v4/robots/_index.d.ts.map +1 -1
- package/dist/v4/robots/_index.js +4 -0
- package/dist/v4/robots/_instructions-primitives.d.ts +426 -41
- package/dist/v4/robots/_instructions-primitives.d.ts.map +1 -1
- package/dist/v4/robots/_instructions-primitives.js +830 -529
- package/dist/v4/robots/ai-chat.d.ts +82 -334
- package/dist/v4/robots/ai-chat.d.ts.map +1 -1
- package/dist/v4/robots/ai-chat.js +261 -399
- package/dist/v4/robots/assembly-savejson.d.ts +22 -18
- package/dist/v4/robots/assembly-savejson.d.ts.map +1 -1
- package/dist/v4/robots/assembly-savejson.js +7 -15
- package/dist/v4/robots/audio-artwork.d.ts +44 -39
- package/dist/v4/robots/audio-artwork.d.ts.map +1 -1
- package/dist/v4/robots/audio-artwork.js +9 -38
- package/dist/v4/robots/audio-concat.d.ts +36 -31
- package/dist/v4/robots/audio-concat.d.ts.map +1 -1
- package/dist/v4/robots/audio-concat.js +15 -31
- package/dist/v4/robots/audio-encode.d.ts +38 -33
- package/dist/v4/robots/audio-encode.d.ts.map +1 -1
- package/dist/v4/robots/audio-encode.js +15 -46
- package/dist/v4/robots/audio-loop.d.ts +42 -37
- package/dist/v4/robots/audio-loop.d.ts.map +1 -1
- package/dist/v4/robots/audio-loop.js +12 -40
- package/dist/v4/robots/audio-merge.d.ts +38 -33
- package/dist/v4/robots/audio-merge.d.ts.map +1 -1
- package/dist/v4/robots/audio-merge.js +13 -28
- package/dist/v4/robots/audio-split.d.ts +38 -33
- package/dist/v4/robots/audio-split.d.ts.map +1 -1
- package/dist/v4/robots/audio-split.js +17 -48
- package/dist/v4/robots/audio-waveform.d.ts +58 -53
- package/dist/v4/robots/audio-waveform.d.ts.map +1 -1
- package/dist/v4/robots/audio-waveform.js +62 -107
- package/dist/v4/robots/azure-import.d.ts +44 -39
- package/dist/v4/robots/azure-import.d.ts.map +1 -1
- package/dist/v4/robots/azure-import.js +5 -35
- package/dist/v4/robots/azure-store.d.ts +44 -33
- package/dist/v4/robots/azure-store.d.ts.map +1 -1
- package/dist/v4/robots/azure-store.js +25 -70
- package/dist/v4/robots/backblaze-import.d.ts +44 -39
- package/dist/v4/robots/backblaze-import.d.ts.map +1 -1
- package/dist/v4/robots/backblaze-import.js +6 -39
- package/dist/v4/robots/backblaze-store.d.ts +38 -33
- package/dist/v4/robots/backblaze-store.d.ts.map +1 -1
- package/dist/v4/robots/backblaze-store.js +8 -44
- package/dist/v4/robots/box-import.d.ts +42 -33
- package/dist/v4/robots/box-import.d.ts.map +1 -1
- package/dist/v4/robots/box-import.js +10 -35
- package/dist/v4/robots/box-store.d.ts +43 -34
- package/dist/v4/robots/box-store.d.ts.map +1 -1
- package/dist/v4/robots/box-store.js +11 -42
- package/dist/v4/robots/cloudfiles-import.d.ts +44 -39
- package/dist/v4/robots/cloudfiles-import.d.ts.map +1 -1
- package/dist/v4/robots/cloudfiles-import.js +8 -45
- package/dist/v4/robots/cloudfiles-store.d.ts +36 -31
- package/dist/v4/robots/cloudfiles-store.d.ts.map +1 -1
- package/dist/v4/robots/cloudfiles-store.js +5 -36
- package/dist/v4/robots/cloudflare-import.d.ts +46 -41
- package/dist/v4/robots/cloudflare-import.d.ts.map +1 -1
- package/dist/v4/robots/cloudflare-import.js +10 -57
- package/dist/v4/robots/cloudflare-store.d.ts +38 -33
- package/dist/v4/robots/cloudflare-store.d.ts.map +1 -1
- package/dist/v4/robots/cloudflare-store.js +14 -57
- package/dist/v4/robots/digitalocean-import.d.ts +46 -41
- package/dist/v4/robots/digitalocean-import.d.ts.map +1 -1
- package/dist/v4/robots/digitalocean-import.js +8 -49
- package/dist/v4/robots/digitalocean-store.d.ts +42 -37
- package/dist/v4/robots/digitalocean-store.d.ts.map +1 -1
- package/dist/v4/robots/digitalocean-store.js +8 -56
- package/dist/v4/robots/document-autorotate.d.ts +34 -29
- package/dist/v4/robots/document-autorotate.d.ts.map +1 -1
- package/dist/v4/robots/document-autorotate.js +5 -32
- package/dist/v4/robots/document-convert.d.ts +58 -53
- package/dist/v4/robots/document-convert.d.ts.map +1 -1
- package/dist/v4/robots/document-convert.js +12 -39
- package/dist/v4/robots/document-extract.d.ts +54 -49
- package/dist/v4/robots/document-extract.d.ts.map +1 -1
- package/dist/v4/robots/document-extract.js +15 -42
- package/dist/v4/robots/document-merge.d.ts +38 -33
- package/dist/v4/robots/document-merge.d.ts.map +1 -1
- package/dist/v4/robots/document-merge.js +7 -28
- package/dist/v4/robots/document-ocr.d.ts +48 -43
- package/dist/v4/robots/document-ocr.d.ts.map +1 -1
- package/dist/v4/robots/document-ocr.js +10 -47
- package/dist/v4/robots/document-optimize.d.ts +46 -41
- package/dist/v4/robots/document-optimize.d.ts.map +1 -1
- package/dist/v4/robots/document-optimize.js +10 -34
- package/dist/v4/robots/document-split.d.ts +34 -29
- package/dist/v4/robots/document-split.d.ts.map +1 -1
- package/dist/v4/robots/document-split.js +10 -37
- package/dist/v4/robots/document-thumbs.d.ts +81 -52
- package/dist/v4/robots/document-thumbs.d.ts.map +1 -1
- package/dist/v4/robots/document-thumbs.js +42 -58
- package/dist/v4/robots/dropbox-import.d.ts +38 -33
- package/dist/v4/robots/dropbox-import.d.ts.map +1 -1
- package/dist/v4/robots/dropbox-import.js +10 -41
- package/dist/v4/robots/dropbox-store.d.ts +42 -34
- package/dist/v4/robots/dropbox-store.d.ts.map +1 -1
- package/dist/v4/robots/dropbox-store.js +10 -43
- package/dist/v4/robots/edgly-deliver.d.ts +34 -29
- package/dist/v4/robots/edgly-deliver.d.ts.map +1 -1
- package/dist/v4/robots/edgly-deliver.js +4 -24
- package/dist/v4/robots/file-compress.d.ts +44 -39
- package/dist/v4/robots/file-compress.d.ts.map +1 -1
- package/dist/v4/robots/file-compress.js +9 -26
- package/dist/v4/robots/file-decompress.d.ts +44 -39
- package/dist/v4/robots/file-decompress.d.ts.map +1 -1
- package/dist/v4/robots/file-decompress.js +13 -44
- package/dist/v4/robots/file-filter.d.ts +39 -35
- package/dist/v4/robots/file-filter.d.ts.map +1 -1
- package/dist/v4/robots/file-filter.js +16 -46
- package/dist/v4/robots/file-hash.d.ts +44 -39
- package/dist/v4/robots/file-hash.d.ts.map +1 -1
- package/dist/v4/robots/file-hash.js +12 -43
- package/dist/v4/robots/file-preview.d.ts +93 -88
- package/dist/v4/robots/file-preview.d.ts.map +1 -1
- package/dist/v4/robots/file-preview.js +19 -44
- package/dist/v4/robots/file-read.d.ts +34 -29
- package/dist/v4/robots/file-read.d.ts.map +1 -1
- package/dist/v4/robots/file-read.js +5 -26
- package/dist/v4/robots/file-serve.d.ts +37 -32
- package/dist/v4/robots/file-serve.d.ts.map +1 -1
- package/dist/v4/robots/file-serve.js +9 -27
- package/dist/v4/robots/file-verify.d.ts +42 -37
- package/dist/v4/robots/file-verify.d.ts.map +1 -1
- package/dist/v4/robots/file-verify.js +11 -41
- package/dist/v4/robots/file-virusscan.d.ts +41 -33
- package/dist/v4/robots/file-virusscan.d.ts.map +1 -1
- package/dist/v4/robots/file-virusscan.js +19 -45
- package/dist/v4/robots/file-watermark.d.ts +35 -29
- package/dist/v4/robots/file-watermark.d.ts.map +1 -1
- package/dist/v4/robots/file-watermark.js +12 -30
- package/dist/v4/robots/ftp-import.d.ts +42 -37
- package/dist/v4/robots/ftp-import.d.ts.map +1 -1
- package/dist/v4/robots/ftp-import.js +5 -33
- package/dist/v4/robots/ftp-store.d.ts +49 -39
- package/dist/v4/robots/ftp-store.d.ts.map +1 -1
- package/dist/v4/robots/ftp-store.js +13 -41
- package/dist/v4/robots/google-import.d.ts +44 -39
- package/dist/v4/robots/google-import.d.ts.map +1 -1
- package/dist/v4/robots/google-import.js +10 -43
- package/dist/v4/robots/google-store.d.ts +40 -35
- package/dist/v4/robots/google-store.d.ts.map +1 -1
- package/dist/v4/robots/google-store.js +15 -47
- package/dist/v4/robots/html-convert.d.ts +54 -44
- package/dist/v4/robots/html-convert.d.ts.map +1 -1
- package/dist/v4/robots/html-convert.js +13 -30
- package/dist/v4/robots/http-import.d.ts +35 -30
- package/dist/v4/robots/http-import.d.ts.map +1 -1
- package/dist/v4/robots/http-import.js +27 -35
- package/dist/v4/robots/http-request.d.ts +231 -0
- package/dist/v4/robots/http-request.d.ts.map +1 -0
- package/dist/v4/robots/http-request.js +161 -0
- package/dist/v4/robots/image-bgremove.d.ts +42 -37
- package/dist/v4/robots/image-bgremove.d.ts.map +1 -1
- package/dist/v4/robots/image-bgremove.js +11 -39
- package/dist/v4/robots/image-copyrightdetect.d.ts +52 -47
- package/dist/v4/robots/image-copyrightdetect.d.ts.map +1 -1
- package/dist/v4/robots/image-copyrightdetect.js +9 -33
- package/dist/v4/robots/image-describe.d.ts +50 -45
- package/dist/v4/robots/image-describe.d.ts.map +1 -1
- package/dist/v4/robots/image-describe.js +8 -37
- package/dist/v4/robots/image-enhance.d.ts +58 -53
- package/dist/v4/robots/image-enhance.d.ts.map +1 -1
- package/dist/v4/robots/image-enhance.js +7 -31
- package/dist/v4/robots/image-facedetect.d.ts +54 -49
- package/dist/v4/robots/image-facedetect.d.ts.map +1 -1
- package/dist/v4/robots/image-facedetect.js +20 -47
- package/dist/v4/robots/image-generate.d.ts +25 -21
- package/dist/v4/robots/image-generate.d.ts.map +1 -1
- package/dist/v4/robots/image-generate.js +36 -47
- package/dist/v4/robots/image-merge.d.ts +54 -49
- package/dist/v4/robots/image-merge.d.ts.map +1 -1
- package/dist/v4/robots/image-merge.js +28 -67
- package/dist/v4/robots/image-ocr.d.ts +48 -43
- package/dist/v4/robots/image-ocr.d.ts.map +1 -1
- package/dist/v4/robots/image-ocr.js +11 -47
- package/dist/v4/robots/image-optimize.d.ts +44 -39
- package/dist/v4/robots/image-optimize.d.ts.map +1 -1
- package/dist/v4/robots/image-optimize.js +6 -32
- package/dist/v4/robots/image-resize.d.ts +344 -185
- package/dist/v4/robots/image-resize.d.ts.map +1 -1
- package/dist/v4/robots/image-resize.js +44 -81
- package/dist/v4/robots/image-upscale.d.ts +55 -47
- package/dist/v4/robots/image-upscale.d.ts.map +1 -1
- package/dist/v4/robots/image-upscale.js +24 -45
- package/dist/v4/robots/mega-import.d.ts +44 -39
- package/dist/v4/robots/mega-import.d.ts.map +1 -1
- package/dist/v4/robots/mega-import.js +15 -62
- package/dist/v4/robots/mega-store.d.ts +40 -35
- package/dist/v4/robots/mega-store.d.ts.map +1 -1
- package/dist/v4/robots/mega-store.js +14 -60
- package/dist/v4/robots/meta-read.d.ts +32 -26
- package/dist/v4/robots/meta-read.d.ts.map +1 -1
- package/dist/v4/robots/meta-read.js +4 -20
- package/dist/v4/robots/meta-write.d.ts +42 -37
- package/dist/v4/robots/meta-write.d.ts.map +1 -1
- package/dist/v4/robots/meta-write.js +9 -32
- package/dist/v4/robots/minio-import.d.ts +46 -41
- package/dist/v4/robots/minio-import.d.ts.map +1 -1
- package/dist/v4/robots/minio-import.js +9 -60
- package/dist/v4/robots/minio-store.d.ts +40 -35
- package/dist/v4/robots/minio-store.d.ts.map +1 -1
- package/dist/v4/robots/minio-store.js +12 -53
- package/dist/v4/robots/progress-simulate.d.ts +11 -9
- package/dist/v4/robots/progress-simulate.d.ts.map +1 -1
- package/dist/v4/robots/progress-simulate.js +8 -28
- package/dist/v4/robots/s3-import.d.ts +46 -41
- package/dist/v4/robots/s3-import.d.ts.map +1 -1
- package/dist/v4/robots/s3-import.js +12 -43
- package/dist/v4/robots/s3-store.d.ts +58 -50
- package/dist/v4/robots/s3-store.d.ts.map +1 -1
- package/dist/v4/robots/s3-store.js +21 -53
- package/dist/v4/robots/script-run.d.ts +37 -29
- package/dist/v4/robots/script-run.d.ts.map +1 -1
- package/dist/v4/robots/script-run.js +12 -30
- package/dist/v4/robots/sftp-import.d.ts +45 -37
- package/dist/v4/robots/sftp-import.d.ts.map +1 -1
- package/dist/v4/robots/sftp-import.js +10 -39
- package/dist/v4/robots/sftp-store.d.ts +47 -39
- package/dist/v4/robots/sftp-store.d.ts.map +1 -1
- package/dist/v4/robots/sftp-store.js +12 -44
- package/dist/v4/robots/speech-transcribe.d.ts +71 -54
- package/dist/v4/robots/speech-transcribe.d.ts.map +1 -1
- package/dist/v4/robots/speech-transcribe.js +26 -47
- package/dist/v4/robots/supabase-import.d.ts +46 -41
- package/dist/v4/robots/supabase-import.d.ts.map +1 -1
- package/dist/v4/robots/supabase-import.js +12 -59
- package/dist/v4/robots/supabase-store.d.ts +38 -37
- package/dist/v4/robots/supabase-store.d.ts.map +1 -1
- package/dist/v4/robots/supabase-store.js +12 -56
- package/dist/v4/robots/swift-import.d.ts +46 -45
- package/dist/v4/robots/swift-import.d.ts.map +1 -1
- package/dist/v4/robots/swift-import.js +14 -55
- package/dist/v4/robots/swift-store.d.ts +40 -39
- package/dist/v4/robots/swift-store.d.ts.map +1 -1
- package/dist/v4/robots/swift-store.js +14 -62
- package/dist/v4/robots/text-speak.d.ts +46 -41
- package/dist/v4/robots/text-speak.d.ts.map +1 -1
- package/dist/v4/robots/text-speak.js +11 -37
- package/dist/v4/robots/text-translate.d.ts +44 -39
- package/dist/v4/robots/text-translate.d.ts.map +1 -1
- package/dist/v4/robots/text-translate.js +9 -36
- package/dist/v4/robots/tigris-import.d.ts +46 -41
- package/dist/v4/robots/tigris-import.d.ts.map +1 -1
- package/dist/v4/robots/tigris-import.js +12 -63
- package/dist/v4/robots/tigris-store.d.ts +40 -35
- package/dist/v4/robots/tigris-store.d.ts.map +1 -1
- package/dist/v4/robots/tigris-store.js +12 -54
- package/dist/v4/robots/tlcdn-deliver.d.ts +36 -31
- package/dist/v4/robots/tlcdn-deliver.d.ts.map +1 -1
- package/dist/v4/robots/tlcdn-deliver.js +7 -28
- package/dist/v4/robots/transloadit-import.d.ts +32 -31
- package/dist/v4/robots/transloadit-import.d.ts.map +1 -1
- package/dist/v4/robots/transloadit-import.js +24 -29
- package/dist/v4/robots/transloadit-store.d.ts +28 -23
- package/dist/v4/robots/transloadit-store.d.ts.map +1 -1
- package/dist/v4/robots/transloadit-store.js +17 -9
- package/dist/v4/robots/tus-store.d.ts +38 -33
- package/dist/v4/robots/tus-store.d.ts.map +1 -1
- package/dist/v4/robots/tus-store.js +15 -46
- package/dist/v4/robots/upload-handle.d.ts +34 -29
- package/dist/v4/robots/upload-handle.d.ts.map +1 -1
- package/dist/v4/robots/upload-handle.js +4 -19
- package/dist/v4/robots/video-adaptive.d.ts +48 -43
- package/dist/v4/robots/video-adaptive.d.ts.map +1 -1
- package/dist/v4/robots/video-adaptive.js +9 -32
- package/dist/v4/robots/video-artwork.d.ts +42 -37
- package/dist/v4/robots/video-artwork.d.ts.map +1 -1
- package/dist/v4/robots/video-artwork.js +7 -32
- package/dist/v4/robots/video-concat.d.ts +52 -47
- package/dist/v4/robots/video-concat.d.ts.map +1 -1
- package/dist/v4/robots/video-concat.js +6 -27
- package/dist/v4/robots/video-encode.d.ts +79 -69
- package/dist/v4/robots/video-encode.d.ts.map +1 -1
- package/dist/v4/robots/video-encode.js +20 -44
- package/dist/v4/robots/video-generate.d.ts +25 -21
- package/dist/v4/robots/video-generate.d.ts.map +1 -1
- package/dist/v4/robots/video-generate.js +33 -46
- package/dist/v4/robots/video-merge.d.ts +69 -61
- package/dist/v4/robots/video-merge.d.ts.map +1 -1
- package/dist/v4/robots/video-merge.js +15 -34
- package/dist/v4/robots/video-ondemand.d.ts +86 -77
- package/dist/v4/robots/video-ondemand.d.ts.map +1 -1
- package/dist/v4/robots/video-ondemand.js +26 -48
- package/dist/v4/robots/video-split.d.ts +40 -35
- package/dist/v4/robots/video-split.d.ts.map +1 -1
- package/dist/v4/robots/video-split.js +11 -39
- package/dist/v4/robots/video-subtitle.d.ts +60 -55
- package/dist/v4/robots/video-subtitle.d.ts.map +1 -1
- package/dist/v4/robots/video-subtitle.js +14 -39
- package/dist/v4/robots/video-thumbs.d.ts +60 -51
- package/dist/v4/robots/video-thumbs.d.ts.map +1 -1
- package/dist/v4/robots/video-thumbs.js +53 -62
- package/dist/v4/robots/vimeo-import.d.ts +36 -31
- package/dist/v4/robots/vimeo-import.d.ts.map +1 -1
- package/dist/v4/robots/vimeo-import.js +12 -23
- package/dist/v4/robots/vimeo-store.d.ts +45 -37
- package/dist/v4/robots/vimeo-store.d.ts.map +1 -1
- package/dist/v4/robots/vimeo-store.js +18 -46
- package/dist/v4/robots/wasabi-import.d.ts +44 -39
- package/dist/v4/robots/wasabi-import.d.ts.map +1 -1
- package/dist/v4/robots/wasabi-import.js +12 -59
- package/dist/v4/robots/wasabi-store.d.ts +40 -35
- package/dist/v4/robots/wasabi-store.d.ts.map +1 -1
- package/dist/v4/robots/wasabi-store.js +10 -52
- package/dist/v4/robots/youtube-store.d.ts +42 -37
- package/dist/v4/robots/youtube-store.d.ts.map +1 -1
- package/dist/v4/robots/youtube-store.js +42 -63
- package/dist/v4/skillFrontmatter.d.ts.map +1 -1
- package/dist/v4/skillFrontmatter.js +5 -4
- package/dist/v4/stackVersions.d.ts +40 -1
- package/dist/v4/stackVersions.d.ts.map +1 -1
- package/dist/v4/stackVersions.js +25 -3
- package/dist/v4/storageAsset.d.ts +13 -1
- package/dist/v4/storageAsset.d.ts.map +1 -1
- package/dist/v4/storageAsset.js +43 -22
- package/dist/v4/template.d.ts +1 -1
- package/dist/v4/template.d.ts.map +1 -1
- package/dist/v4/template.js +43 -55
- package/dist/v4/templateCredential.d.ts +1 -1
- package/dist/v4/utility.d.ts +22 -0
- package/dist/v4/utility.d.ts.map +1 -0
- package/dist/v4/utility.js +1 -0
- package/package.json +2 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aiMessages.d.ts","sourceRoot":"","sources":["../../src/v3/aiMessages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAI1B,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,EAAE,GACX;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAA;AAEhC,eAAO,MAAM,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAsC,CAAA;AAkQvF,sGAAsG;AACtG,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQ5D;AAED,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;EAOjC,CAAA;AAEF;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,SAAS,CAAC,CAAC,OAAO,EACtB,QAAQ,SAAS,CAAC,CAAC,OAAO,EAC1B,IAAI,SAAS,CAAC,CAAC,OAAO,EACtB,eAAe,SAAS,CAAC,CAAC,OAAO,EAEjC,gBAAgB,EAAE,IAAI,EACtB,kBAAkB,EAAE,QAAQ,EAC5B,eAAe,EAAE,IAAI,EACrB,sBAAsB,EAAE,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsOxC;AAED,qEAAqE;AACrE,wBAAgB,6BAA6B,CAC3C,IAAI,SAAS,CAAC,CAAC,OAAO,EACtB,QAAQ,SAAS,CAAC,CAAC,OAAO,EAC1B,IAAI,SAAS,CAAC,CAAC,OAAO,EACtB,eAAe,SAAS,CAAC,CAAC,OAAO,EAEjC,gBAAgB,EAAE,IAAI,EACtB,kBAAkB,EAAE,QAAQ,EAC5B,eAAe,EAAE,IAAI,EACrB,sBAAsB,EAAE,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+EAQxC"}
|
|
@@ -0,0 +1,478 @@
|
|
|
1
|
+
import { z } from 'zod/v3';
|
|
2
|
+
import { isRecord } from "./object.js";
|
|
3
|
+
export const jsonValueSchema = z.lazy(() => jsonValueUnionSchema);
|
|
4
|
+
const jsonValueUnionSchema = z.union([
|
|
5
|
+
z.string(),
|
|
6
|
+
z.number().finite(),
|
|
7
|
+
z.boolean(),
|
|
8
|
+
z.null(),
|
|
9
|
+
z.array(jsonValueSchema),
|
|
10
|
+
z.record(jsonValueSchema),
|
|
11
|
+
]);
|
|
12
|
+
// Define provider options schema to match the AI SDK.
|
|
13
|
+
const providerMetadataSchema = z.record(z.record(jsonValueSchema)).optional();
|
|
14
|
+
function* legacyRecordEntries(value) {
|
|
15
|
+
// Zod records also validate inherited enumerable properties, unlike JSON.stringify.
|
|
16
|
+
for (const key in value) {
|
|
17
|
+
yield [key, value[key]];
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function legacyJsonFrame(value) {
|
|
21
|
+
if (Array.isArray(value)) {
|
|
22
|
+
// Zod arrays consume the iterator, ignoring non-element properties.
|
|
23
|
+
const copy = [...value];
|
|
24
|
+
return { source: value, copy, entries: copy.entries(), depth: 1, values: 1 };
|
|
25
|
+
}
|
|
26
|
+
if (isRecord(value) && z.getParsedType(value) === 'object') {
|
|
27
|
+
return { source: value, copy: {}, entries: legacyRecordEntries(value), depth: 1, values: 1 };
|
|
28
|
+
}
|
|
29
|
+
// Preserve non-JSON objects (Date, Map, promises, etc.) for Zod to reject, not coerce.
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
function snapshotLegacyJson(result, limits) {
|
|
33
|
+
const root = legacyJsonFrame(result);
|
|
34
|
+
if (root === undefined) {
|
|
35
|
+
return { value: result };
|
|
36
|
+
}
|
|
37
|
+
const ancestors = new WeakSet([root.source]);
|
|
38
|
+
const snapshots = new WeakMap([[root.source, root]]);
|
|
39
|
+
const stack = [root];
|
|
40
|
+
// An iterative snapshot avoids both recursive cycle checking and reading getters twice
|
|
41
|
+
// (once in a preflight walk, then again with potentially different values inside Zod).
|
|
42
|
+
while (stack.length > 0) {
|
|
43
|
+
const frame = stack[stack.length - 1];
|
|
44
|
+
if (limits !== undefined &&
|
|
45
|
+
(stack.length + frame.depth - 1 > limits.depth || frame.values > limits.values)) {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
const entry = frame.entries.next();
|
|
49
|
+
if (entry.done) {
|
|
50
|
+
ancestors.delete(frame.source);
|
|
51
|
+
stack.pop();
|
|
52
|
+
const parent = stack[stack.length - 1];
|
|
53
|
+
if (parent !== undefined) {
|
|
54
|
+
parent.depth = Math.max(parent.depth, frame.depth + 1);
|
|
55
|
+
parent.values += frame.values;
|
|
56
|
+
}
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
const [key, value] = entry.value;
|
|
60
|
+
if (typeof value === 'object' && value !== null && ancestors.has(value)) {
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
// Preserve graph sharing so a small DAG cannot expand exponentially before Zod runs.
|
|
64
|
+
// A shared object's getters deliberately contribute one stable snapshot, not one per path.
|
|
65
|
+
const existing = typeof value === 'object' && value !== null ? snapshots.get(value) : undefined;
|
|
66
|
+
const child = existing === undefined ? legacyJsonFrame(value) : undefined;
|
|
67
|
+
// Defining a data property preserves a literal __proto__ key for Zod's own handling.
|
|
68
|
+
Object.defineProperty(frame.copy, key, {
|
|
69
|
+
configurable: true,
|
|
70
|
+
enumerable: true,
|
|
71
|
+
value: existing?.copy ?? child?.copy ?? value,
|
|
72
|
+
writable: true,
|
|
73
|
+
});
|
|
74
|
+
if (child !== undefined) {
|
|
75
|
+
snapshots.set(child.source, child);
|
|
76
|
+
ancestors.add(child.source);
|
|
77
|
+
stack.push(child);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
frame.depth = Math.max(frame.depth, (existing?.depth ?? 0) + 1);
|
|
81
|
+
frame.values += existing?.values ?? 1;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return { value: root.copy };
|
|
85
|
+
}
|
|
86
|
+
/** Normalizes legacy JSON/text tool results at both the runtime and portable Robot boundaries. */
|
|
87
|
+
function legacyJsonToolOutput(result, isError) {
|
|
88
|
+
try {
|
|
89
|
+
const snapshot = snapshotLegacyJson(result);
|
|
90
|
+
const parsed = snapshot === undefined ? undefined : jsonValueSchema.safeParse(snapshot.value);
|
|
91
|
+
if (parsed?.success) {
|
|
92
|
+
return { type: isError ? 'error-json' : 'json', value: parsed.data };
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
// Accessors can throw; deeply nested acyclic input can still exceed Zod's stack.
|
|
97
|
+
// Keep the existing text fallback without using a stack overflow to detect cycles.
|
|
98
|
+
}
|
|
99
|
+
return { type: isError ? 'error-text' : 'text', value: stringifyLegacyToolResult(result) };
|
|
100
|
+
}
|
|
101
|
+
function withCurrentProviderOptions(value) {
|
|
102
|
+
const { experimental_providerMetadata, providerOptions: currentProviderOptions, ...rest } = value;
|
|
103
|
+
const providerOptions = currentProviderOptions ?? experimental_providerMetadata;
|
|
104
|
+
return providerOptions === undefined ? rest : { ...rest, providerOptions };
|
|
105
|
+
}
|
|
106
|
+
function legacyToolContentProviderOptions(value) {
|
|
107
|
+
if (value === undefined)
|
|
108
|
+
return {};
|
|
109
|
+
try {
|
|
110
|
+
// Bound Zod's recursive work, including repeated DAG paths, before validating metadata.
|
|
111
|
+
// Return the validated snapshot so changing getters cannot reintroduce cycles afterward.
|
|
112
|
+
const snapshot = snapshotLegacyJson(value, { depth: 128, values: 10_000 });
|
|
113
|
+
if (snapshot === undefined)
|
|
114
|
+
return undefined;
|
|
115
|
+
const parsed = providerMetadataSchema.safeParse(snapshot.value);
|
|
116
|
+
return parsed.success ? { providerOptions: parsed.data } : undefined;
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
// Unreadable metadata follows the same legacy result fallback as invalid content.
|
|
120
|
+
return undefined;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
function normalizeLegacyToolContentPart(part) {
|
|
124
|
+
if (!isRecord(part))
|
|
125
|
+
return undefined;
|
|
126
|
+
const normalized = withCurrentProviderOptions(part);
|
|
127
|
+
const providerOptions = legacyToolContentProviderOptions(normalized.providerOptions);
|
|
128
|
+
if (providerOptions === undefined)
|
|
129
|
+
return undefined;
|
|
130
|
+
if (normalized.type === 'text' && typeof normalized.text === 'string') {
|
|
131
|
+
return { type: 'text', text: normalized.text, ...providerOptions };
|
|
132
|
+
}
|
|
133
|
+
if (normalized.type === 'image' && typeof normalized.data === 'string') {
|
|
134
|
+
return {
|
|
135
|
+
type: 'image-data',
|
|
136
|
+
data: normalized.data,
|
|
137
|
+
mediaType: typeof normalized.mimeType === 'string' ? normalized.mimeType : 'image',
|
|
138
|
+
...providerOptions,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
if (normalized.type === 'media' &&
|
|
142
|
+
typeof normalized.data === 'string' &&
|
|
143
|
+
typeof normalized.mediaType === 'string') {
|
|
144
|
+
return {
|
|
145
|
+
type: 'file-data',
|
|
146
|
+
data: normalized.data,
|
|
147
|
+
mediaType: normalized.mediaType,
|
|
148
|
+
...providerOptions,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
return undefined;
|
|
152
|
+
}
|
|
153
|
+
function legacyToolOutput(result, isError, experimentalContent) {
|
|
154
|
+
if (!isError && Array.isArray(experimentalContent)) {
|
|
155
|
+
const content = experimentalContent.flatMap((part) => {
|
|
156
|
+
const normalized = normalizeLegacyToolContentPart(part);
|
|
157
|
+
return normalized === undefined ? [] : [normalized];
|
|
158
|
+
});
|
|
159
|
+
if (content.length === experimentalContent.length) {
|
|
160
|
+
return { type: 'content', value: content };
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return legacyJsonToolOutput(result, isError);
|
|
164
|
+
}
|
|
165
|
+
function stringifyLegacyToolResult(result) {
|
|
166
|
+
try {
|
|
167
|
+
const serialized = JSON.stringify(result);
|
|
168
|
+
if (serialized !== undefined) {
|
|
169
|
+
return serialized;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
// Fall back to the platform string representation for circular or unsupported values.
|
|
174
|
+
}
|
|
175
|
+
return String(result);
|
|
176
|
+
}
|
|
177
|
+
function normalizeMessagePart(value) {
|
|
178
|
+
if (!isRecord(value)) {
|
|
179
|
+
return value;
|
|
180
|
+
}
|
|
181
|
+
const normalized = withCurrentProviderOptions(value);
|
|
182
|
+
if (normalized.type === 'image' && !('mediaType' in normalized) && 'mimeType' in normalized) {
|
|
183
|
+
const { mimeType, ...rest } = normalized;
|
|
184
|
+
return { ...rest, mediaType: mimeType };
|
|
185
|
+
}
|
|
186
|
+
if (normalized.type === 'media' &&
|
|
187
|
+
typeof normalized.data === 'string' &&
|
|
188
|
+
typeof normalized.mediaType === 'string') {
|
|
189
|
+
const { data, mediaType, type: _type, ...rest } = normalized;
|
|
190
|
+
return { ...rest, type: 'file', data: { type: 'data', data }, mediaType };
|
|
191
|
+
}
|
|
192
|
+
if (normalized.type === 'tool-call' && !('input' in normalized) && 'args' in normalized) {
|
|
193
|
+
const { args, ...rest } = normalized;
|
|
194
|
+
return { ...rest, input: args };
|
|
195
|
+
}
|
|
196
|
+
if (normalized.type === 'tool-result' && 'output' in normalized) {
|
|
197
|
+
const output = normalized.output;
|
|
198
|
+
if (isRecord(output) && output.type === 'content' && Array.isArray(output.value)) {
|
|
199
|
+
return {
|
|
200
|
+
...normalized,
|
|
201
|
+
output: {
|
|
202
|
+
...output,
|
|
203
|
+
value: output.value.map((part) => {
|
|
204
|
+
const converted = normalizeLegacyToolContentPart(part);
|
|
205
|
+
if (converted !== undefined)
|
|
206
|
+
return converted;
|
|
207
|
+
// Explicit output has no result fallback. Reject invalid legacy-shaped content;
|
|
208
|
+
// returning it unchanged would strip its metadata alias or recurse into cycles.
|
|
209
|
+
// Every content variant requires a literal type, so this untagged sentinel rejects.
|
|
210
|
+
if (isRecord(part) &&
|
|
211
|
+
(part.type === 'text' || part.type === 'image' || part.type === 'media')) {
|
|
212
|
+
return z.NEVER;
|
|
213
|
+
}
|
|
214
|
+
return part;
|
|
215
|
+
}),
|
|
216
|
+
},
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
if (normalized.type === 'tool-result' && !('output' in normalized)) {
|
|
221
|
+
const { experimental_content: experimentalContent, isError, result, ...rest } = normalized;
|
|
222
|
+
return {
|
|
223
|
+
...rest,
|
|
224
|
+
output: legacyToolOutput(result, isError === true, experimentalContent),
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
return normalized;
|
|
228
|
+
}
|
|
229
|
+
/** Accepts legacy provider metadata and message parts before validating the current message shape. */
|
|
230
|
+
export function normalizeCoreMessage(value) {
|
|
231
|
+
if (!isRecord(value)) {
|
|
232
|
+
return value;
|
|
233
|
+
}
|
|
234
|
+
const normalized = withCurrentProviderOptions(value);
|
|
235
|
+
return Array.isArray(normalized.content)
|
|
236
|
+
? { ...normalized, content: normalized.content.map(normalizeMessagePart) }
|
|
237
|
+
: normalized;
|
|
238
|
+
}
|
|
239
|
+
export const toolCallPartBaseSchema = z.object({
|
|
240
|
+
type: z.literal('tool-call'),
|
|
241
|
+
toolCallId: z.string(),
|
|
242
|
+
toolName: z.string(),
|
|
243
|
+
input: z.unknown(),
|
|
244
|
+
providerOptions: providerMetadataSchema,
|
|
245
|
+
providerExecuted: z.boolean().optional(),
|
|
246
|
+
});
|
|
247
|
+
/**
|
|
248
|
+
* Shares message compatibility without pulling server AI clients or Node globals into the SDK.
|
|
249
|
+
* Inference retains each caller's binary union and tool-call output through both Zod versions.
|
|
250
|
+
*/
|
|
251
|
+
export function createCoreMessageSchemas(inlineDataSchema, toolCallPartSchema, jsonValueSchema, providerMetadataSchema) {
|
|
252
|
+
const providerReferenceSchema = z.record(z.string(), z.string());
|
|
253
|
+
const taggedFileDataSchema = z.discriminatedUnion('type', [
|
|
254
|
+
z.object({ type: z.literal('data'), data: inlineDataSchema }),
|
|
255
|
+
z.object({ type: z.literal('url'), url: z.instanceof(URL) }),
|
|
256
|
+
z.object({ type: z.literal('reference'), reference: providerReferenceSchema }),
|
|
257
|
+
z.object({ type: z.literal('text'), text: z.string() }),
|
|
258
|
+
]);
|
|
259
|
+
const taggedReasoningFileDataSchema = z.discriminatedUnion('type', [
|
|
260
|
+
z.object({ type: z.literal('data'), data: inlineDataSchema }),
|
|
261
|
+
z.object({ type: z.literal('url'), url: z.instanceof(URL) }),
|
|
262
|
+
]);
|
|
263
|
+
const textPartSchema = z.object({
|
|
264
|
+
type: z.literal('text'),
|
|
265
|
+
text: z.string(),
|
|
266
|
+
providerOptions: providerMetadataSchema,
|
|
267
|
+
});
|
|
268
|
+
const imagePartSchema = z.object({
|
|
269
|
+
type: z.literal('image'),
|
|
270
|
+
image: z.union([inlineDataSchema, z.instanceof(URL), providerReferenceSchema]),
|
|
271
|
+
mediaType: z.string().optional(),
|
|
272
|
+
providerOptions: providerMetadataSchema,
|
|
273
|
+
});
|
|
274
|
+
const filePartSchema = z.object({
|
|
275
|
+
type: z.literal('file'),
|
|
276
|
+
data: z.union([
|
|
277
|
+
taggedFileDataSchema,
|
|
278
|
+
inlineDataSchema,
|
|
279
|
+
z.instanceof(URL),
|
|
280
|
+
providerReferenceSchema,
|
|
281
|
+
]),
|
|
282
|
+
filename: z.string().optional(),
|
|
283
|
+
mediaType: z.string(),
|
|
284
|
+
providerOptions: providerMetadataSchema,
|
|
285
|
+
});
|
|
286
|
+
const reasoningPartSchema = z.object({
|
|
287
|
+
type: z.literal('reasoning'),
|
|
288
|
+
text: z.string(),
|
|
289
|
+
providerOptions: providerMetadataSchema,
|
|
290
|
+
});
|
|
291
|
+
function isCustomKind(value) {
|
|
292
|
+
return value.includes('.');
|
|
293
|
+
}
|
|
294
|
+
const customPartSchema = z.object({
|
|
295
|
+
type: z.literal('custom'),
|
|
296
|
+
kind: z.string().refine(isCustomKind),
|
|
297
|
+
providerOptions: providerMetadataSchema,
|
|
298
|
+
});
|
|
299
|
+
const reasoningFilePartSchema = z.object({
|
|
300
|
+
type: z.literal('reasoning-file'),
|
|
301
|
+
data: z.union([taggedReasoningFileDataSchema, inlineDataSchema, z.instanceof(URL)]),
|
|
302
|
+
mediaType: z.string(),
|
|
303
|
+
providerOptions: providerMetadataSchema,
|
|
304
|
+
});
|
|
305
|
+
const toolOutputSchema = z.discriminatedUnion('type', [
|
|
306
|
+
z.object({
|
|
307
|
+
type: z.literal('text'),
|
|
308
|
+
value: z.string(),
|
|
309
|
+
providerOptions: providerMetadataSchema,
|
|
310
|
+
}),
|
|
311
|
+
z.object({
|
|
312
|
+
type: z.literal('json'),
|
|
313
|
+
value: jsonValueSchema,
|
|
314
|
+
providerOptions: providerMetadataSchema,
|
|
315
|
+
}),
|
|
316
|
+
z.object({
|
|
317
|
+
type: z.literal('execution-denied'),
|
|
318
|
+
reason: z.string().optional(),
|
|
319
|
+
providerOptions: providerMetadataSchema,
|
|
320
|
+
}),
|
|
321
|
+
z.object({
|
|
322
|
+
type: z.literal('error-text'),
|
|
323
|
+
value: z.string(),
|
|
324
|
+
providerOptions: providerMetadataSchema,
|
|
325
|
+
}),
|
|
326
|
+
z.object({
|
|
327
|
+
type: z.literal('error-json'),
|
|
328
|
+
value: jsonValueSchema,
|
|
329
|
+
providerOptions: providerMetadataSchema,
|
|
330
|
+
}),
|
|
331
|
+
z.object({
|
|
332
|
+
type: z.literal('content'),
|
|
333
|
+
value: z.array(z.union([
|
|
334
|
+
z.object({
|
|
335
|
+
type: z.literal('text'),
|
|
336
|
+
text: z.string(),
|
|
337
|
+
providerOptions: providerMetadataSchema,
|
|
338
|
+
}),
|
|
339
|
+
z.object({
|
|
340
|
+
type: z.literal('file'),
|
|
341
|
+
data: taggedFileDataSchema,
|
|
342
|
+
mediaType: z.string(),
|
|
343
|
+
filename: z.string().optional(),
|
|
344
|
+
providerOptions: providerMetadataSchema,
|
|
345
|
+
}),
|
|
346
|
+
z.object({
|
|
347
|
+
type: z.literal('file-data'),
|
|
348
|
+
data: z.string(),
|
|
349
|
+
mediaType: z.string(),
|
|
350
|
+
filename: z.string().optional(),
|
|
351
|
+
providerOptions: providerMetadataSchema,
|
|
352
|
+
}),
|
|
353
|
+
z.object({
|
|
354
|
+
type: z.literal('file-url'),
|
|
355
|
+
url: z.string(),
|
|
356
|
+
mediaType: z.string().optional(),
|
|
357
|
+
providerOptions: providerMetadataSchema,
|
|
358
|
+
}),
|
|
359
|
+
z.object({
|
|
360
|
+
type: z.literal('file-id'),
|
|
361
|
+
fileId: z.union([z.string(), providerReferenceSchema]),
|
|
362
|
+
providerOptions: providerMetadataSchema,
|
|
363
|
+
}),
|
|
364
|
+
z.object({
|
|
365
|
+
type: z.literal('file-reference'),
|
|
366
|
+
providerReference: providerReferenceSchema,
|
|
367
|
+
providerOptions: providerMetadataSchema,
|
|
368
|
+
}),
|
|
369
|
+
z.object({
|
|
370
|
+
type: z.literal('image-data'),
|
|
371
|
+
data: z.string(),
|
|
372
|
+
mediaType: z.string(),
|
|
373
|
+
providerOptions: providerMetadataSchema,
|
|
374
|
+
}),
|
|
375
|
+
z.object({
|
|
376
|
+
type: z.literal('image-url'),
|
|
377
|
+
url: z.string(),
|
|
378
|
+
providerOptions: providerMetadataSchema,
|
|
379
|
+
}),
|
|
380
|
+
z.object({
|
|
381
|
+
type: z.literal('image-file-id'),
|
|
382
|
+
fileId: z.union([z.string(), providerReferenceSchema]),
|
|
383
|
+
providerOptions: providerMetadataSchema,
|
|
384
|
+
}),
|
|
385
|
+
z.object({
|
|
386
|
+
type: z.literal('image-file-reference'),
|
|
387
|
+
providerReference: providerReferenceSchema,
|
|
388
|
+
providerOptions: providerMetadataSchema,
|
|
389
|
+
}),
|
|
390
|
+
z.object({ type: z.literal('custom'), providerOptions: providerMetadataSchema }),
|
|
391
|
+
])),
|
|
392
|
+
}),
|
|
393
|
+
]);
|
|
394
|
+
const toolResultPartSchema = z.object({
|
|
395
|
+
type: z.literal('tool-result'),
|
|
396
|
+
toolCallId: z.string(),
|
|
397
|
+
toolName: z.string(),
|
|
398
|
+
output: toolOutputSchema,
|
|
399
|
+
providerOptions: providerMetadataSchema,
|
|
400
|
+
});
|
|
401
|
+
const toolApprovalRequestSchema = z.object({
|
|
402
|
+
type: z.literal('tool-approval-request'),
|
|
403
|
+
approvalId: z.string(),
|
|
404
|
+
toolCallId: z.string(),
|
|
405
|
+
isAutomatic: z.boolean().optional(),
|
|
406
|
+
signature: z.string().optional(),
|
|
407
|
+
});
|
|
408
|
+
const toolApprovalResponseSchema = z.object({
|
|
409
|
+
type: z.literal('tool-approval-response'),
|
|
410
|
+
approvalId: z.string(),
|
|
411
|
+
approved: z.boolean(),
|
|
412
|
+
reason: z.string().optional(),
|
|
413
|
+
providerExecuted: z.boolean().optional(),
|
|
414
|
+
});
|
|
415
|
+
const coreSystemMessageSchema = z.object({
|
|
416
|
+
role: z.literal('system'),
|
|
417
|
+
content: z.string(),
|
|
418
|
+
providerOptions: providerMetadataSchema,
|
|
419
|
+
});
|
|
420
|
+
const coreUserMessageSchema = z.object({
|
|
421
|
+
role: z.literal('user'),
|
|
422
|
+
content: z.union([
|
|
423
|
+
z.string(),
|
|
424
|
+
z.array(z.union([textPartSchema, imagePartSchema, filePartSchema])),
|
|
425
|
+
]),
|
|
426
|
+
providerOptions: providerMetadataSchema,
|
|
427
|
+
});
|
|
428
|
+
const coreAssistantMessageSchema = z.object({
|
|
429
|
+
role: z.literal('assistant'),
|
|
430
|
+
content: z.union([
|
|
431
|
+
z.string(),
|
|
432
|
+
z.array(z.union([
|
|
433
|
+
textPartSchema,
|
|
434
|
+
customPartSchema,
|
|
435
|
+
filePartSchema,
|
|
436
|
+
reasoningPartSchema,
|
|
437
|
+
reasoningFilePartSchema,
|
|
438
|
+
toolCallPartSchema,
|
|
439
|
+
toolResultPartSchema,
|
|
440
|
+
toolApprovalRequestSchema,
|
|
441
|
+
])),
|
|
442
|
+
]),
|
|
443
|
+
providerOptions: providerMetadataSchema,
|
|
444
|
+
});
|
|
445
|
+
const coreToolMessageSchema = z.object({
|
|
446
|
+
role: z.literal('tool'),
|
|
447
|
+
content: z.array(z.union([toolResultPartSchema, toolApprovalResponseSchema])),
|
|
448
|
+
providerOptions: providerMetadataSchema,
|
|
449
|
+
});
|
|
450
|
+
const outputSchema = z.discriminatedUnion('role', [
|
|
451
|
+
coreSystemMessageSchema,
|
|
452
|
+
coreUserMessageSchema,
|
|
453
|
+
coreAssistantMessageSchema,
|
|
454
|
+
coreToolMessageSchema,
|
|
455
|
+
]);
|
|
456
|
+
return {
|
|
457
|
+
outputSchema,
|
|
458
|
+
coreSystemMessageSchema,
|
|
459
|
+
coreUserMessageSchema,
|
|
460
|
+
coreAssistantMessageSchema,
|
|
461
|
+
coreToolMessageSchema,
|
|
462
|
+
textPartSchema,
|
|
463
|
+
imagePartSchema,
|
|
464
|
+
filePartSchema,
|
|
465
|
+
customPartSchema,
|
|
466
|
+
reasoningPartSchema,
|
|
467
|
+
reasoningFilePartSchema,
|
|
468
|
+
toolCallPartSchema,
|
|
469
|
+
toolResultPartSchema,
|
|
470
|
+
toolApprovalRequestSchema,
|
|
471
|
+
toolApprovalResponseSchema,
|
|
472
|
+
toolOutputSchema,
|
|
473
|
+
};
|
|
474
|
+
}
|
|
475
|
+
/** Build the validated current message shape for runtime callers. */
|
|
476
|
+
export function createCoreMessageOutputSchema(inlineDataSchema, toolCallPartSchema, jsonValueSchema, providerMetadataSchema) {
|
|
477
|
+
return createCoreMessageSchemas(inlineDataSchema, toolCallPartSchema, jsonValueSchema, providerMetadataSchema).outputSchema;
|
|
478
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { z } from 'zod/v3';
|
|
2
|
+
/** Portable copy paired with the publisher's richer glossary rendering. */
|
|
3
|
+
export interface ApiParameterDescriptionSource {
|
|
4
|
+
readonly commonMark: string;
|
|
5
|
+
readonly referenceMarkdown: string;
|
|
6
|
+
}
|
|
7
|
+
export type ApiParameterDescription = string | ApiParameterDescriptionSource;
|
|
8
|
+
/** Keep useful parameter help without importing API2's translation identity registry. */
|
|
9
|
+
export declare function describeApiParameter<Schema extends z.ZodTypeAny>(_descriptionId: string, schema: Schema, description: ApiParameterDescription): Schema;
|
|
10
|
+
/** Preserve portable help when rebuilding a schema, without publication-only metadata. */
|
|
11
|
+
export declare function inheritApiParameterDescription<Schema extends z.ZodTypeAny>(source: z.ZodTypeAny, target: Schema): Schema;
|
|
12
|
+
/** Attach available field help while retaining the original shape's types and runtime behavior. */
|
|
13
|
+
export declare function describeApiParameterFields<Shape extends Record<string, z.ZodTypeAny>>(scope: string, shape: Shape, descriptions: Readonly<Partial<Record<string, ApiParameterDescription>>>): Shape;
|
|
14
|
+
//# sourceMappingURL=apiParameterDescription.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiParameterDescription.d.ts","sourceRoot":"","sources":["../../src/v3/apiParameterDescription.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAE/B,2EAA2E;AAC3E,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;CACnC;AAED,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,6BAA6B,CAAA;AAE5E,yFAAyF;AACzF,wBAAgB,oBAAoB,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,EAC9D,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,uBAAuB,GACnC,MAAM,CAER;AAED,0FAA0F;AAC1F,wBAAgB,8BAA8B,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,EACxE,MAAM,EAAE,CAAC,CAAC,UAAU,EACpB,MAAM,EAAE,MAAM,GACb,MAAM,CAER;AAED,mGAAmG;AACnG,wBAAgB,0BAA0B,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,EACnF,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC,GACvE,KAAK,CAQP"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** Keep useful parameter help without importing API2's translation identity registry. */
|
|
2
|
+
export function describeApiParameter(_descriptionId, schema, description) {
|
|
3
|
+
return schema.describe(typeof description === 'string' ? description : description.commonMark);
|
|
4
|
+
}
|
|
5
|
+
/** Preserve portable help when rebuilding a schema, without publication-only metadata. */
|
|
6
|
+
export function inheritApiParameterDescription(source, target) {
|
|
7
|
+
return source.description === undefined ? target : target.describe(source.description);
|
|
8
|
+
}
|
|
9
|
+
/** Attach available field help while retaining the original shape's types and runtime behavior. */
|
|
10
|
+
export function describeApiParameterFields(scope, shape, descriptions) {
|
|
11
|
+
const describedShape = { ...shape };
|
|
12
|
+
for (const field in describedShape) {
|
|
13
|
+
const description = Object.hasOwn(descriptions, field) ? descriptions[field] : undefined;
|
|
14
|
+
if (description === undefined)
|
|
15
|
+
continue;
|
|
16
|
+
describedShape[field] = describeApiParameter(scope, describedShape[field], description);
|
|
17
|
+
}
|
|
18
|
+
return describedShape;
|
|
19
|
+
}
|