Showing preview only (591K chars total). Download the full file or copy to clipboard to get everything.
Repository: googlecreativelab/gemini-demos
Branch: main
Commit: dcc8d8a70a3b
Files: 618
Total size: 467.5 KB
Directory structure:
gitextract_zg4slyrs/
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── image-to-code/
│ ├── .gcloudignore
│ ├── .gitignore
│ ├── CONTRIBUTING.md
│ ├── LICENSE
│ ├── README.md
│ ├── components/
│ │ ├── CodePreview.js
│ │ ├── Header.js
│ │ └── ToggleButton.js
│ ├── jsconfig.json
│ ├── next.config.mjs
│ ├── package.json
│ ├── pages/
│ │ ├── _app.js
│ │ ├── _document.js
│ │ ├── api/
│ │ │ └── hello.js
│ │ └── index.js
│ ├── postcss.config.mjs
│ ├── styles/
│ │ └── globals.css
│ ├── tailwind.config.js
│ └── tailwind.config.mjs
├── multimodal-embeddings/
│ ├── .gcloudignore
│ ├── .npmrc
│ ├── .prettierignore
│ ├── .prettierrc
│ ├── README.md
│ ├── app.yaml
│ ├── components.json
│ ├── cors.json
│ ├── emulator-export/
│ │ ├── firebase-export-metadata.json
│ │ ├── firestore_export/
│ │ │ ├── all_namespaces/
│ │ │ │ └── all_kinds/
│ │ │ │ ├── all_namespaces_all_kinds.export_metadata
│ │ │ │ └── output-0
│ │ │ └── firestore_export.overall_export_metadata
│ │ └── storage_export/
│ │ ├── blobs/
│ │ │ ├── 0001871f-3e7a-461d-b428-92efcd1ce0fd
│ │ │ ├── 03da0657-bb18-42fd-9831-7e48c0b723cf
│ │ │ ├── 03f9df1b-0c0d-4014-8a7d-3a5eccad3faf
│ │ │ ├── 04b454df-1216-4ec1-84fb-f59afd85fe90
│ │ │ ├── 04f6c107-9611-4db9-aba8-98841ba5ae6f
│ │ │ ├── 06640a30-4d8e-4812-890e-e0374ad30f58
│ │ │ ├── 06919cbe-0678-4bfd-8cec-4d09e8e2d51b
│ │ │ ├── 0a86afce-8076-4ab8-bd65-c1eaf5ec966f
│ │ │ ├── 0b286de2-4d59-442c-933e-76f0f8e3cd0b
│ │ │ ├── 0c96fb25-144b-46eb-bdf1-74c575ddb6e9
│ │ │ ├── 0cf49b23-1d83-41c8-85d3-5c31fbf7b123
│ │ │ ├── 0d5f8ef7-dd37-432a-a0eb-80ccb822abc5
│ │ │ ├── 0d961bbe-aa5c-4d0e-9e53-dc7a7ec2b96c
│ │ │ ├── 0e7ec18e-93a5-4d40-845b-92cf98040f13
│ │ │ ├── 0ea29a34-dbcf-487a-b0e4-dd1c4028c7e2
│ │ │ ├── 0fb276ab-ad9f-4cd4-95ea-335d18ea72fe
│ │ │ ├── 0ff12c88-f320-4ef7-9356-26fbb9f3590e
│ │ │ ├── 114b11eb-de0d-441b-85d9-d70db5353156
│ │ │ ├── 125f8010-6ab0-463f-8278-5565cfc9d618
│ │ │ ├── 1514936f-769c-40b4-bfe4-4746fbc79fcd
│ │ │ ├── 16227ec4-2585-40aa-a5fd-e25e0d227b66
│ │ │ ├── 17f5cac8-e8c5-45c8-b6b3-afaa11b556ff
│ │ │ ├── 18964cd0-de01-46bd-88c3-ffad0b15b020
│ │ │ ├── 1aca1226-11c8-42f4-8137-339fe674e55c
│ │ │ ├── 1b831e3c-a1e8-4eb4-b3d6-de18b656814a
│ │ │ ├── 1ba5a0d9-2902-4a7a-8f33-862cf0abcb38
│ │ │ ├── 1bd97095-c1d4-4104-ae2a-f6c0e56dde89
│ │ │ ├── 1ccff42b-89c8-4a66-9d8c-3c7f1c307625
│ │ │ ├── 1d363b0e-cea6-4e58-aa6f-17c005c32f60
│ │ │ ├── 1e2e00f2-eb8c-432d-91a9-1f49c9bb2087
│ │ │ ├── 1e72b424-5c06-42c0-99eb-140545880ccb
│ │ │ ├── 1e859368-8d5b-4ecc-b30f-116ec3377f39
│ │ │ ├── 1f67aea5-0f3e-4b12-9554-aae3a84d5354
│ │ │ ├── 1fb32b8f-72d0-43ac-8955-d3804be94bc2
│ │ │ ├── 2166725e-18e6-4982-aeb7-2f4925461bf1
│ │ │ ├── 21af1f86-eb45-421d-90ff-962fc5509c16
│ │ │ ├── 2883e822-976c-4d81-9601-2df44f96bcd7
│ │ │ ├── 28a96371-1742-4e03-ae5c-ba309216af49
│ │ │ ├── 2ae61d7e-7bc1-4695-bd44-3637adbef998
│ │ │ ├── 2c938160-fe51-4222-a7d1-8220ad4ee300
│ │ │ ├── 2de6149c-40aa-471f-94a1-2dd2824724d8
│ │ │ ├── 2eeccd3b-575d-4055-95d9-c5fbf26b3a8d
│ │ │ ├── 2efc3c4b-2601-4d8f-ba2b-8d84712c436e
│ │ │ ├── 2f4a0b48-dc3f-4fd4-be4d-726c56619302
│ │ │ ├── 30621326-86e9-4f15-b5ea-6eaad59947df
│ │ │ ├── 30d12518-b643-48cf-8608-7aa9771fed14
│ │ │ ├── 31500630-b5a2-4092-86b1-5f2565716d86
│ │ │ ├── 31719f53-507c-4a3f-8b29-0be61178f3e7
│ │ │ ├── 354b878a-20c1-4b79-8a41-2b96e63eedaf
│ │ │ ├── 362a4319-eac2-4157-82f8-4cc5624ab0ee
│ │ │ ├── 36a45009-4146-4860-ab0f-2d41d6e1b8d2
│ │ │ ├── 36b5a479-0181-4f1b-98f4-86a64d4e1191
│ │ │ ├── 37be70be-0250-4281-9532-401a7bf29f41
│ │ │ ├── 3954ab46-6a25-4bb6-ab32-f0d55c546cb2
│ │ │ ├── 3b33aa14-5d04-43bd-9ef6-e30b8861d7db
│ │ │ ├── 3b688492-90d3-4d82-b6fc-499bc09e56eb
│ │ │ ├── 3dccd76d-64a7-47c2-a9b5-eea9b2efa12f
│ │ │ ├── 3e64b976-d7b3-4356-92d7-0aeb15f45fd5
│ │ │ ├── 3e966f04-2910-4104-8f1e-412bf33917c0
│ │ │ ├── 412215ae-10af-413a-9f75-861667cf12fe
│ │ │ ├── 41e09631-0791-4051-96ce-4e18d05f2be9
│ │ │ ├── 4223ad2c-c8fc-4f31-8454-284312b22905
│ │ │ ├── 42694520-432b-4928-adce-006db533f6f8
│ │ │ ├── 4418a01d-24ec-4e4b-b29a-e0689b395969
│ │ │ ├── 45131a81-db3a-4f9b-9330-5e2eb2b3eb44
│ │ │ ├── 454a16c7-6ec4-4c29-838f-6d235d729c0d
│ │ │ ├── 45b0127e-7f92-437f-97e4-f96b50ca60f6
│ │ │ ├── 460d8563-7063-413d-aa9c-d50fb8c9a0a3
│ │ │ ├── 464ea502-b1a7-47a1-af48-7b4296b13896
│ │ │ ├── 477f1478-d154-44c1-9b3e-f7bc08b81b1b
│ │ │ ├── 47a173ba-dd3f-4e02-8409-e46bf5c831ca
│ │ │ ├── 47eb894d-5a60-4c64-b22a-f496f63a869e
│ │ │ ├── 487cbb33-22c6-41f6-8e6e-4125927e2f20
│ │ │ ├── 495964a6-f764-487d-aec8-a1c1c02d8be3
│ │ │ ├── 4ad91f5f-7c9e-40e4-9c4f-c03a22bd8b2f
│ │ │ ├── 5012b076-ef07-41c8-9da7-033e2af2f579
│ │ │ ├── 50b673c2-e1b9-4b84-bbcc-1c47cca0cace
│ │ │ ├── 530a9038-98b8-4925-b26b-f5c7776d882f
│ │ │ ├── 55e55a5c-a59a-4c7f-846a-73784ee2f25d
│ │ │ ├── 563a8d9a-0285-4496-aaba-59138c349dad
│ │ │ ├── 58852f43-76ea-4ad1-9c6a-a33c2c53ff56
│ │ │ ├── 5a3ce50b-2658-4f68-b12d-0eec92a7223a
│ │ │ ├── 5a3ecd67-d20b-405d-83f7-86ff772f6d6f
│ │ │ ├── 5b388511-e3b8-4d3f-b0bf-d085f75c7769
│ │ │ ├── 5b62fd41-e2a2-4ba6-b305-a854619a947b
│ │ │ ├── 5ef2346d-d39e-49ce-b26a-9e5069dba421
│ │ │ ├── 5fd6d66a-8bf1-4f81-b0eb-9895552a8ec4
│ │ │ ├── 61556f93-4dd2-43e5-bc4d-78cbe3809d42
│ │ │ ├── 620c1be4-e353-46d9-8dbd-c3079d5efd6e
│ │ │ ├── 62b85256-0f54-47cb-ae83-d45cd0a66030
│ │ │ ├── 64609c87-07e8-48a4-b8c2-a26210e1dd0b
│ │ │ ├── 64f13cdd-ee8c-4238-b66b-14c1baa578e3
│ │ │ ├── 65c4dee4-4429-4eae-9250-2e969f3c190a
│ │ │ ├── 66569702-2074-4047-a794-4f11e3b285f2
│ │ │ ├── 67aaca3d-2acc-4987-8ed9-3f2fbf075f7c
│ │ │ ├── 67b6aeb1-b7d0-4402-8a60-b2f9c0c8b447
│ │ │ ├── 686d4f0b-5c28-48f4-b656-b354a13981a7
│ │ │ ├── 69657785-7299-408d-8453-8cb32f848150
│ │ │ ├── 6b6f7c8b-a5b9-4436-80a0-f128c1eb3bcf
│ │ │ ├── 6d8f5f9c-fef6-4179-ba05-79e361503c7a
│ │ │ ├── 70772163-4c3b-493a-ad04-87b67ee35d71
│ │ │ ├── 70c43a85-254c-49b1-bf14-d13687913f2d
│ │ │ ├── 70db2153-5bbf-42f6-91bc-f3cb4249dc01
│ │ │ ├── 70ef85a5-fb7a-41ff-ac02-0d00927d0274
│ │ │ ├── 70fc8a82-bfeb-4bb7-bb95-2a654168ead1
│ │ │ ├── 71894824-0cd9-4acf-9178-abba58090e42
│ │ │ ├── 721bdd57-7850-42e4-9fb9-747525b187c8
│ │ │ ├── 7706c66e-3fd9-45eb-9df5-8308b84dd194
│ │ │ ├── 7846c694-8e7a-47dd-b8b8-a2448285dcc0
│ │ │ ├── 78a3c767-265f-419d-bb3f-c3eba6e22017
│ │ │ ├── 78dd9bfd-a0ca-4ac9-9473-45d0d051fb1e
│ │ │ ├── 799fcdd0-1054-4c53-a218-48cb8f3ed044
│ │ │ ├── 7a5a7379-d29b-412b-9a50-565e171ab712
│ │ │ ├── 7c12f79f-d474-446f-b5fe-f669e60f8227
│ │ │ ├── 7c4a2540-75b9-4e37-b4b1-a6d7f62830cb
│ │ │ ├── 7c689600-cf26-4953-8be5-ae58faa5cad0
│ │ │ ├── 7d321a59-d6c9-433e-bfcb-2ee10dcd2745
│ │ │ ├── 7ff005e0-3f17-423f-9a04-1d762447eb07
│ │ │ ├── 8278f4eb-708a-4054-b408-9b4a2a8d6b7a
│ │ │ ├── 828f697d-fd40-470e-8326-8a40dccf9096
│ │ │ ├── 832cacff-0ed7-4685-a383-a0d94e6a366e
│ │ │ ├── 84307d32-0903-4a1c-8599-9d3938995da6
│ │ │ ├── 84491769-76dd-4667-825d-95156d99ba3f
│ │ │ ├── 848c006e-a50c-4d24-9e96-f9b12ab5f66b
│ │ │ ├── 8628a1cb-e588-483c-b00f-ba449d2c27b1
│ │ │ ├── 87039e64-1d6f-4f28-92e5-322ae686133d
│ │ │ ├── 884b9432-28fb-465b-a826-35daec2593d7
│ │ │ ├── 8bc987b7-d22f-4331-8de5-7149d9b73361
│ │ │ ├── 8cd45f77-4225-412e-9c61-bb90285356c5
│ │ │ ├── 8e0d391e-c779-4a34-a8de-f6abccc701ab
│ │ │ ├── 8f014805-5f51-439d-9447-b686abf889fa
│ │ │ ├── 91006bcb-22a2-480d-83ba-5393a41c6558
│ │ │ ├── 91bbc49d-9748-4638-a75c-573f23ff7c5e
│ │ │ ├── 92e62795-a847-46bc-a983-8f2f975f4ac3
│ │ │ ├── 92e944f9-bcfa-4e3c-95ad-2d6619cc377b
│ │ │ ├── 934f914b-21f8-45e6-812c-ac29926508c3
│ │ │ ├── 96d4fbff-3d58-4cef-b6f0-393751f39a80
│ │ │ ├── 98ca7091-441b-471c-a3cc-7a7e94826534
│ │ │ ├── 991c80af-1b3f-454c-8716-c45ed7023269
│ │ │ ├── 9ab4a412-9175-410b-8281-65999c677106
│ │ │ ├── 9d4fbb56-2a44-4866-9489-03d9312fdd55
│ │ │ ├── 9edac21b-4d29-4a5a-a5cd-5aac086224df
│ │ │ ├── a0eb55dd-239b-4908-8acd-a89c2bf639c2
│ │ │ ├── a1539350-b2f4-4c95-a3d4-6b85d493f2b1
│ │ │ ├── a1daa863-1f24-4f91-964b-55e133f8c36d
│ │ │ ├── a1f4669b-2187-4feb-92dd-1a321a0d3023
│ │ │ ├── a3f79d63-f265-4971-997b-4e64a25f806f
│ │ │ ├── a3fcb879-7be9-4a4f-8099-d237cf97418f
│ │ │ ├── a764ed81-66b1-4d49-9013-b75c1c6ba383
│ │ │ ├── a7855fa7-b5be-4ac3-a4e5-d4893ad338f6
│ │ │ ├── a8c3e42a-8ebd-490f-b1da-d9046b7aa4ed
│ │ │ ├── a99818ab-a299-4e87-9662-265cbe8e1160
│ │ │ ├── ab183f61-767e-4020-bae5-928ca15abd23
│ │ │ ├── ad7b8aa9-f8f7-43d5-96cf-b222b5e57318
│ │ │ ├── ad8f7da2-4988-40ec-9042-85c3f4ca6404
│ │ │ ├── ae4d2687-9c0e-49b2-9401-271fb42e62e1
│ │ │ ├── b17a8866-876a-4d32-8b84-5e19b8bcc5f4
│ │ │ ├── b1d4c0bb-0181-45cc-a1d7-7f2832b49b6d
│ │ │ ├── b2e7394a-32cb-45ca-abea-73d0b2df628f
│ │ │ ├── b499dd2d-cd18-488c-9927-c2f1f786a762
│ │ │ ├── b7ab64f1-76c2-459d-b6a9-cc7d52e689d1
│ │ │ ├── b8008ef2-2fb5-40ed-8fef-211863635165
│ │ │ ├── b8f8d67b-85c4-4734-a413-7e1c5b1a7a9d
│ │ │ ├── ba5f66c2-65e8-4ecc-829d-28dd2ddf625a
│ │ │ ├── ba7eb319-928d-45ba-bce3-4edd8f3955bd
│ │ │ ├── ba9ba128-b58e-47c1-97ee-4b2f52524cdf
│ │ │ ├── bc45b1d1-ec5d-4b77-94d9-2ba6f83c9397
│ │ │ ├── c20333af-a455-4b2f-baf0-f852e684543b
│ │ │ ├── c27f43ab-cdee-4ea2-b993-85e04502d1e7
│ │ │ ├── c32a1d25-a547-46b5-9d66-b2cce1b62c6c
│ │ │ ├── c340aa08-9ea1-4b1e-9155-0ffc9c35f7d4
│ │ │ ├── c4005e1a-a820-4fc6-b4d7-36de986a6508
│ │ │ ├── c65e9606-9e1a-4aa3-a546-fd07eaba08a3
│ │ │ ├── ca44d9db-7998-4cf3-bc92-aa69d366900a
│ │ │ ├── cb8c98b6-f0f0-48d5-be12-e27ab75dbc89
│ │ │ ├── cc2b2031-0170-43c4-bf8a-7a7267d38a96
│ │ │ ├── cea1146f-f63d-421e-b778-5ed8f39c1304
│ │ │ ├── cf2d1050-806b-4d32-9a18-083649e9142c
│ │ │ ├── d0920669-7709-4aab-97df-dd5e6c6719f9
│ │ │ ├── d12b9178-857a-4567-a7ef-3660f81813b9
│ │ │ ├── d21827e3-c794-4fa8-8cbc-6b46bfff25d2
│ │ │ ├── d223daa7-afa8-4108-8965-2ac9c45d9bab
│ │ │ ├── d2efd3f2-cf9a-4d75-89ad-3c8d873a1ff1
│ │ │ ├── d35aeaf2-da34-4207-a602-a9b236d62fca
│ │ │ ├── d4bb491a-51aa-48ac-a946-faf94bdb98f3
│ │ │ ├── d51f715d-c5b7-485b-8718-7112b700252b
│ │ │ ├── d62ac9e8-14ff-4a51-a65c-13b0be4a382d
│ │ │ ├── d7400d59-6e7d-438d-a433-7e248a89d7ef
│ │ │ ├── d8efb7b3-3d17-47f7-b46a-d4d5933d1c6c
│ │ │ ├── daff4d68-e7ba-4876-a389-f6379792db29
│ │ │ ├── db685a34-6e9f-480c-998f-74d9dfa33ded
│ │ │ ├── dd83acba-c2c2-471f-96e6-02a7564ccdf2
│ │ │ ├── ddd82ca8-addd-461f-a409-10ba4f2384f2
│ │ │ ├── de2c3001-b81a-43cb-bc8d-430cc5f31ecd
│ │ │ ├── df252df6-207a-4b5c-b429-517a9188442a
│ │ │ ├── dfc781e1-8984-4900-9fd9-4d67a8d06165
│ │ │ ├── e1a86ae0-794e-48c7-a521-6184fe47baf7
│ │ │ ├── e24996a9-4e92-47da-b164-afe68646772e
│ │ │ ├── e4a1e47d-a111-4f8f-aa81-fa8305cacc02
│ │ │ ├── e5411091-9430-440b-b167-06666aaa6282
│ │ │ ├── e68b7951-4436-4b51-9352-b8478a7016a2
│ │ │ ├── e745dd10-3a36-4c3c-9f6d-a0df1af88db5
│ │ │ ├── e7f85be0-c8af-4658-ae23-37f0fec2d3e8
│ │ │ ├── e96f6208-3db5-4e59-92fd-13bcc17a219f
│ │ │ ├── ec636ad8-59af-4d37-899d-7e38b6820142
│ │ │ ├── eed1b24c-8d17-474c-a8c5-abbb1253f3ac
│ │ │ ├── efcf28ed-64c0-4fb0-889e-adb9f7826bd2
│ │ │ ├── f0c05fe7-cce3-4ae7-81a7-04eb885a858d
│ │ │ ├── f1ee8d78-1966-45ac-899b-0fb7fdbef35c
│ │ │ ├── f1fdb37a-b154-4165-9964-31831b40be8b
│ │ │ ├── f45cae23-5852-45c2-a36d-923768351808
│ │ │ ├── f4c6688d-2e98-47bb-9880-d8beb1569036
│ │ │ ├── f511acae-1e9a-4fea-a426-acb3fd6aa5bd
│ │ │ ├── f699b6ac-7812-4564-adb5-8260b225f33b
│ │ │ ├── f77367b4-cad3-4d6a-961a-f4f4d6e24817
│ │ │ ├── f7bae092-4e7b-40f5-adae-a5c89bd9065a
│ │ │ ├── f8c2b960-f80e-488d-8126-04fe12057048
│ │ │ ├── f9d73365-1492-4efa-aabd-b730650157d0
│ │ │ ├── faf1a8f8-0cdf-43ba-8af8-d53a2d1a060f
│ │ │ ├── fb7828b5-0a12-46a7-8c5c-6c220d116e36
│ │ │ ├── fb857ec0-d80d-4404-ba0e-1ba436305d7d
│ │ │ ├── fda16ac8-d1cf-49db-93b7-833c274cd0d2
│ │ │ ├── fe3a8d7c-3dff-489e-abca-0b515db9420c
│ │ │ ├── fe78e904-37eb-46de-9195-1264c9acc754
│ │ │ ├── ff05e63d-c45b-499f-bc6e-a507047b4f10
│ │ │ └── ffe18889-8e9a-4b8c-8a81-867a03a3c274
│ │ ├── buckets.json
│ │ └── metadata/
│ │ ├── 0001871f-3e7a-461d-b428-92efcd1ce0fd.json
│ │ ├── 03da0657-bb18-42fd-9831-7e48c0b723cf.json
│ │ ├── 03f9df1b-0c0d-4014-8a7d-3a5eccad3faf.json
│ │ ├── 04b454df-1216-4ec1-84fb-f59afd85fe90.json
│ │ ├── 04f6c107-9611-4db9-aba8-98841ba5ae6f.json
│ │ ├── 06640a30-4d8e-4812-890e-e0374ad30f58.json
│ │ ├── 06919cbe-0678-4bfd-8cec-4d09e8e2d51b.json
│ │ ├── 0a86afce-8076-4ab8-bd65-c1eaf5ec966f.json
│ │ ├── 0b286de2-4d59-442c-933e-76f0f8e3cd0b.json
│ │ ├── 0c96fb25-144b-46eb-bdf1-74c575ddb6e9.json
│ │ ├── 0cf49b23-1d83-41c8-85d3-5c31fbf7b123.json
│ │ ├── 0d5f8ef7-dd37-432a-a0eb-80ccb822abc5.json
│ │ ├── 0d961bbe-aa5c-4d0e-9e53-dc7a7ec2b96c.json
│ │ ├── 0e7ec18e-93a5-4d40-845b-92cf98040f13.json
│ │ ├── 0ea29a34-dbcf-487a-b0e4-dd1c4028c7e2.json
│ │ ├── 0fb276ab-ad9f-4cd4-95ea-335d18ea72fe.json
│ │ ├── 0ff12c88-f320-4ef7-9356-26fbb9f3590e.json
│ │ ├── 114b11eb-de0d-441b-85d9-d70db5353156.json
│ │ ├── 125f8010-6ab0-463f-8278-5565cfc9d618.json
│ │ ├── 1514936f-769c-40b4-bfe4-4746fbc79fcd.json
│ │ ├── 16227ec4-2585-40aa-a5fd-e25e0d227b66.json
│ │ ├── 17f5cac8-e8c5-45c8-b6b3-afaa11b556ff.json
│ │ ├── 18964cd0-de01-46bd-88c3-ffad0b15b020.json
│ │ ├── 1aca1226-11c8-42f4-8137-339fe674e55c.json
│ │ ├── 1b831e3c-a1e8-4eb4-b3d6-de18b656814a.json
│ │ ├── 1ba5a0d9-2902-4a7a-8f33-862cf0abcb38.json
│ │ ├── 1bd97095-c1d4-4104-ae2a-f6c0e56dde89.json
│ │ ├── 1ccff42b-89c8-4a66-9d8c-3c7f1c307625.json
│ │ ├── 1d363b0e-cea6-4e58-aa6f-17c005c32f60.json
│ │ ├── 1e2e00f2-eb8c-432d-91a9-1f49c9bb2087.json
│ │ ├── 1e72b424-5c06-42c0-99eb-140545880ccb.json
│ │ ├── 1e859368-8d5b-4ecc-b30f-116ec3377f39.json
│ │ ├── 1f67aea5-0f3e-4b12-9554-aae3a84d5354.json
│ │ ├── 1fb32b8f-72d0-43ac-8955-d3804be94bc2.json
│ │ ├── 2166725e-18e6-4982-aeb7-2f4925461bf1.json
│ │ ├── 21af1f86-eb45-421d-90ff-962fc5509c16.json
│ │ ├── 2883e822-976c-4d81-9601-2df44f96bcd7.json
│ │ ├── 28a96371-1742-4e03-ae5c-ba309216af49.json
│ │ ├── 2ae61d7e-7bc1-4695-bd44-3637adbef998.json
│ │ ├── 2c938160-fe51-4222-a7d1-8220ad4ee300.json
│ │ ├── 2de6149c-40aa-471f-94a1-2dd2824724d8.json
│ │ ├── 2eeccd3b-575d-4055-95d9-c5fbf26b3a8d.json
│ │ ├── 2efc3c4b-2601-4d8f-ba2b-8d84712c436e.json
│ │ ├── 2f4a0b48-dc3f-4fd4-be4d-726c56619302.json
│ │ ├── 30621326-86e9-4f15-b5ea-6eaad59947df.json
│ │ ├── 30d12518-b643-48cf-8608-7aa9771fed14.json
│ │ ├── 31500630-b5a2-4092-86b1-5f2565716d86.json
│ │ ├── 31719f53-507c-4a3f-8b29-0be61178f3e7.json
│ │ ├── 354b878a-20c1-4b79-8a41-2b96e63eedaf.json
│ │ ├── 362a4319-eac2-4157-82f8-4cc5624ab0ee.json
│ │ ├── 36a45009-4146-4860-ab0f-2d41d6e1b8d2.json
│ │ ├── 36b5a479-0181-4f1b-98f4-86a64d4e1191.json
│ │ ├── 37be70be-0250-4281-9532-401a7bf29f41.json
│ │ ├── 3954ab46-6a25-4bb6-ab32-f0d55c546cb2.json
│ │ ├── 3b33aa14-5d04-43bd-9ef6-e30b8861d7db.json
│ │ ├── 3b688492-90d3-4d82-b6fc-499bc09e56eb.json
│ │ ├── 3dccd76d-64a7-47c2-a9b5-eea9b2efa12f.json
│ │ ├── 3e64b976-d7b3-4356-92d7-0aeb15f45fd5.json
│ │ ├── 3e966f04-2910-4104-8f1e-412bf33917c0.json
│ │ ├── 412215ae-10af-413a-9f75-861667cf12fe.json
│ │ ├── 41e09631-0791-4051-96ce-4e18d05f2be9.json
│ │ ├── 4223ad2c-c8fc-4f31-8454-284312b22905.json
│ │ ├── 42694520-432b-4928-adce-006db533f6f8.json
│ │ ├── 4418a01d-24ec-4e4b-b29a-e0689b395969.json
│ │ ├── 45131a81-db3a-4f9b-9330-5e2eb2b3eb44.json
│ │ ├── 454a16c7-6ec4-4c29-838f-6d235d729c0d.json
│ │ ├── 45b0127e-7f92-437f-97e4-f96b50ca60f6.json
│ │ ├── 460d8563-7063-413d-aa9c-d50fb8c9a0a3.json
│ │ ├── 464ea502-b1a7-47a1-af48-7b4296b13896.json
│ │ ├── 477f1478-d154-44c1-9b3e-f7bc08b81b1b.json
│ │ ├── 47a173ba-dd3f-4e02-8409-e46bf5c831ca.json
│ │ ├── 47eb894d-5a60-4c64-b22a-f496f63a869e.json
│ │ ├── 487cbb33-22c6-41f6-8e6e-4125927e2f20.json
│ │ ├── 495964a6-f764-487d-aec8-a1c1c02d8be3.json
│ │ ├── 4ad91f5f-7c9e-40e4-9c4f-c03a22bd8b2f.json
│ │ ├── 5012b076-ef07-41c8-9da7-033e2af2f579.json
│ │ ├── 50b673c2-e1b9-4b84-bbcc-1c47cca0cace.json
│ │ ├── 530a9038-98b8-4925-b26b-f5c7776d882f.json
│ │ ├── 55e55a5c-a59a-4c7f-846a-73784ee2f25d.json
│ │ ├── 563a8d9a-0285-4496-aaba-59138c349dad.json
│ │ ├── 58852f43-76ea-4ad1-9c6a-a33c2c53ff56.json
│ │ ├── 5a3ce50b-2658-4f68-b12d-0eec92a7223a.json
│ │ ├── 5a3ecd67-d20b-405d-83f7-86ff772f6d6f.json
│ │ ├── 5b388511-e3b8-4d3f-b0bf-d085f75c7769.json
│ │ ├── 5b62fd41-e2a2-4ba6-b305-a854619a947b.json
│ │ ├── 5ef2346d-d39e-49ce-b26a-9e5069dba421.json
│ │ ├── 5fd6d66a-8bf1-4f81-b0eb-9895552a8ec4.json
│ │ ├── 61556f93-4dd2-43e5-bc4d-78cbe3809d42.json
│ │ ├── 620c1be4-e353-46d9-8dbd-c3079d5efd6e.json
│ │ ├── 62b85256-0f54-47cb-ae83-d45cd0a66030.json
│ │ ├── 64609c87-07e8-48a4-b8c2-a26210e1dd0b.json
│ │ ├── 64f13cdd-ee8c-4238-b66b-14c1baa578e3.json
│ │ ├── 65c4dee4-4429-4eae-9250-2e969f3c190a.json
│ │ ├── 66569702-2074-4047-a794-4f11e3b285f2.json
│ │ ├── 67aaca3d-2acc-4987-8ed9-3f2fbf075f7c.json
│ │ ├── 67b6aeb1-b7d0-4402-8a60-b2f9c0c8b447.json
│ │ ├── 686d4f0b-5c28-48f4-b656-b354a13981a7.json
│ │ ├── 69657785-7299-408d-8453-8cb32f848150.json
│ │ ├── 6b6f7c8b-a5b9-4436-80a0-f128c1eb3bcf.json
│ │ ├── 6d8f5f9c-fef6-4179-ba05-79e361503c7a.json
│ │ ├── 70772163-4c3b-493a-ad04-87b67ee35d71.json
│ │ ├── 70c43a85-254c-49b1-bf14-d13687913f2d.json
│ │ ├── 70db2153-5bbf-42f6-91bc-f3cb4249dc01.json
│ │ ├── 70ef85a5-fb7a-41ff-ac02-0d00927d0274.json
│ │ ├── 70fc8a82-bfeb-4bb7-bb95-2a654168ead1.json
│ │ ├── 71894824-0cd9-4acf-9178-abba58090e42.json
│ │ ├── 721bdd57-7850-42e4-9fb9-747525b187c8.json
│ │ ├── 7706c66e-3fd9-45eb-9df5-8308b84dd194.json
│ │ ├── 7846c694-8e7a-47dd-b8b8-a2448285dcc0.json
│ │ ├── 78a3c767-265f-419d-bb3f-c3eba6e22017.json
│ │ ├── 78dd9bfd-a0ca-4ac9-9473-45d0d051fb1e.json
│ │ ├── 799fcdd0-1054-4c53-a218-48cb8f3ed044.json
│ │ ├── 7a5a7379-d29b-412b-9a50-565e171ab712.json
│ │ ├── 7c12f79f-d474-446f-b5fe-f669e60f8227.json
│ │ ├── 7c4a2540-75b9-4e37-b4b1-a6d7f62830cb.json
│ │ ├── 7c689600-cf26-4953-8be5-ae58faa5cad0.json
│ │ ├── 7d321a59-d6c9-433e-bfcb-2ee10dcd2745.json
│ │ ├── 7ff005e0-3f17-423f-9a04-1d762447eb07.json
│ │ ├── 8278f4eb-708a-4054-b408-9b4a2a8d6b7a.json
│ │ ├── 828f697d-fd40-470e-8326-8a40dccf9096.json
│ │ ├── 832cacff-0ed7-4685-a383-a0d94e6a366e.json
│ │ ├── 84307d32-0903-4a1c-8599-9d3938995da6.json
│ │ ├── 84491769-76dd-4667-825d-95156d99ba3f.json
│ │ ├── 848c006e-a50c-4d24-9e96-f9b12ab5f66b.json
│ │ ├── 8628a1cb-e588-483c-b00f-ba449d2c27b1.json
│ │ ├── 87039e64-1d6f-4f28-92e5-322ae686133d.json
│ │ ├── 884b9432-28fb-465b-a826-35daec2593d7.json
│ │ ├── 8bc987b7-d22f-4331-8de5-7149d9b73361.json
│ │ ├── 8cd45f77-4225-412e-9c61-bb90285356c5.json
│ │ ├── 8e0d391e-c779-4a34-a8de-f6abccc701ab.json
│ │ ├── 8f014805-5f51-439d-9447-b686abf889fa.json
│ │ ├── 91006bcb-22a2-480d-83ba-5393a41c6558.json
│ │ ├── 91bbc49d-9748-4638-a75c-573f23ff7c5e.json
│ │ ├── 92e62795-a847-46bc-a983-8f2f975f4ac3.json
│ │ ├── 92e944f9-bcfa-4e3c-95ad-2d6619cc377b.json
│ │ ├── 934f914b-21f8-45e6-812c-ac29926508c3.json
│ │ ├── 96d4fbff-3d58-4cef-b6f0-393751f39a80.json
│ │ ├── 98ca7091-441b-471c-a3cc-7a7e94826534.json
│ │ ├── 991c80af-1b3f-454c-8716-c45ed7023269.json
│ │ ├── 9ab4a412-9175-410b-8281-65999c677106.json
│ │ ├── 9d4fbb56-2a44-4866-9489-03d9312fdd55.json
│ │ ├── 9edac21b-4d29-4a5a-a5cd-5aac086224df.json
│ │ ├── a0eb55dd-239b-4908-8acd-a89c2bf639c2.json
│ │ ├── a1539350-b2f4-4c95-a3d4-6b85d493f2b1.json
│ │ ├── a1daa863-1f24-4f91-964b-55e133f8c36d.json
│ │ ├── a1f4669b-2187-4feb-92dd-1a321a0d3023.json
│ │ ├── a3f79d63-f265-4971-997b-4e64a25f806f.json
│ │ ├── a3fcb879-7be9-4a4f-8099-d237cf97418f.json
│ │ ├── a764ed81-66b1-4d49-9013-b75c1c6ba383.json
│ │ ├── a7855fa7-b5be-4ac3-a4e5-d4893ad338f6.json
│ │ ├── a8c3e42a-8ebd-490f-b1da-d9046b7aa4ed.json
│ │ ├── a99818ab-a299-4e87-9662-265cbe8e1160.json
│ │ ├── ab183f61-767e-4020-bae5-928ca15abd23.json
│ │ ├── ad7b8aa9-f8f7-43d5-96cf-b222b5e57318.json
│ │ ├── ad8f7da2-4988-40ec-9042-85c3f4ca6404.json
│ │ ├── ae4d2687-9c0e-49b2-9401-271fb42e62e1.json
│ │ ├── b17a8866-876a-4d32-8b84-5e19b8bcc5f4.json
│ │ ├── b1d4c0bb-0181-45cc-a1d7-7f2832b49b6d.json
│ │ ├── b2e7394a-32cb-45ca-abea-73d0b2df628f.json
│ │ ├── b499dd2d-cd18-488c-9927-c2f1f786a762.json
│ │ ├── b7ab64f1-76c2-459d-b6a9-cc7d52e689d1.json
│ │ ├── b8008ef2-2fb5-40ed-8fef-211863635165.json
│ │ ├── b8f8d67b-85c4-4734-a413-7e1c5b1a7a9d.json
│ │ ├── ba5f66c2-65e8-4ecc-829d-28dd2ddf625a.json
│ │ ├── ba7eb319-928d-45ba-bce3-4edd8f3955bd.json
│ │ ├── ba9ba128-b58e-47c1-97ee-4b2f52524cdf.json
│ │ ├── bc45b1d1-ec5d-4b77-94d9-2ba6f83c9397.json
│ │ ├── c20333af-a455-4b2f-baf0-f852e684543b.json
│ │ ├── c27f43ab-cdee-4ea2-b993-85e04502d1e7.json
│ │ ├── c32a1d25-a547-46b5-9d66-b2cce1b62c6c.json
│ │ ├── c340aa08-9ea1-4b1e-9155-0ffc9c35f7d4.json
│ │ ├── c4005e1a-a820-4fc6-b4d7-36de986a6508.json
│ │ ├── c65e9606-9e1a-4aa3-a546-fd07eaba08a3.json
│ │ ├── ca44d9db-7998-4cf3-bc92-aa69d366900a.json
│ │ ├── cb8c98b6-f0f0-48d5-be12-e27ab75dbc89.json
│ │ ├── cc2b2031-0170-43c4-bf8a-7a7267d38a96.json
│ │ ├── cea1146f-f63d-421e-b778-5ed8f39c1304.json
│ │ ├── cf2d1050-806b-4d32-9a18-083649e9142c.json
│ │ ├── d0920669-7709-4aab-97df-dd5e6c6719f9.json
│ │ ├── d12b9178-857a-4567-a7ef-3660f81813b9.json
│ │ ├── d21827e3-c794-4fa8-8cbc-6b46bfff25d2.json
│ │ ├── d223daa7-afa8-4108-8965-2ac9c45d9bab.json
│ │ ├── d2efd3f2-cf9a-4d75-89ad-3c8d873a1ff1.json
│ │ ├── d35aeaf2-da34-4207-a602-a9b236d62fca.json
│ │ ├── d4bb491a-51aa-48ac-a946-faf94bdb98f3.json
│ │ ├── d51f715d-c5b7-485b-8718-7112b700252b.json
│ │ ├── d62ac9e8-14ff-4a51-a65c-13b0be4a382d.json
│ │ ├── d7400d59-6e7d-438d-a433-7e248a89d7ef.json
│ │ ├── d8efb7b3-3d17-47f7-b46a-d4d5933d1c6c.json
│ │ ├── daff4d68-e7ba-4876-a389-f6379792db29.json
│ │ ├── db685a34-6e9f-480c-998f-74d9dfa33ded.json
│ │ ├── dd83acba-c2c2-471f-96e6-02a7564ccdf2.json
│ │ ├── ddd82ca8-addd-461f-a409-10ba4f2384f2.json
│ │ ├── de2c3001-b81a-43cb-bc8d-430cc5f31ecd.json
│ │ ├── df252df6-207a-4b5c-b429-517a9188442a.json
│ │ ├── dfc781e1-8984-4900-9fd9-4d67a8d06165.json
│ │ ├── e1a86ae0-794e-48c7-a521-6184fe47baf7.json
│ │ ├── e24996a9-4e92-47da-b164-afe68646772e.json
│ │ ├── e4a1e47d-a111-4f8f-aa81-fa8305cacc02.json
│ │ ├── e5411091-9430-440b-b167-06666aaa6282.json
│ │ ├── e68b7951-4436-4b51-9352-b8478a7016a2.json
│ │ ├── e745dd10-3a36-4c3c-9f6d-a0df1af88db5.json
│ │ ├── e7f85be0-c8af-4658-ae23-37f0fec2d3e8.json
│ │ ├── e96f6208-3db5-4e59-92fd-13bcc17a219f.json
│ │ ├── ec636ad8-59af-4d37-899d-7e38b6820142.json
│ │ ├── eed1b24c-8d17-474c-a8c5-abbb1253f3ac.json
│ │ ├── efcf28ed-64c0-4fb0-889e-adb9f7826bd2.json
│ │ ├── f0c05fe7-cce3-4ae7-81a7-04eb885a858d.json
│ │ ├── f1ee8d78-1966-45ac-899b-0fb7fdbef35c.json
│ │ ├── f1fdb37a-b154-4165-9964-31831b40be8b.json
│ │ ├── f45cae23-5852-45c2-a36d-923768351808.json
│ │ ├── f4c6688d-2e98-47bb-9880-d8beb1569036.json
│ │ ├── f511acae-1e9a-4fea-a426-acb3fd6aa5bd.json
│ │ ├── f699b6ac-7812-4564-adb5-8260b225f33b.json
│ │ ├── f77367b4-cad3-4d6a-961a-f4f4d6e24817.json
│ │ ├── f7bae092-4e7b-40f5-adae-a5c89bd9065a.json
│ │ ├── f8c2b960-f80e-488d-8126-04fe12057048.json
│ │ ├── f9d73365-1492-4efa-aabd-b730650157d0.json
│ │ ├── faf1a8f8-0cdf-43ba-8af8-d53a2d1a060f.json
│ │ ├── fb7828b5-0a12-46a7-8c5c-6c220d116e36.json
│ │ ├── fb857ec0-d80d-4404-ba0e-1ba436305d7d.json
│ │ ├── fda16ac8-d1cf-49db-93b7-833c274cd0d2.json
│ │ ├── fe3a8d7c-3dff-489e-abca-0b515db9420c.json
│ │ ├── fe78e904-37eb-46de-9195-1264c9acc754.json
│ │ ├── ff05e63d-c45b-499f-bc6e-a507047b4f10.json
│ │ └── ffe18889-8e9a-4b8c-8a81-867a03a3c274.json
│ ├── eslint.config.js
│ ├── fb/
│ │ ├── .firebaserc
│ │ ├── README.md
│ │ ├── firebase.json
│ │ ├── functions/
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── gemini.ts
│ │ │ │ └── index.ts
│ │ │ └── tsconfig.json
│ │ └── storage.rules
│ ├── package.json
│ ├── postcss.config.js
│ ├── src/
│ │ ├── app.css
│ │ ├── app.d.ts
│ │ ├── app.html
│ │ ├── lib/
│ │ │ ├── api.ts
│ │ │ ├── cloud-firebase.ts
│ │ │ ├── components/
│ │ │ │ ├── CollectionsList.svelte
│ │ │ │ ├── Droppable.svelte
│ │ │ │ └── ui/
│ │ │ │ ├── button/
│ │ │ │ │ ├── button.svelte
│ │ │ │ │ └── index.ts
│ │ │ │ ├── dropdown-menu/
│ │ │ │ │ ├── dropdown-menu-checkbox-item.svelte
│ │ │ │ │ ├── dropdown-menu-content.svelte
│ │ │ │ │ ├── dropdown-menu-item.svelte
│ │ │ │ │ ├── dropdown-menu-label.svelte
│ │ │ │ │ ├── dropdown-menu-radio-group.svelte
│ │ │ │ │ ├── dropdown-menu-radio-item.svelte
│ │ │ │ │ ├── dropdown-menu-separator.svelte
│ │ │ │ │ ├── dropdown-menu-shortcut.svelte
│ │ │ │ │ ├── dropdown-menu-sub-content.svelte
│ │ │ │ │ ├── dropdown-menu-sub-trigger.svelte
│ │ │ │ │ └── index.ts
│ │ │ │ ├── input/
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── input.svelte
│ │ │ │ └── label/
│ │ │ │ ├── index.ts
│ │ │ │ └── label.svelte
│ │ │ ├── consts.ts
│ │ │ ├── embedder.ts
│ │ │ ├── firebase.ts
│ │ │ ├── store.ts
│ │ │ └── utils.ts
│ │ └── routes/
│ │ ├── +layout.svelte
│ │ ├── +page.svelte
│ │ ├── api/
│ │ │ ├── getEmbeddings/
│ │ │ │ └── +server.ts
│ │ │ ├── listCollections/
│ │ │ │ └── +server.ts
│ │ │ ├── search/
│ │ │ │ └── +server.ts
│ │ │ └── umap/
│ │ │ └── +server.ts
│ │ ├── search/
│ │ │ ├── +page.svelte
│ │ │ └── ImageResult.svelte
│ │ └── viz/
│ │ ├── +page.svelte
│ │ ├── Image.svelte
│ │ ├── Scene.svelte
│ │ ├── Settings.svelte
│ │ └── Viz.svelte
│ ├── svelte.config.js
│ ├── tailwind.config.ts
│ ├── tsconfig.json
│ └── vite.config.ts
├── video-scrubber/
│ ├── .eslintrc.cjs
│ ├── .gcloudignore
│ ├── LICENSE
│ ├── README.md
│ ├── app.yaml
│ ├── index.html
│ ├── package.json
│ ├── postcss.config.js
│ ├── server/
│ │ ├── gemini.js
│ │ └── index.js
│ ├── src/
│ │ ├── Annotations.tsx
│ │ ├── App.tsx
│ │ ├── ClickableTimestamps.tsx
│ │ ├── ClipTimeline.tsx
│ │ ├── Controls.tsx
│ │ ├── Gemini.tsx
│ │ ├── PlayTimeline.tsx
│ │ ├── Timelines.tsx
│ │ ├── TimestampText.tsx
│ │ ├── Video.tsx
│ │ ├── VideoInput.tsx
│ │ ├── VideoState.tsx
│ │ ├── atoms.tsx
│ │ ├── consts.tsx
│ │ ├── index.css
│ │ ├── main.tsx
│ │ ├── utils.tsx
│ │ └── vite-env.d.ts
│ ├── tailwind.config.js
│ ├── tsconfig.json
│ ├── tsconfig.node.json
│ └── vite.config.ts
└── voice-cursor/
├── .gcloudignore
├── .gitignore
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── components.json
├── next.config.mjs
├── package.json
├── postcss.config.js
├── src/
│ ├── app/
│ │ ├── default-value.ts
│ │ ├── globals.css
│ │ ├── layout.tsx
│ │ ├── page.tsx
│ │ ├── prosemirror.css
│ │ └── test-audio/
│ │ └── page.tsx
│ ├── components/
│ │ ├── editor/
│ │ │ ├── advanced-editor.tsx
│ │ │ ├── audio-menu.tsx
│ │ │ ├── client-editor.tsx
│ │ │ ├── extensions/
│ │ │ │ └── audio-highlight.ts
│ │ │ ├── extensions.ts
│ │ │ ├── image-upload.ts
│ │ │ ├── prompt-popover.tsx
│ │ │ ├── selectors/
│ │ │ │ └── voice-popover.tsx
│ │ │ ├── slash-command.tsx
│ │ │ └── unused-selectors/
│ │ │ ├── color-selector.tsx
│ │ │ ├── highlight-selector.tsx
│ │ │ ├── link-selector.tsx
│ │ │ ├── node-selector.tsx
│ │ │ └── text-buttons.tsx
│ │ ├── theme-provider.tsx
│ │ ├── theme-toggle.tsx
│ │ └── ui/
│ │ ├── button.tsx
│ │ ├── dropdown-menu.tsx
│ │ ├── popover.tsx
│ │ ├── separator.tsx
│ │ ├── sonner.tsx
│ │ └── tooltip.tsx
│ └── lib/
│ ├── tone-options.ts
│ ├── utils.ts
│ └── voice-options.ts
├── tailwind.config.ts
└── tsconfig.json
================================================
FILE CONTENTS
================================================
================================================
FILE: CONTRIBUTING.md
================================================
# How to Contribute
We'd love to accept your patches and contributions to this project. There are
just a few small guidelines you need to follow.
## Contributor License Agreement
Contributions to this project must be accompanied by a Contributor License
Agreement. You (or your employer) retain the copyright to your contribution;
this simply gives us permission to use and redistribute your contributions as
part of the project. Head over to <https://cla.developers.google.com/> to see
your current agreements on file or to sign a new one.
You generally only need to submit a CLA once, so if you've already submitted one
(even if it was for a different project), you probably don't need to do it
again.
## Code reviews
All submissions, including submissions by project members, require review. We
use GitHub pull requests for this purpose. Consult
[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more
information on using pull requests.
## Community Guidelines
This project follows [Google's Open Source Community
Guidelines](https://opensource.google.com/conduct/).
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: README.md
================================================
# Gemini API Demos
Hello! 👋 This is a repository of examples built with Google's Gemini API, which lets you build multimodal AI applications with text, images, and more.
## What You'll Find:
Examples: These demos show the latest Gemini models (Flash 1.5, Pro, and others) in action. Dive into projects that demonstrate:
- Image and Video understanding: Analyze content, classify objects, and even generate timestamped summaries.
- Multimodal interaction: Combine text and image inputs to create engaging user experiences.
- Technical Inspiration: Get hands-on with code examples that show you how to use the Gemini API effectively. Learn best practices for prompt engineering, caching and embedding, and integrating Gemini into your own applications.
## Getting Started:
1. Obtain an API Key: To use the Gemini API, you'll need an API key. You can get one [here](https://ai.google.dev/gemini-api/docs/api-key) or from [AI Studio](https://aistudio.google.com/app/apikey)
2. Explore the Docs: The official documentation is your comprehensive guide to the Gemini API: https://ai.google.dev/gemini-api/docs/
3. Dive into the Demos: Choose a demo that sparks your interest and follow the instructions in its README. You'll be up and running in no time!
## Important Notes:
1. API Usage Limits: Google may have usage limits and associated costs for the Gemini API. Be sure to review the details on their website.
2. Responsible AI: Please use the Gemini API responsibly and ethically. Avoid generating harmful or misleading content.
3. Feedback Welcome: We value your input! If you encounter issues, have suggestions, or want to share your creations, please open an issue or pull request.
## Current Projects
| Name | Description | Tools |
| ----------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [Multimodal Embeddings](/multimodal-embeddings) | Using Gemini's new Multimodal Embeddings API, we'll explore high dimensional embedding space of text, images, and videos. | [Multimodal Embeddings API](https://cloud.google.com/vertex-ai/generative-ai/docs/embeddings/get-multimodal-embeddings), [Firestore Vector Search](https://firebase.google.com/docs/firestore/vector-search) |
| [Gemini Video Scrubber](/video-scrubber) | "GVS" is a prototype that uses Gemini's multimodal video understanding capabilities to create timestamped summaries of videos with a simple UI to play those timestamps back in sequence, giving you the ability to quickly scan videos for interesting moments, common occurences, and more! | Multimodal Gemini, File API, Caching |
| [Voice Cursor](/voice-cursor) | An experimental text editor that lets you highlight phrases and instantly hear them spoken by Gemini 2.0 in different expressive styles. Simply select text, choose a tone, and hear AI-generated speech with customizable prompts. | [Gemini 2.0 Native Audio Output](https://ai.google.dev/gemini-api/docs/models/gemini-v2#speech-generation-early-accessallowlist) |
| [Image to Code](/image-to-code) | An experimental site that uses Gemini 2.0 Flash to turn an image --> into a creative code sketch (p5.js). | [Gemini 2.0 Flash](https://deepmind.google/technologies/gemini/flash/) |
## Experiments for all
This is an experiment, not an official Google product. We'll do our best to support and maintain this experiment but your mileage may vary.
We encourage open sourcing projects as a way of learning from each other. Please respect our and other creators' rights, including copyright and trademark rights when present, when sharing these works and creating derivative work. If you want more info on Google's policy, you can find that [here](https://www.google.com/permissions/).
================================================
FILE: image-to-code/.gcloudignore
================================================
# This file specifies files that are *not* uploaded to Google Cloud
# using gcloud. It follows the same syntax as .gitignore, with the addition of
# "#!include" directives (which insert the entries of the given .gitignore-style
# file at that point).
#
# For more information, run:
# $ gcloud topic gcloudignore
#
.gcloudignore
# If you would like to upload your .git directory, .gitignore file or files
# from your .gitignore file, remove the corresponding line
# below:
.git
.gitignore
# Node.js dependencies:
node_modules/
================================================
FILE: image-to-code/.gitignore
================================================
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/versions
# testing
/coverage
# next.js
/.next/
/out/
# production
/build
# misc
.DS_Store
*.pem
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*
# env files (can opt-in for committing if needed)
.env*
.env.local
# vercel
.vercel
# typescript
*.tsbuildinfo
next-env.d.ts
# app yaml
*.yaml
app.yaml
================================================
FILE: image-to-code/CONTRIBUTING.md
================================================
# How to contribute
We'd love to accept your patches and contributions to this project.
## Before you begin
Sign our Contributor License Agreement
Contributions to this project must be accompanied by a Contributor License Agreement (CLA). You (or your employer) retain the copyright to your contribution; this simply gives us permission to use and redistribute your contributions as part of the project.
If you or your current employer have already signed the Google CLA (even if it was for a different project), you probably don't need to do it again.
Visit https://cla.developers.google.com/ to see your current agreements or to sign a new one.
### Review our community guidelines
This project follows Google's Open Source Community Guidelines.
## Contribution process
###Code reviews
All submissions, including submissions by project members, require review. We use GitHub pull requests for this purpose. Consult GitHub Help for more information on using pull requests.
================================================
FILE: image-to-code/LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: image-to-code/README.md
================================================
# Image to Code Generator 🎨

Get started with [p5js](https://p5js.org/) sketches using [Gemini 2.0 Flash](https://deepmind.google/technologies/gemini/flash/). Upload any photo, and this web app uses [Gemini 2.0 Flash](https://deepmind.google/technologies/gemini/flash/) to generate a [p5.js](https://p5js.org/) sketch that captures the essence of the image in an interactive way.
## Getting Started
### 1. Clone this repository and install dependencies:
```
git clone https://github.com/googlecreativelab/gemini-demos/
cd image-to-code-sketch
npm install
```
### 2. Create a .env.local file with your AI Studio API key:
Get your API key from [Google AI Studio](https://aistudio.google.com/apikey). And create a `.env` file in the root of the project.
```
NEXT_PUBLIC_GEMINI_API_KEY=your_api_key_here
```
### 3. Start the development server:
```
npm run dev
```
Open http://localhost:3000 and start uploading images!
## Prompt Transparency
The prompt to transform images into p5js sketches can be found in `pages/index.js`.
```
You are a creative coding expert who turns images into clever code sketches using p5js. A user will upload an image and you will generate a interactive p5js sketch that represents the image. The code sketch always has some sort of interactive element that connects to the nature of the object in the real world.
## EXAMPLES
Here are some examples of what I mean by how the type of image could be turned into a clever creative coding sketch to capture the essence of the image.
- A photo of birds --> a boids flocking algorithm sketch where the boids follow your mouse
- A photo of a tree --> a recursive fractal tree that grows as you move your mouse up and down
- A photo of a pond --> a sketch that has a ripple animation on mouse click
- A photo of a wristwatch --> beautiful functioning clock that accesses system time and displays it like the wristwatch
- A photo of a lamp --> a sketch of the lamp, but when you click the screen the lamp turns on and off
- A photo of a zipper --> a sketch representing the shapes of the zipper, and when you move your mouse up and down the zipper opens and closes like a real zipper
## PROCESS
To achieve creating this sketch, you reflect and meditate on the nature of the object BEFORE picking an algorithmic approach to represent the image. You are an agent that is thoughtful, clever, delightful, and playful.
Before you start, think about the image and the best way to represent it in p5js.
1. Describe the behavioral properties of the image. List some ways it behaves in the real world or some patterns it exhibits. Describe the colors and vibe of the image as well.
2. Given the behavorial properties of the image, identify a common creative coding algorithm that can be paired up to this image to make a delightful p5js sketch.
3. State the bounding boxes of the important parts of the composition of the photo. We will need to use these bounding boxes to make sure our composition of our sketch resembles the composition of the photo uploaded. Our sketch's composition needs to resemble the composition of the uploaded photo.
4. Implement a algorithm in p5js, using the properties of the image described earlier. Use either mouseMoved() or mouseClicked() to make it interactive. Generate a SINGLE, COMPLETE code snippet. We parse out the response you generate, so we should have only ONE code snippet that incorporates all of the information from steps 1 (behavioral description), 2 (creative coding algorithm to bring this to life), 3 (bounding boxes to preserve compositional integrity).
## EXECUTION
Complete all of these steps. When you write your code, be sure to leave clear comments to describe the different parts of the code and what you are doing.
Do not EVER try to load in external images or any other libraries. Everything must be self contained in the one file and code snippet.
And don't be too verbose.
```
## Credits
Code by [Trudy Painter](https://www.trudy.computer/). Design by [Jose Guizar](https://joseguizar.com/).
## Contributing 🤝
Contributions are welcome! See the `CONTRIBUTING.md` file for more information.
## Disclaimer
This is an experiment showcasing Gemini 2.0's capabilities, not an official Google product. We'll do our best to support and maintain this experiment but your mileage may vary. We encourage open sourcing projects as a way of learning from each other. Please respect our and other creators' rights, including copyright and trademark rights when present, when sharing these works and creating derivative work. If you want more info on Google's policy, you can find that [here](https://www.google.com/permissions/).
## License
Licensed under the Apache-2.0 license.
================================================
FILE: image-to-code/components/CodePreview.js
================================================
/**
* Copyright 2025 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import React, { useState } from 'react';
import { Code2, Play, Copy, Check, MessageCircle } from 'lucide-react';
import Editor from '@monaco-editor/react';
import ReactMarkdown from 'react-markdown';
import remarkGfm from 'remark-gfm';
import ToggleButton from './ToggleButton';
const CodePreview = ({ output, onCodeChange, fullResponse }) => {
const [showCode, setShowCode] = useState(false);
const [showReasoning, setShowReasoning] = useState(false);
const [isCopied, setIsCopied] = useState(false);
const handleCopy = async () => {
try {
await navigator.clipboard.writeText(output.code);
setIsCopied(true);
setTimeout(() => setIsCopied(false), 2000);
} catch (err) {
console.error('Failed to copy code:', err);
}
};
const renderSketch = (code) => {
// Make sure we're working with a string
const codeString = typeof code === 'string' ? code : code.toString();
const wrappedCode = codeString.includes('function setup()') ? codeString : `
function setup() {
createCanvas(500, 500);
${codeString}
}
function draw() {
// Add default draw function if not present
if (typeof window.draw !== 'function') {
window.draw = function() {};
}
}
`;
const formattedCodeResponse = `
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.0/p5.js"></script>
<title>p5.js Sketch</title>
<style>
body {
padding: 0;
margin: 0;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
overflow: hidden;
}
canvas {
max-width: 100% !important;
height: auto !important;
}
</style>
</head>
<body>
<script>
try {
${wrappedCode}
// Immediately call setup if it hasn't been called
if (typeof window.setup === 'function') {
new p5();
}
} catch (error) {
console.error('Sketch error:', error);
document.body.innerHTML = '<div style="color: red; padding: 20px;"><h3>🔴 Error:</h3><pre>' + error.message + '</pre></div>';
}
</script>
</body>
</html>
`;
return (
<div className="relative w-full h-[500px] bg-gray-50 rounded-lg overflow-hidden">
<iframe
srcDoc={formattedCodeResponse}
title="p5.js Sketch"
width="100%"
height="100%"
style={{ border: "none" }}
className="absolute inset-0"
/>
</div>
);
};
// Make sure we're passing the actual code string to renderSketch
const sketchCode = output?.code || '';
return (
<div className="mb-4 p-6 rounded-3xl bg-gray-100">
<div className="mb-4">
{showCode ? (
<div className="w-full h-[500px] rounded-lg overflow-hidden border">
<Editor
height="500px"
defaultLanguage="javascript"
value={sketchCode}
onChange={(value) => onCodeChange(output.id, value)}
theme="light"
options={{
minimap: { enabled: false },
fontSize: 12,
lineNumbers: 'off',
scrollBeyondLastLine: false,
automaticLayout: true,
tabSize: 2,
wordWrap: 'on',
padding: { top: 8, bottom: 8 }
}}
/>
</div>
) : showReasoning ? (
<div className="w-full h-[500px] rounded-lg overflow-y-auto border p-4 prose prose-xs max-w-none bg-white">
<ReactMarkdown
remarkPlugins={[remarkGfm]}
className="text-xs text-gray-700"
components={{
code: ({node, inline, className, children, ...props}) => (
<code className={`${className} ${inline ? 'text-[0.7rem] bg-slate-50 text-slate-900 px-1.5 py-0.5 rounded border border-slate-200' : ''}`} {...props}>
{children}
</code>
),
pre: ({node, children, ...props}) => (
<pre className="text-[0.7rem] bg-slate-50 text-slate-900 p-3 rounded-md overflow-x-auto border border-slate-200" {...props}>
{children}
</pre>
),
p: ({node, children}) => (
<p className="text-xs mb-2 text-gray-700">{children}</p>
),
h1: ({node, children}) => (
<h1 className="text-sm font-bold mb-2 text-gray-900">{children}</h1>
),
h2: ({node, children}) => (
<h2 className="text-xs font-bold mb-2 text-gray-900">{children}</h2>
),
h3: ({node, children}) => (
<h3 className="text-xs font-semibold mb-1 text-gray-900">{children}</h3>
),
ul: ({node, children}) => (
<ul className="text-xs list-disc pl-4 mb-2 text-gray-700">{children}</ul>
),
ol: ({node, children}) => (
<ol className="text-xs list-decimal pl-4 mb-2 text-gray-700">{children}</ol>
),
li: ({node, children}) => (
<li className="text-xs mb-1 text-gray-700">{children}</li>
)
}}
>
{fullResponse}
</ReactMarkdown>
</div>
) : (
renderSketch(sketchCode)
)}
</div>
<div className="flex justify-between items-center mt-2">
<div className="inline-flex rounded-full bg-gray-200 gap-1">
<ToggleButton
icon={Play}
label="Preview"
isSelected={!showCode && !showReasoning}
onClick={() => {
setShowCode(false);
setShowReasoning(false);
}}
/>
<ToggleButton
icon={MessageCircle}
label="Reasoning"
isSelected={showReasoning}
onClick={() => {
setShowCode(false);
setShowReasoning(true);
}}
/>
<ToggleButton
icon={Code2}
label="Code"
isSelected={showCode}
onClick={() => {
setShowCode(true);
setShowReasoning(false);
}}
/>
</div>
<button
type="button"
onClick={handleCopy}
className={`px-3.5 py-2.5 rounded-full transition-colors inline-flex text-sm border border-gray-300
items-center gap-1 ${
isCopied
? "bg-gray-500 text-white"
: "bg-transparent text-gray-700 hover:bg-gray-100"
}`}
>
{isCopied ? (
<>
<Check size={14} />
Copied!
</>
) : (
<>
<Copy size={14} />
Copy Code
</>
)}
</button>
</div>
</div>
);
};
export default CodePreview;
================================================
FILE: image-to-code/components/Header.js
================================================
import React from 'react';
import { Github, Info } from 'lucide-react';
const Header = () => {
return (
<div className="fixed top-0 left-0 right-0 w-full bg-white p-4 z-50 ">
<div className="w-full flex justify-between items-center text-base">
<div className="text-gray-500">
<span className="text-black font-bold text-lg mr-2">Image to Code</span>
Built with <a
href="https://ai.google.dev"
target="_blank"
rel="noopener noreferrer"
className="underline hover:text-gray-800 transition-colors"
>
Gemini 2.0
</a>
</div>
<div className="flex items-center gap-3">
<a
href="https://github.com/googlecreativelab/gemini-demos/tree/main/image-to-code"
target="_blank"
rel="noopener noreferrer"
className="flex items-center gap-2 text-sm font-medium text-gray-700 hover:text-gray-900 transition-colors "
>
<Github size={18} className="text-gray-600" />
<span>GitHub Repository</span>
</a>
</div>
</div>
</div>
);
};
export default Header;
================================================
FILE: image-to-code/components/ToggleButton.js
================================================
import React from 'react';
const ToggleButton = ({ icon: Icon, label, isSelected, onClick }) => {
const baseStyles = "inline-flex items-center gap-1 px-3.5 py-2.5 text-sm rounded-full transition-all duration-200";
const selectedStyles = "bg-black text-white";
const unselectedStyles = "bg-gray-200 text-gray-700";
return (
<button
type="button"
onClick={onClick}
className={`${baseStyles} ${isSelected ? selectedStyles : unselectedStyles}`}
>
{Icon && <Icon size={14} />}
{label}
</button>
);
};
export default ToggleButton;
================================================
FILE: image-to-code/jsconfig.json
================================================
{
"compilerOptions": {
"paths": {
"@/*": ["./*"]
}
}
}
================================================
FILE: image-to-code/next.config.mjs
================================================
/**
* Copyright 2025 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
};
export default nextConfig;
================================================
FILE: image-to-code/package.json
================================================
{
"name": "service-image-code-2",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev --turbopack",
"build": "next build",
"start": "next start",
"lint": "next lint"
},
"dependencies": {
"@google/generative-ai": "^0.21.0",
"@monaco-editor/react": "^4.6.0",
"lucide-react": "^0.469.0",
"next": "15.1.3",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-dropzone": "^14.3.5",
"react-markdown": "^9.0.3",
"remark-gfm": "^4.0.0"
},
"devDependencies": {
"@tailwindcss/typography": "^0.5.16",
"postcss": "^8",
"tailwindcss": "^3.4.1"
}
}
================================================
FILE: image-to-code/pages/_app.js
================================================
/**
* Copyright 2025 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import "@/styles/globals.css";
export default function App({ Component, pageProps }) {
return <Component {...pageProps} />;
}
================================================
FILE: image-to-code/pages/_document.js
================================================
/**
* Copyright 2025 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Html, Head, Main, NextScript } from "next/document";
export default function Document() {
return (
<Html lang="en">
<Head />
<body className="antialiased">
<Main />
<NextScript />
</body>
</Html>
);
}
================================================
FILE: image-to-code/pages/api/hello.js
================================================
/**
* Copyright 2025 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Next.js API route support: https://nextjs.org/docs/api-routes/introduction
export default function handler(req, res) {
res.status(200).json({ name: "John Doe" });
}
================================================
FILE: image-to-code/pages/index.js
================================================
/**
* Copyright 2025 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import React, { useState, useCallback, useEffect } from "react";
import { useDropzone } from "react-dropzone";
import { GoogleGenerativeAI } from "@google/generative-ai";
import { ChevronDown, Image, Upload, Settings, Send, History, ArrowRight, Pen, Layers } from "lucide-react";
import Head from "next/head";
import CodePreview from "../components/CodePreview";
import Header from '../components/Header';
const SAMPLE_IMAGES = [
'beeripple.jpeg',
'bubbles.jpeg',
'clock.png',
'flower.jpeg',
'garage.jpeg',
'sconce.jpeg',
'steam.jpeg',
'tree.png',
"birds.jpeg",
"bubblemachine.png",
];
// Initialize Gemini AI model
const MODEL_NAME = "gemini-2.0-flash-exp";
const genAI = new GoogleGenerativeAI(process.env.NEXT_PUBLIC_GEMINI_API_KEY);
const model = genAI.getGenerativeModel({ model: MODEL_NAME });
// Helper function to generate code from image
async function generateCodeFromImage(imageBase64, prompt, userInput) {
const image = {
inlineData: {
data: imageBase64.split(",")[1],
mimeType: "image/jpeg",
},
};
const finalPrompt = userInput.trim()
? `${prompt}\n\nUser input: ${userInput}`
: prompt;
const result = await model.generateContent([finalPrompt, image]);
const response = result.response.text();
const regex = /```(?:javascript|js)?\s*([\s\S]*?)```/g;
const match = regex.exec(response);
const extractedCode = match ? match[1].trim() : response;
return {
fullResponse: response,
code: extractedCode
};
}
export default function Home() {
const [imageBase64, setImageBase64] = useState("");
const [outputs, setOutputs] = useState([]);
const [loading, setLoading] = useState(false);
const [hasStartedGenerating, setHasStartedGenerating] = useState(false);
const [selectedOutput, setSelectedOutput] = useState(null);
const [concurrentRequests, setConcurrentRequests] = useState(5);
const [showPrompt, setShowPrompt] = useState(false);
const [prompt, setPrompt] = useState("");
// Load prompt from localStorage on initial render
useEffect(() => {
const savedPrompt = localStorage.getItem('savedPrompt');
if (savedPrompt) {
setPrompt(savedPrompt);
} else {
const defaultPrompt = `You are a creative coding expert who turns images into
clever code sketches using p5js. A user will upload an image and you will
generate a interactive p5js sketch that represents the image.
The code sketch always has some sort of interactive element that
connects to the nature of the object in the real world.
## EXAMPLES
Here are some examples of what I mean by how the type of image could
be turned into a clever creative coding sketch to capture the essence of the image.
- A photo of birds --> a boids flocking algorithm sketch where the boids follow your mouse
- A photo of a tree --> a recursive fractal tree that grows as you move your mouse up and down
- A photo of a pond --> a sketch that has a ripple animation on mouse click
- A photo of a wristwatch --> beautiful functioning clock that
accesses system time and displays it like the wristwatch
- A photo of a lamp --> a sketch of the lamp, but when you click
the screen the lamp turns on and off
- A photo of a zipper --> a sketch representing the shapes of the zipper,
and when you move your mouse up and down the zipper opens and closes like a real zipper
## PROCESS
To achieve creating this sketch, you reflect and
meditate on the nature of the object BEFORE picking an algorithmic
approach to represent the image. You are an agent that is thoughtful,
clever, delightful, and playful.
Before you start, think about the image and the best way to represent it in p5js.
1. Describe the behavioral properties of the image. List some ways it
behaves in the real world or some patterns it exhibits. Describe the
colors and vibe of the image as well.
2. Given the behavorial properties of the image, identify a common creative
coding algorithm that can be paired up to this image to make a delightful p5js sketch.
3. State the bounding boxes of the important parts of the composition
of the photo. We will need to use these bounding boxes to make sure our
composition of our sketch resembles the composition of the photo uploaded.
Our sketch's composition needs to resemble the composition of the uploaded photo.
4. Implement a algorithm in p5js, using the properties of the image described
earlier. Use either mouseMoved() or mouseClicked() to make it interactive.
Generate a SINGLE, COMPLETE code snippet. We parse out the response you generate,
so we should have only ONE code snippet that incorporates all of the information
from steps 1 (behavioral description), 2 (creative coding algorithm to bring this to life),
3 (bounding boxes to preserve compositional integrity).
## EXECUTION
Complete all of these steps. When you write your code, be sure to leave clear
comments to describe the different parts of the code and what you are doing.
Do not EVER try to load in external images or any other libraries.
Everything must be self contained in the one file and code snippet.
And don't be too verbose.`
.trim();
setPrompt(defaultPrompt);
localStorage.setItem('savedPrompt', defaultPrompt);
}
}, []);
// Save prompt to localStorage whenever it changes
useEffect(() => {
if (prompt) {
localStorage.setItem('savedPrompt', prompt);
}
}, [prompt]);
const [showSamples, setShowSamples] = useState(false);
const [selectedSample, setSelectedSample] = useState(null);
const [userInput, setUserInput] = useState("");
const [imageDetails, setImageDetails] = useState(null);
const onDrop = useCallback((acceptedFiles) => {
const file = acceptedFiles[0];
const reader = new FileReader();
reader.onload = (event) => {
const img = document.createElement("img");
img.src = event.target.result;
img.onload = () => {
const canvas = document.createElement("canvas");
const scaleFactor = 512 / img.width;
canvas.width = 512;
canvas.height = img.height * scaleFactor;
const ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
setImageBase64(canvas.toDataURL());
setImageDetails({
name: file.name,
size: `${(file.size / 1024).toFixed(2)}kB`,
type: file.type
});
};
};
reader.readAsDataURL(file);
}, []);
const { getRootProps, getInputProps, isDragActive } = useDropzone({
onDrop,
accept: "image/*",
});
const generateCode = async () => {
if (!imageBase64) return;
setLoading(true);
setHasStartedGenerating(true);
setOutputs([]);
try {
const requests = Array(concurrentRequests)
.fill()
.map(() => generateCodeFromImage(imageBase64, prompt, userInput));
const results = await Promise.all(requests);
setOutputs(results.map((result, index) => ({
id: index + 1,
code: result.code,
fullResponse: result.fullResponse
})));
} catch (error) {
console.error("Error generating code:", error);
} finally {
setLoading(false);
}
};
const renderSketch = (code) => {
const formattedCodeResponse = `
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=512, initial-scale=1.0">
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.0/p5.js"></script>
<title>p5.js Sketch</title>
<style> body {padding: 0; margin: 0;} </style>
</head>
<body>
<script>
window.onerror = function(message, source, lineno, colno, error) {
document.body.innerHTML += '<h3>🔴Error:</h3><pre>' + message + '</pre>';
};
${code}
</script>
</body>
</html>
`;
return (
<iframe
srcDoc={formattedCodeResponse}
title="p5.js Sketch"
width="100%"
height="300"
style={{ border: "none" }}
/>
);
};
const handleCodeChange = (id, newCode) => {
setOutputs((prevOutputs) =>
prevOutputs.map((output) =>
output.id === id ? { ...output, code: newCode } : output
)
);
};
const handleSampleSelect = async (imageName) => {
setSelectedSample(imageName);
try {
const response = await fetch(`/samples/${imageName}`);
const blob = await response.blob();
const reader = new FileReader();
reader.onload = (event) => {
const img = document.createElement("img");
img.src = event.target.result;
img.onload = () => {
const canvas = document.createElement("canvas");
const scaleFactor = 512 / img.width;
canvas.width = 512;
canvas.height = img.height * scaleFactor;
const ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
setImageBase64(canvas.toDataURL());
};
};
reader.readAsDataURL(blob);
} catch (error) {
console.error('Error loading sample image:', error);
}
};
return (
<>
<Head>
<title>Image to Code</title>
</Head>
<div className="h-screen max-h-screen bg-white flex items-center justify-center overflow-y-hidden tracking-[-0.005em]">
<Header />
<div className="w-full h-full max-h-full overflow-hidden bg-white">
<div className={`flex flex-col md:flex-row gap-0 max-w-6xl mx-auto py-0 h-full transition-all duration-500 ${!hasStartedGenerating ? 'justify-center' : ''}`}>
<div className={`flex-1 h-full overflow-y-auto py-20 px-3 transition-all duration-500 ${!hasStartedGenerating ? 'md:max-w-2xl mx-auto' : ''}`}>
<section className="flex flex-col bg-gray-100 rounded-2xl p-4">
<div
{...getRootProps()}
className={`border-2 border-dashed bg-gray-100 rounded-2xl m-4 min-h-96 h-fit flex
flex-col items-center justify-center cursor-pointer hover:border-gray-400 transition-colors ${imageBase64 ? 'border-none' : 'border-gray-300'}`}
>
<input {...getInputProps()} />
{imageBase64 ? (
<img
src={imageBase64}
alt="Uploaded"
className="max-h-full max-w-full object-contain rounded-2xl"
/>
) : (
<>
<Upload className="w-12 h-12 text-gray-400 mb-4" />
<p className="text-gray-400">
{isDragActive
? "Drop the image here"
: "Drag & drop an image here, or click to select one"}
</p>
</>
)}
</div>
<div className="max-w-xl mb-4">
<div className="flex overflow-x-auto gap-2 py-1 mx-4">
{SAMPLE_IMAGES.map((image) => (
<button
key={image}
type="button"
onClick={() => handleSampleSelect(image)}
className={`flex-shrink-0 w-14 h-14 bg-white rounded-lg hover:scale-110 transition-all ${selectedSample === image ? 'border-blue-500 ring-2 ring-blue-200' : 'border-gray-300'
}`}
>
<img
src={`/samples/${image}`}
alt={image}
className="w-full h-full object-cover rounded-lg"
/>
</button>
))}
</div>
</div>
</section>
<section className="mt-4 space-y-4 bg-gray-100 rounded-2xl p-4">
<div>
<button
type="button"
onClick={() => setShowSamples(!showSamples)}
className="flex items-center gap-2 text-sm text-gray-600 hover:text-gray-800 transition-colors"
>
{/* <Settings size={16} /> */}
<span className="font-bold">Advanced</span>
<ChevronDown
size={16}
className={`transform transition-transform ${showSamples ? 'rotate-180' : ''
}`}
/>
</button>
{showSamples && (
<div className="my-2 rounded-lg">
<div className="space-y-2">
<div className="flex items-center justify-between">
<div className="flex items-center gap-2">
<Layers size={14} className="text-gray-600" />
<label htmlFor="concurrent-requests" className="text-sm font-medium text-gray-700">
Concurrent Requests: {concurrentRequests}
</label>
</div>
<input
id="concurrent-requests"
type="range"
min="1"
max="10"
value={concurrentRequests}
onChange={(e) => setConcurrentRequests(Number(e.target.value))}
className="w-1/2"
/>
</div>
<button
type="button"
onClick={() => setShowPrompt(!showPrompt)}
className="flex items-center gap-2 text-sm text-gray-600 hover:text-gray-800 transition-colors"
>
<Pen size={14} />
<span>Edit System Prompt</span>
<ChevronDown
size={16}
className={`transform transition-transform ${showPrompt ? 'rotate-180' : ''}`}
/>
</button>
{showPrompt && (
<textarea
value={prompt}
onChange={(e) => setPrompt(e.target.value)}
className="w-full h-64 p-2 border rounded-lg font-mono text-sm mt-2"
placeholder="Enter your prompt here..."
/>
)}
</div>
</div>
)}
</div>
</section>
<section className="mt-4">
<button
type="button"
onClick={generateCode}
className="px-4 py-4 bg-gray-800 text-white rounded-2xl mb-8
hover:bg-gray-900 transition-colors w-full disabled:bg-gray-300 disabled:cursor-not-allowed
flex items-center justify-center gap-2 font-bold"
disabled={!imageBase64 || loading}
>
{/* <Send size={16} className={loading ? 'opacity-50' : ''} /> */}
<span>{loading ? "Generating..." : `Generate ${concurrentRequests} Code Snippet${concurrentRequests > 1 ? 's' : ''}`}</span>
</button>
</section>
</div>
{hasStartedGenerating && (
<div className="flex-1 h-full overflow-y-scroll py-20 px-3 animate-slide-in">
{loading ? (
// Loading skeletons for code previews
Array(concurrentRequests).fill().map((_, index) => (
<div key={`skeleton-${index}`} className="mb-4 p-6 rounded-3xl bg-gray-100 animate-pulse">
<div className="w-full h-[500px] bg-gray-200 rounded-lg mb-4" />
<div className="flex justify-between items-center">
<div className="h-10 w-32 bg-gray-200 rounded-full" />
<div className="h-10 w-24 bg-gray-200 rounded-full" />
</div>
</div>
))
) : (
outputs.map((output) => (
<CodePreview
key={output.id}
output={output}
onCodeChange={handleCodeChange}
fullResponse={output.fullResponse}
/>
))
)}
</div>
)}
</div>
</div>
</div>
</>
);
};
================================================
FILE: image-to-code/postcss.config.mjs
================================================
/**
* Copyright 2025 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/** @type {import('postcss-load-config').Config} */
const config = {
plugins: {
tailwindcss: {},
},
};
export default config;
================================================
FILE: image-to-code/styles/globals.css
================================================
/**
* Copyright 2025 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
@tailwind base;
@tailwind components;
@tailwind utilities;
:root {
--background: #ffffff;
--foreground: #171717;
}
@media (prefers-color-scheme: dark) {
:root {
--background: #0a0a0a;
--foreground: #ededed;
}
}
body {
color: var(--foreground);
background: var(--background);
font-family: Arial, Helvetica, sans-serif;
}
================================================
FILE: image-to-code/tailwind.config.js
================================================
/**
* Copyright 2025 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/** @type {import('tailwindcss').Config} */
module.exports = {
content: [
'./pages/**/*.{js,ts,jsx,tsx,mdx}',
'./components/**/*.{js,ts,jsx,tsx,mdx}',
'./app/**/*.{js,ts,jsx,tsx,mdx}',
],
theme: {
extend: {
keyframes: {
'fade-in-out': {
'0%': { opacity: '0', transform: 'translateY(-10px)' },
'10%': { opacity: '1', transform: 'translateY(0)' },
'90%': { opacity: '1' },
'100%': { opacity: '0' }
},
'slide-in': {
'0%': { transform: 'translateX(100%)' },
'100%': { transform: 'translateX(0)' }
}
},
animation: {
'fade-in-out': 'fade-in-out 5s ease-in-out',
'slide-in': 'slide-in 0.5s ease-out'
},
typography: {
xs: {
css: {
fontSize: '0.75rem',
lineHeight: '1.2',
color: '#374151',
p: {
marginBottom: '0.5rem',
},
h1: {
fontSize: '1rem',
marginBottom: '0.75rem',
},
h2: {
fontSize: '0.875rem',
marginBottom: '0.5rem',
},
h3: {
fontSize: '0.75rem',
marginBottom: '0.5rem',
},
'code': {
fontSize: '0.7rem !important',
padding: '0.1rem 0.2rem',
backgroundColor: '#f8fafc',
color: '#0f172a !important',
borderRadius: '0.25rem',
border: '1px solid #e2e8f0',
},
'pre': {
fontSize: '0.7rem !important',
padding: '0.75rem',
marginBottom: '0.75rem',
backgroundColor: '#f8fafc',
color: '#0f172a',
border: '1px solid #e2e8f0',
code: {
fontSize: '0.7rem !important',
backgroundColor: 'transparent',
padding: 0,
border: 'none',
color: '#0f172a',
}
},
'ul': {
marginBottom: '0.75rem',
},
'ol': {
marginBottom: '0.75rem',
},
'li': {
marginBottom: '0.25rem',
}
}
}
}
},
},
plugins: [
require('@tailwindcss/typography'),
],
}
================================================
FILE: image-to-code/tailwind.config.mjs
================================================
/**
* Copyright 2025 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/** @type {import('tailwindcss').Config} */
export default {
content: [
"./pages/**/*.{js,ts,jsx,tsx,mdx}",
"./components/**/*.{js,ts,jsx,tsx,mdx}",
"./app/**/*.{js,ts,jsx,tsx,mdx}",
],
theme: {
extend: {
colors: {
background: "var(--background)",
foreground: "var(--foreground)",
},
},
},
plugins: [],
};
================================================
FILE: multimodal-embeddings/.gcloudignore
================================================
# This file specifies files that are *not* uploaded to Google Cloud
# using gcloud. It follows the same syntax as .gitignore, with the addition of
# "#!include" directives (which insert the entries of the given .gitignore-style
# file at that point).
#
# For more information, run:
# $ gcloud topic gcloudignore
#
.gcloudignore
# If you would like to upload your .git directory, .gitignore file or files
# from your .gitignore file, remove the corresponding line
# below:
.git
.gitignore
# Node.js dependencies:
node_modules/
================================================
FILE: multimodal-embeddings/.npmrc
================================================
engine-strict=true
================================================
FILE: multimodal-embeddings/.prettierignore
================================================
# Ignore files for PNPM, NPM and YARN
pnpm-lock.yaml
package-lock.json
yarn.lock
================================================
FILE: multimodal-embeddings/.prettierrc
================================================
{
"useTabs": true,
"singleQuote": true,
"trailingComma": "none",
"printWidth": 100,
"plugins": [
"prettier-plugin-svelte",
"prettier-plugin-tailwindcss"
],
"tabWidth": 2,
"overrides": [
{
"files": "*.svelte",
"options": {
"parser": "svelte"
}
}
]
}
================================================
FILE: multimodal-embeddings/README.md
================================================
> **This repo is provided _as-is_ for reference**, since you need a Firebase project with at least one collection that contains embeddings, and the proper APIs enabled (with billing) to generate embeddings.
> **NEW!** While not _fully_ functional, the repo now includes exported Firebase emulator data so you can get up and running quicker, follow along below!
# Multimodal Embeddings Demo
[Check out this video](https://x.com/labsdotgoogle/status/1838686949835706607) on the [Labs.google](https://labs.google) X account to see a quick overview of the project:
[](https://x.com/labsdotgoogle/status/1838686949835706607)
> Unsure what embeddings are? [Here's an old video](https://www.youtube.com/watch?v=wvsE8jm1GzE) we made about visualizing embeddings that does a good job explaining the basics. Learn more about Multimodal Embeddings in the [Cloud docs here](https://cloud.google.com/vertex-ai/generative-ai/docs/embeddings/get-multimodal-embeddings).
This repo represents most of the code used in Khayti's "Personal Search" demo in the video above, with two endpoints that can be used to explore your own embeddings:
1. `/search` - where we use Firebase Vector Search to find the closest embeddings to _both_ text and image input (image search!), and
2. `/viz` - bonus! where we use [UMAP](https://pair-code.github.io/understanding-umap/) to reduce the dimensions of our embeddings to visualize their relationships in 3D.
The app is built with Firebase and SvelteKit, which uses Threlte for a declarative 3D rendering engine built on top of THREE.js (for `/viz`).
## Get Started
We'll be able to test quickly with some exported Firebase Emulator data so let's dive right in:
1. [Create a new project](https://firebase.google.com/docs/web/setup) in Firebase that has Functions, Firestore and Storage enabled.
2. Run `firebase init` within this folder, enabling Firestore, Storage and Emulators to quickly be able to test with emulator data.
3. Update `/src/lib/consts.ts` with your firebase project info.
4. `npm i && npm run dev:emulate` should now work, building the site and starting the emulators. You can test this by visiting [`http://localhost:5173/viz`](http://localhost:5173/viz), which should load in the provided 'Weater' dataset.
5. Optional - Get a Gemini API key for any Gemini-related extra tasks.
> `firebase init` creates some files, like `firebase.rc` and some rules for Firestore and Firebase Storage. If you run into errors like the 'weather' images not loading in `/viz`, it could be the storage rules being set to 'false' as opposed to something that allows them to be loaded. Learn more in the `Visualizing` section below.
### Firebase Cloud Function for Embedding Generation
We've included a little bonus here in `/fb/functions` that can _automatically_ generate embeddings for files uploaded to your Cloud Bucket. It also generates collections based on the folder structure of the uploads.
This was great for our team when we were prototyping with the API since anyone could just create a new folder, upload images, and have it available in the UI for exploration.
Check out [`/fb/README.md`](fb/README.md) for more info.
> Note: you _can_ get this to run in the emulator as well, but its out of scope for this already too-long doc.
There are a bunch of utility methods and components as well in `/src/lib`, but most importantly used by `/search` and `/viz` is `/src/lib/components/CollectionList.svelte` which will attempt to pull in any Firestore Collections created by the function in `/fb/functions` (if you choose to use that).
### Create embeddings yourself
Read through the [Multimodal Embeddings documentation](https://cloud.google.com/vertex-ai/generative-ai/docs/embeddings/get-multimodal-embeddings) as our code in `/src/lib/embedder.ts` implements this almost exactly. You'll need to add your project name to this file as well for it to work. You send text, images, or video, and receive back a vector that needs to be store in Firebase.
> `embedder.ts` is also called directly from the Function in `/fb/functions/index.ts` so we didn't have to have two copies of the code in each sub module.
### I have embeddings, now what?
Next, read through the [Firebase Vector Search docs](https://firebase.google.com/docs/firestore/vector-search).
You'll store each image embedding in [a Firestore document](https://firebase.google.com/docs/firestore/vector-search#write_operation_with_a_vector_embedding) via `FieldValue.vector()`, and once you've done this for all your embeddings, you'll need to [create an index of that collection](https://firebase.google.com/docs/firestore/vector-search#create_and_manage_vector_indexes) so the Vector Search can work.
If you have _not_ created an index, but go to `/search` and try to search your collection, you'll get a handy error that gives you the exact code to run in order to start that, something like this:
```bash
gcloud firestore indexes composite create \
--collection-group=collection-group \
--query-scope=COLLECTION \
--field-config field-path=vector-field,vector-config='vector-configuration' \
--database=your-database-id
```
Once indexed, your collection can be searched!
### Searching
Again, everything in this repo follows the [Firebase Vector Search docs](https://firebase.google.com/docs/firestore/vector-search) closely, and for searching, we're [making a nearest-neighbor query](https://firebase.google.com/docs/firestore/vector-search#make_a_nearest-neighbor_query).
Conceptually though, you're doing two things:
1. Embedding _the query_ in order to place it within the same space as your collections embeddings, then
2. Doing a nearest-neighbor lookup to find any results that are nearby to your query.
And since we're using the Multimodal Embeddings API, your query can be text, an image, or a video.
**Important Note** - you'll notice that we also have a file `/src/lib/cloud-firebase.ts`. At time of creating this demo, the actual Search APIs only resided in `@google-cloud/firestore` on NPM, which is separate from the normal Firebase web APIs in npm's `firebase` that are used elsewhere in the app.
### Visualizing
`/viz` takes your Firestore collections and attempts to plot them in 3D using UMAP, an API similar to T-SNE but much faster (and just as non-deterministic).
> [Learn more about UMAP here.](https://pair-code.github.io/understanding-umap/)
<figure>
<img src="static/viz.png"/>
<figcaption>/viz using the public weather dataset mentioned above</figcaption>
</figure>
It was a WIP that was never fully completed but should get you 90% of the way there. What's important to note is lowering dimensions on embeddings inherently loses information, so while its a really nice way to visualize things it shouldn't be considered an exact representation of the embeddings (which are 1408 dimensions).
## Experiments for all
This is an experiment, not an official Google product. We’ll do our best to support and maintain this experiment but your mileage may vary.
We encourage open sourcing projects as a way of learning from each other. Please respect our and other creators’ rights, including copyright and trademark rights when present, when sharing these works and creating derivative work. If you want more info on Google's policy, you can find that [here](https://www.google.com/permissions/).
================================================
FILE: multimodal-embeddings/app.yaml
================================================
runtime: nodejs20
service: mm-embed
instance_class: F2
default_expiration: '0s'
# handlers element provides a list of URL patterns and descriptions of how they should be handled.
# https://cloud.google.com/appengine/docs/standard/python/config/appref#handlers_element
handlers:
- url: /static
static_dir: static
- url: /.*
secure: always
redirect_http_response_code: 301
script: auto
================================================
FILE: multimodal-embeddings/components.json
================================================
{
"$schema": "https://shadcn-svelte.com/schema.json",
"style": "new-york",
"tailwind": {
"config": "tailwind.config.ts",
"css": "src/app.css",
"baseColor": "stone"
},
"aliases": {
"components": "$lib/components",
"utils": "$lib/utils"
},
"typescript": true
}
================================================
FILE: multimodal-embeddings/cors.json
================================================
[
{
"origin": ["*"],
"method": ["GET"],
"maxAgeSeconds": 3600
}
]
================================================
FILE: multimodal-embeddings/emulator-export/firebase-export-metadata.json
================================================
{
"version": "13.20.2",
"firestore": {
"version": "1.19.8",
"path": "firestore_export",
"metadata_file": "firestore_export/firestore_export.overall_export_metadata"
},
"storage": {
"version": "13.20.2",
"path": "storage_export"
}
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/blobs/b2e7394a-32cb-45ca-abea-73d0b2df628f
================================================
--boundary
Content-Type: application/json
{"contentType":"text/plain"}
--boundary
Content-Type: text/plain
--boundary--
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/blobs/dd83acba-c2c2-471f-96e6-02a7564ccdf2
================================================
--boundary
Content-Type: application/json
{"contentType":"text/plain"}
--boundary
Content-Type: text/plain
--boundary--
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/buckets.json
================================================
{
"buckets": [
{
"id": "mm-demo.appspot.com"
}
]
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/0001871f-3e7a-461d-b428-92efcd1ce0fd.json
================================================
{
"name": "mmembed/weather/thumb_0595.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214227,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"dc68f214-814b-4152-a8c3-af9a1a0781f3"
],
"etag": "36BWtqv7vexAC1OiGqyOdxIRnjI",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.227Z",
"updated": "2024-10-02T01:56:54.227Z",
"size": 7263,
"md5Hash": "cbJfY8NsRWjyZ2aHtRfFFw==",
"crc32c": "381430859"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/03da0657-bb18-42fd-9831-7e48c0b723cf.json
================================================
{
"name": "mmembed/weather/thumb_106.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214209,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"5ef0c5d1-0d7e-405c-8e30-06ba8079c1ee"
],
"etag": "kCworTTvOTm2vjrfrKhLe6ZW0vw",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.209Z",
"updated": "2024-10-02T01:56:54.209Z",
"size": 13164,
"md5Hash": "DucB88Cx3AmGflsnemuA0g==",
"crc32c": "75427758"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/03f9df1b-0c0d-4014-8a7d-3a5eccad3faf.json
================================================
{
"name": "mmembed/weather/103.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213880,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"c0caebb1-4dca-4040-862b-08bd67c78a16"
],
"etag": "k8SJ9dRJMXQgbOcKCs8Tognnzvo",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.880Z",
"updated": "2024-10-02T01:56:53.880Z",
"size": 16411,
"md5Hash": "iUfHvP2JqOoxdXfg8kbd+w==",
"crc32c": "1972598782"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/04b454df-1216-4ec1-84fb-f59afd85fe90.json
================================================
{
"name": "mmembed/weather/6101.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214163,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"0b9617f7-9b67-4554-89fe-010e4bc2175d"
],
"etag": "KIL8zGyp8+VK/srSl4D0BSElYRM",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.164Z",
"updated": "2024-10-02T01:56:54.164Z",
"size": 30704,
"md5Hash": "VD1ZhLj58KUNotQINc+dAg==",
"crc32c": "1759807128"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/04f6c107-9611-4db9-aba8-98841ba5ae6f.json
================================================
{
"name": "mmembed/weather/thumb_124.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214218,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"38e2e524-56e0-45e8-9c7a-5bcfef7d0996"
],
"etag": "k1zlBELgPmn1bICELy1gxJsv9to",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.218Z",
"updated": "2024-10-02T01:56:54.218Z",
"size": 11304,
"md5Hash": "OnTRSZf4UrAvBGsP6dpRkw==",
"crc32c": "1817449649"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/06640a30-4d8e-4812-890e-e0374ad30f58.json
================================================
{
"name": "mmembed/weather/0604.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213923,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"cecfcbbe-eeaf-4ef9-ab5e-44ba21790b5f"
],
"etag": "bmz1wxRcTnu53n8cpDYvkaH66lM",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.923Z",
"updated": "2024-10-02T01:56:53.923Z",
"size": 39164,
"md5Hash": "cTWL+fraOVtXbXMBki3qhw==",
"crc32c": "733542868"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/06919cbe-0678-4bfd-8cec-4d09e8e2d51b.json
================================================
{
"name": "mmembed/weather/thumb_6096.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214338,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"fb36226f-0da6-40d8-a6ef-173a140a0620"
],
"etag": "8hN4lvAQAJ0/e9cB0cZH0CrbVPM",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.338Z",
"updated": "2024-10-02T01:56:54.338Z",
"size": 15174,
"md5Hash": "Qhyo3YCeCNo5WH/YR0ilkg==",
"crc32c": "2745637501"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/0a86afce-8076-4ab8-bd65-c1eaf5ec966f.json
================================================
{
"name": "mmembed/weather/6098.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214154,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"d8b24713-683b-44ff-bfca-9df78c7bcf05"
],
"etag": "kIZ9xrx7aFSzEiThfihBkZ+5FFE",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.154Z",
"updated": "2024-10-02T01:56:54.154Z",
"size": 34624,
"md5Hash": "sYV/Q6+C0OlEKSXddwHBAw==",
"crc32c": "268759653"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/0b286de2-4d59-442c-933e-76f0f8e3cd0b.json
================================================
{
"name": "mmembed/weather/thumb_0008.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214200,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"538b70e3-3370-4967-aa1a-b3de33c7f8c6"
],
"etag": "MXva3ZcgDdY33nOtsq6X9frygJA",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.200Z",
"updated": "2024-10-02T01:56:54.200Z",
"size": 5277,
"md5Hash": "DTNZaDwevDkcGlGyNcNhhw==",
"crc32c": "1754875255"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/0c96fb25-144b-46eb-bdf1-74c575ddb6e9.json
================================================
{
"name": "mmembed/weather/thumb_2211.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214270,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"591fac23-d94b-4da4-a6cb-5fd44faa285b"
],
"etag": "thl3s6qet0XJ8x+5ONXze4WNF88",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.270Z",
"updated": "2024-10-02T01:56:54.270Z",
"size": 10048,
"md5Hash": "UX9Ow5yj8HNkiyAM4uOgfQ==",
"crc32c": "1287150674"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/0cf49b23-1d83-41c8-85d3-5c31fbf7b123.json
================================================
{
"name": "mmembed/weather/thumb_14.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214203,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"8a910879-0a15-4c22-ac27-d125084f50df"
],
"etag": "Xl8PkdCqJlMk7ZX0o2+8e3gM2Sg",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.203Z",
"updated": "2024-10-02T01:56:54.203Z",
"size": 14476,
"md5Hash": "xhszeLK8WJJmvYJdHF8ejg==",
"crc32c": "1283693818"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/0d5f8ef7-dd37-432a-a0eb-80ccb822abc5.json
================================================
{
"name": "mmembed/weather/thumb_1838.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214259,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"cb5d25b0-f932-4135-9bd5-85710727ebb3"
],
"etag": "YPLEIaRetS6Ub0uiuHqx87DEv78",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.259Z",
"updated": "2024-10-02T01:56:54.259Z",
"size": 10558,
"md5Hash": "Sy9aUKXvSWDfj2bAAZrVww==",
"crc32c": "3896045552"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/0d961bbe-aa5c-4d0e-9e53-dc7a7ec2b96c.json
================================================
{
"name": "mmembed/weather/thumb_6102.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214345,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"cf5fc2e7-9996-4d21-98cb-b698b917d9a0"
],
"etag": "hLZuDXUeSdUky+F6t+vBJhT5elU",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.345Z",
"updated": "2024-10-02T01:56:54.345Z",
"size": 13974,
"md5Hash": "5sDUxjdRXzTO2OCMxVAuvA==",
"crc32c": "2607937928"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/0e7ec18e-93a5-4d40-845b-92cf98040f13.json
================================================
{
"name": "mmembed/weather/4087.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214084,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"f97a3b60-6f86-4970-8745-f6464984391a"
],
"etag": "Eop0ILMOwPFe5rOUm8xXuPZuY4E",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.084Z",
"updated": "2024-10-02T01:56:54.084Z",
"size": 9765,
"md5Hash": "y6ig7rdczYOqpELLhBX0cw==",
"crc32c": "1278155514"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/0ea29a34-dbcf-487a-b0e4-dd1c4028c7e2.json
================================================
{
"name": "mmembed/weather/3608.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214034,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"68d35210-682b-4a2f-a86a-9dcacc59c2ed"
],
"etag": "cezO0mmpl1mcIWGFmMcYHYEqbu0",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.034Z",
"updated": "2024-10-02T01:56:54.034Z",
"size": 104825,
"md5Hash": "4+FeplRi/qh4ZqskIpUqNQ==",
"crc32c": "2250252144"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/0fb276ab-ad9f-4cd4-95ea-335d18ea72fe.json
================================================
{
"name": "mmembed/weather/thumb_1832.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214255,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"bd0a6fc9-eb67-49a6-887d-a7ff1a5a14e5"
],
"etag": "108bJZHvr29ytwB68AJSlpcYO7A",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.255Z",
"updated": "2024-10-02T01:56:54.255Z",
"size": 7781,
"md5Hash": "6uK6+JT0FLOdoYj6giNR4g==",
"crc32c": "2621317137"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/0ff12c88-f320-4ef7-9356-26fbb9f3590e.json
================================================
{
"name": "mmembed/weather/thumb_6090.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214328,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"66e3e843-247a-4af4-8159-0b79497ea45c"
],
"etag": "SZRmNX2yfKybTRX5Zzv2aOmTbh4",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.328Z",
"updated": "2024-10-02T01:56:54.328Z",
"size": 19043,
"md5Hash": "HcrTuvHvGntt7n7UX3U6Eg==",
"crc32c": "1962143993"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/114b11eb-de0d-441b-85d9-d70db5353156.json
================================================
{
"name": "mmembed/weather/0596.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213906,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"6b4bd888-826d-40da-8455-fd9d36eda2f8"
],
"etag": "kA0fmU395rCJSy9kUlu2eU09zs0",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.906Z",
"updated": "2024-10-02T01:56:53.906Z",
"size": 26170,
"md5Hash": "Ll9+GvegxhYsWWWl3jKX+Q==",
"crc32c": "2833660459"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/125f8010-6ab0-463f-8278-5565cfc9d618.json
================================================
{
"name": "mmembed/weather/4078.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214057,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"f359fd83-11e7-495c-9ea1-78be53dd4cc8"
],
"etag": "ZfLR9mb5RGK1XWPlhlQAz3uyai8",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.057Z",
"updated": "2024-10-02T01:56:54.057Z",
"size": 73002,
"md5Hash": "4A92XSgT2T+hmhKei9+jfA==",
"crc32c": "1155197054"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/1514936f-769c-40b4-bfe4-4746fbc79fcd.json
================================================
{
"name": "mmembed/weather/thumb_4083.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214321,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"dfd792f8-e006-408a-87d1-f6a21579072c"
],
"etag": "2gYDeBUaZcqAXGwGdVz8G08EpJ8",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.321Z",
"updated": "2024-10-02T01:56:54.321Z",
"size": 4334,
"md5Hash": "E2Z1D7LabIL0k4EpmaIw/A==",
"crc32c": "1297624009"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/16227ec4-2585-40aa-a5fd-e25e0d227b66.json
================================================
{
"name": "mmembed/weather/thumb_4075.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214305,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"15381bd4-a7d6-4abc-ad3f-04fd84b24f77"
],
"etag": "iBnYch5qos8DWCNGj3pAlTbAJN8",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.305Z",
"updated": "2024-10-02T01:56:54.305Z",
"size": 5133,
"md5Hash": "Mw+kimOMiWEANeV3AqVInQ==",
"crc32c": "169736659"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/17f5cac8-e8c5-45c8-b6b3-afaa11b556ff.json
================================================
{
"name": "mmembed/weather/2209.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213973,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"d9a7b331-6972-4ab5-b8d7-1508a0ab4929"
],
"etag": "IgmKoZNnLR7zXZd+5ArbhQdkWhc",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.973Z",
"updated": "2024-10-02T01:56:53.973Z",
"size": 82384,
"md5Hash": "C7yZ9OnMw0JZ51nvkP7RMQ==",
"crc32c": "698962223"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/18964cd0-de01-46bd-88c3-ffad0b15b020.json
================================================
{
"name": "mmembed/weather/thumb_3613.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214304,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"c5c3077e-f52a-473e-a74c-75f9a0d3b320"
],
"etag": "BfXGJqmGOJsAlqwl6ubReLHk+qc",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.304Z",
"updated": "2024-10-02T01:56:54.304Z",
"size": 18350,
"md5Hash": "OR4hIX4Vhdzz/iQ/KSOw1A==",
"crc32c": "455266503"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/1aca1226-11c8-42f4-8137-339fe674e55c.json
================================================
{
"name": "mmembed/weather/6095.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214149,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"2f8553e6-8c5a-4aba-941c-d13db58cfaf1"
],
"etag": "+yrJoeBdo/CM1G17v/Y0SmFE3M0",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.149Z",
"updated": "2024-10-02T01:56:54.149Z",
"size": 81105,
"md5Hash": "GPGMZc9t79Lggb1KRZSNtQ==",
"crc32c": "948006417"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/1b831e3c-a1e8-4eb4-b3d6-de18b656814a.json
================================================
{
"name": "mmembed/weather/2217.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213995,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"adc0e2fb-d5b6-4418-90d2-92535c12310f"
],
"etag": "jU0AhhTffx77j3ScNLu/6LuRf40",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.995Z",
"updated": "2024-10-02T01:56:53.995Z",
"size": 68848,
"md5Hash": "SwFPkUZxZDWTrr3DuK5scA==",
"crc32c": "1077058591"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/1ba5a0d9-2902-4a7a-8f33-862cf0abcb38.json
================================================
{
"name": "mmembed/weather/thumb_6103.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214348,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"6a9e9c74-e9a4-4def-94f6-8bcfb52cc6b8"
],
"etag": "YfZBVfKqu4AXmn+QgN2UZR05emg",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.348Z",
"updated": "2024-10-02T01:56:54.348Z",
"size": 16840,
"md5Hash": "/uhrHofj+BWKGml9qv9wqA==",
"crc32c": "662099688"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/1bd97095-c1d4-4104-ae2a-f6c0e56dde89.json
================================================
{
"name": "mmembed/weather/6092.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214086,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"e96effde-8178-47ce-8375-89e5145a2721"
],
"etag": "iBywvrK4EqSDI9O17G5m8JPMpNE",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.086Z",
"updated": "2024-10-02T01:56:54.086Z",
"size": 17112,
"md5Hash": "iQTJaj9t0IVVI0hYIs0wHw==",
"crc32c": "3830179173"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/1ccff42b-89c8-4a66-9d8c-3c7f1c307625.json
================================================
{
"name": "mmembed/weather/0011.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213858,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"19427ea2-3f15-4e71-bf36-32d722530c64"
],
"etag": "gx5ZMUfvAv04oqA2zzFBD/u8bKU",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.858Z",
"updated": "2024-10-02T01:56:53.858Z",
"size": 15393,
"md5Hash": "E7W7Vlew1scBd861MX503Q==",
"crc32c": "1275252314"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/1d363b0e-cea6-4e58-aa6f-17c005c32f60.json
================================================
{
"name": "mmembed/weather/0001.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213557,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"8085ff5c-5413-4741-b0f5-299e34e3e1a2"
],
"etag": "Mqwc0wCZJw1uwdBDeHN7xGRdHco",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.557Z",
"updated": "2024-10-02T01:56:53.557Z",
"size": 218742,
"md5Hash": "3Rg3Wm7CnzY/B0QnZsQorA==",
"crc32c": "120931931"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/1e2e00f2-eb8c-432d-91a9-1f49c9bb2087.json
================================================
{
"name": "mmembed/weather/6099.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214158,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"0d1c3d56-eef3-4310-b935-65bea8ba9e4e"
],
"etag": "+m877m7tpsJmyPyMEgYu//gIgp4",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.158Z",
"updated": "2024-10-02T01:56:54.158Z",
"size": 65527,
"md5Hash": "bFI2tvxK1hO+wszHKTE/nw==",
"crc32c": "1399365792"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/1e72b424-5c06-42c0-99eb-140545880ccb.json
================================================
{
"name": "mmembed/weather/3607.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214030,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"1d33d2b8-962a-4b08-b1e0-f29daf182d4a"
],
"etag": "4OFoLgemkP+zygQa2bRy2pLUyow",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.030Z",
"updated": "2024-10-02T01:56:54.030Z",
"size": 246261,
"md5Hash": "bsRZT6YLVGdOSVM8YJzlTQ==",
"crc32c": "2299355626"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/1e859368-8d5b-4ecc-b30f-116ec3377f39.json
================================================
{
"name": "mmembed/weather/thumb_2212.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214272,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"32c1a17a-7572-466f-9745-bb7e667a4979"
],
"etag": "vMjrh2kmVK8QAU9wIraQ93a7KGs",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.272Z",
"updated": "2024-10-02T01:56:54.272Z",
"size": 9950,
"md5Hash": "QvSFmZiKMrEfuWEzYKvl7A==",
"crc32c": "3884699602"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/1f67aea5-0f3e-4b12-9554-aae3a84d5354.json
================================================
{
"name": "mmembed/weather/thumb_0596.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214228,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"5225a644-9c32-4cba-b14f-e1ae79f11147"
],
"etag": "KM+gVubYdAYUldlE0VJoSuTosa0",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.228Z",
"updated": "2024-10-02T01:56:54.228Z",
"size": 6210,
"md5Hash": "LVEw6Xwzf++yAHiLgd/yNg==",
"crc32c": "1432835939"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/1fb32b8f-72d0-43ac-8955-d3804be94bc2.json
================================================
{
"name": "mmembed/weather/thumb_0001.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214179,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"6c8078c4-600e-43d4-a8af-52e1ff9e18a2"
],
"etag": "tkSlwBaTv24h5q21flXIu+Xf4/Y",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.179Z",
"updated": "2024-10-02T01:56:54.179Z",
"size": 14648,
"md5Hash": "N+dUOYoP/oppURUSs157MA==",
"crc32c": "3009774670"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/2166725e-18e6-4982-aeb7-2f4925461bf1.json
================================================
{
"name": "mmembed/weather/0000.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213450,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"4e6ac25b-6323-49fa-bc71-6fb369af0a5e"
],
"etag": "3otu6CamzNyNi7Zkp2ImHdWTYJ0",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.450Z",
"updated": "2024-10-02T01:56:53.450Z",
"size": 539583,
"md5Hash": "t2BU1iGJwgI8oe00QcK5GQ==",
"crc32c": "2394330913"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/21af1f86-eb45-421d-90ff-962fc5509c16.json
================================================
{
"name": "mmembed/weather/14.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213869,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"23528ff9-cf7d-4ce3-9c68-f5558f3b1c86"
],
"etag": "yXv128JIIxm7cj7OpCpp+8Jaz3c",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.869Z",
"updated": "2024-10-02T01:56:53.869Z",
"size": 12281,
"md5Hash": "bj3/BPS2ORR2w3UrQMxiAg==",
"crc32c": "2392310858"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/2883e822-976c-4d81-9601-2df44f96bcd7.json
================================================
{
"name": "mmembed/weather/4083.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214080,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"f299c49b-f15e-494c-8642-a323b2e03d46"
],
"etag": "xOdR8bqTejiFN+HDOfNN4dKQ8FU",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.080Z",
"updated": "2024-10-02T01:56:54.080Z",
"size": 9973,
"md5Hash": "TEGsZAg7x3VN8tFwOuUyUg==",
"crc32c": "1292903988"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/28a96371-1742-4e03-ae5c-ba309216af49.json
================================================
{
"name": "mmembed/weather/thumb_1841.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214269,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"6d86ec72-cf93-4c07-ad63-8e02f6be5a71"
],
"etag": "T2I9ooRH9XiOwoXbGwNyHFM2BGY",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.269Z",
"updated": "2024-10-02T01:56:54.269Z",
"size": 10400,
"md5Hash": "iOKioGTPqxA7qhe7x7Wufw==",
"crc32c": "3469634376"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/2ae61d7e-7bc1-4695-bd44-3637adbef998.json
================================================
{
"name": "mmembed/weather/thumb_6093.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214340,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"69e0d26c-0a24-449d-851d-db8d32b38b49"
],
"etag": "7rK/yz/gky35aqf8PmYNRGxq0jg",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.340Z",
"updated": "2024-10-02T01:56:54.340Z",
"size": 17448,
"md5Hash": "WjAc7XrTOPSUy3Ltq6oFpw==",
"crc32c": "1331630286"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/2c938160-fe51-4222-a7d1-8220ad4ee300.json
================================================
{
"name": "mmembed/weather/thumb_4082.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214326,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"51f886c7-c036-4347-8b0b-b2f0d1a9f55d"
],
"etag": "QFlGAx9m7HJvZTOOD9NZupSYApU",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.326Z",
"updated": "2024-10-02T01:56:54.326Z",
"size": 5818,
"md5Hash": "mtj/V1ZK1Y1Mb/dFBOgiEQ==",
"crc32c": "1408660470"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/2de6149c-40aa-471f-94a1-2dd2824724d8.json
================================================
{
"name": "mmembed/weather/thumb_0007.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214190,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"1419c924-6261-47aa-aabe-a470be29f8ce"
],
"etag": "XEWb/Loy0exX9f04vZmhk9+EBv0",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.190Z",
"updated": "2024-10-02T01:56:54.190Z",
"size": 19346,
"md5Hash": "m6yrk4ZgrlJ67p0O+DVlRw==",
"crc32c": "3479293480"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/2eeccd3b-575d-4055-95d9-c5fbf26b3a8d.json
================================================
{
"name": "mmembed/weather/thumb_2216.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214277,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"4648d52a-f921-4234-a607-d88b62487598"
],
"etag": "auX1cmVBD/17tF27I7zZTyx4VjE",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.277Z",
"updated": "2024-10-02T01:56:54.277Z",
"size": 6507,
"md5Hash": "i2QVTpLoamZ9Cj1xvV+Bag==",
"crc32c": "2210589049"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/2efc3c4b-2601-4d8f-ba2b-8d84712c436e.json
================================================
{
"name": "mmembed/weather/thumb_11.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214196,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"b96a290a-566a-4de6-a487-9e0f509e461d"
],
"etag": "iOUZXj1k5QKjhtQng9VyVHcbzi0",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.196Z",
"updated": "2024-10-02T01:56:54.196Z",
"size": 14061,
"md5Hash": "S4oEhbzFkrgxd6ixg91JLw==",
"crc32c": "1517782914"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/2f4a0b48-dc3f-4fd4-be4d-726c56619302.json
================================================
{
"name": "mmembed/weather/thumb_3602.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214294,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"84cc53aa-a000-4e02-8e24-32fdea71365c"
],
"etag": "jUoSabPE8i+hVjFNEdB0JkTIwEc",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.294Z",
"updated": "2024-10-02T01:56:54.294Z",
"size": 12040,
"md5Hash": "QWuRQ9F5TXUurWjPLGe7VA==",
"crc32c": "2494328559"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/30621326-86e9-4f15-b5ea-6eaad59947df.json
================================================
{
"name": "mmembed/weather/4082.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214066,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"e11b0d61-19fc-4dd4-b4f0-b92407bb965d"
],
"etag": "Ze8BABPSms/vd2PkLE1Z9SAFF4A",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.066Z",
"updated": "2024-10-02T01:56:54.066Z",
"size": 16960,
"md5Hash": "dEiw7DU5S8vPYOvi/VfNTA==",
"crc32c": "228427894"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/30d12518-b643-48cf-8608-7aa9771fed14.json
================================================
{
"name": "mmembed/weather/3609.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214037,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"ccc8f319-a810-4fdc-bef7-c2bfdab00930"
],
"etag": "pnwR5LZQC8lZj7RQGQvhPJ9tzDE",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.037Z",
"updated": "2024-10-02T01:56:54.037Z",
"size": 143499,
"md5Hash": "y+RzIsmE2+VsbJhCWcMIJQ==",
"crc32c": "651195968"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/31500630-b5a2-4092-86b1-5f2565716d86.json
================================================
{
"name": "mmembed/weather/thumb_6094.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214335,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"b19bb670-10e8-497f-9238-ded4dd899073"
],
"etag": "Mwr/++U/0H668FSaesqfByC4kj4",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.335Z",
"updated": "2024-10-02T01:56:54.335Z",
"size": 17637,
"md5Hash": "DwzqcITq7ZDSJogk5R6GaA==",
"crc32c": "3284771992"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/31719f53-507c-4a3f-8b29-0be61178f3e7.json
================================================
{
"name": "mmembed/weather/thumb_2210.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214275,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"34415b4d-9e1f-4be4-9df1-7aef31140398"
],
"etag": "CkbtX+LCJyZhXT/BNzV0r5gCiH8",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.276Z",
"updated": "2024-10-02T01:56:54.276Z",
"size": 15346,
"md5Hash": "MICuMh82GVetlEC8r2PBrw==",
"crc32c": "3962969"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/354b878a-20c1-4b79-8a41-2b96e63eedaf.json
================================================
{
"name": "mmembed/weather/1832.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213931,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"15dc2f43-1e53-4160-b493-be3fa1fbf299"
],
"etag": "Qsu6aHLyVQE8DguCAX61r8VOt2Y",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.931Z",
"updated": "2024-10-02T01:56:53.931Z",
"size": 21470,
"md5Hash": "6KMmupRZkC9RMGMWxxkfhQ==",
"crc32c": "3889189560"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/362a4319-eac2-4157-82f8-4cc5624ab0ee.json
================================================
{
"name": "mmembed/weather/1830.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213927,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"8633bfd8-fdeb-4532-842b-263478513c9a"
],
"etag": "bHSJJivNdoBD2K7VMEjQoV6MF80",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.927Z",
"updated": "2024-10-02T01:56:53.927Z",
"size": 19711,
"md5Hash": "yVz8XZqd+ZX9bzdzBJupaA==",
"crc32c": "4225590086"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/36a45009-4146-4860-ab0f-2d41d6e1b8d2.json
================================================
{
"name": "mmembed/weather/4076.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214054,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"ae201ab0-7327-4f2f-aa06-3cc039dab0c5"
],
"etag": "P+il+WDRk4p+Cqn9GBOjnIggbGg",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.054Z",
"updated": "2024-10-02T01:56:54.054Z",
"size": 12157,
"md5Hash": "nsPT4IB6yyfOSSXNEe+KGw==",
"crc32c": "1705056797"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/36b5a479-0181-4f1b-98f4-86a64d4e1191.json
================================================
{
"name": "mmembed/weather/thumb_6095.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214337,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"e29649ec-2d82-4cbd-998e-bc4c7ca41ecc"
],
"etag": "8nbYjyHjoydaAQu8pAfkFccefCU",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.337Z",
"updated": "2024-10-02T01:56:54.337Z",
"size": 25531,
"md5Hash": "aYuWXI+gnZxzfkWSovd1EA==",
"crc32c": "1859669618"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/37be70be-0250-4281-9532-401a7bf29f41.json
================================================
{
"name": "mmembed/weather/thumb_3608.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214296,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"35b88cd4-bd58-4881-bf94-f20b77fc7038"
],
"etag": "LtOfvpJcw/EVFyw7gt3nnJ3UygE",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.296Z",
"updated": "2024-10-02T01:56:54.296Z",
"size": 19393,
"md5Hash": "1uRmOJsaB325LMlg4Wy+Tg==",
"crc32c": "2188821813"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/3954ab46-6a25-4bb6-ab32-f0d55c546cb2.json
================================================
{
"name": "mmembed/weather/thumb_0004.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214184,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"10e18a5e-2431-4eaf-b489-77cf13d11712"
],
"etag": "PSz+Ibnmn+cA50WnfCoBsbpHBCo",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.185Z",
"updated": "2024-10-02T01:56:54.185Z",
"size": 27633,
"md5Hash": "BJspDnOFSkMM+JY8HfR9+g==",
"crc32c": "1932905604"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/3b33aa14-5d04-43bd-9ef6-e30b8861d7db.json
================================================
{
"name": "mmembed/weather/thumb_3605.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214290,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"afad32ad-efeb-47ff-9e15-72a687ce2665"
],
"etag": "mn3ybaESziO5wllyrZVV6RczGfk",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.290Z",
"updated": "2024-10-02T01:56:54.290Z",
"size": 20474,
"md5Hash": "8jBq+kn7/xfvWTrL/Tr30A==",
"crc32c": "553899297"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/3b688492-90d3-4d82-b6fc-499bc09e56eb.json
================================================
{
"name": "mmembed/weather/thumb_2219.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214280,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"d9836b61-01bd-4df1-919b-2d69c724fbff"
],
"etag": "FSlhznQZPghjj5uTHUELB5Imnlo",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.280Z",
"updated": "2024-10-02T01:56:54.280Z",
"size": 13864,
"md5Hash": "H33u22ATlioSkFG8thlnPQ==",
"crc32c": "4002763423"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/3dccd76d-64a7-47c2-a9b5-eea9b2efa12f.json
================================================
{
"name": "mmembed/weather/0602.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213929,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"dfed8198-4140-4450-b2f5-1d2805a40d60"
],
"etag": "P+mSd8wV1G439q46mGCt438GbTM",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.929Z",
"updated": "2024-10-02T01:56:53.929Z",
"size": 109768,
"md5Hash": "k7ydXLiycPsoidFdEuHu8A==",
"crc32c": "162010201"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/3e64b976-d7b3-4356-92d7-0aeb15f45fd5.json
================================================
{
"name": "mmembed/weather/thumb_13.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214201,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"66e7266d-10bf-486c-9126-d8dac1b15809"
],
"etag": "yngrIBH9iuyvpKNiGEJAdDLC7Cg",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.201Z",
"updated": "2024-10-02T01:56:54.201Z",
"size": 27096,
"md5Hash": "46lmqGK4rtyIRbWh6LfP7g==",
"crc32c": "2478750340"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/3e966f04-2910-4104-8f1e-412bf33917c0.json
================================================
{
"name": "mmembed/weather/thumb_0006.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214188,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"e24b256d-029f-4a98-b546-f8f463c21b40"
],
"etag": "rgl3RZiXiNF0csHqahBwQ89zauU",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.188Z",
"updated": "2024-10-02T01:56:54.188Z",
"size": 14753,
"md5Hash": "aN+1iWnlB98OdT14uX64cw==",
"crc32c": "492567308"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/412215ae-10af-413a-9f75-861667cf12fe.json
================================================
{
"name": "mmembed/weather/thumb_0598.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214241,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"6cfaf55b-dcd1-4b6f-a730-9729abf0f64b"
],
"etag": "ou3cFpP7u2pjUcJR8wQjOoC5LD4",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.241Z",
"updated": "2024-10-02T01:56:54.241Z",
"size": 9244,
"md5Hash": "lqF9mhBbyP+p6dlFI0j4NQ==",
"crc32c": "3454634838"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/41e09631-0791-4051-96ce-4e18d05f2be9.json
================================================
{
"name": "mmembed/weather/thumb_0005.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214187,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"75718b25-82b7-4e90-b111-01ee7f7501e8"
],
"etag": "l4hQ9871l41vTqT9e6wY9XsNGaU",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.187Z",
"updated": "2024-10-02T01:56:54.187Z",
"size": 13574,
"md5Hash": "i70e6kiJHFl+XSWmk1wjZw==",
"crc32c": "1731491201"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/4223ad2c-c8fc-4f31-8454-284312b22905.json
================================================
{
"name": "mmembed/weather/thumb_0010.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214195,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"27c1191c-c2ac-4335-9d73-42b1ed62c84d"
],
"etag": "jTrHC/sAc9PZLECjdXVb+7byJyk",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.195Z",
"updated": "2024-10-02T01:56:54.195Z",
"size": 5356,
"md5Hash": "rPwsVftTIFRvP1zq6iK2Ng==",
"crc32c": "3949780381"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/42694520-432b-4928-adce-006db533f6f8.json
================================================
{
"name": "mmembed/weather/thumb_6092.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214332,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"f3430f0c-b1d2-4c52-bcc6-a57cbade8045"
],
"etag": "NCgaSVMevOt1C8m+6Fr0gsjLj4o",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.332Z",
"updated": "2024-10-02T01:56:54.332Z",
"size": 6491,
"md5Hash": "LZiiA9C0yKxdIRIw4xyt3g==",
"crc32c": "2951203737"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/4418a01d-24ec-4e4b-b29a-e0689b395969.json
================================================
{
"name": "mmembed/weather/124.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213896,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"727ba136-973a-44ff-96a7-324a32039900"
],
"etag": "QPh1gzuG0mlEDneHO0WsyiE3Os4",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.896Z",
"updated": "2024-10-02T01:56:53.896Z",
"size": 23894,
"md5Hash": "77tgnbLz73hZDIqZrscJ/A==",
"crc32c": "887769651"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/45131a81-db3a-4f9b-9330-5e2eb2b3eb44.json
================================================
{
"name": "mmembed/weather/1840.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213960,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"f96a5ad8-d2ea-4f08-b51b-3d549fad432c"
],
"etag": "9aNgHf1isHpLEQ/dX6OYJtZeBac",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.960Z",
"updated": "2024-10-02T01:56:53.960Z",
"size": 32933,
"md5Hash": "fBaaR9VX06ivQCsBVI7lVw==",
"crc32c": "1744366507"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/454a16c7-6ec4-4c29-838f-6d235d729c0d.json
================================================
{
"name": "mmembed/weather/thumb_3604.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214289,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"1fb990cf-1058-43da-9a6c-5431270d0631"
],
"etag": "YV2mgi2fgaUZY3wCplu2PyIvgtE",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.289Z",
"updated": "2024-10-02T01:56:54.289Z",
"size": 9632,
"md5Hash": "tWJj5paDt7Y9mANH1RzXjQ==",
"crc32c": "3605923073"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/45b0127e-7f92-437f-97e4-f96b50ca60f6.json
================================================
{
"name": "mmembed/weather/thumb_1839.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214260,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"5c03cd07-50cd-4141-a3fb-56d99223449d"
],
"etag": "xpVrhqw9D43bFkcMzE/G6zq2hwA",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.260Z",
"updated": "2024-10-02T01:56:54.260Z",
"size": 4612,
"md5Hash": "Oa0H97mjZ42z5tf8UMeeRw==",
"crc32c": "3687014695"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/460d8563-7063-413d-aa9c-d50fb8c9a0a3.json
================================================
{
"name": "mmembed/weather/thumb_3607.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214303,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"bfceba7b-408a-49d2-85ff-e669a6f21292"
],
"etag": "9/ihJD9hQ3QdVufOVqNw3w4mygY",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.303Z",
"updated": "2024-10-02T01:56:54.303Z",
"size": 13181,
"md5Hash": "AtNGp96+AAAw/PprhuKCjw==",
"crc32c": "169596319"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/464ea502-b1a7-47a1-af48-7b4296b13896.json
================================================
{
"name": "mmembed/weather/0592.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213907,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"7d909733-ac14-4419-9068-e6da95783596"
],
"etag": "jF9SYVzxUBOu63GW3cv9Yje4dmI",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.907Z",
"updated": "2024-10-02T01:56:53.907Z",
"size": 53095,
"md5Hash": "uo5N9JedSjjUTUSgkHjERA==",
"crc32c": "3657379677"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/477f1478-d154-44c1-9b3e-f7bc08b81b1b.json
================================================
{
"name": "mmembed/weather/106.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213886,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"90a32e61-40fb-4fca-9ec8-52f4ff67910a"
],
"etag": "KU9A0y3v84BH7jWUB/E2+WBsqbU",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.886Z",
"updated": "2024-10-02T01:56:53.886Z",
"size": 21849,
"md5Hash": "MjPpZUODEzK0TP6Kh01Npw==",
"crc32c": "1516988867"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/47a173ba-dd3f-4e02-8409-e46bf5c831ca.json
================================================
{
"name": "mmembed/weather/0593.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213900,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"affcfda3-e19b-49d9-b612-190638a797ce"
],
"etag": "9bXcK+zQ3JGuLkG/s4gPCgd8730",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.900Z",
"updated": "2024-10-02T01:56:53.900Z",
"size": 115829,
"md5Hash": "WSV/E6ETEDN9oBU2bQaaDw==",
"crc32c": "486872548"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/47eb894d-5a60-4c64-b22a-f496f63a869e.json
================================================
{
"name": "mmembed/weather/thumb_6091.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214330,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"6b314ac1-6a05-48af-bc1d-90b7ae087ebe"
],
"etag": "eCbgGLT9fJ3DUO/h7imZ2AHczUA",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.330Z",
"updated": "2024-10-02T01:56:54.330Z",
"size": 33125,
"md5Hash": "0imAdgbpsQj5mf2mSE3IlA==",
"crc32c": "2996066578"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/487cbb33-22c6-41f6-8e6e-4125927e2f20.json
================================================
{
"name": "mmembed/weather/thumb_0599.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214236,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"bc930d72-2e0f-47e8-aecd-3a675237fc85"
],
"etag": "vj6gSRIu6WeVkExwwyAQkFn1uGc",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.236Z",
"updated": "2024-10-02T01:56:54.236Z",
"size": 2991,
"md5Hash": "zTZmMLaiduXHKI01iY/Flg==",
"crc32c": "1443784698"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/495964a6-f764-487d-aec8-a1c1c02d8be3.json
================================================
{
"name": "mmembed/weather/2215.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213991,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"72fa668e-e67e-4ea9-9764-c16bc4773f15"
],
"etag": "AtZ4gamvXGLf+YRil6SNAj1pfuU",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.991Z",
"updated": "2024-10-02T01:56:53.991Z",
"size": 50405,
"md5Hash": "JfggXOu+UjX0A1CeVOuq5g==",
"crc32c": "4280889935"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/4ad91f5f-7c9e-40e4-9c4f-c03a22bd8b2f.json
================================================
{
"name": "mmembed/weather/1838.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213957,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"9f8afbdd-8a32-4dfe-b4a6-b6070664bb6e"
],
"etag": "COWpWHEwcd6MwTwlvxGc4MPkIfI",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.957Z",
"updated": "2024-10-02T01:56:53.957Z",
"size": 27264,
"md5Hash": "i1akiaYkbk4T08zRt79olw==",
"crc32c": "2625837919"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/5012b076-ef07-41c8-9da7-033e2af2f579.json
================================================
{
"name": "mmembed/weather/thumb_102.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214204,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"35444da3-8425-41ce-8886-a756cebdb00b"
],
"etag": "hz1LPcgP16jv74x/9TEEsXyla9o",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.204Z",
"updated": "2024-10-02T01:56:54.204Z",
"size": 18821,
"md5Hash": "QuP/MBSHHwd9lAnOBYhwzg==",
"crc32c": "3789881989"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/50b673c2-e1b9-4b84-bbcc-1c47cca0cace.json
================================================
{
"name": "mmembed/weather/thumb_4076.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214307,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"54735d91-caa8-452d-86a8-9fb579ca50c8"
],
"etag": "/AgTV/fbMen2FufU7J1LivfxsLM",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.307Z",
"updated": "2024-10-02T01:56:54.307Z",
"size": 7830,
"md5Hash": "eKCZRMiLJl3+wCa6Ad+YMQ==",
"crc32c": "259118115"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/530a9038-98b8-4925-b26b-f5c7776d882f.json
================================================
{
"name": "mmembed/weather/3606.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214024,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"a25f918e-095e-409e-9582-95bb85c15cde"
],
"etag": "LaNXGBnFQeeqhbqMLTtEWm8Amtw",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.024Z",
"updated": "2024-10-02T01:56:54.024Z",
"size": 603596,
"md5Hash": "nUykxJA/bboVK7I0WyOPGQ==",
"crc32c": "3099203018"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/55e55a5c-a59a-4c7f-846a-73784ee2f25d.json
================================================
{
"name": "mmembed/weather/0003.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213621,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"cecf4476-5182-4f6c-95ec-713426b8f2ad"
],
"etag": "bngEx7bxIOkZBqosHMubh2Bb2W8",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.621Z",
"updated": "2024-10-02T01:56:53.621Z",
"size": 13733,
"md5Hash": "xnrgPwP2jPZJ9ZoTuyMicA==",
"crc32c": "1739771885"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/563a8d9a-0285-4496-aaba-59138c349dad.json
================================================
{
"name": "mmembed/weather/6093.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214137,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"c4c2d5f9-0a4e-42ff-9058-0cee4c01e695"
],
"etag": "G/GFdMINYijbjonEHXRxH0YFVYs",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.137Z",
"updated": "2024-10-02T01:56:54.137Z",
"size": 53877,
"md5Hash": "/aIkhYm4NNIlaQkb5fKomw==",
"crc32c": "549122946"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/58852f43-76ea-4ad1-9c6a-a33c2c53ff56.json
================================================
{
"name": "mmembed/weather/thumb_0601.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214238,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"fe6531cf-0cec-4ae0-93fe-5d94475829a5"
],
"etag": "sI5kosKgk35AGzECbhiIX+vPHGg",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.239Z",
"updated": "2024-10-02T01:56:54.239Z",
"size": 7430,
"md5Hash": "4MqvPK+1q4def/E0KPTLzg==",
"crc32c": "3466385387"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/5a3ce50b-2658-4f68-b12d-0eec92a7223a.json
================================================
{
"name": "mmembed/weather/0013.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213868,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"60ec79c0-9e88-4281-bcfe-2bb5b0e7f044"
],
"etag": "QUvjciRqphu3PDPLkQKuWoKLm0k",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.868Z",
"updated": "2024-10-02T01:56:53.868Z",
"size": 16205,
"md5Hash": "1CfteG+uGzrpmbkhkb6igw==",
"crc32c": "574220549"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/5a3ecd67-d20b-405d-83f7-86ff772f6d6f.json
================================================
{
"name": "mmembed/weather/3600.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214020,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"b32b4d21-7e78-423a-b9d1-37cca1400f72"
],
"etag": "zgCG856MJkxlhgYOu02M4YMLM7c",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.020Z",
"updated": "2024-10-02T01:56:54.020Z",
"size": 28028,
"md5Hash": "WGmoF47MOum3Zo9vrtl/zQ==",
"crc32c": "1934178353"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/5b388511-e3b8-4d3f-b0bf-d085f75c7769.json
================================================
{
"name": "mmembed/weather/2211.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213984,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"fab174f1-6742-496f-998e-af5e71067a2f"
],
"etag": "fhqY84X6UV1dhUqv5MfliUM12eE",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.984Z",
"updated": "2024-10-02T01:56:53.984Z",
"size": 152175,
"md5Hash": "pUCkLaR99u2yCieH5py8Kw==",
"crc32c": "2764797711"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/5b62fd41-e2a2-4ba6-b305-a854619a947b.json
================================================
{
"name": "mmembed/weather/0605.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213925,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"911f6664-eb6f-4476-8da5-68819c391377"
],
"etag": "TJqzPSAUC+x6vpxI1N7pVPjMbWQ",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.925Z",
"updated": "2024-10-02T01:56:53.925Z",
"size": 17757,
"md5Hash": "HREGccJqC4+lpvGR56RK7w==",
"crc32c": "503857714"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/5ef2346d-d39e-49ce-b26a-9e5069dba421.json
================================================
{
"name": "mmembed/weather/thumb_1830.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214245,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"4949bd26-82c5-4328-9fc9-5c1c477e4a16"
],
"etag": "kCrj3756USzzYaASOZ9tNKvNK9M",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.245Z",
"updated": "2024-10-02T01:56:54.245Z",
"size": 5036,
"md5Hash": "h/sR7Qoo78md/48zjEPIxQ==",
"crc32c": "1710719719"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/5fd6d66a-8bf1-4f81-b0eb-9895552a8ec4.json
================================================
{
"name": "mmembed/weather/6103.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214166,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"a2845089-4277-46f2-8291-e124787ef0df"
],
"etag": "W+b3frXMQ1FDhyQLZlQ8ixdFD5M",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.166Z",
"updated": "2024-10-02T01:56:54.166Z",
"size": 68373,
"md5Hash": "8QLdvu/5AP3zd5dImHZnQg==",
"crc32c": "2865485624"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/61556f93-4dd2-43e5-bc4d-78cbe3809d42.json
================================================
{
"name": "mmembed/weather/1843.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213969,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"f5423ad6-87f2-4d5a-b959-06ee45f01396"
],
"etag": "uT8QFPTu8s27gzWZimzKk7/M0ys",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.969Z",
"updated": "2024-10-02T01:56:53.969Z",
"size": 26236,
"md5Hash": "eMH7jvZfzrPwfJ9IZz+X0Q==",
"crc32c": "4270796985"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/620c1be4-e353-46d9-8dbd-c3079d5efd6e.json
================================================
{
"name": "mmembed/weather/thumb_2218.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214279,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"58d03cd2-022d-41b1-af74-25b198b75efc"
],
"etag": "wISTnZ7oQX3KlA5+eQxvduQivls",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.279Z",
"updated": "2024-10-02T01:56:54.279Z",
"size": 14001,
"md5Hash": "EWjvR1y5f0eUP5GQgVXUog==",
"crc32c": "1369497715"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/62b85256-0f54-47cb-ae83-d45cd0a66030.json
================================================
{
"name": "mmembed/weather/1833.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213934,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"2200ead9-e8fb-4775-a6a3-27c67987d98f"
],
"etag": "8KvdjysS1w/6Jx/CXiAhOrsDfjE",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.934Z",
"updated": "2024-10-02T01:56:53.934Z",
"size": 126668,
"md5Hash": "v9uxoePXfz4QnXChJbrUmA==",
"crc32c": "4133910751"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/64609c87-07e8-48a4-b8c2-a26210e1dd0b.json
================================================
{
"name": "mmembed/weather/thumb_3606.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214292,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"ff760ced-f87e-418e-aa83-3669f7c845a7"
],
"etag": "d8WfrO0CvzDVV4i+JWM5RO2Ho0c",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.292Z",
"updated": "2024-10-02T01:56:54.292Z",
"size": 22335,
"md5Hash": "VC1N5in+R2BcGYVPf/Kq1Q==",
"crc32c": "1788696116"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/64f13cdd-ee8c-4238-b66b-14c1baa578e3.json
================================================
{
"name": "mmembed/weather/4086.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214077,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"cb0014b8-6ccc-4d64-82b4-f476cc5a2e48"
],
"etag": "SmReYlruPXIo6Dito/maMYsHf4k",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.077Z",
"updated": "2024-10-02T01:56:54.077Z",
"size": 39256,
"md5Hash": "YftzDtUDeaO5EFSmvIojwQ==",
"crc32c": "3662402265"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/65c4dee4-4429-4eae-9250-2e969f3c190a.json
================================================
{
"name": "mmembed/weather/thumb_4080.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214313,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"ac5cb996-588f-4035-a466-4ffe00c42639"
],
"etag": "HzUU1MrNtOOlZ078SldpFf1EfsY",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.313Z",
"updated": "2024-10-02T01:56:54.313Z",
"size": 5787,
"md5Hash": "5+gro/fUDo1nRuO3CK+hkg==",
"crc32c": "3803752996"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/66569702-2074-4047-a794-4f11e3b285f2.json
================================================
{
"name": "mmembed/weather/4075.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214047,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"dd222bb2-836f-453d-acd3-7fa7b2f6a9b9"
],
"etag": "nO8pOfVz8+kIv0lo9dnv2j+/dTM",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.047Z",
"updated": "2024-10-02T01:56:54.047Z",
"size": 47697,
"md5Hash": "IvqpVthzTYHdDdmfSUnmYg==",
"crc32c": "2393731617"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/67aaca3d-2acc-4987-8ed9-3f2fbf075f7c.json
================================================
{
"name": "mmembed/weather/2214.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213989,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"3beaf521-4b5a-4816-bbc8-3bc0c12a99ed"
],
"etag": "prmucYR8TJuDuF+GvTj6op9jMR4",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.989Z",
"updated": "2024-10-02T01:56:53.989Z",
"size": 55305,
"md5Hash": "APKEA6TLVXzgcbH7zY3jKA==",
"crc32c": "1323378059"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/67b6aeb1-b7d0-4402-8a60-b2f9c0c8b447.json
================================================
{
"name": "mmembed/weather/2216.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213993,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"48e4100d-8870-45a1-a633-5675c0efa081"
],
"etag": "W/0gQsvuevg6427l1/ZceAaTKWo",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.993Z",
"updated": "2024-10-02T01:56:53.993Z",
"size": 110773,
"md5Hash": "nRTETV67es90Vo5xN2Y2NQ==",
"crc32c": "560262473"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/686d4f0b-5c28-48f4-b656-b354a13981a7.json
================================================
{
"name": "mmembed/weather/thumb_0600.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214237,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"68380d0a-fff9-4091-9064-7b616de385bf"
],
"etag": "2JcvxU9inHjh8QVo850iqruXdkg",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.237Z",
"updated": "2024-10-02T01:56:54.237Z",
"size": 7463,
"md5Hash": "oYm//K8/M991iaB6LGf8ow==",
"crc32c": "652887366"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/69657785-7299-408d-8453-8cb32f848150.json
================================================
{
"name": "mmembed/weather/2220.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213998,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"9723402e-e7fe-4b66-a194-abe8da711d8a"
],
"etag": "b82ImF8DBQznCWrkutLCaXCjJuE",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.998Z",
"updated": "2024-10-02T01:56:53.998Z",
"size": 240631,
"md5Hash": "480XiYifKZmg83tZurcLyQ==",
"crc32c": "1959190398"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/6b6f7c8b-a5b9-4436-80a0-f128c1eb3bcf.json
================================================
{
"name": "mmembed/weather/2218.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214004,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"4b6ee53f-d130-4a73-a421-d1359e461f9d"
],
"etag": "O9zYErRG7jjrp/SEqaM9lvdpnZc",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.004Z",
"updated": "2024-10-02T01:56:54.004Z",
"size": 105169,
"md5Hash": "Y4ivqX2d4Emu/acyy2o9ug==",
"crc32c": "1468776016"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/6d8f5f9c-fef6-4179-ba05-79e361503c7a.json
================================================
{
"name": "mmembed/weather/thumb_1842.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214264,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"d5a42bc8-a9e7-4ead-b187-729a19222992"
],
"etag": "5rl9oLEuswNcG8Lnk8ppUdvzCkk",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.264Z",
"updated": "2024-10-02T01:56:54.264Z",
"size": 3739,
"md5Hash": "P5BLZCL8FIaSbMlwm9xVvg==",
"crc32c": "2919985240"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/70772163-4c3b-493a-ad04-87b67ee35d71.json
================================================
{
"name": "mmembed/weather/thumb_119.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214223,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"212998eb-efa9-468e-85cf-bb928dfc8cb6"
],
"etag": "osvQLJW5RYqc9O1+M4kktPNGOdU",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.223Z",
"updated": "2024-10-02T01:56:54.223Z",
"size": 184568,
"md5Hash": "rgkaIA10HXFLSyWM7VDBoA==",
"crc32c": "3219441820"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/70c43a85-254c-49b1-bf14-d13687913f2d.json
================================================
{
"name": "mmembed/weather/0010.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213851,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"32ab255e-b06d-4753-8c1d-10bb472e2894"
],
"etag": "+0wujO4BADxdGadQDJf/oiN4sXw",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.851Z",
"updated": "2024-10-02T01:56:53.851Z",
"size": 11953,
"md5Hash": "c8tR5NDTdqZqEzgz8PBvVA==",
"crc32c": "871164411"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/70db2153-5bbf-42f6-91bc-f3cb4249dc01.json
================================================
{
"name": "mmembed/weather/109.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213877,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"5c9d4026-f8f3-4fa7-9317-61a4c872dc33"
],
"etag": "TmdBvuaECpRq8XJVAmhp8TZj/I4",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.877Z",
"updated": "2024-10-02T01:56:53.877Z",
"size": 48526,
"md5Hash": "sLc3SM09LHnm78qJTmwjeA==",
"crc32c": "3051722894"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/70ef85a5-fb7a-41ff-ac02-0d00927d0274.json
================================================
{
"name": "mmembed/weather/119.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213893,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"c574255b-e4dc-4a82-ba2b-2bd3982641e7"
],
"etag": "n7eIUY/8C2YdIiJGosQ0P9hDy8M",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.894Z",
"updated": "2024-10-02T01:56:53.894Z",
"size": 201953,
"md5Hash": "cSLL1qbqsPZq1pXKp2TrGg==",
"crc32c": "3016202184"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/70fc8a82-bfeb-4bb7-bb95-2a654168ead1.json
================================================
{
"name": "mmembed/weather/thumb_6101.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214344,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"5e6448d9-9bac-497e-bf6b-8dfc1d4a860c"
],
"etag": "Yi46ueXmnar/+xX180By/71gQs0",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.344Z",
"updated": "2024-10-02T01:56:54.344Z",
"size": 21495,
"md5Hash": "/2aXK45YqlzyWLGsC0QM1A==",
"crc32c": "105193236"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/71894824-0cd9-4acf-9178-abba58090e42.json
================================================
{
"name": "mmembed/weather/thumb_0000.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214177,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"660e7b50-a1c9-4143-bcc6-4baa330cbf41"
],
"etag": "oLrsvK0/XrJhucp15NIcQBLgRok",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.177Z",
"updated": "2024-10-02T01:56:54.177Z",
"size": 21893,
"md5Hash": "pPKb1T0Pbn9tznH4TrieHA==",
"crc32c": "2709331183"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/721bdd57-7850-42e4-9fb9-747525b187c8.json
================================================
{
"name": "mmembed/weather/2210.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213978,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"833069fd-9274-48ae-a473-01dcb55c52d2"
],
"etag": "NxOLgVfi2bGXsjWj6ijsyeyjMDI",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.979Z",
"updated": "2024-10-02T01:56:53.979Z",
"size": 137409,
"md5Hash": "MY1mvHenkUQDerOoOyEUag==",
"crc32c": "3024698090"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/7706c66e-3fd9-45eb-9df5-8308b84dd194.json
================================================
{
"name": "mmembed/weather/thumb_0594.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214234,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"f031d5e0-75b3-485c-9a3b-1f5a29a72aea"
],
"etag": "xnMo0nveehbnlKqQOxgRrpuui0s",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.234Z",
"updated": "2024-10-02T01:56:54.234Z",
"size": 6568,
"md5Hash": "6bYB+1yEYyn9Suxz9hXAZw==",
"crc32c": "2042269277"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/7846c694-8e7a-47dd-b8b8-a2448285dcc0.json
================================================
{
"name": "mmembed/weather/2221.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214002,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"c451dc62-9aa4-41af-a8fe-d491e9fdef94"
],
"etag": "4HTyUZHaphEnrmTrO2LOoUMGypI",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.002Z",
"updated": "2024-10-02T01:56:54.002Z",
"size": 130087,
"md5Hash": "nwRhNI02O2iYOBeFc3a/Xw==",
"crc32c": "876363489"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/78a3c767-265f-419d-bb3f-c3eba6e22017.json
================================================
{
"name": "mmembed/weather/6097.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214152,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"3ac00b79-78be-476b-982d-4ac07a2c116a"
],
"etag": "qHOhIUmZxyiGUGxuUiKEBCP1nRM",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.152Z",
"updated": "2024-10-02T01:56:54.152Z",
"size": 10514,
"md5Hash": "W5tvMEYVy7Ub1NRioyV5rg==",
"crc32c": "2863558512"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/78dd9bfd-a0ca-4ac9-9473-45d0d051fb1e.json
================================================
{
"name": "mmembed/weather/thumb_4085.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214323,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"7e6394a8-d4a2-46bd-a30a-2b94a3908f5a"
],
"etag": "6rqOmp0TTT9YbTORm/n3lcpgP58",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.323Z",
"updated": "2024-10-02T01:56:54.323Z",
"size": 5733,
"md5Hash": "fOWQsKphj47TRFJRfT7WGw==",
"crc32c": "1594951559"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/799fcdd0-1054-4c53-a218-48cb8f3ed044.json
================================================
{
"name": "mmembed/weather/3610.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214050,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"5a3a7482-f47c-4b5d-a0ff-d29297bdbbc4"
],
"etag": "OF4HrO4/YpO4AT1EwjB7sIYwwNk",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.050Z",
"updated": "2024-10-02T01:56:54.050Z",
"size": 330766,
"md5Hash": "HohL6/hC2Ez78T5XWzgqEQ==",
"crc32c": "3322523345"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/7a5a7379-d29b-412b-9a50-565e171ab712.json
================================================
{
"name": "mmembed/weather/3612.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214060,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"b1954fab-edb2-4ee0-9bc3-adb3d62d58c0"
],
"etag": "Nm4gapwheutdZv89Xd7uxYtoYtA",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.060Z",
"updated": "2024-10-02T01:56:54.060Z",
"size": 178642,
"md5Hash": "KmX44pUzFa3EhNHDKIqR2A==",
"crc32c": "3247754625"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/7c12f79f-d474-446f-b5fe-f669e60f8227.json
================================================
{
"name": "mmembed/weather/thumb_0009.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214193,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"5ed76562-4a28-4a25-a454-33aeec4b27c9"
],
"etag": "c6a8/GHF0OBZghgQJA+FPE8PMtY",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.193Z",
"updated": "2024-10-02T01:56:54.193Z",
"size": 7599,
"md5Hash": "sSv5IQBzTLfSFfv+fMbmoQ==",
"crc32c": "714336334"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/7c4a2540-75b9-4e37-b4b1-a6d7f62830cb.json
================================================
{
"name": "mmembed/weather/thumb_110.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214216,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"14381b2f-76b1-4858-8842-4ac8e3a72cc0"
],
"etag": "wEBBzEAU5NNvVNaNskfGZftch84",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.216Z",
"updated": "2024-10-02T01:56:54.216Z",
"size": 14074,
"md5Hash": "4Q6ugWCDx4YcCNItDXwdVg==",
"crc32c": "3833393849"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/7c689600-cf26-4953-8be5-ae58faa5cad0.json
================================================
{
"name": "mmembed/weather/thumb_1834.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214251,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"b836a652-7f4e-4545-bf82-3656ff9cbc6b"
],
"etag": "psNiCiLdvSLyXwhqNqehbVT4lbM",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.251Z",
"updated": "2024-10-02T01:56:54.251Z",
"size": 6774,
"md5Hash": "/wYDZinpYwHynnPfoCRzhw==",
"crc32c": "2304315075"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/7d321a59-d6c9-433e-bfcb-2ee10dcd2745.json
================================================
{
"name": "mmembed/weather/6102.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214182,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"71cf147d-11c1-4140-b568-91d6bf1924c8"
],
"etag": "Gnq9yHrKiPQDBEnUSJpJWSqyP8A",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.183Z",
"updated": "2024-10-02T01:56:54.183Z",
"size": 37928,
"md5Hash": "j0RLbyd4qOiwNxeLBKSBfQ==",
"crc32c": "1082194485"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/7ff005e0-3f17-423f-9a04-1d762447eb07.json
================================================
{
"name": "mmembed/weather/thumb_3603.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214295,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"765b3423-3bf3-4eb0-9438-51248125b826"
],
"etag": "FPNmjT38rhVqlG1znVGsBDXz2r0",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.295Z",
"updated": "2024-10-02T01:56:54.295Z",
"size": 18808,
"md5Hash": "xeU3eYbTPsZt6FJv+klnrg==",
"crc32c": "4276021197"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/8278f4eb-708a-4054-b408-9b4a2a8d6b7a.json
================================================
{
"name": "mmembed/weather/thumb_0012.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214206,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"86363b5c-2edc-431c-aa57-fb789e19e15d"
],
"etag": "Re2SnK2f4i7a2/8UEm3Xh9n49AE",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.206Z",
"updated": "2024-10-02T01:56:54.206Z",
"size": 62035,
"md5Hash": "JHwk8v4LncD3y+JVoV180g==",
"crc32c": "3453592618"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/828f697d-fd40-470e-8326-8a40dccf9096.json
================================================
{
"name": "mmembed/weather/thumb_4081.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214314,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"ed661fc5-b1e6-4597-8284-c64af03761b2"
],
"etag": "qzBi9T2GqaMx0BBPe6ykGWUgC50",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.315Z",
"updated": "2024-10-02T01:56:54.315Z",
"size": 6778,
"md5Hash": "FGrKvi2M4dHY/ARO8XdqCA==",
"crc32c": "1041255470"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/832cacff-0ed7-4685-a383-a0d94e6a366e.json
================================================
{
"name": "mmembed/weather/thumb_1835.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214252,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"c584bd98-19f5-438c-a9ee-75588cc152d4"
],
"etag": "Gs4GJ7eJOJbHT2qKZ4yeWTudJxU",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.252Z",
"updated": "2024-10-02T01:56:54.252Z",
"size": 5994,
"md5Hash": "Giyn9TwDMkj6kMUMR4gd9w==",
"crc32c": "2908595589"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/84307d32-0903-4a1c-8599-9d3938995da6.json
================================================
{
"name": "mmembed/weather/4080.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214063,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"3a1c3103-356e-4827-8cc6-b35d17322317"
],
"etag": "Kv7Zw01geZzRdVPSpOGqDtYcohs",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.063Z",
"updated": "2024-10-02T01:56:54.063Z",
"size": 8026,
"md5Hash": "JKH1aDs6nAB7Uhgzyidt5A==",
"crc32c": "2659669049"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/84491769-76dd-4667-825d-95156d99ba3f.json
================================================
{
"name": "mmembed/weather/1834.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213937,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"d4374770-9e98-48f4-a2a2-976adcf0b616"
],
"etag": "T6RhNbSkZaFszl1Z1t99eM7km20",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.937Z",
"updated": "2024-10-02T01:56:53.937Z",
"size": 21036,
"md5Hash": "k1IrjYDX/6607vDOAoCiYg==",
"crc32c": "2629582504"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/848c006e-a50c-4d24-9e96-f9b12ab5f66b.json
================================================
{
"name": "mmembed/weather/1841.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213976,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"34df9bb7-e2cc-4c82-92c5-c19951c81a07"
],
"etag": "G2hY5uaL2Jm/vbyqgHvtmYZaFDc",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.976Z",
"updated": "2024-10-02T01:56:53.976Z",
"size": 14853,
"md5Hash": "SwZNMDw/oX7nNJ268sP3BQ==",
"crc32c": "2387074229"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/8628a1cb-e588-483c-b00f-ba449d2c27b1.json
================================================
{
"name": "mmembed/weather/thumb_4088.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214327,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"14e18b82-4118-4fff-80cd-1f9c353fd485"
],
"etag": "6490ilJZi9nTg1qvfBYHE64mbgM",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.327Z",
"updated": "2024-10-02T01:56:54.327Z",
"size": 10184,
"md5Hash": "u9Lj0Ehs/UZsG9DJybxE5Q==",
"crc32c": "2106708215"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/87039e64-1d6f-4f28-92e5-322ae686133d.json
================================================
{
"name": "mmembed/weather/105.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213883,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"802cad08-fc65-45bc-8b06-6be101576302"
],
"etag": "BtPa6dlRKjdPv+bTEwbDNtyP1DA",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.883Z",
"updated": "2024-10-02T01:56:53.883Z",
"size": 123336,
"md5Hash": "kos1aAwpwf6znM3t7OUcCA==",
"crc32c": "384242595"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/884b9432-28fb-465b-a826-35daec2593d7.json
================================================
{
"name": "mmembed/weather/thumb_2221.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214284,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"9c88c876-ca87-46fa-bf84-377d5453ad65"
],
"etag": "azo0G2Qsb2f+RMu+gTDHL5lcIOc",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.284Z",
"updated": "2024-10-02T01:56:54.284Z",
"size": 18035,
"md5Hash": "oju9GCokmZDblCIjBxTPnQ==",
"crc32c": "2237944386"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/8bc987b7-d22f-4331-8de5-7149d9b73361.json
================================================
{
"name": "mmembed/weather/117.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213891,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"280e750c-b154-40fe-aaf3-0ab0eb1588e0"
],
"etag": "6r2ntJ2f8bmdCsMAAxYlqfwO+qo",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.891Z",
"updated": "2024-10-02T01:56:53.891Z",
"size": 114157,
"md5Hash": "KM8Lta/C3oRXpV7I0RkgIw==",
"crc32c": "3742704072"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/8cd45f77-4225-412e-9c61-bb90285356c5.json
================================================
{
"name": "mmembed/weather/1835.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213939,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"13f1be4e-a3ee-420e-a123-48885f29579e"
],
"etag": "32u/odGUtAV/NYBGd5V9CpMX8Mo",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.939Z",
"updated": "2024-10-02T01:56:53.939Z",
"size": 13504,
"md5Hash": "XvklOeaT7ev+Mh33VlYN1w==",
"crc32c": "2503840333"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/8e0d391e-c779-4a34-a8de-f6abccc701ab.json
================================================
{
"name": "mmembed/weather/thumb_0603.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214247,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"fd65958f-fa37-4e7e-ada8-47d933e22a96"
],
"etag": "D1jH8RfEQJpJgLcPg5r0PML3mQ8",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.247Z",
"updated": "2024-10-02T01:56:54.247Z",
"size": 15876,
"md5Hash": "5tQg5E/w40Mkdua09k63/Q==",
"crc32c": "2729687274"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/8f014805-5f51-439d-9447-b686abf889fa.json
================================================
{
"name": "mmembed/weather/3602.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214011,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"e60d8db1-26b5-4d79-88cb-374a5f6f4bfb"
],
"etag": "e8+B8CZxaNL78KRIpMfj0HGgFEs",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.011Z",
"updated": "2024-10-02T01:56:54.011Z",
"size": 74273,
"md5Hash": "Ys/5itQE89+ClXMSlmSe8g==",
"crc32c": "3942032353"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/91006bcb-22a2-480d-83ba-5393a41c6558.json
================================================
{
"name": "mmembed/weather/3605.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214107,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"188c4bb8-a521-40dc-92de-bf988bc0183e"
],
"etag": "TDpSCbLAqEYfe0JRgaT15dHb+Hs",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.107Z",
"updated": "2024-10-02T01:56:54.107Z",
"size": 3589046,
"md5Hash": "Wp4c0dtf3fxU3n3risBxyA==",
"crc32c": "959535698"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/91bbc49d-9748-4638-a75c-573f23ff7c5e.json
================================================
{
"name": "mmembed/weather/4088.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214082,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"c151feb4-ec2e-4ea9-93d1-05d49db873b1"
],
"etag": "vYmeFyqOUeG2lQb4zR5aPSet/X8",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.082Z",
"updated": "2024-10-02T01:56:54.082Z",
"size": 17114,
"md5Hash": "TgIp7BRkROD0tRukk27uIg==",
"crc32c": "2219821404"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/92e62795-a847-46bc-a983-8f2f975f4ac3.json
================================================
{
"name": "mmembed/weather/thumb_0593.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214232,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"507d7c43-bd28-40fd-b14f-b0e964e23306"
],
"etag": "kqapa8uPK5NWJhrMxCfZs4wBsJ4",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.232Z",
"updated": "2024-10-02T01:56:54.232Z",
"size": 169233,
"md5Hash": "tz/Qdxc3hM2YqJVzRDx6NQ==",
"crc32c": "4281738524"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/92e944f9-bcfa-4e3c-95ad-2d6619cc377b.json
================================================
{
"name": "mmembed/weather/0598.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213909,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"84fbced3-8931-400d-aed7-b31a5520f25e"
],
"etag": "EBgsNdTVze7PdMu8lNazC4u3GSI",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.909Z",
"updated": "2024-10-02T01:56:53.909Z",
"size": 28392,
"md5Hash": "hAI0WD3dLJ+1mX68fEy7FA==",
"crc32c": "1132548163"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/934f914b-21f8-45e6-812c-ac29926508c3.json
================================================
{
"name": "mmembed/weather/0599.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213910,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"afc97942-bc1b-461b-86e4-bc7005df7bb2"
],
"etag": "+TODb7WJrIplvXv806U1TuiWPuQ",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.910Z",
"updated": "2024-10-02T01:56:53.910Z",
"size": 20624,
"md5Hash": "yK+tJqWmz53zwLyS2iiuAQ==",
"crc32c": "2349321410"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/96d4fbff-3d58-4cef-b6f0-393751f39a80.json
================================================
{
"name": "mmembed/weather/thumb_4084.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214322,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"5476c9d8-6fdd-4903-bde8-25fd8ae68345"
],
"etag": "r4IOmFr3nJC7lqUyARhmRp1tvq8",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.322Z",
"updated": "2024-10-02T01:56:54.322Z",
"size": 4026,
"md5Hash": "kgowcv9VxuIi1k5mxECMWw==",
"crc32c": "2107554066"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/98ca7091-441b-471c-a3cc-7a7e94826534.json
================================================
{
"name": "mmembed/weather/thumb_4079.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214311,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"9e8635ef-e482-40f2-a49a-f7b60b812ab7"
],
"etag": "SUQOdUTyUD32Qi2A/rCXU3lIheQ",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.311Z",
"updated": "2024-10-02T01:56:54.311Z",
"size": 5019,
"md5Hash": "08pndY7X9eAzq0/BixDxZA==",
"crc32c": "3429608544"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/991c80af-1b3f-454c-8716-c45ed7023269.json
================================================
{
"name": "mmembed/weather/1831.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213951,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"dee95dda-b2b5-4271-b0fe-b7c50b4fa2e0"
],
"etag": "mYaZ7sHh/u1YoFWxX+J2HvJrKyU",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.951Z",
"updated": "2024-10-02T01:56:53.951Z",
"size": 68794,
"md5Hash": "R3mwgiyk/n3dq7/Ax/gtFQ==",
"crc32c": "207836512"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/9ab4a412-9175-410b-8281-65999c677106.json
================================================
{
"name": "mmembed/weather/4084.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214072,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"3a2ef093-d5aa-4594-ab55-0cdd4e2949dd"
],
"etag": "QstnidhZPti25z7Vgs5ublIiX9g",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.072Z",
"updated": "2024-10-02T01:56:54.072Z",
"size": 22280,
"md5Hash": "NOZ/X7vNFN1MixibhAbD7g==",
"crc32c": "2636184080"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/9d4fbb56-2a44-4866-9489-03d9312fdd55.json
================================================
{
"name": "mmembed/weather/thumb_1843.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214265,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"89e520fa-25a3-42b6-883d-ddfd4476f797"
],
"etag": "rqlonyolY69cl8n6D9YTGTDDvnE",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.265Z",
"updated": "2024-10-02T01:56:54.265Z",
"size": 5332,
"md5Hash": "SlR/COm5Tv3kmFq5SzVw4Q==",
"crc32c": "1983870227"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/9edac21b-4d29-4a5a-a5cd-5aac086224df.json
================================================
{
"name": "mmembed/weather/thumb_0013.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214202,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"d052916d-1766-44d5-a8fb-9ac98b753dc8"
],
"etag": "VW/AjkoxOnIhefpVvIwgQxKPLJw",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.202Z",
"updated": "2024-10-02T01:56:54.202Z",
"size": 9211,
"md5Hash": "gKh6DGNGkrWAj+S2repcMg==",
"crc32c": "1459402094"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/a0eb55dd-239b-4908-8acd-a89c2bf639c2.json
================================================
{
"name": "mmembed/weather/1842.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213965,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"f73caa35-c228-4767-af66-3abd8763112a"
],
"etag": "tfLUtlpBy8yfeaNl1+5VEAJj9d0",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.965Z",
"updated": "2024-10-02T01:56:53.965Z",
"size": 17788,
"md5Hash": "ylcdiQTEH3ItQHqW+V9K+Q==",
"crc32c": "1776676022"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/a1539350-b2f4-4c95-a3d4-6b85d493f2b1.json
================================================
{
"name": "mmembed/weather/thumb_105.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214207,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"ba66c2a2-55ec-4530-9017-ebb1c213b355"
],
"etag": "l5n13n7Fsdjpl5QEZc9d0RS1Lh4",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.207Z",
"updated": "2024-10-02T01:56:54.207Z",
"size": 12851,
"md5Hash": "Eog0P5vFRcIDPOpj5q4Xug==",
"crc32c": "1280532754"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/a1daa863-1f24-4f91-964b-55e133f8c36d.json
================================================
{
"name": "mmembed/weather/thumb_4086.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214325,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"7e0ae61b-0083-48e4-893d-a842c2884a4d"
],
"etag": "DmDymLNCv28xeq8y72qKi67PCdU",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.325Z",
"updated": "2024-10-02T01:56:54.325Z",
"size": 8430,
"md5Hash": "ui4eiCowyTBR1+9R66fgcg==",
"crc32c": "2657306875"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/a1f4669b-2187-4feb-92dd-1a321a0d3023.json
================================================
{
"name": "mmembed/weather/thumb_1840.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214261,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"0835be87-34c7-4117-8a4f-3b9753ba1739"
],
"etag": "wOI0mp6w5bBUI+2s4pk5D1LXZd8",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.261Z",
"updated": "2024-10-02T01:56:54.261Z",
"size": 11127,
"md5Hash": "R12968FX1+Dvik3jjKaMWQ==",
"crc32c": "1157085364"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/a3f79d63-f265-4971-997b-4e64a25f806f.json
================================================
{
"name": "mmembed/weather/thumb_2214.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214274,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"69b0c522-21a5-417c-b849-b1db3a8193f4"
],
"etag": "QXDOgg4KJGOtFyJWiBPGXqbN8WM",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.274Z",
"updated": "2024-10-02T01:56:54.274Z",
"size": 7686,
"md5Hash": "t1veamN5SMkdCXUyUWQUcQ==",
"crc32c": "2350001268"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/a3fcb879-7be9-4a4f-8099-d237cf97418f.json
================================================
{
"name": "mmembed/weather/113.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213889,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"d1d69b3f-f3b9-49d4-b5a5-4259bce9581b"
],
"etag": "6vYGY1I5XrX84ijSPDM1LutcCJ8",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.889Z",
"updated": "2024-10-02T01:56:53.889Z",
"size": 110758,
"md5Hash": "YBRzeGj959PyYDQLRXJeDg==",
"crc32c": "2662519531"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/a764ed81-66b1-4d49-9013-b75c1c6ba383.json
================================================
{
"name": "mmembed/weather/0601.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213913,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"6740f1fd-266a-4651-8923-2b74012388a6"
],
"etag": "tDRYwDCU+vfoQzOgc2IhwyS0trc",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.913Z",
"updated": "2024-10-02T01:56:53.913Z",
"size": 32870,
"md5Hash": "xGgm8PsD99kXF6LfPzrwcw==",
"crc32c": "1870009792"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/a7855fa7-b5be-4ac3-a4e5-d4893ad338f6.json
================================================
{
"name": "mmembed/weather/thumb_0597.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214230,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"105d1924-8fcd-43f7-b3ff-6d4c1afa0b56"
],
"etag": "Zy8r+Jos2bbk/M1rC+WWc3B9II4",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.230Z",
"updated": "2024-10-02T01:56:54.230Z",
"size": 4610,
"md5Hash": "crQdxFnZfMCnZnll8FMTTw==",
"crc32c": "3051176703"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/a8c3e42a-8ebd-490f-b1da-d9046b7aa4ed.json
================================================
{
"name": "mmembed/weather/1837.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834213954,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"197977d1-3b95-41c6-bbbf-ca51347d3473"
],
"etag": "TNSHZ3XGA47SOkDRcYLP3Cnqyvg",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:53.954Z",
"updated": "2024-10-02T01:56:53.954Z",
"size": 75538,
"md5Hash": "LrcyHyfusYabd5IVqfUZdA==",
"crc32c": "3080933789"
}
================================================
FILE: multimodal-embeddings/emulator-export/storage_export/metadata/a99818ab-a299-4e87-9662-265cbe8e1160.json
================================================
{
"name": "mmembed/weather/thumb_0604.jpg",
"bucket": "mm-demo.appspot.com",
"metageneration": 1,
"generation": 1727834214242,
"contentType": "image/jpeg",
"storageClass": "STANDARD",
"contentDisposition": "inline",
"downloadTokens": [
"6395c963-a755-41ed-9911-c2d0f4081ab6"
],
"etag": "nM37ONJGzwmLiBb2tOjHbQcEQ0o",
"customMetadata": {},
"timeCreated": "2024-10-02T01:56:54.242Z",
"updated": "2024-10-02T01:56:54.242Z",
"size": 13286,
"md5Has
gitextract_zg4slyrs/
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── image-to-code/
│ ├── .gcloudignore
│ ├── .gitignore
│ ├── CONTRIBUTING.md
│ ├── LICENSE
│ ├── README.md
│ ├── components/
│ │ ├── CodePreview.js
│ │ ├── Header.js
│ │ └── ToggleButton.js
│ ├── jsconfig.json
│ ├── next.config.mjs
│ ├── package.json
│ ├── pages/
│ │ ├── _app.js
│ │ ├── _document.js
│ │ ├── api/
│ │ │ └── hello.js
│ │ └── index.js
│ ├── postcss.config.mjs
│ ├── styles/
│ │ └── globals.css
│ ├── tailwind.config.js
│ └── tailwind.config.mjs
├── multimodal-embeddings/
│ ├── .gcloudignore
│ ├── .npmrc
│ ├── .prettierignore
│ ├── .prettierrc
│ ├── README.md
│ ├── app.yaml
│ ├── components.json
│ ├── cors.json
│ ├── emulator-export/
│ │ ├── firebase-export-metadata.json
│ │ ├── firestore_export/
│ │ │ ├── all_namespaces/
│ │ │ │ └── all_kinds/
│ │ │ │ ├── all_namespaces_all_kinds.export_metadata
│ │ │ │ └── output-0
│ │ │ └── firestore_export.overall_export_metadata
│ │ └── storage_export/
│ │ ├── blobs/
│ │ │ ├── 0001871f-3e7a-461d-b428-92efcd1ce0fd
│ │ │ ├── 03da0657-bb18-42fd-9831-7e48c0b723cf
│ │ │ ├── 03f9df1b-0c0d-4014-8a7d-3a5eccad3faf
│ │ │ ├── 04b454df-1216-4ec1-84fb-f59afd85fe90
│ │ │ ├── 04f6c107-9611-4db9-aba8-98841ba5ae6f
│ │ │ ├── 06640a30-4d8e-4812-890e-e0374ad30f58
│ │ │ ├── 06919cbe-0678-4bfd-8cec-4d09e8e2d51b
│ │ │ ├── 0a86afce-8076-4ab8-bd65-c1eaf5ec966f
│ │ │ ├── 0b286de2-4d59-442c-933e-76f0f8e3cd0b
│ │ │ ├── 0c96fb25-144b-46eb-bdf1-74c575ddb6e9
│ │ │ ├── 0cf49b23-1d83-41c8-85d3-5c31fbf7b123
│ │ │ ├── 0d5f8ef7-dd37-432a-a0eb-80ccb822abc5
│ │ │ ├── 0d961bbe-aa5c-4d0e-9e53-dc7a7ec2b96c
│ │ │ ├── 0e7ec18e-93a5-4d40-845b-92cf98040f13
│ │ │ ├── 0ea29a34-dbcf-487a-b0e4-dd1c4028c7e2
│ │ │ ├── 0fb276ab-ad9f-4cd4-95ea-335d18ea72fe
│ │ │ ├── 0ff12c88-f320-4ef7-9356-26fbb9f3590e
│ │ │ ├── 114b11eb-de0d-441b-85d9-d70db5353156
│ │ │ ├── 125f8010-6ab0-463f-8278-5565cfc9d618
│ │ │ ├── 1514936f-769c-40b4-bfe4-4746fbc79fcd
│ │ │ ├── 16227ec4-2585-40aa-a5fd-e25e0d227b66
│ │ │ ├── 17f5cac8-e8c5-45c8-b6b3-afaa11b556ff
│ │ │ ├── 18964cd0-de01-46bd-88c3-ffad0b15b020
│ │ │ ├── 1aca1226-11c8-42f4-8137-339fe674e55c
│ │ │ ├── 1b831e3c-a1e8-4eb4-b3d6-de18b656814a
│ │ │ ├── 1ba5a0d9-2902-4a7a-8f33-862cf0abcb38
│ │ │ ├── 1bd97095-c1d4-4104-ae2a-f6c0e56dde89
│ │ │ ├── 1ccff42b-89c8-4a66-9d8c-3c7f1c307625
│ │ │ ├── 1d363b0e-cea6-4e58-aa6f-17c005c32f60
│ │ │ ├── 1e2e00f2-eb8c-432d-91a9-1f49c9bb2087
│ │ │ ├── 1e72b424-5c06-42c0-99eb-140545880ccb
│ │ │ ├── 1e859368-8d5b-4ecc-b30f-116ec3377f39
│ │ │ ├── 1f67aea5-0f3e-4b12-9554-aae3a84d5354
│ │ │ ├── 1fb32b8f-72d0-43ac-8955-d3804be94bc2
│ │ │ ├── 2166725e-18e6-4982-aeb7-2f4925461bf1
│ │ │ ├── 21af1f86-eb45-421d-90ff-962fc5509c16
│ │ │ ├── 2883e822-976c-4d81-9601-2df44f96bcd7
│ │ │ ├── 28a96371-1742-4e03-ae5c-ba309216af49
│ │ │ ├── 2ae61d7e-7bc1-4695-bd44-3637adbef998
│ │ │ ├── 2c938160-fe51-4222-a7d1-8220ad4ee300
│ │ │ ├── 2de6149c-40aa-471f-94a1-2dd2824724d8
│ │ │ ├── 2eeccd3b-575d-4055-95d9-c5fbf26b3a8d
│ │ │ ├── 2efc3c4b-2601-4d8f-ba2b-8d84712c436e
│ │ │ ├── 2f4a0b48-dc3f-4fd4-be4d-726c56619302
│ │ │ ├── 30621326-86e9-4f15-b5ea-6eaad59947df
│ │ │ ├── 30d12518-b643-48cf-8608-7aa9771fed14
│ │ │ ├── 31500630-b5a2-4092-86b1-5f2565716d86
│ │ │ ├── 31719f53-507c-4a3f-8b29-0be61178f3e7
│ │ │ ├── 354b878a-20c1-4b79-8a41-2b96e63eedaf
│ │ │ ├── 362a4319-eac2-4157-82f8-4cc5624ab0ee
│ │ │ ├── 36a45009-4146-4860-ab0f-2d41d6e1b8d2
│ │ │ ├── 36b5a479-0181-4f1b-98f4-86a64d4e1191
│ │ │ ├── 37be70be-0250-4281-9532-401a7bf29f41
│ │ │ ├── 3954ab46-6a25-4bb6-ab32-f0d55c546cb2
│ │ │ ├── 3b33aa14-5d04-43bd-9ef6-e30b8861d7db
│ │ │ ├── 3b688492-90d3-4d82-b6fc-499bc09e56eb
│ │ │ ├── 3dccd76d-64a7-47c2-a9b5-eea9b2efa12f
│ │ │ ├── 3e64b976-d7b3-4356-92d7-0aeb15f45fd5
│ │ │ ├── 3e966f04-2910-4104-8f1e-412bf33917c0
│ │ │ ├── 412215ae-10af-413a-9f75-861667cf12fe
│ │ │ ├── 41e09631-0791-4051-96ce-4e18d05f2be9
│ │ │ ├── 4223ad2c-c8fc-4f31-8454-284312b22905
│ │ │ ├── 42694520-432b-4928-adce-006db533f6f8
│ │ │ ├── 4418a01d-24ec-4e4b-b29a-e0689b395969
│ │ │ ├── 45131a81-db3a-4f9b-9330-5e2eb2b3eb44
│ │ │ ├── 454a16c7-6ec4-4c29-838f-6d235d729c0d
│ │ │ ├── 45b0127e-7f92-437f-97e4-f96b50ca60f6
│ │ │ ├── 460d8563-7063-413d-aa9c-d50fb8c9a0a3
│ │ │ ├── 464ea502-b1a7-47a1-af48-7b4296b13896
│ │ │ ├── 477f1478-d154-44c1-9b3e-f7bc08b81b1b
│ │ │ ├── 47a173ba-dd3f-4e02-8409-e46bf5c831ca
│ │ │ ├── 47eb894d-5a60-4c64-b22a-f496f63a869e
│ │ │ ├── 487cbb33-22c6-41f6-8e6e-4125927e2f20
│ │ │ ├── 495964a6-f764-487d-aec8-a1c1c02d8be3
│ │ │ ├── 4ad91f5f-7c9e-40e4-9c4f-c03a22bd8b2f
│ │ │ ├── 5012b076-ef07-41c8-9da7-033e2af2f579
│ │ │ ├── 50b673c2-e1b9-4b84-bbcc-1c47cca0cace
│ │ │ ├── 530a9038-98b8-4925-b26b-f5c7776d882f
│ │ │ ├── 55e55a5c-a59a-4c7f-846a-73784ee2f25d
│ │ │ ├── 563a8d9a-0285-4496-aaba-59138c349dad
│ │ │ ├── 58852f43-76ea-4ad1-9c6a-a33c2c53ff56
│ │ │ ├── 5a3ce50b-2658-4f68-b12d-0eec92a7223a
│ │ │ ├── 5a3ecd67-d20b-405d-83f7-86ff772f6d6f
│ │ │ ├── 5b388511-e3b8-4d3f-b0bf-d085f75c7769
│ │ │ ├── 5b62fd41-e2a2-4ba6-b305-a854619a947b
│ │ │ ├── 5ef2346d-d39e-49ce-b26a-9e5069dba421
│ │ │ ├── 5fd6d66a-8bf1-4f81-b0eb-9895552a8ec4
│ │ │ ├── 61556f93-4dd2-43e5-bc4d-78cbe3809d42
│ │ │ ├── 620c1be4-e353-46d9-8dbd-c3079d5efd6e
│ │ │ ├── 62b85256-0f54-47cb-ae83-d45cd0a66030
│ │ │ ├── 64609c87-07e8-48a4-b8c2-a26210e1dd0b
│ │ │ ├── 64f13cdd-ee8c-4238-b66b-14c1baa578e3
│ │ │ ├── 65c4dee4-4429-4eae-9250-2e969f3c190a
│ │ │ ├── 66569702-2074-4047-a794-4f11e3b285f2
│ │ │ ├── 67aaca3d-2acc-4987-8ed9-3f2fbf075f7c
│ │ │ ├── 67b6aeb1-b7d0-4402-8a60-b2f9c0c8b447
│ │ │ ├── 686d4f0b-5c28-48f4-b656-b354a13981a7
│ │ │ ├── 69657785-7299-408d-8453-8cb32f848150
│ │ │ ├── 6b6f7c8b-a5b9-4436-80a0-f128c1eb3bcf
│ │ │ ├── 6d8f5f9c-fef6-4179-ba05-79e361503c7a
│ │ │ ├── 70772163-4c3b-493a-ad04-87b67ee35d71
│ │ │ ├── 70c43a85-254c-49b1-bf14-d13687913f2d
│ │ │ ├── 70db2153-5bbf-42f6-91bc-f3cb4249dc01
│ │ │ ├── 70ef85a5-fb7a-41ff-ac02-0d00927d0274
│ │ │ ├── 70fc8a82-bfeb-4bb7-bb95-2a654168ead1
│ │ │ ├── 71894824-0cd9-4acf-9178-abba58090e42
│ │ │ ├── 721bdd57-7850-42e4-9fb9-747525b187c8
│ │ │ ├── 7706c66e-3fd9-45eb-9df5-8308b84dd194
│ │ │ ├── 7846c694-8e7a-47dd-b8b8-a2448285dcc0
│ │ │ ├── 78a3c767-265f-419d-bb3f-c3eba6e22017
│ │ │ ├── 78dd9bfd-a0ca-4ac9-9473-45d0d051fb1e
│ │ │ ├── 799fcdd0-1054-4c53-a218-48cb8f3ed044
│ │ │ ├── 7a5a7379-d29b-412b-9a50-565e171ab712
│ │ │ ├── 7c12f79f-d474-446f-b5fe-f669e60f8227
│ │ │ ├── 7c4a2540-75b9-4e37-b4b1-a6d7f62830cb
│ │ │ ├── 7c689600-cf26-4953-8be5-ae58faa5cad0
│ │ │ ├── 7d321a59-d6c9-433e-bfcb-2ee10dcd2745
│ │ │ ├── 7ff005e0-3f17-423f-9a04-1d762447eb07
│ │ │ ├── 8278f4eb-708a-4054-b408-9b4a2a8d6b7a
│ │ │ ├── 828f697d-fd40-470e-8326-8a40dccf9096
│ │ │ ├── 832cacff-0ed7-4685-a383-a0d94e6a366e
│ │ │ ├── 84307d32-0903-4a1c-8599-9d3938995da6
│ │ │ ├── 84491769-76dd-4667-825d-95156d99ba3f
│ │ │ ├── 848c006e-a50c-4d24-9e96-f9b12ab5f66b
│ │ │ ├── 8628a1cb-e588-483c-b00f-ba449d2c27b1
│ │ │ ├── 87039e64-1d6f-4f28-92e5-322ae686133d
│ │ │ ├── 884b9432-28fb-465b-a826-35daec2593d7
│ │ │ ├── 8bc987b7-d22f-4331-8de5-7149d9b73361
│ │ │ ├── 8cd45f77-4225-412e-9c61-bb90285356c5
│ │ │ ├── 8e0d391e-c779-4a34-a8de-f6abccc701ab
│ │ │ ├── 8f014805-5f51-439d-9447-b686abf889fa
│ │ │ ├── 91006bcb-22a2-480d-83ba-5393a41c6558
│ │ │ ├── 91bbc49d-9748-4638-a75c-573f23ff7c5e
│ │ │ ├── 92e62795-a847-46bc-a983-8f2f975f4ac3
│ │ │ ├── 92e944f9-bcfa-4e3c-95ad-2d6619cc377b
│ │ │ ├── 934f914b-21f8-45e6-812c-ac29926508c3
│ │ │ ├── 96d4fbff-3d58-4cef-b6f0-393751f39a80
│ │ │ ├── 98ca7091-441b-471c-a3cc-7a7e94826534
│ │ │ ├── 991c80af-1b3f-454c-8716-c45ed7023269
│ │ │ ├── 9ab4a412-9175-410b-8281-65999c677106
│ │ │ ├── 9d4fbb56-2a44-4866-9489-03d9312fdd55
│ │ │ ├── 9edac21b-4d29-4a5a-a5cd-5aac086224df
│ │ │ ├── a0eb55dd-239b-4908-8acd-a89c2bf639c2
│ │ │ ├── a1539350-b2f4-4c95-a3d4-6b85d493f2b1
│ │ │ ├── a1daa863-1f24-4f91-964b-55e133f8c36d
│ │ │ ├── a1f4669b-2187-4feb-92dd-1a321a0d3023
│ │ │ ├── a3f79d63-f265-4971-997b-4e64a25f806f
│ │ │ ├── a3fcb879-7be9-4a4f-8099-d237cf97418f
│ │ │ ├── a764ed81-66b1-4d49-9013-b75c1c6ba383
│ │ │ ├── a7855fa7-b5be-4ac3-a4e5-d4893ad338f6
│ │ │ ├── a8c3e42a-8ebd-490f-b1da-d9046b7aa4ed
│ │ │ ├── a99818ab-a299-4e87-9662-265cbe8e1160
│ │ │ ├── ab183f61-767e-4020-bae5-928ca15abd23
│ │ │ ├── ad7b8aa9-f8f7-43d5-96cf-b222b5e57318
│ │ │ ├── ad8f7da2-4988-40ec-9042-85c3f4ca6404
│ │ │ ├── ae4d2687-9c0e-49b2-9401-271fb42e62e1
│ │ │ ├── b17a8866-876a-4d32-8b84-5e19b8bcc5f4
│ │ │ ├── b1d4c0bb-0181-45cc-a1d7-7f2832b49b6d
│ │ │ ├── b2e7394a-32cb-45ca-abea-73d0b2df628f
│ │ │ ├── b499dd2d-cd18-488c-9927-c2f1f786a762
│ │ │ ├── b7ab64f1-76c2-459d-b6a9-cc7d52e689d1
│ │ │ ├── b8008ef2-2fb5-40ed-8fef-211863635165
│ │ │ ├── b8f8d67b-85c4-4734-a413-7e1c5b1a7a9d
│ │ │ ├── ba5f66c2-65e8-4ecc-829d-28dd2ddf625a
│ │ │ ├── ba7eb319-928d-45ba-bce3-4edd8f3955bd
│ │ │ ├── ba9ba128-b58e-47c1-97ee-4b2f52524cdf
│ │ │ ├── bc45b1d1-ec5d-4b77-94d9-2ba6f83c9397
│ │ │ ├── c20333af-a455-4b2f-baf0-f852e684543b
│ │ │ ├── c27f43ab-cdee-4ea2-b993-85e04502d1e7
│ │ │ ├── c32a1d25-a547-46b5-9d66-b2cce1b62c6c
│ │ │ ├── c340aa08-9ea1-4b1e-9155-0ffc9c35f7d4
│ │ │ ├── c4005e1a-a820-4fc6-b4d7-36de986a6508
│ │ │ ├── c65e9606-9e1a-4aa3-a546-fd07eaba08a3
│ │ │ ├── ca44d9db-7998-4cf3-bc92-aa69d366900a
│ │ │ ├── cb8c98b6-f0f0-48d5-be12-e27ab75dbc89
│ │ │ ├── cc2b2031-0170-43c4-bf8a-7a7267d38a96
│ │ │ ├── cea1146f-f63d-421e-b778-5ed8f39c1304
│ │ │ ├── cf2d1050-806b-4d32-9a18-083649e9142c
│ │ │ ├── d0920669-7709-4aab-97df-dd5e6c6719f9
│ │ │ ├── d12b9178-857a-4567-a7ef-3660f81813b9
│ │ │ ├── d21827e3-c794-4fa8-8cbc-6b46bfff25d2
│ │ │ ├── d223daa7-afa8-4108-8965-2ac9c45d9bab
│ │ │ ├── d2efd3f2-cf9a-4d75-89ad-3c8d873a1ff1
│ │ │ ├── d35aeaf2-da34-4207-a602-a9b236d62fca
│ │ │ ├── d4bb491a-51aa-48ac-a946-faf94bdb98f3
│ │ │ ├── d51f715d-c5b7-485b-8718-7112b700252b
│ │ │ ├── d62ac9e8-14ff-4a51-a65c-13b0be4a382d
│ │ │ ├── d7400d59-6e7d-438d-a433-7e248a89d7ef
│ │ │ ├── d8efb7b3-3d17-47f7-b46a-d4d5933d1c6c
│ │ │ ├── daff4d68-e7ba-4876-a389-f6379792db29
│ │ │ ├── db685a34-6e9f-480c-998f-74d9dfa33ded
│ │ │ ├── dd83acba-c2c2-471f-96e6-02a7564ccdf2
│ │ │ ├── ddd82ca8-addd-461f-a409-10ba4f2384f2
│ │ │ ├── de2c3001-b81a-43cb-bc8d-430cc5f31ecd
│ │ │ ├── df252df6-207a-4b5c-b429-517a9188442a
│ │ │ ├── dfc781e1-8984-4900-9fd9-4d67a8d06165
│ │ │ ├── e1a86ae0-794e-48c7-a521-6184fe47baf7
│ │ │ ├── e24996a9-4e92-47da-b164-afe68646772e
│ │ │ ├── e4a1e47d-a111-4f8f-aa81-fa8305cacc02
│ │ │ ├── e5411091-9430-440b-b167-06666aaa6282
│ │ │ ├── e68b7951-4436-4b51-9352-b8478a7016a2
│ │ │ ├── e745dd10-3a36-4c3c-9f6d-a0df1af88db5
│ │ │ ├── e7f85be0-c8af-4658-ae23-37f0fec2d3e8
│ │ │ ├── e96f6208-3db5-4e59-92fd-13bcc17a219f
│ │ │ ├── ec636ad8-59af-4d37-899d-7e38b6820142
│ │ │ ├── eed1b24c-8d17-474c-a8c5-abbb1253f3ac
│ │ │ ├── efcf28ed-64c0-4fb0-889e-adb9f7826bd2
│ │ │ ├── f0c05fe7-cce3-4ae7-81a7-04eb885a858d
│ │ │ ├── f1ee8d78-1966-45ac-899b-0fb7fdbef35c
│ │ │ ├── f1fdb37a-b154-4165-9964-31831b40be8b
│ │ │ ├── f45cae23-5852-45c2-a36d-923768351808
│ │ │ ├── f4c6688d-2e98-47bb-9880-d8beb1569036
│ │ │ ├── f511acae-1e9a-4fea-a426-acb3fd6aa5bd
│ │ │ ├── f699b6ac-7812-4564-adb5-8260b225f33b
│ │ │ ├── f77367b4-cad3-4d6a-961a-f4f4d6e24817
│ │ │ ├── f7bae092-4e7b-40f5-adae-a5c89bd9065a
│ │ │ ├── f8c2b960-f80e-488d-8126-04fe12057048
│ │ │ ├── f9d73365-1492-4efa-aabd-b730650157d0
│ │ │ ├── faf1a8f8-0cdf-43ba-8af8-d53a2d1a060f
│ │ │ ├── fb7828b5-0a12-46a7-8c5c-6c220d116e36
│ │ │ ├── fb857ec0-d80d-4404-ba0e-1ba436305d7d
│ │ │ ├── fda16ac8-d1cf-49db-93b7-833c274cd0d2
│ │ │ ├── fe3a8d7c-3dff-489e-abca-0b515db9420c
│ │ │ ├── fe78e904-37eb-46de-9195-1264c9acc754
│ │ │ ├── ff05e63d-c45b-499f-bc6e-a507047b4f10
│ │ │ └── ffe18889-8e9a-4b8c-8a81-867a03a3c274
│ │ ├── buckets.json
│ │ └── metadata/
│ │ ├── 0001871f-3e7a-461d-b428-92efcd1ce0fd.json
│ │ ├── 03da0657-bb18-42fd-9831-7e48c0b723cf.json
│ │ ├── 03f9df1b-0c0d-4014-8a7d-3a5eccad3faf.json
│ │ ├── 04b454df-1216-4ec1-84fb-f59afd85fe90.json
│ │ ├── 04f6c107-9611-4db9-aba8-98841ba5ae6f.json
│ │ ├── 06640a30-4d8e-4812-890e-e0374ad30f58.json
│ │ ├── 06919cbe-0678-4bfd-8cec-4d09e8e2d51b.json
│ │ ├── 0a86afce-8076-4ab8-bd65-c1eaf5ec966f.json
│ │ ├── 0b286de2-4d59-442c-933e-76f0f8e3cd0b.json
│ │ ├── 0c96fb25-144b-46eb-bdf1-74c575ddb6e9.json
│ │ ├── 0cf49b23-1d83-41c8-85d3-5c31fbf7b123.json
│ │ ├── 0d5f8ef7-dd37-432a-a0eb-80ccb822abc5.json
│ │ ├── 0d961bbe-aa5c-4d0e-9e53-dc7a7ec2b96c.json
│ │ ├── 0e7ec18e-93a5-4d40-845b-92cf98040f13.json
│ │ ├── 0ea29a34-dbcf-487a-b0e4-dd1c4028c7e2.json
│ │ ├── 0fb276ab-ad9f-4cd4-95ea-335d18ea72fe.json
│ │ ├── 0ff12c88-f320-4ef7-9356-26fbb9f3590e.json
│ │ ├── 114b11eb-de0d-441b-85d9-d70db5353156.json
│ │ ├── 125f8010-6ab0-463f-8278-5565cfc9d618.json
│ │ ├── 1514936f-769c-40b4-bfe4-4746fbc79fcd.json
│ │ ├── 16227ec4-2585-40aa-a5fd-e25e0d227b66.json
│ │ ├── 17f5cac8-e8c5-45c8-b6b3-afaa11b556ff.json
│ │ ├── 18964cd0-de01-46bd-88c3-ffad0b15b020.json
│ │ ├── 1aca1226-11c8-42f4-8137-339fe674e55c.json
│ │ ├── 1b831e3c-a1e8-4eb4-b3d6-de18b656814a.json
│ │ ├── 1ba5a0d9-2902-4a7a-8f33-862cf0abcb38.json
│ │ ├── 1bd97095-c1d4-4104-ae2a-f6c0e56dde89.json
│ │ ├── 1ccff42b-89c8-4a66-9d8c-3c7f1c307625.json
│ │ ├── 1d363b0e-cea6-4e58-aa6f-17c005c32f60.json
│ │ ├── 1e2e00f2-eb8c-432d-91a9-1f49c9bb2087.json
│ │ ├── 1e72b424-5c06-42c0-99eb-140545880ccb.json
│ │ ├── 1e859368-8d5b-4ecc-b30f-116ec3377f39.json
│ │ ├── 1f67aea5-0f3e-4b12-9554-aae3a84d5354.json
│ │ ├── 1fb32b8f-72d0-43ac-8955-d3804be94bc2.json
│ │ ├── 2166725e-18e6-4982-aeb7-2f4925461bf1.json
│ │ ├── 21af1f86-eb45-421d-90ff-962fc5509c16.json
│ │ ├── 2883e822-976c-4d81-9601-2df44f96bcd7.json
│ │ ├── 28a96371-1742-4e03-ae5c-ba309216af49.json
│ │ ├── 2ae61d7e-7bc1-4695-bd44-3637adbef998.json
│ │ ├── 2c938160-fe51-4222-a7d1-8220ad4ee300.json
│ │ ├── 2de6149c-40aa-471f-94a1-2dd2824724d8.json
│ │ ├── 2eeccd3b-575d-4055-95d9-c5fbf26b3a8d.json
│ │ ├── 2efc3c4b-2601-4d8f-ba2b-8d84712c436e.json
│ │ ├── 2f4a0b48-dc3f-4fd4-be4d-726c56619302.json
│ │ ├── 30621326-86e9-4f15-b5ea-6eaad59947df.json
│ │ ├── 30d12518-b643-48cf-8608-7aa9771fed14.json
│ │ ├── 31500630-b5a2-4092-86b1-5f2565716d86.json
│ │ ├── 31719f53-507c-4a3f-8b29-0be61178f3e7.json
│ │ ├── 354b878a-20c1-4b79-8a41-2b96e63eedaf.json
│ │ ├── 362a4319-eac2-4157-82f8-4cc5624ab0ee.json
│ │ ├── 36a45009-4146-4860-ab0f-2d41d6e1b8d2.json
│ │ ├── 36b5a479-0181-4f1b-98f4-86a64d4e1191.json
│ │ ├── 37be70be-0250-4281-9532-401a7bf29f41.json
│ │ ├── 3954ab46-6a25-4bb6-ab32-f0d55c546cb2.json
│ │ ├── 3b33aa14-5d04-43bd-9ef6-e30b8861d7db.json
│ │ ├── 3b688492-90d3-4d82-b6fc-499bc09e56eb.json
│ │ ├── 3dccd76d-64a7-47c2-a9b5-eea9b2efa12f.json
│ │ ├── 3e64b976-d7b3-4356-92d7-0aeb15f45fd5.json
│ │ ├── 3e966f04-2910-4104-8f1e-412bf33917c0.json
│ │ ├── 412215ae-10af-413a-9f75-861667cf12fe.json
│ │ ├── 41e09631-0791-4051-96ce-4e18d05f2be9.json
│ │ ├── 4223ad2c-c8fc-4f31-8454-284312b22905.json
│ │ ├── 42694520-432b-4928-adce-006db533f6f8.json
│ │ ├── 4418a01d-24ec-4e4b-b29a-e0689b395969.json
│ │ ├── 45131a81-db3a-4f9b-9330-5e2eb2b3eb44.json
│ │ ├── 454a16c7-6ec4-4c29-838f-6d235d729c0d.json
│ │ ├── 45b0127e-7f92-437f-97e4-f96b50ca60f6.json
│ │ ├── 460d8563-7063-413d-aa9c-d50fb8c9a0a3.json
│ │ ├── 464ea502-b1a7-47a1-af48-7b4296b13896.json
│ │ ├── 477f1478-d154-44c1-9b3e-f7bc08b81b1b.json
│ │ ├── 47a173ba-dd3f-4e02-8409-e46bf5c831ca.json
│ │ ├── 47eb894d-5a60-4c64-b22a-f496f63a869e.json
│ │ ├── 487cbb33-22c6-41f6-8e6e-4125927e2f20.json
│ │ ├── 495964a6-f764-487d-aec8-a1c1c02d8be3.json
│ │ ├── 4ad91f5f-7c9e-40e4-9c4f-c03a22bd8b2f.json
│ │ ├── 5012b076-ef07-41c8-9da7-033e2af2f579.json
│ │ ├── 50b673c2-e1b9-4b84-bbcc-1c47cca0cace.json
│ │ ├── 530a9038-98b8-4925-b26b-f5c7776d882f.json
│ │ ├── 55e55a5c-a59a-4c7f-846a-73784ee2f25d.json
│ │ ├── 563a8d9a-0285-4496-aaba-59138c349dad.json
│ │ ├── 58852f43-76ea-4ad1-9c6a-a33c2c53ff56.json
│ │ ├── 5a3ce50b-2658-4f68-b12d-0eec92a7223a.json
│ │ ├── 5a3ecd67-d20b-405d-83f7-86ff772f6d6f.json
│ │ ├── 5b388511-e3b8-4d3f-b0bf-d085f75c7769.json
│ │ ├── 5b62fd41-e2a2-4ba6-b305-a854619a947b.json
│ │ ├── 5ef2346d-d39e-49ce-b26a-9e5069dba421.json
│ │ ├── 5fd6d66a-8bf1-4f81-b0eb-9895552a8ec4.json
│ │ ├── 61556f93-4dd2-43e5-bc4d-78cbe3809d42.json
│ │ ├── 620c1be4-e353-46d9-8dbd-c3079d5efd6e.json
│ │ ├── 62b85256-0f54-47cb-ae83-d45cd0a66030.json
│ │ ├── 64609c87-07e8-48a4-b8c2-a26210e1dd0b.json
│ │ ├── 64f13cdd-ee8c-4238-b66b-14c1baa578e3.json
│ │ ├── 65c4dee4-4429-4eae-9250-2e969f3c190a.json
│ │ ├── 66569702-2074-4047-a794-4f11e3b285f2.json
│ │ ├── 67aaca3d-2acc-4987-8ed9-3f2fbf075f7c.json
│ │ ├── 67b6aeb1-b7d0-4402-8a60-b2f9c0c8b447.json
│ │ ├── 686d4f0b-5c28-48f4-b656-b354a13981a7.json
│ │ ├── 69657785-7299-408d-8453-8cb32f848150.json
│ │ ├── 6b6f7c8b-a5b9-4436-80a0-f128c1eb3bcf.json
│ │ ├── 6d8f5f9c-fef6-4179-ba05-79e361503c7a.json
│ │ ├── 70772163-4c3b-493a-ad04-87b67ee35d71.json
│ │ ├── 70c43a85-254c-49b1-bf14-d13687913f2d.json
│ │ ├── 70db2153-5bbf-42f6-91bc-f3cb4249dc01.json
│ │ ├── 70ef85a5-fb7a-41ff-ac02-0d00927d0274.json
│ │ ├── 70fc8a82-bfeb-4bb7-bb95-2a654168ead1.json
│ │ ├── 71894824-0cd9-4acf-9178-abba58090e42.json
│ │ ├── 721bdd57-7850-42e4-9fb9-747525b187c8.json
│ │ ├── 7706c66e-3fd9-45eb-9df5-8308b84dd194.json
│ │ ├── 7846c694-8e7a-47dd-b8b8-a2448285dcc0.json
│ │ ├── 78a3c767-265f-419d-bb3f-c3eba6e22017.json
│ │ ├── 78dd9bfd-a0ca-4ac9-9473-45d0d051fb1e.json
│ │ ├── 799fcdd0-1054-4c53-a218-48cb8f3ed044.json
│ │ ├── 7a5a7379-d29b-412b-9a50-565e171ab712.json
│ │ ├── 7c12f79f-d474-446f-b5fe-f669e60f8227.json
│ │ ├── 7c4a2540-75b9-4e37-b4b1-a6d7f62830cb.json
│ │ ├── 7c689600-cf26-4953-8be5-ae58faa5cad0.json
│ │ ├── 7d321a59-d6c9-433e-bfcb-2ee10dcd2745.json
│ │ ├── 7ff005e0-3f17-423f-9a04-1d762447eb07.json
│ │ ├── 8278f4eb-708a-4054-b408-9b4a2a8d6b7a.json
│ │ ├── 828f697d-fd40-470e-8326-8a40dccf9096.json
│ │ ├── 832cacff-0ed7-4685-a383-a0d94e6a366e.json
│ │ ├── 84307d32-0903-4a1c-8599-9d3938995da6.json
│ │ ├── 84491769-76dd-4667-825d-95156d99ba3f.json
│ │ ├── 848c006e-a50c-4d24-9e96-f9b12ab5f66b.json
│ │ ├── 8628a1cb-e588-483c-b00f-ba449d2c27b1.json
│ │ ├── 87039e64-1d6f-4f28-92e5-322ae686133d.json
│ │ ├── 884b9432-28fb-465b-a826-35daec2593d7.json
│ │ ├── 8bc987b7-d22f-4331-8de5-7149d9b73361.json
│ │ ├── 8cd45f77-4225-412e-9c61-bb90285356c5.json
│ │ ├── 8e0d391e-c779-4a34-a8de-f6abccc701ab.json
│ │ ├── 8f014805-5f51-439d-9447-b686abf889fa.json
│ │ ├── 91006bcb-22a2-480d-83ba-5393a41c6558.json
│ │ ├── 91bbc49d-9748-4638-a75c-573f23ff7c5e.json
│ │ ├── 92e62795-a847-46bc-a983-8f2f975f4ac3.json
│ │ ├── 92e944f9-bcfa-4e3c-95ad-2d6619cc377b.json
│ │ ├── 934f914b-21f8-45e6-812c-ac29926508c3.json
│ │ ├── 96d4fbff-3d58-4cef-b6f0-393751f39a80.json
│ │ ├── 98ca7091-441b-471c-a3cc-7a7e94826534.json
│ │ ├── 991c80af-1b3f-454c-8716-c45ed7023269.json
│ │ ├── 9ab4a412-9175-410b-8281-65999c677106.json
│ │ ├── 9d4fbb56-2a44-4866-9489-03d9312fdd55.json
│ │ ├── 9edac21b-4d29-4a5a-a5cd-5aac086224df.json
│ │ ├── a0eb55dd-239b-4908-8acd-a89c2bf639c2.json
│ │ ├── a1539350-b2f4-4c95-a3d4-6b85d493f2b1.json
│ │ ├── a1daa863-1f24-4f91-964b-55e133f8c36d.json
│ │ ├── a1f4669b-2187-4feb-92dd-1a321a0d3023.json
│ │ ├── a3f79d63-f265-4971-997b-4e64a25f806f.json
│ │ ├── a3fcb879-7be9-4a4f-8099-d237cf97418f.json
│ │ ├── a764ed81-66b1-4d49-9013-b75c1c6ba383.json
│ │ ├── a7855fa7-b5be-4ac3-a4e5-d4893ad338f6.json
│ │ ├── a8c3e42a-8ebd-490f-b1da-d9046b7aa4ed.json
│ │ ├── a99818ab-a299-4e87-9662-265cbe8e1160.json
│ │ ├── ab183f61-767e-4020-bae5-928ca15abd23.json
│ │ ├── ad7b8aa9-f8f7-43d5-96cf-b222b5e57318.json
│ │ ├── ad8f7da2-4988-40ec-9042-85c3f4ca6404.json
│ │ ├── ae4d2687-9c0e-49b2-9401-271fb42e62e1.json
│ │ ├── b17a8866-876a-4d32-8b84-5e19b8bcc5f4.json
│ │ ├── b1d4c0bb-0181-45cc-a1d7-7f2832b49b6d.json
│ │ ├── b2e7394a-32cb-45ca-abea-73d0b2df628f.json
│ │ ├── b499dd2d-cd18-488c-9927-c2f1f786a762.json
│ │ ├── b7ab64f1-76c2-459d-b6a9-cc7d52e689d1.json
│ │ ├── b8008ef2-2fb5-40ed-8fef-211863635165.json
│ │ ├── b8f8d67b-85c4-4734-a413-7e1c5b1a7a9d.json
│ │ ├── ba5f66c2-65e8-4ecc-829d-28dd2ddf625a.json
│ │ ├── ba7eb319-928d-45ba-bce3-4edd8f3955bd.json
│ │ ├── ba9ba128-b58e-47c1-97ee-4b2f52524cdf.json
│ │ ├── bc45b1d1-ec5d-4b77-94d9-2ba6f83c9397.json
│ │ ├── c20333af-a455-4b2f-baf0-f852e684543b.json
│ │ ├── c27f43ab-cdee-4ea2-b993-85e04502d1e7.json
│ │ ├── c32a1d25-a547-46b5-9d66-b2cce1b62c6c.json
│ │ ├── c340aa08-9ea1-4b1e-9155-0ffc9c35f7d4.json
│ │ ├── c4005e1a-a820-4fc6-b4d7-36de986a6508.json
│ │ ├── c65e9606-9e1a-4aa3-a546-fd07eaba08a3.json
│ │ ├── ca44d9db-7998-4cf3-bc92-aa69d366900a.json
│ │ ├── cb8c98b6-f0f0-48d5-be12-e27ab75dbc89.json
│ │ ├── cc2b2031-0170-43c4-bf8a-7a7267d38a96.json
│ │ ├── cea1146f-f63d-421e-b778-5ed8f39c1304.json
│ │ ├── cf2d1050-806b-4d32-9a18-083649e9142c.json
│ │ ├── d0920669-7709-4aab-97df-dd5e6c6719f9.json
│ │ ├── d12b9178-857a-4567-a7ef-3660f81813b9.json
│ │ ├── d21827e3-c794-4fa8-8cbc-6b46bfff25d2.json
│ │ ├── d223daa7-afa8-4108-8965-2ac9c45d9bab.json
│ │ ├── d2efd3f2-cf9a-4d75-89ad-3c8d873a1ff1.json
│ │ ├── d35aeaf2-da34-4207-a602-a9b236d62fca.json
│ │ ├── d4bb491a-51aa-48ac-a946-faf94bdb98f3.json
│ │ ├── d51f715d-c5b7-485b-8718-7112b700252b.json
│ │ ├── d62ac9e8-14ff-4a51-a65c-13b0be4a382d.json
│ │ ├── d7400d59-6e7d-438d-a433-7e248a89d7ef.json
│ │ ├── d8efb7b3-3d17-47f7-b46a-d4d5933d1c6c.json
│ │ ├── daff4d68-e7ba-4876-a389-f6379792db29.json
│ │ ├── db685a34-6e9f-480c-998f-74d9dfa33ded.json
│ │ ├── dd83acba-c2c2-471f-96e6-02a7564ccdf2.json
│ │ ├── ddd82ca8-addd-461f-a409-10ba4f2384f2.json
│ │ ├── de2c3001-b81a-43cb-bc8d-430cc5f31ecd.json
│ │ ├── df252df6-207a-4b5c-b429-517a9188442a.json
│ │ ├── dfc781e1-8984-4900-9fd9-4d67a8d06165.json
│ │ ├── e1a86ae0-794e-48c7-a521-6184fe47baf7.json
│ │ ├── e24996a9-4e92-47da-b164-afe68646772e.json
│ │ ├── e4a1e47d-a111-4f8f-aa81-fa8305cacc02.json
│ │ ├── e5411091-9430-440b-b167-06666aaa6282.json
│ │ ├── e68b7951-4436-4b51-9352-b8478a7016a2.json
│ │ ├── e745dd10-3a36-4c3c-9f6d-a0df1af88db5.json
│ │ ├── e7f85be0-c8af-4658-ae23-37f0fec2d3e8.json
│ │ ├── e96f6208-3db5-4e59-92fd-13bcc17a219f.json
│ │ ├── ec636ad8-59af-4d37-899d-7e38b6820142.json
│ │ ├── eed1b24c-8d17-474c-a8c5-abbb1253f3ac.json
│ │ ├── efcf28ed-64c0-4fb0-889e-adb9f7826bd2.json
│ │ ├── f0c05fe7-cce3-4ae7-81a7-04eb885a858d.json
│ │ ├── f1ee8d78-1966-45ac-899b-0fb7fdbef35c.json
│ │ ├── f1fdb37a-b154-4165-9964-31831b40be8b.json
│ │ ├── f45cae23-5852-45c2-a36d-923768351808.json
│ │ ├── f4c6688d-2e98-47bb-9880-d8beb1569036.json
│ │ ├── f511acae-1e9a-4fea-a426-acb3fd6aa5bd.json
│ │ ├── f699b6ac-7812-4564-adb5-8260b225f33b.json
│ │ ├── f77367b4-cad3-4d6a-961a-f4f4d6e24817.json
│ │ ├── f7bae092-4e7b-40f5-adae-a5c89bd9065a.json
│ │ ├── f8c2b960-f80e-488d-8126-04fe12057048.json
│ │ ├── f9d73365-1492-4efa-aabd-b730650157d0.json
│ │ ├── faf1a8f8-0cdf-43ba-8af8-d53a2d1a060f.json
│ │ ├── fb7828b5-0a12-46a7-8c5c-6c220d116e36.json
│ │ ├── fb857ec0-d80d-4404-ba0e-1ba436305d7d.json
│ │ ├── fda16ac8-d1cf-49db-93b7-833c274cd0d2.json
│ │ ├── fe3a8d7c-3dff-489e-abca-0b515db9420c.json
│ │ ├── fe78e904-37eb-46de-9195-1264c9acc754.json
│ │ ├── ff05e63d-c45b-499f-bc6e-a507047b4f10.json
│ │ └── ffe18889-8e9a-4b8c-8a81-867a03a3c274.json
│ ├── eslint.config.js
│ ├── fb/
│ │ ├── .firebaserc
│ │ ├── README.md
│ │ ├── firebase.json
│ │ ├── functions/
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── gemini.ts
│ │ │ │ └── index.ts
│ │ │ └── tsconfig.json
│ │ └── storage.rules
│ ├── package.json
│ ├── postcss.config.js
│ ├── src/
│ │ ├── app.css
│ │ ├── app.d.ts
│ │ ├── app.html
│ │ ├── lib/
│ │ │ ├── api.ts
│ │ │ ├── cloud-firebase.ts
│ │ │ ├── components/
│ │ │ │ ├── CollectionsList.svelte
│ │ │ │ ├── Droppable.svelte
│ │ │ │ └── ui/
│ │ │ │ ├── button/
│ │ │ │ │ ├── button.svelte
│ │ │ │ │ └── index.ts
│ │ │ │ ├── dropdown-menu/
│ │ │ │ │ ├── dropdown-menu-checkbox-item.svelte
│ │ │ │ │ ├── dropdown-menu-content.svelte
│ │ │ │ │ ├── dropdown-menu-item.svelte
│ │ │ │ │ ├── dropdown-menu-label.svelte
│ │ │ │ │ ├── dropdown-menu-radio-group.svelte
│ │ │ │ │ ├── dropdown-menu-radio-item.svelte
│ │ │ │ │ ├── dropdown-menu-separator.svelte
│ │ │ │ │ ├── dropdown-menu-shortcut.svelte
│ │ │ │ │ ├── dropdown-menu-sub-content.svelte
│ │ │ │ │ ├── dropdown-menu-sub-trigger.svelte
│ │ │ │ │ └── index.ts
│ │ │ │ ├── input/
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── input.svelte
│ │ │ │ └── label/
│ │ │ │ ├── index.ts
│ │ │ │ └── label.svelte
│ │ │ ├── consts.ts
│ │ │ ├── embedder.ts
│ │ │ ├── firebase.ts
│ │ │ ├── store.ts
│ │ │ └── utils.ts
│ │ └── routes/
│ │ ├── +layout.svelte
│ │ ├── +page.svelte
│ │ ├── api/
│ │ │ ├── getEmbeddings/
│ │ │ │ └── +server.ts
│ │ │ ├── listCollections/
│ │ │ │ └── +server.ts
│ │ │ ├── search/
│ │ │ │ └── +server.ts
│ │ │ └── umap/
│ │ │ └── +server.ts
│ │ ├── search/
│ │ │ ├── +page.svelte
│ │ │ └── ImageResult.svelte
│ │ └── viz/
│ │ ├── +page.svelte
│ │ ├── Image.svelte
│ │ ├── Scene.svelte
│ │ ├── Settings.svelte
│ │ └── Viz.svelte
│ ├── svelte.config.js
│ ├── tailwind.config.ts
│ ├── tsconfig.json
│ └── vite.config.ts
├── video-scrubber/
│ ├── .eslintrc.cjs
│ ├── .gcloudignore
│ ├── LICENSE
│ ├── README.md
│ ├── app.yaml
│ ├── index.html
│ ├── package.json
│ ├── postcss.config.js
│ ├── server/
│ │ ├── gemini.js
│ │ └── index.js
│ ├── src/
│ │ ├── Annotations.tsx
│ │ ├── App.tsx
│ │ ├── ClickableTimestamps.tsx
│ │ ├── ClipTimeline.tsx
│ │ ├── Controls.tsx
│ │ ├── Gemini.tsx
│ │ ├── PlayTimeline.tsx
│ │ ├── Timelines.tsx
│ │ ├── TimestampText.tsx
│ │ ├── Video.tsx
│ │ ├── VideoInput.tsx
│ │ ├── VideoState.tsx
│ │ ├── atoms.tsx
│ │ ├── consts.tsx
│ │ ├── index.css
│ │ ├── main.tsx
│ │ ├── utils.tsx
│ │ └── vite-env.d.ts
│ ├── tailwind.config.js
│ ├── tsconfig.json
│ ├── tsconfig.node.json
│ └── vite.config.ts
└── voice-cursor/
├── .gcloudignore
├── .gitignore
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── components.json
├── next.config.mjs
├── package.json
├── postcss.config.js
├── src/
│ ├── app/
│ │ ├── default-value.ts
│ │ ├── globals.css
│ │ ├── layout.tsx
│ │ ├── page.tsx
│ │ ├── prosemirror.css
│ │ └── test-audio/
│ │ └── page.tsx
│ ├── components/
│ │ ├── editor/
│ │ │ ├── advanced-editor.tsx
│ │ │ ├── audio-menu.tsx
│ │ │ ├── client-editor.tsx
│ │ │ ├── extensions/
│ │ │ │ └── audio-highlight.ts
│ │ │ ├── extensions.ts
│ │ │ ├── image-upload.ts
│ │ │ ├── prompt-popover.tsx
│ │ │ ├── selectors/
│ │ │ │ └── voice-popover.tsx
│ │ │ ├── slash-command.tsx
│ │ │ └── unused-selectors/
│ │ │ ├── color-selector.tsx
│ │ │ ├── highlight-selector.tsx
│ │ │ ├── link-selector.tsx
│ │ │ ├── node-selector.tsx
│ │ │ └── text-buttons.tsx
│ │ ├── theme-provider.tsx
│ │ ├── theme-toggle.tsx
│ │ └── ui/
│ │ ├── button.tsx
│ │ ├── dropdown-menu.tsx
│ │ ├── popover.tsx
│ │ ├── separator.tsx
│ │ ├── sonner.tsx
│ │ └── tooltip.tsx
│ └── lib/
│ ├── tone-options.ts
│ ├── utils.ts
│ └── voice-options.ts
├── tailwind.config.ts
└── tsconfig.json
SYMBOL INDEX (94 symbols across 51 files)
FILE: image-to-code/pages/_app.js
function App (line 19) | function App({ Component, pageProps }) {
FILE: image-to-code/pages/_document.js
function Document (line 19) | function Document() {
FILE: image-to-code/pages/api/hello.js
function handler (line 19) | function handler(req, res) {
FILE: image-to-code/pages/index.js
constant SAMPLE_IMAGES (line 25) | const SAMPLE_IMAGES = [
constant MODEL_NAME (line 39) | const MODEL_NAME = "gemini-2.0-flash-exp";
function generateCodeFromImage (line 44) | async function generateCodeFromImage(imageBase64, prompt, userInput) {
function Home (line 69) | function Home() {
FILE: multimodal-embeddings/fb/functions/src/gemini.ts
function getImagePart (line 8) | function getImagePart(buffer, mimeType) {
FILE: multimodal-embeddings/src/lib/api.ts
type StoredImage (line 3) | type StoredImage = {
type EmbeddingRequest (line 10) | type EmbeddingRequest = {
type SearchRequest (line 15) | type SearchRequest = {
type SearchResponse (line 20) | type SearchResponse = {
type Collection (line 25) | type Collection = {
type InteractionEvent (line 31) | type InteractionEvent = THREE.Intersection & {
FILE: multimodal-embeddings/src/lib/components/ui/button/index.ts
type Variant (line 31) | type Variant = VariantProps<typeof buttonVariants>["variant"];
type Size (line 32) | type Size = VariantProps<typeof buttonVariants>["size"];
type Props (line 34) | type Props = ButtonPrimitive.Props & {
type Events (line 39) | type Events = ButtonPrimitive.Events;
FILE: multimodal-embeddings/src/lib/components/ui/input/index.ts
type FormInputEvent (line 3) | type FormInputEvent<T extends Event = Event> = T & {
type InputEvents (line 6) | type InputEvents = {
FILE: multimodal-embeddings/src/lib/consts.ts
constant FIRESTORE_DB_ID (line 9) | const FIRESTORE_DB_ID = useEmulator ? 'cl-demos-firestore' : 'your-proje...
constant FIREBASE_STORAGE_EMULATOR_BUCKET (line 10) | const FIREBASE_STORAGE_EMULATOR_BUCKET = 'mm-demo.appspot.com';
constant DEFAULT_EMULATOR_FIRESTORE_COLLECTION (line 11) | const DEFAULT_EMULATOR_FIRESTORE_COLLECTION = 'weather';
constant FIREBASE_PROJECT_ID (line 12) | const FIREBASE_PROJECT_ID = 'your-project-id';
constant FIREBASE_CONFIG (line 13) | const FIREBASE_CONFIG = {
FILE: multimodal-embeddings/src/lib/embedder.ts
type Prompt (line 22) | type Prompt = {
FILE: multimodal-embeddings/src/lib/store.ts
type ImageData (line 5) | type ImageData = {
type ImageCollection (line 13) | type ImageCollection = {
type RemapFunction (line 19) | type RemapFunction = () => Promise<void>;
FILE: multimodal-embeddings/src/lib/utils.ts
function cn (line 6) | function cn(...inputs: ClassValue[]) {
type FlyAndScaleParams (line 10) | type FlyAndScaleParams = {
FILE: multimodal-embeddings/src/routes/api/getEmbeddings/+server.ts
function POST (line 10) | async function POST({ request }) {
FILE: multimodal-embeddings/src/routes/api/listCollections/+server.ts
function POST (line 9) | async function POST() {
FILE: multimodal-embeddings/src/routes/api/search/+server.ts
function POST (line 9) | async function POST({ request }) {
FILE: video-scrubber/server/gemini.js
constant KEY (line 18) | const KEY = process.env["GEMINI_API_KEY"];
FILE: video-scrubber/src/Annotations.tsx
function Annotations (line 19) | function Annotations() {
FILE: video-scrubber/src/App.tsx
function App (line 29) | function App() {
FILE: video-scrubber/src/ClickableTimestamps.tsx
function ClickableTimestamps (line 31) | function ClickableTimestamps() {
FILE: video-scrubber/src/ClipTimeline.tsx
function ClipTimeline (line 30) | function ClipTimeline() {
FILE: video-scrubber/src/Controls.tsx
function Controls (line 28) | function Controls() {
FILE: video-scrubber/src/Gemini.tsx
function Gemini (line 41) | function Gemini() {
FILE: video-scrubber/src/PlayTimeline.tsx
function PlayTimeline (line 25) | function PlayTimeline() {
FILE: video-scrubber/src/Timelines.tsx
function Timelines (line 19) | function Timelines() {
FILE: video-scrubber/src/TimestampText.tsx
function TimestampText (line 18) | function TimestampText() {
FILE: video-scrubber/src/Video.tsx
function Video (line 18) | function Video() {
FILE: video-scrubber/src/VideoInput.tsx
function VideoInput (line 19) | function VideoInput() {
FILE: video-scrubber/src/VideoState.tsx
function VideoState (line 24) | function VideoState() {
FILE: video-scrubber/src/atoms.tsx
type ProcessedVideo (line 37) | type ProcessedVideo = {
method getItem (line 47) | getItem(key, _) {
method setItem (line 55) | setItem(key, val) {
method removeItem (line 65) | removeItem(key) {
FILE: video-scrubber/src/utils.tsx
function secondsToTimestamp (line 15) | function secondsToTimestamp(seconds: number): string {
type ParsedTimestamp (line 27) | type ParsedTimestamp = {
function parseTimestamps (line 32) | function parseTimestamps(text: string): ParsedTimestamp[] {
function timestampToSeconds (line 59) | function timestampToSeconds(timestamp: string): number {
FILE: voice-cursor/src/app/layout.tsx
function RootLayout (line 34) | function RootLayout({
FILE: voice-cursor/src/app/page.tsx
function Home (line 50) | function Home() {
FILE: voice-cursor/src/app/test-audio/page.tsx
constant VOICE_OPTIONS (line 22) | const VOICE_OPTIONS = {
function TestAudio (line 26) | function TestAudio() {
FILE: voice-cursor/src/components/editor/advanced-editor.tsx
type EditorProp (line 39) | interface EditorProp {
FILE: voice-cursor/src/components/editor/audio-menu.tsx
type AudioMenuProps (line 23) | interface AudioMenuProps {
function AudioMenu (line 30) | function AudioMenu({ audioKey, position, prompt, onClose }: AudioMenuPro...
FILE: voice-cursor/src/components/editor/client-editor.tsx
type EditorWrapperProps (line 20) | interface EditorWrapperProps {
function EditorWrapper (line 25) | function EditorWrapper({ initialValue, onChange }: EditorWrapperProps) {
FILE: voice-cursor/src/components/editor/extensions.ts
method addProseMirrorPlugins (line 49) | addProseMirrorPlugins() {
FILE: voice-cursor/src/components/editor/extensions/audio-highlight.ts
type MouseLeaveHandler (line 26) | type MouseLeaveHandler = EventListener;
function removeHighlightAndAudio (line 40) | function removeHighlightAndAudio(audioKey: string) {
function renderAudioMenu (line 53) | function renderAudioMenu(
method addOptions (line 79) | addOptions() {
method addGlobalAttributes (line 87) | addGlobalAttributes() {
method addProseMirrorPlugins (line 130) | addProseMirrorPlugins() {
FILE: voice-cursor/src/components/editor/prompt-popover.tsx
type PromptPopoverProps (line 19) | interface PromptPopoverProps {
function PromptPopover (line 25) | function PromptPopover({ position, prompt, onClose }: PromptPopoverProps) {
FILE: voice-cursor/src/components/editor/selectors/voice-popover.tsx
type VoicePopoverProps (line 32) | interface VoicePopoverProps {
type MimeParams (line 37) | interface MimeParams {
FILE: voice-cursor/src/components/editor/unused-selectors/color-selector.tsx
type BubbleColorMenuItem (line 27) | interface BubbleColorMenuItem {
constant TEXT_COLORS (line 32) | const TEXT_COLORS: BubbleColorMenuItem[] = [
constant HIGHLIGHT_COLORS (line 71) | const HIGHLIGHT_COLORS: BubbleColorMenuItem[] = [
type ColorSelectorProps (line 110) | interface ColorSelectorProps {
FILE: voice-cursor/src/components/editor/unused-selectors/highlight-selector.tsx
constant HIGHLIGHT_COLORS (line 28) | const HIGHLIGHT_COLORS = [
type HighlightSelectorProps (line 67) | interface HighlightSelectorProps {
FILE: voice-cursor/src/components/editor/unused-selectors/link-selector.tsx
function isValidUrl (line 34) | function isValidUrl(url: string) {
function getUrlFromString (line 42) | function getUrlFromString(str: string) {
type LinkSelectorProps (line 52) | interface LinkSelectorProps {
FILE: voice-cursor/src/components/editor/unused-selectors/node-selector.tsx
type SelectorItem (line 36) | type SelectorItem = {
type NodeSelectorProps (line 111) | interface NodeSelectorProps {
FILE: voice-cursor/src/components/theme-provider.tsx
function ThemeProvider (line 23) | function ThemeProvider({ children, ...props }: ThemeProviderProps) {
FILE: voice-cursor/src/components/theme-toggle.tsx
function ThemeToggle (line 31) | function ThemeToggle() {
FILE: voice-cursor/src/components/ui/button.tsx
type ButtonProps (line 52) | interface ButtonProps
FILE: voice-cursor/src/components/ui/sonner.tsx
type ToasterProps (line 22) | type ToasterProps = React.ComponentProps<typeof Sonner>
FILE: voice-cursor/src/lib/tone-options.ts
type ToneOption (line 18) | interface ToneOption {
constant TONE_OPTIONS (line 25) | const TONE_OPTIONS: ToneOption[] = [
FILE: voice-cursor/src/lib/utils.ts
function cn (line 20) | function cn(...inputs: ClassValue[]) {
FILE: voice-cursor/src/lib/voice-options.ts
constant VOICE_OPTIONS (line 18) | const VOICE_OPTIONS = [
Condensed preview — 618 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (554K chars).
[
{
"path": "CONTRIBUTING.md",
"chars": 1100,
"preview": "# How to Contribute\n\nWe'd love to accept your patches and contributions to this project. There are\njust a few small guid"
},
{
"path": "LICENSE",
"chars": 11357,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "README.md",
"chars": 5213,
"preview": "# Gemini API Demos\n\nHello! 👋 This is a repository of examples built with Google's Gemini API, which lets you build multi"
},
{
"path": "image-to-code/.gcloudignore",
"chars": 528,
"preview": "# This file specifies files that are *not* uploaded to Google Cloud\n# using gcloud. It follows the same syntax as .gitig"
},
{
"path": "image-to-code/.gitignore",
"chars": 519,
"preview": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pn"
},
{
"path": "image-to-code/CONTRIBUTING.md",
"chars": 980,
"preview": "# How to contribute\n\nWe'd love to accept your patches and contributions to this project.\n\n## Before you begin\n\nSign our "
},
{
"path": "image-to-code/LICENSE",
"chars": 11357,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "image-to-code/README.md",
"chars": 4768,
"preview": "# Image to Code Generator 🎨\n\n\n\nGet started with [p5js](https://p5js.org/) ske"
},
{
"path": "image-to-code/components/CodePreview.js",
"chars": 8050,
"preview": "/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not us"
},
{
"path": "image-to-code/components/Header.js",
"chars": 1204,
"preview": "import React from 'react';\nimport { Github, Info } from 'lucide-react';\n\nconst Header = () => {\n return (\n <div clas"
},
{
"path": "image-to-code/components/ToggleButton.js",
"chars": 580,
"preview": "import React from 'react';\n\nconst ToggleButton = ({ icon: Icon, label, isSelected, onClick }) => {\n const baseStyles = "
},
{
"path": "image-to-code/jsconfig.json",
"chars": 73,
"preview": "{\n \"compilerOptions\": {\n \"paths\": {\n \"@/*\": [\"./*\"]\n }\n }\n}\n"
},
{
"path": "image-to-code/next.config.mjs",
"chars": 714,
"preview": "/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not us"
},
{
"path": "image-to-code/package.json",
"chars": 631,
"preview": "{\n \"name\": \"service-image-code-2\",\n \"version\": \"0.1.0\",\n \"private\": true,\n \"scripts\": {\n \"dev\": \"next dev --turbo"
},
{
"path": "image-to-code/pages/_app.js",
"chars": 725,
"preview": "/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not us"
},
{
"path": "image-to-code/pages/_document.js",
"chars": 853,
"preview": "/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not us"
},
{
"path": "image-to-code/pages/api/hello.js",
"chars": 767,
"preview": "/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not us"
},
{
"path": "image-to-code/pages/index.js",
"chars": 17733,
"preview": "/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not us"
},
{
"path": "image-to-code/postcss.config.mjs",
"chars": 731,
"preview": "/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not us"
},
{
"path": "image-to-code/styles/globals.css",
"chars": 941,
"preview": "/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not us"
},
{
"path": "image-to-code/tailwind.config.js",
"chars": 2988,
"preview": "/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not us"
},
{
"path": "image-to-code/tailwind.config.mjs",
"chars": 960,
"preview": "/**\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not us"
},
{
"path": "multimodal-embeddings/.gcloudignore",
"chars": 529,
"preview": "# This file specifies files that are *not* uploaded to Google Cloud\n# using gcloud. It follows the same syntax as .gitig"
},
{
"path": "multimodal-embeddings/.npmrc",
"chars": 19,
"preview": "engine-strict=true\n"
},
{
"path": "multimodal-embeddings/.prettierignore",
"chars": 81,
"preview": "# Ignore files for PNPM, NPM and YARN\npnpm-lock.yaml\npackage-lock.json\nyarn.lock\n"
},
{
"path": "multimodal-embeddings/.prettierrc",
"chars": 278,
"preview": "{\n\t\"useTabs\": true,\n\t\"singleQuote\": true,\n\t\"trailingComma\": \"none\",\n\t\"printWidth\": 100,\n\t\"plugins\": [\n\t\t\"prettier-plugin"
},
{
"path": "multimodal-embeddings/README.md",
"chars": 7498,
"preview": "> **This repo is provided _as-is_ for reference**, since you need a Firebase project with at least one collection that c"
},
{
"path": "multimodal-embeddings/app.yaml",
"chars": 406,
"preview": "runtime: nodejs20\nservice: mm-embed\ninstance_class: F2\ndefault_expiration: '0s'\n\n# handlers element provides a list of U"
},
{
"path": "multimodal-embeddings/components.json",
"chars": 275,
"preview": "{\n\t\"$schema\": \"https://shadcn-svelte.com/schema.json\",\n\t\"style\": \"new-york\",\n\t\"tailwind\": {\n\t\t\"config\": \"tailwind.config"
},
{
"path": "multimodal-embeddings/cors.json",
"chars": 74,
"preview": "[\n\t{\n\t\t\"origin\": [\"*\"],\n\t\t\"method\": [\"GET\"],\n\t\t\"maxAgeSeconds\": 3600\n\t}\n]\n"
},
{
"path": "multimodal-embeddings/emulator-export/firebase-export-metadata.json",
"chars": 261,
"preview": "{\n \"version\": \"13.20.2\",\n \"firestore\": {\n \"version\": \"1.19.8\",\n \"path\": \"firestore_export\",\n \"metadata_file\":"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/blobs/b2e7394a-32cb-45ca-abea-73d0b2df628f",
"chars": 130,
"preview": "--boundary\r\nContent-Type: application/json\r\n\r\n{\"contentType\":\"text/plain\"}\r\n--boundary\r\nContent-Type: text/plain\r\n\r\n--bo"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/blobs/dd83acba-c2c2-471f-96e6-02a7564ccdf2",
"chars": 130,
"preview": "--boundary\r\nContent-Type: application/json\r\n\r\n{\"contentType\":\"text/plain\"}\r\n--boundary\r\nContent-Type: text/plain\r\n\r\n--bo"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/buckets.json",
"chars": 60,
"preview": "{\n\t\"buckets\": [\n\t\t{\n\t\t\t\"id\": \"mm-demo.appspot.com\"\n\t\t}\n\t]\n}\n"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/0001871f-3e7a-461d-b428-92efcd1ce0fd.json",
"chars": 533,
"preview": "{\n \"name\": \"mmembed/weather/thumb_0595.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/03da0657-bb18-42fd-9831-7e48c0b723cf.json",
"chars": 532,
"preview": "{\n \"name\": \"mmembed/weather/thumb_106.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 1"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/03f9df1b-0c0d-4014-8a7d-3a5eccad3faf.json",
"chars": 528,
"preview": "{\n \"name\": \"mmembed/weather/103.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 1727834"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/04b454df-1216-4ec1-84fb-f59afd85fe90.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/6101.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/04f6c107-9611-4db9-aba8-98841ba5ae6f.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_124.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 1"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/06640a30-4d8e-4812-890e-e0374ad30f58.json",
"chars": 528,
"preview": "{\n \"name\": \"mmembed/weather/0604.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/06919cbe-0678-4bfd-8cec-4d09e8e2d51b.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_6096.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/0a86afce-8076-4ab8-bd65-c1eaf5ec966f.json",
"chars": 528,
"preview": "{\n \"name\": \"mmembed/weather/6098.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/0b286de2-4d59-442c-933e-76f0f8e3cd0b.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_0008.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/0c96fb25-144b-46eb-bdf1-74c575ddb6e9.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_2211.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/0cf49b23-1d83-41c8-85d3-5c31fbf7b123.json",
"chars": 533,
"preview": "{\n \"name\": \"mmembed/weather/thumb_14.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 17"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/0d5f8ef7-dd37-432a-a0eb-80ccb822abc5.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_1838.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/0d961bbe-aa5c-4d0e-9e53-dc7a7ec2b96c.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_6102.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/0e7ec18e-93a5-4d40-845b-92cf98040f13.json",
"chars": 528,
"preview": "{\n \"name\": \"mmembed/weather/4087.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/0ea29a34-dbcf-487a-b0e4-dd1c4028c7e2.json",
"chars": 530,
"preview": "{\n \"name\": \"mmembed/weather/3608.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/0fb276ab-ad9f-4cd4-95ea-335d18ea72fe.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_1832.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/0ff12c88-f320-4ef7-9356-26fbb9f3590e.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_6090.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/114b11eb-de0d-441b-85d9-d70db5353156.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/0596.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/125f8010-6ab0-463f-8278-5565cfc9d618.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/4078.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/1514936f-769c-40b4-bfe4-4746fbc79fcd.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_4083.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/16227ec4-2585-40aa-a5fd-e25e0d227b66.json",
"chars": 533,
"preview": "{\n \"name\": \"mmembed/weather/thumb_4075.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/17f5cac8-e8c5-45c8-b6b3-afaa11b556ff.json",
"chars": 528,
"preview": "{\n \"name\": \"mmembed/weather/2209.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/18964cd0-de01-46bd-88c3-ffad0b15b020.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_3613.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/1aca1226-11c8-42f4-8137-339fe674e55c.json",
"chars": 528,
"preview": "{\n \"name\": \"mmembed/weather/6095.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/1b831e3c-a1e8-4eb4-b3d6-de18b656814a.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/2217.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/1ba5a0d9-2902-4a7a-8f33-862cf0abcb38.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_6103.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/1bd97095-c1d4-4104-ae2a-f6c0e56dde89.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/6092.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/1ccff42b-89c8-4a66-9d8c-3c7f1c307625.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/0011.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/1d363b0e-cea6-4e58-aa6f-17c005c32f60.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/0001.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/1e2e00f2-eb8c-432d-91a9-1f49c9bb2087.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/6099.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/1e72b424-5c06-42c0-99eb-140545880ccb.json",
"chars": 530,
"preview": "{\n \"name\": \"mmembed/weather/3607.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/1e859368-8d5b-4ecc-b30f-116ec3377f39.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_2212.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/1f67aea5-0f3e-4b12-9554-aae3a84d5354.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_0596.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/1fb32b8f-72d0-43ac-8955-d3804be94bc2.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_0001.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/2166725e-18e6-4982-aeb7-2f4925461bf1.json",
"chars": 530,
"preview": "{\n \"name\": \"mmembed/weather/0000.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/21af1f86-eb45-421d-90ff-962fc5509c16.json",
"chars": 527,
"preview": "{\n \"name\": \"mmembed/weather/14.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 17278342"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/2883e822-976c-4d81-9601-2df44f96bcd7.json",
"chars": 528,
"preview": "{\n \"name\": \"mmembed/weather/4083.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/28a96371-1742-4e03-ae5c-ba309216af49.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_1841.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/2ae61d7e-7bc1-4695-bd44-3637adbef998.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_6093.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/2c938160-fe51-4222-a7d1-8220ad4ee300.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_4082.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/2de6149c-40aa-471f-94a1-2dd2824724d8.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_0007.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/2eeccd3b-575d-4055-95d9-c5fbf26b3a8d.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_2216.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/2efc3c4b-2601-4d8f-ba2b-8d84712c436e.json",
"chars": 533,
"preview": "{\n \"name\": \"mmembed/weather/thumb_11.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 17"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/2f4a0b48-dc3f-4fd4-be4d-726c56619302.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_3602.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/30621326-86e9-4f15-b5ea-6eaad59947df.json",
"chars": 528,
"preview": "{\n \"name\": \"mmembed/weather/4082.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/30d12518-b643-48cf-8608-7aa9771fed14.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/3609.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/31500630-b5a2-4092-86b1-5f2565716d86.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_6094.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/31719f53-507c-4a3f-8b29-0be61178f3e7.json",
"chars": 532,
"preview": "{\n \"name\": \"mmembed/weather/thumb_2210.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/354b878a-20c1-4b79-8a41-2b96e63eedaf.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/1832.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/362a4319-eac2-4157-82f8-4cc5624ab0ee.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/1830.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/36a45009-4146-4860-ab0f-2d41d6e1b8d2.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/4076.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/36b5a479-0181-4f1b-98f4-86a64d4e1191.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_6095.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/37be70be-0250-4281-9532-401a7bf29f41.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_3608.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/3954ab46-6a25-4bb6-ab32-f0d55c546cb2.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_0004.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/3b33aa14-5d04-43bd-9ef6-e30b8861d7db.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_3605.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/3b688492-90d3-4d82-b6fc-499bc09e56eb.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_2219.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/3dccd76d-64a7-47c2-a9b5-eea9b2efa12f.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/0602.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/3e64b976-d7b3-4356-92d7-0aeb15f45fd5.json",
"chars": 533,
"preview": "{\n \"name\": \"mmembed/weather/thumb_13.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 17"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/3e966f04-2910-4104-8f1e-412bf33917c0.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_0006.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/412215ae-10af-413a-9f75-861667cf12fe.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_0598.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/41e09631-0791-4051-96ce-4e18d05f2be9.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_0005.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/4223ad2c-c8fc-4f31-8454-284312b22905.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_0010.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/42694520-432b-4928-adce-006db533f6f8.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_6092.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/4418a01d-24ec-4e4b-b29a-e0689b395969.json",
"chars": 527,
"preview": "{\n \"name\": \"mmembed/weather/124.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 1727834"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/45131a81-db3a-4f9b-9330-5e2eb2b3eb44.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/1840.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/454a16c7-6ec4-4c29-838f-6d235d729c0d.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_3604.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/45b0127e-7f92-437f-97e4-f96b50ca60f6.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_1839.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/460d8563-7063-413d-aa9c-d50fb8c9a0a3.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_3607.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/464ea502-b1a7-47a1-af48-7b4296b13896.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/0592.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/477f1478-d154-44c1-9b3e-f7bc08b81b1b.json",
"chars": 528,
"preview": "{\n \"name\": \"mmembed/weather/106.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 1727834"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/47a173ba-dd3f-4e02-8409-e46bf5c831ca.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/0593.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/47eb894d-5a60-4c64-b22a-f496f63a869e.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_6091.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/487cbb33-22c6-41f6-8e6e-4125927e2f20.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_0599.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/495964a6-f764-487d-aec8-a1c1c02d8be3.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/2215.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/4ad91f5f-7c9e-40e4-9c4f-c03a22bd8b2f.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/1838.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/5012b076-ef07-41c8-9da7-033e2af2f579.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_102.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 1"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/50b673c2-e1b9-4b84-bbcc-1c47cca0cace.json",
"chars": 533,
"preview": "{\n \"name\": \"mmembed/weather/thumb_4076.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/530a9038-98b8-4925-b26b-f5c7776d882f.json",
"chars": 530,
"preview": "{\n \"name\": \"mmembed/weather/3606.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/55e55a5c-a59a-4c7f-846a-73784ee2f25d.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/0003.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/563a8d9a-0285-4496-aaba-59138c349dad.json",
"chars": 528,
"preview": "{\n \"name\": \"mmembed/weather/6093.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/58852f43-76ea-4ad1-9c6a-a33c2c53ff56.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_0601.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/5a3ce50b-2658-4f68-b12d-0eec92a7223a.json",
"chars": 528,
"preview": "{\n \"name\": \"mmembed/weather/0013.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/5a3ecd67-d20b-405d-83f7-86ff772f6d6f.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/3600.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/5b388511-e3b8-4d3f-b0bf-d085f75c7769.json",
"chars": 530,
"preview": "{\n \"name\": \"mmembed/weather/2211.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/5b62fd41-e2a2-4ba6-b305-a854619a947b.json",
"chars": 528,
"preview": "{\n \"name\": \"mmembed/weather/0605.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/5ef2346d-d39e-49ce-b26a-9e5069dba421.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_1830.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/5fd6d66a-8bf1-4f81-b0eb-9895552a8ec4.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/6103.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/61556f93-4dd2-43e5-bc4d-78cbe3809d42.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/1843.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/620c1be4-e353-46d9-8dbd-c3079d5efd6e.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_2218.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/62b85256-0f54-47cb-ae83-d45cd0a66030.json",
"chars": 530,
"preview": "{\n \"name\": \"mmembed/weather/1833.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/64609c87-07e8-48a4-b8c2-a26210e1dd0b.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_3606.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/64f13cdd-ee8c-4238-b66b-14c1baa578e3.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/4086.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/65c4dee4-4429-4eae-9250-2e969f3c190a.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_4080.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/66569702-2074-4047-a794-4f11e3b285f2.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/4075.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/67aaca3d-2acc-4987-8ed9-3f2fbf075f7c.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/2214.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/67b6aeb1-b7d0-4402-8a60-b2f9c0c8b447.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/2216.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/686d4f0b-5c28-48f4-b656-b354a13981a7.json",
"chars": 533,
"preview": "{\n \"name\": \"mmembed/weather/thumb_0600.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/69657785-7299-408d-8453-8cb32f848150.json",
"chars": 530,
"preview": "{\n \"name\": \"mmembed/weather/2220.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/6b6f7c8b-a5b9-4436-80a0-f128c1eb3bcf.json",
"chars": 530,
"preview": "{\n \"name\": \"mmembed/weather/2218.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/6d8f5f9c-fef6-4179-ba05-79e361503c7a.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_1842.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/70772163-4c3b-493a-ad04-87b67ee35d71.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_119.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 1"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/70c43a85-254c-49b1-bf14-d13687913f2d.json",
"chars": 528,
"preview": "{\n \"name\": \"mmembed/weather/0010.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/70db2153-5bbf-42f6-91bc-f3cb4249dc01.json",
"chars": 528,
"preview": "{\n \"name\": \"mmembed/weather/109.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 1727834"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/70ef85a5-fb7a-41ff-ac02-0d00927d0274.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/119.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 1727834"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/70fc8a82-bfeb-4bb7-bb95-2a654168ead1.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_6101.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/71894824-0cd9-4acf-9178-abba58090e42.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_0000.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/721bdd57-7850-42e4-9fb9-747525b187c8.json",
"chars": 530,
"preview": "{\n \"name\": \"mmembed/weather/2210.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/7706c66e-3fd9-45eb-9df5-8308b84dd194.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_0594.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/7846c694-8e7a-47dd-b8b8-a2448285dcc0.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/2221.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/78a3c767-265f-419d-bb3f-c3eba6e22017.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/6097.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/78dd9bfd-a0ca-4ac9-9473-45d0d051fb1e.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_4085.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/799fcdd0-1054-4c53-a218-48cb8f3ed044.json",
"chars": 530,
"preview": "{\n \"name\": \"mmembed/weather/3610.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/7a5a7379-d29b-412b-9a50-565e171ab712.json",
"chars": 530,
"preview": "{\n \"name\": \"mmembed/weather/3612.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/7c12f79f-d474-446f-b5fe-f669e60f8227.json",
"chars": 533,
"preview": "{\n \"name\": \"mmembed/weather/thumb_0009.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/7c4a2540-75b9-4e37-b4b1-a6d7f62830cb.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_110.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 1"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/7c689600-cf26-4953-8be5-ae58faa5cad0.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_1834.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/7d321a59-d6c9-433e-bfcb-2ee10dcd2745.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/6102.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/7ff005e0-3f17-423f-9a04-1d762447eb07.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_3603.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/8278f4eb-708a-4054-b408-9b4a2a8d6b7a.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_0012.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/828f697d-fd40-470e-8326-8a40dccf9096.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_4081.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/832cacff-0ed7-4685-a383-a0d94e6a366e.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_1835.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/84307d32-0903-4a1c-8599-9d3938995da6.json",
"chars": 528,
"preview": "{\n \"name\": \"mmembed/weather/4080.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/84491769-76dd-4667-825d-95156d99ba3f.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/1834.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/848c006e-a50c-4d24-9e96-f9b12ab5f66b.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/1841.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/8628a1cb-e588-483c-b00f-ba449d2c27b1.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_4088.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/87039e64-1d6f-4f28-92e5-322ae686133d.json",
"chars": 528,
"preview": "{\n \"name\": \"mmembed/weather/105.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 1727834"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/884b9432-28fb-465b-a826-35daec2593d7.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_2221.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/8bc987b7-d22f-4331-8de5-7149d9b73361.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/117.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 1727834"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/8cd45f77-4225-412e-9c61-bb90285356c5.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/1835.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/8e0d391e-c779-4a34-a8de-f6abccc701ab.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_0603.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/8f014805-5f51-439d-9447-b686abf889fa.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/3602.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/91006bcb-22a2-480d-83ba-5393a41c6558.json",
"chars": 530,
"preview": "{\n \"name\": \"mmembed/weather/3605.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/91bbc49d-9748-4638-a75c-573f23ff7c5e.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/4088.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/92e62795-a847-46bc-a983-8f2f975f4ac3.json",
"chars": 536,
"preview": "{\n \"name\": \"mmembed/weather/thumb_0593.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/92e944f9-bcfa-4e3c-95ad-2d6619cc377b.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/0598.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/934f914b-21f8-45e6-812c-ac29926508c3.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/0599.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/96d4fbff-3d58-4cef-b6f0-393751f39a80.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_4084.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/98ca7091-441b-471c-a3cc-7a7e94826534.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_4079.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/991c80af-1b3f-454c-8716-c45ed7023269.json",
"chars": 528,
"preview": "{\n \"name\": \"mmembed/weather/1831.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/9ab4a412-9175-410b-8281-65999c677106.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/4084.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/9d4fbb56-2a44-4866-9489-03d9312fdd55.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_1843.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/9edac21b-4d29-4a5a-a5cd-5aac086224df.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_0013.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/a0eb55dd-239b-4908-8acd-a89c2bf639c2.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/1842.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/a1539350-b2f4-4c95-a3d4-6b85d493f2b1.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_105.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 1"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/a1daa863-1f24-4f91-964b-55e133f8c36d.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_4086.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/a1f4669b-2187-4feb-92dd-1a321a0d3023.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_1840.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/a3f79d63-f265-4971-997b-4e64a25f806f.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_2214.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/a3fcb879-7be9-4a4f-8099-d237cf97418f.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/113.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 1727834"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/a764ed81-66b1-4d49-9013-b75c1c6ba383.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/0601.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/a7855fa7-b5be-4ac3-a4e5-d4893ad338f6.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_0597.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/a8c3e42a-8ebd-490f-b1da-d9046b7aa4ed.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/1837.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/a99818ab-a299-4e87-9662-265cbe8e1160.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_0604.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/ab183f61-767e-4020-bae5-928ca15abd23.json",
"chars": 534,
"preview": "{\n \"name\": \"mmembed/weather/thumb_113.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 1"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/ad7b8aa9-f8f7-43d5-96cf-b222b5e57318.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/0009.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/ad8f7da2-4988-40ec-9042-85c3f4ca6404.json",
"chars": 530,
"preview": "{\n \"name\": \"mmembed/weather/6096.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/ae4d2687-9c0e-49b2-9401-271fb42e62e1.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_0011.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/b17a8866-876a-4d32-8b84-5e19b8bcc5f4.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/0006.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/b1d4c0bb-0181-45cc-a1d7-7f2832b49b6d.json",
"chars": 528,
"preview": "{\n \"name\": \"mmembed/weather/110.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 1727834"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/b2e7394a-32cb-45ca-abea-73d0b2df628f.json",
"chars": 429,
"preview": "{\n \"name\": \"mmembed/weather/\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 1727834196911,"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/b499dd2d-cd18-488c-9927-c2f1f786a762.json",
"chars": 535,
"preview": "{\n \"name\": \"mmembed/weather/thumb_3612.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": "
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/b7ab64f1-76c2-459d-b6a9-cc7d52e689d1.json",
"chars": 528,
"preview": "{\n \"name\": \"mmembed/weather/2213.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/b8008ef2-2fb5-40ed-8fef-211863635165.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/6100.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/b8f8d67b-85c4-4734-a413-7e1c5b1a7a9d.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/0012.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/ba5f66c2-65e8-4ecc-829d-28dd2ddf625a.json",
"chars": 528,
"preview": "{\n \"name\": \"mmembed/weather/4085.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/ba7eb319-928d-45ba-bce3-4edd8f3955bd.json",
"chars": 529,
"preview": "{\n \"name\": \"mmembed/weather/4079.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 172783"
},
{
"path": "multimodal-embeddings/emulator-export/storage_export/metadata/ba9ba128-b58e-47c1-97ee-4b2f52524cdf.json",
"chars": 528,
"preview": "{\n \"name\": \"mmembed/weather/102.jpg\",\n \"bucket\": \"mm-demo.appspot.com\",\n \"metageneration\": 1,\n \"generation\": 1727834"
}
]
// ... and 418 more files (download for full content)
About this extraction
This page contains the full source code of the googlecreativelab/gemini-demos GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 618 files (467.5 KB), approximately 165.8k tokens, and a symbol index with 94 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.