arozantsev commited on
Commit
0cd774a
·
verified ·
1 Parent(s): 31c1412

Deploy simready-assets run 20261012-9d9f42a (GPU variant)

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. Dockerfile +2 -2
  2. docker/hf-space/nginx-glb-production.conf.template +0 -367
  3. docker/hf-space/nginx.conf.template +1 -56
  4. docker/hf-space/supervisord-gpu.conf +0 -13
  5. docker/hf-space/supervisord.conf +0 -11
  6. licenses/extras-usd-search-explorer-ui-bundle-javascript-dependencies.txt +2 -730
  7. pipeline/native_usd.py +0 -264
  8. pipeline/native_usd_releases/20261005-ee37df6.json +0 -0
  9. pipeline/native_usd_releases/20261012-9d9f42a.json +0 -0
  10. pipeline/native_usd_releases/production-glb-catalog.json +0 -0
  11. pipeline/partner_viewer.py +0 -229
  12. services/explorer/dist/native-usd-fixtures/articulated.usda +0 -178
  13. services/explorer/dist/native-usd-fixtures/articulated.usdc +0 -0
  14. services/explorer/dist/native-usd-runtime.json +0 -1
  15. services/explorer/dist/static/css/13.2d67a70a.chunk.css +0 -1
  16. services/explorer/dist/static/css/408.a882dfe3.chunk.css +0 -1
  17. services/explorer/dist/static/css/493.7df49819.chunk.css +0 -1
  18. services/explorer/dist/static/css/734.22c494cb.chunk.css +0 -1
  19. services/explorer/dist/static/js/13.492f8275.chunk.js +0 -1
  20. services/explorer/dist/static/js/13.53221a3d.chunk.js +0 -1
  21. services/explorer/dist/static/js/207.a8b74874.chunk.js +0 -1
  22. services/explorer/dist/static/js/217.2c2256b2.chunk.js +0 -1
  23. services/explorer/dist/static/js/218.c928f993.chunk.js +0 -1
  24. services/explorer/dist/static/js/27.b6bb28ea.chunk.js +0 -0
  25. services/explorer/dist/static/js/27.b6bb28ea.chunk.js.LICENSE.txt +0 -5
  26. services/explorer/dist/static/js/381.2d3cf0a4.chunk.js +0 -0
  27. services/explorer/dist/static/js/408.ff11db79.chunk.js +0 -1
  28. services/explorer/dist/static/js/435.31dcfdae.chunk.js +0 -0
  29. services/explorer/dist/static/js/435.31dcfdae.chunk.js.LICENSE.txt +0 -5
  30. services/explorer/dist/static/js/436.fb7d7bfa.chunk.js +0 -1
  31. services/explorer/dist/static/js/445.395e0fec.chunk.js +0 -1
  32. services/explorer/dist/static/js/493.1fbf9797.chunk.js +0 -1
  33. services/explorer/dist/static/js/53.865cff8c.chunk.js +0 -1
  34. services/explorer/dist/static/js/583.b4f476c9.chunk.js +0 -1
  35. services/explorer/dist/static/js/601.858a3d83.chunk.js +0 -1
  36. services/explorer/dist/static/js/626.dd61d770.chunk.js +0 -1
  37. services/explorer/dist/static/js/66.89eda487.chunk.js +0 -1
  38. services/explorer/dist/static/js/672.c00e55f9.chunk.js +0 -1
  39. services/explorer/dist/static/js/718.3b4487f9.chunk.js +0 -1
  40. services/explorer/dist/static/js/734.2eb423ea.chunk.js +0 -1
  41. services/explorer/dist/static/js/816.6d66a696.chunk.js +0 -0
  42. services/explorer/dist/static/js/816.6d66a696.chunk.js.LICENSE.txt +0 -5
  43. services/explorer/dist/static/js/857.e9f384a0.chunk.js +0 -1
  44. services/explorer/dist/static/js/892.bbb0991c.chunk.js +0 -1
  45. services/explorer/dist/static/js/899.9ddb24b2.chunk.js +0 -1
  46. services/explorer/dist/static/js/main.738ee38a.js +0 -0
  47. services/explorer/dist/static/js/main.738ee38a.js.LICENSE.txt +0 -39
  48. services/explorer/dist/static/js/main.9eeeca83.js +0 -0
  49. services/explorer/dist/static/js/main.9eeeca83.js.LICENSE.txt +0 -39
  50. services/explorer/dist/static/js/main.f2f625ec.js +0 -0
Dockerfile CHANGED
@@ -1,4 +1,4 @@
1
- # deploy: 20261005-ee37df6 (simready-assets)
2
  # GPU variant of the single-container MVP image for Hugging Face Spaces
3
  # (Docker SDK): everything docker/Dockerfile.hf-space has (OpenSearch + Neo4j
4
  # + Redis + deepsearch-api + asset-graph-service + nginx under supervisord),
@@ -282,7 +282,7 @@ COPY docker/hf-space/search_fields.yaml /app/search_fields.yaml
282
  # own uvicorn; remapped to 8003 here).
283
  COPY docker/hf-space/supervisord-gpu.conf /etc/supervisor/conf.d/hf-space.conf
284
 
285
- COPY docker/hf-space/nginx-glb-production.conf.template /etc/nginx/hf-space.conf.template
286
 
287
  COPY services/explorer/dist /usr/share/nginx/explorer
288
 
 
1
+ # deploy: 20261012-9d9f42a (simready-assets)
2
  # GPU variant of the single-container MVP image for Hugging Face Spaces
3
  # (Docker SDK): everything docker/Dockerfile.hf-space has (OpenSearch + Neo4j
4
  # + Redis + deepsearch-api + asset-graph-service + nginx under supervisord),
 
282
  # own uvicorn; remapped to 8003 here).
283
  COPY docker/hf-space/supervisord-gpu.conf /etc/supervisor/conf.d/hf-space.conf
284
 
285
+ COPY docker/hf-space/nginx.conf.template /etc/nginx/hf-space.conf.template
286
 
287
  COPY services/explorer/dist /usr/share/nginx/explorer
288
 
docker/hf-space/nginx-glb-production.conf.template DELETED
@@ -1,367 +0,0 @@
1
- # Friendly external paths remapped to deepsearch-api's/asset-graph-service's
2
- # actual routes — same mapping as
3
- # usdsearch/helm/usdsearch/templates/api_gateway_config_map.yaml.
4
- # deepsearch-api listens on 127.0.0.1:8000, asset-graph-service on
5
- # 127.0.0.1:8010 (see docker/hf-space/supervisord.conf) — nginx is the sole
6
- # process bound to the externally proxied port, so it can front every route
7
- # with these rewrites plus CORS.
8
- #
9
- # The Explorer UI is served at `/` (root), not proxied to deepsearch-api at
10
- # all — served directly from the static bundle baked into this image at
11
- # build time (see the Dockerfile). Real difference from the multi-service
12
- # deployment, which proxies /ui and /static/ to a *separate*
13
- # deepsearch-explorer container: that bundle is just static files with
14
- # same-origin relative API calls (REACT_APP_API_URL baked empty) and its
15
- # own assets already use root-absolute paths (/static/js/..., /ds.png), so
16
- # serving it directly at `/` — where it already expects to live — needs no
17
- # extra process and no /ui prefix-stripping trick. The tradeoff: unlike the
18
- # old single catch-all proxy, deepsearch-api's own root-level routes
19
- # (/health, /docs, /redoc, /openapi.json) now need to be listed
20
- # explicitly below, since the final `location /` falls through to the SPA
21
- # instead. Also sidesteps a real problem seen live: a Space deployed with
22
- # `/` returning a 301 (redirecting to `/ui`, the previous approach) broke —
23
- # root cause not fully confirmed, but consistent with Hugging Face's own
24
- # readiness check wanting a real 200 at `/`, not a redirect.
25
- #
26
- # __PORT__ is substituted with $PORT at container start (supervisord.conf),
27
- # matching the Spaces convention of an operator-configurable app_port.
28
-
29
- # >>> simready-central slim explorer (http) >>>
30
- # SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
31
- # SPDX-License-Identifier: Apache-2.0
32
- # Included from nginx.conf's http{} (conf.d/*.conf) — an http-level directive is legal here.
33
- # ONE level under /tmp on purpose: nginx mkdir()s only the last path component (no mkdir -p), and
34
- # nothing in this image pre-creates a parent — /tmp/nginx-cache/slim-stats fails `nginx -t`. The
35
- # `levels=` subdirectories are different: nginx creates those itself on the first write.
36
- proxy_cache_path /tmp/slim-stats-cache levels=1 keys_zone=slim_stats_cache:2m max_size=256m inactive=1h use_temp_path=off;
37
- # Thumbnails (/images): ~1,500 JPEGs of 27-52 KB (~75 MB) fit well inside 1g. Lives in the container's
38
- # /tmp, so every deploy, restart or sleep starts it cold.
39
- proxy_cache_path /tmp/slim-images-cache levels=1:2 keys_zone=slim_images_cache:10m max_size=1g inactive=7d use_temp_path=off;
40
- # Library media (/library_media/ below): a file asked for under its ?v= (its content hash) never changes; the
41
- # manifest (no ?v=) revalidates, so a new fetch at the next container start shows at once.
42
- map $arg_v $slim_library_cache {
43
- "" "no-cache";
44
- default "public, max-age=31536000, immutable";
45
- }
46
- # <<< simready-central slim explorer (http) <<<
47
- server {
48
- listen __PORT__;
49
-
50
- proxy_http_version 1.1;
51
- proxy_set_header Connection "";
52
- proxy_connect_timeout 5s;
53
- proxy_send_timeout 60s;
54
- proxy_read_timeout 60s;
55
- proxy_set_header Host $host;
56
- proxy_set_header X-Real-IP $remote_addr;
57
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
58
- proxy_set_header X-Forwarded-Proto $scheme;
59
-
60
- add_header Access-Control-Allow-Origin "*" always;
61
- add_header Access-Control-Allow-Methods "GET, POST, OPTIONS" always;
62
- add_header Access-Control-Allow-Headers "Content-Type, Authorization" always;
63
-
64
- location /search {
65
- if ($request_method = OPTIONS) { add_header Content-Length 0 always; add_header Content-Type "text/plain" always; return 204; }
66
- rewrite ^/search(.*)$ /v2/deepsearch/search$1 break;
67
- proxy_pass http://127.0.0.1:8000;
68
- }
69
-
70
- location /search_hybrid {
71
- if ($request_method = OPTIONS) { add_header Content-Length 0 always; add_header Content-Type "text/plain" always; return 204; }
72
- rewrite ^/search_hybrid(.*)$ /v3/deepsearch/search$1 break;
73
- proxy_pass http://127.0.0.1:8000;
74
- }
75
-
76
- location /vlm_validate/search_result {
77
- if ($request_method = OPTIONS) { add_header Content-Length 0 always; add_header Content-Type "text/plain" always; return 204; }
78
- rewrite ^/vlm_validate/search_result(.*)$ /v3/deepsearch/vlm_validate/search_result$1 break;
79
- proxy_pass http://127.0.0.1:8000;
80
- }
81
-
82
- location /llm_parse/ {
83
- if ($request_method = OPTIONS) { add_header Content-Length 0 always; add_header Content-Type "text/plain" always; return 204; }
84
- rewrite ^/llm_parse/(.*)$ /v3/deepsearch/llm_parse/$1 break;
85
- proxy_pass http://127.0.0.1:8000;
86
- }
87
-
88
- # package-download (127.0.0.1:8020, pipeline/package_download/), not deepsearch-api: it answers
89
- # /download/asset with the asset's whole SimReady package folder, same response contract, and
90
- # forwards scope=dependencies (and anything outside a catalogued package) to deepsearch-api's
91
- # own /v3/download/asset. It serves the /download/... paths itself, so no rewrite.
92
- location /download {
93
- if ($request_method = OPTIONS) { add_header Content-Length 0 always; add_header Content-Type "text/plain" always; return 204; }
94
- proxy_pass http://127.0.0.1:8020;
95
- # Fetching a whole package (or a forwarded dependency bundle) can take longer than a single thumbnail.
96
- proxy_read_timeout 300s;
97
- }
98
-
99
- location /images {
100
- if ($request_method = OPTIONS) { add_header Content-Length 0 always; add_header Content-Type "text/plain" always; return 204; }
101
- rewrite ^/images(.*)$ /v3/images$1 break;
102
- proxy_pass http://127.0.0.1:8000;
103
- }
104
-
105
- location /static/ {
106
- alias /usr/share/nginx/explorer/static/;
107
- }
108
-
109
- # asset-graph-service routes (query-time graph reads only — see
110
- # docker/Dockerfile.hf-space's header for why there's no graph-builder/
111
- # asset_graph_generation worker in this image). Same rewrites as the
112
- # real gateway config's asset_graph_service locations, just proxying to
113
- # our own internal port instead of a separate service/Space.
114
- location /asset_graph/usd/scene_summary/ {
115
- if ($request_method = OPTIONS) { add_header Content-Length 0 always; add_header Content-Type "text/plain" always; return 204; }
116
- rewrite ^/asset_graph/usd/scene_summary/(.*)$ /asset_graph/usd/scene_summary/$1 break;
117
- proxy_pass http://127.0.0.1:8010;
118
- }
119
-
120
- location /asset_graph/usd/scene_summary {
121
- if ($request_method = OPTIONS) { add_header Content-Length 0 always; add_header Content-Type "text/plain" always; return 204; }
122
- rewrite ^/asset_graph/usd/scene_summary(.*)$ /asset_graph/usd/scene_summary/$1 break;
123
- proxy_pass http://127.0.0.1:8010;
124
- }
125
-
126
- location /asset_graph/usd/prims {
127
- if ($request_method = OPTIONS) { add_header Content-Length 0 always; add_header Content-Type "text/plain" always; return 204; }
128
- rewrite ^/asset_graph/usd/prims(.*)$ /asset_graph/usd/prims$1 break;
129
- proxy_pass http://127.0.0.1:8010;
130
- }
131
-
132
- location /dependency_graph {
133
- if ($request_method = OPTIONS) { add_header Content-Length 0 always; add_header Content-Type "text/plain" always; return 204; }
134
- rewrite ^/dependency_graph(.*)$ /dependency_graph$1 break;
135
- proxy_pass http://127.0.0.1:8010;
136
- }
137
-
138
- # deepsearch-api's own root-level routes — explicit now that `location /`
139
- # below serves the Explorer SPA instead of proxying everything
140
- # unmatched. /docs and /redoc are prefix matches, not exact: Swagger
141
- # UI/ReDoc can request sub-resources under their own path.
142
- location = /health { proxy_pass http://127.0.0.1:8000; }
143
- location = /openapi.json { proxy_pass http://127.0.0.1:8000; }
144
- # Prometheus /metrics stays private to the container (127.0.0.1:8000
145
- # directly): an explicit JSON 404 rather than no location, which would
146
- # fall through to the SPA's index.html with a 200.
147
- location = /metrics {
148
- default_type application/json;
149
- return 404 '{"detail":"Not Found"}';
150
- }
151
- location /docs { proxy_pass http://127.0.0.1:8000; }
152
- location /redoc { proxy_pass http://127.0.0.1:8000; }
153
-
154
- # The Explorer SPA (see header comment) at root: try_files serves any of
155
- # its own literal files (index.html, ds.png, favicon.ico, manifest.json,
156
- # ...) directly, and falls back to index.html for anything else
157
- # (client-side routing) — anything actually meant for the API above was
158
- # already matched by a more specific location before nginx gets here.
159
- # >>> simready-central slim explorer >>>
160
- # SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
161
- # SPDX-License-Identifier: Apache-2.0
162
- # services/explorer/dist is SimReady Central's search-only Explorer (repo simready-central,
163
- # branch slim, slim/devspace/). The locations here are additive — exact matches, longer
164
- # prefixes or a regex — and none of his locations is redefined. This block carries: /config.js,
165
- # a no-cache /index.html, a 10-min
166
- # proxy cache on /search/stats/usd_properties, a shared proxy cache on /images,
167
- # /wikidata_hierarchy.json, /library_media/ and JSON 404s for the routes this build does not have. What DOES
168
- # reach beyond it: client_max_body_size 32m is server-wide (it applies to ALL his locations
169
- # too); `= /images` takes the requests his `/images` prefix served before (same rewrite +
170
- # proxy_pass, plus the cache); and an
171
- # add_header inside one of our locations replaces his server-level headers for THOSE responses
172
- # — /images and the stats cache re-declare his three CORS lines, /config.js and /index.html
173
- # (same-origin UI files) do not. Applied by slim/devspace/deploy.sh.
174
- client_max_body_size 32m; # query-image searches POST a base64 JPEG (nginx default 1 MB)
175
- gzip_types text/css application/javascript application/json image/svg+xml; # stock gzip covers text/html only
176
-
177
- # Runtime index registry (blocking <script src="/config.js">). The CORPUS_NAME marker is
178
- # rendered by the same sed that renders the PORT marker (supervisord.conf).
179
- # __DOWNLOAD_ENABLED__ is rendered the same way, from $DOWNLOAD_ENABLED
180
- # (baked by docker/Dockerfile.hf-space, set true only for a
181
- # storage_api-backend corpus — pipeline/bake.py's hf_space_build_args()
182
- # — since that's the only backend this image runs a live hf-storage-api
183
- # gRPC server for; GET /v3/download/asset works today for neither
184
- # backend without it running, and this repo hasn't verified an s3-backend
185
- # download path independently, so s3 corpora keep today's false).
186
- # seedDefaultScope:false — boot browses the corpus. No defaultFilters (owner, 2026-10-07): the boot browse
187
- # shows every license; License stays one click away in the rail.
188
- # railFilters + railDefaults ["profiles","simready_metadata_asset_license","category"]: rail = Profiles + License +
189
- # the Category tree, all on (owner, 2026-09-30). The rail matches a facet by its parser-catalog field NAME:
190
- # search_fields.yaml names it simready_metadata_asset_license since 2026-09-23 ("license" matched nothing and
191
- # hid the facet); the parser catalog
192
- # docker/hf-space/search_fields.yaml stays curated to profile + license. propertyAliases: this API stores the
193
- # Wikidata code as semantic:wikidata_qcode:params:semanticData (wikidata_qcode= matches nothing here), so the
194
- # Explorer translates its canonical name at the wire and renames the stats key back on arrival.
195
- # propertyFilterCombine "and": the API ORs every filter_by_properties_include_any token globally, so with License
196
- # checked a Category pick would change nothing — a property with ONE checked value rides filter_by_properties
197
- # (AND) instead; a multi-valued one (the tree's qcodes) stays the OR bucket. Measured: license 1488, one qcode 124,
198
- # both in include_any 1488, license AND qcode 124.
199
- location = /config.js {
200
- default_type application/javascript;
201
- add_header Cache-Control "no-cache, must-revalidate" always;
202
- return 200 '(function(){var c="__CORPUS_NAME__";if(!c||c.indexOf("__")===0){c="usdsearch-dev";}var e={"field_name":"siglip2-embedding.embedding","dimension":1536};var f={"download":__DOWNLOAD_ENABLED__,"s3UrlRemap":false,"seedDefaultScope":false,"railFilters":["profiles","simready_metadata_asset_license","category"],"railDefaults":["profiles","simready_metadata_asset_license","category"],"propertyAliases":{"wikidata_qcode":"simready_metadata_qcode"},"propertyFilterCombine":"and","submitContentUrl":"__SUBMIT_CONTENT_URL__"};window.__SERVER_MAPPING__={"usdsearch-dev":{"name":c+" (Hugging Face)","apiUrl":"","embedding_config":e,"features":f},"hf-robotiq":{"name":"Robotiq","apiUrl":"","search_path":"/Robotiq-Official/simready-assets/","embedding_config":e,"features":Object.assign({},f,{"libraryPosters":"stills"}),"origin":{"kind":"hf","label":"Robotiq-Official/simready-assets"}},"hf-standardbots":{"name":"Standard Bots","apiUrl":"","search_path":"/standardbots/","embedding_config":e,"features":Object.assign({},f,{"libraryPosters":"stills"}),"origin":{"kind":"hf","label":"standardbots"}}};window.__DEFAULT_SERVER__="usdsearch-dev";})();';
203
- }
204
- # index.html must always revalidate (covers the try_files fallback too): a swap or rollback
205
- # must not leave a browser holding an index.html that names deleted chunks.
206
- location = /index.html {
207
- root /usr/share/nginx/explorer;
208
- add_header Cache-Control "no-cache" always;
209
- }
210
-
211
- # Property inventory (rail facets + parser grounding): multi-MB aggregation — cached 10 min.
212
- location = /search/stats/usd_properties {
213
- if ($request_method = OPTIONS) { add_header Content-Length 0 always; add_header Content-Type "text/plain" always; return 204; }
214
- rewrite ^/search(.*)$ /v2/deepsearch/search$1 break;
215
- proxy_pass http://127.0.0.1:8000;
216
- proxy_ignore_headers Cache-Control Expires;
217
- proxy_cache slim_stats_cache;
218
- proxy_cache_key "$request_uri";
219
- proxy_cache_valid 200 10m;
220
- proxy_cache_lock on;
221
- proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;
222
- proxy_read_timeout 120s;
223
- add_header X-Cache-Status $upstream_cache_status always;
224
- # add_header above drops his server-level headers — re-declared as in his template
225
- add_header Access-Control-Allow-Origin "*" always;
226
- add_header Access-Control-Allow-Methods "GET, POST, OPTIONS" always;
227
- add_header Access-Control-Allow-Headers "Content-Type, Authorization" always;
228
- }
229
- # Thumbnails: his `location /images` rewrite + proxy_pass (this exact match wins over his prefix)
230
- # plus a SHARED cache — every cold /images costs the API ~150 CPU-ms on its one event loop.
231
- # Keyed by the full URI (image_key, or asset_url + img_offset); the API's `Cache-Control: private`
232
- # is ignored on purpose. Valid ONLY while the image runs with STORAGE_REQUIRE_AUTH=False (deploy.sh
233
- # refuses a hub Dockerfile without it): with per-user storage auth, add
234
- # `proxy_no_cache $arg_asset_url; proxy_cache_bypass $arg_asset_url;` so the access-checked
235
- # asset_url path is never shared (image_key is content-addressed and unchecked). add_header here
236
- # drops his server-level headers, so his three CORS lines are re-declared; proxy_hide_header
237
- # keeps a chained nginx (check.sh --replica) to its own X-Cache-Status.
238
- location = /images {
239
- if ($request_method = OPTIONS) { add_header Content-Length 0 always; add_header Content-Type "text/plain" always; return 204; }
240
- rewrite ^/images(.*)$ /v3/images$1 break;
241
- proxy_pass http://127.0.0.1:8000;
242
- proxy_cache slim_images_cache;
243
- proxy_cache_key "$request_uri";
244
- proxy_ignore_headers Cache-Control Expires;
245
- proxy_hide_header X-Cache-Status;
246
- proxy_cache_valid 200 7d;
247
- proxy_cache_lock on;
248
- proxy_cache_lock_timeout 15s;
249
- proxy_cache_use_stale error timeout updating;
250
- add_header X-Cache-Status $upstream_cache_status always;
251
- add_header Access-Control-Allow-Origin "*" always;
252
- add_header Access-Control-Allow-Methods "GET, POST, OPTIONS" always;
253
- add_header Access-Control-Allow-Headers "Content-Type, Authorization" always;
254
- }
255
- # Our 404s are JSON like the API's own (a bare `return 404;` would be nginx's text/html error
256
- # page): reachable only from the locations below, so nothing of his changes.
257
- location @slim_not_found {
258
- default_type application/json;
259
- return 404 '{"detail":"Not Found"}';
260
- }
261
- # The Category tree: the `hierarchy` stage's output, restored with the index run (pipeline/hierarchy/store.py);
262
- # absent → a real 404 and the Explorer falls back to its __full_path tree.
263
- location = /wikidata_hierarchy.json {
264
- root /app/hf-space-pipeline/.build/restore/hierarchy;
265
- try_files /category_hierarchy.json @slim_not_found;
266
- }
267
- # One request per result page (QA 6881558: Hugging Face limits each user to ~2,000 requests a minute,
268
- # and a page of per-image checks took 50): deepsearch-api's /vlm_validate/search_result_batch streams one
269
- # NDJSON verdict per hit. The Explorer calls this path; the request and the lines are the same.
270
- # Unbuffered so verdicts land as they come; heartbeats keep the stream open.
271
- location = /vlm_validate/batch_stream {
272
- if ($request_method = OPTIONS) { add_header Content-Length 0 always; add_header Content-Type "text/plain" always; return 204; }
273
- rewrite ^ /v3/deepsearch/vlm_validate/search_result_batch break;
274
- proxy_pass http://127.0.0.1:8000;
275
- proxy_buffering off;
276
- proxy_read_timeout 120s;
277
- gzip off;
278
- add_header X-Accel-Buffering no always;
279
- add_header Access-Control-Allow-Origin "*" always;
280
- add_header Access-Control-Allow-Methods "GET, POST, OPTIONS" always;
281
- add_header Access-Control-Allow-Headers "Content-Type, Authorization" always;
282
- }
283
- # Any other /vlm_validate/ path: a JSON 404, never the SPA's index.html.
284
- location /vlm_validate/ {
285
- default_type application/json;
286
- return 404 '{"detail":"Not Found"}';
287
- }
288
- # Six qualified partner robots are installed from one SHA-pinned S3 ZIP by
289
- # pipeline/partner_viewer.py. Its own viewer uses these root-relative paths;
290
- # the USD path is narrower than the native-USD release service's route.
291
- location = /trial { absolute_redirect off; return 308 /trial/; }
292
- location = /trial/ {
293
- root /app/hf-space-pipeline/.build/partner_viewer;
294
- try_files /trial/index.html @slim_not_found;
295
- }
296
- location ^~ /trial/ { root /app/hf-space-pipeline/.build/partner_viewer; index index.html; try_files $uri @slim_not_found; }
297
- location ^~ /media/ { root /app/hf-space-pipeline/.build/partner_viewer; try_files $uri @slim_not_found; }
298
- location ^~ /rust/ { root /app/hf-space-pipeline/.build/partner_viewer; try_files $uri @slim_not_found; }
299
- location ^~ /three/ { root /app/hf-space-pipeline/.build/partner_viewer; try_files $uri @slim_not_found; }
300
- location ^~ /usd-round2/ { root /app/hf-space-pipeline/.build/partner_viewer; try_files $uri @slim_not_found; }
301
- # Library media — the Explorer's joints viewer (model.glb + articulation.json), moving-parts and drop-test
302
- # clips, per asset of this corpus: static files pipeline/library_media.py fetches at container start from
303
- # the artifact bucket (supervisord program library-media). Not there (not fetched yet, or none for
304
- # this corpus) → a JSON 404 and the Explorer shows no media; never the SPA's index.html. Range requests
305
- # (Safari's <video>) are nginx's own. add_header drops his server-level headers: his CORS lines re-declared.
306
- # Native USD is a separately pinned release. Its verified 2 GiB cache keeps
307
- # the full catalog out of the Space's boot-time restore and disk budget.
308
- # User-requested production rollback: every interactive asset uses GLB.
309
- location = /library_media/usdsearch-dev/usd-catalog.json {
310
- alias /app/hf-space-pipeline/pipeline/native_usd_releases/production-glb-catalog.json;
311
- default_type application/json;
312
- add_header Cache-Control "no-store";
313
- gzip_types application/json;
314
- }
315
- location /usd/usd-central/ {
316
- default_type application/json;
317
- add_header Cache-Control "no-store";
318
- return 404 '{"detail":"Native USD experiment is paused; use GLB"}';
319
- }
320
- location /usd-rust/ {
321
- root /usr/share/nginx/explorer;
322
- try_files $uri =404;
323
- gzip_static on;
324
- add_header X-Content-Type-Options nosniff;
325
- }
326
- # The three picker entries share one physical corpus and one media archive.
327
- # Keep partner URLs on the same files so a scoped picker can load their RTX
328
- # media and native USD catalog without duplicating the archive on disk.
329
- location = /library_media/hf-robotiq/usd-catalog.json {
330
- default_type application/json;
331
- add_header Cache-Control "no-store" always;
332
- return 404 '{"detail":"Native USD experiment is paused; use GLB"}';
333
- }
334
- location = /library_media/hf-standardbots/usd-catalog.json {
335
- default_type application/json;
336
- add_header Cache-Control "no-store" always;
337
- return 404 '{"detail":"Native USD experiment is paused; use GLB"}';
338
- }
339
- location ^~ /library_media/hf-robotiq/ {
340
- rewrite ^/library_media/hf-robotiq/(.*)$ /library_media/usdsearch-dev/$1 last;
341
- }
342
- location ^~ /library_media/hf-standardbots/ {
343
- rewrite ^/library_media/hf-standardbots/(.*)$ /library_media/usdsearch-dev/$1 last;
344
- }
345
- location /library_media/ {
346
- root /app/hf-space-pipeline/.build; # .build/library_media/: outside .build/restore/, which the index restore empties
347
- try_files $uri @slim_not_found;
348
- types { application/json json; model/gltf-binary glb; video/mp4 mp4; image/jpeg jpg; image/webp webp; }
349
- default_type application/octet-stream;
350
- gzip_types application/json model/gltf-binary; # meshopt GLBs still shrink under gzip
351
- add_header Cache-Control $slim_library_cache always;
352
- add_header X-Content-Type-Options nosniff always;
353
- add_header Access-Control-Allow-Origin "*" always;
354
- add_header Access-Control-Allow-Methods "GET, POST, OPTIONS" always;
355
- add_header Access-Control-Allow-Headers "Content-Type, Authorization" always;
356
- }
357
- # Central's per-user surface is absent in this build: hard 404s, never the SPA's index.html.
358
- location ~ ^/(auth|packs|prefs|chats|created_assets|concept_images|meshy_quota|info|process|folder_hierarchy\.json|category_hierarchy\.json|api/create-chat|api/cad2simready)(/|$) {
359
- default_type application/json;
360
- return 404 '{"detail":"Not Found"}';
361
- }
362
- # <<< simready-central slim explorer <<<
363
- location / {
364
- root /usr/share/nginx/explorer;
365
- try_files $uri $uri/ /index.html;
366
- }
367
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
docker/hf-space/nginx.conf.template CHANGED
@@ -199,7 +199,7 @@ server {
199
  location = /config.js {
200
  default_type application/javascript;
201
  add_header Cache-Control "no-cache, must-revalidate" always;
202
- return 200 '(function(){var c="__CORPUS_NAME__";if(!c||c.indexOf("__")===0){c="usdsearch-dev";}var e={"field_name":"siglip2-embedding.embedding","dimension":1536};var f={"download":__DOWNLOAD_ENABLED__,"s3UrlRemap":false,"seedDefaultScope":false,"railFilters":["profiles","simready_metadata_asset_license","category"],"railDefaults":["profiles","simready_metadata_asset_license","category"],"propertyAliases":{"wikidata_qcode":"simready_metadata_qcode"},"propertyFilterCombine":"and","submitContentUrl":"__SUBMIT_CONTENT_URL__"};window.__SERVER_MAPPING__={"usdsearch-dev":{"name":c+" (Hugging Face)","apiUrl":"","embedding_config":e,"features":f},"hf-robotiq":{"name":"Robotiq","apiUrl":"","search_path":"/Robotiq-Official/simready-assets/","embedding_config":e,"features":Object.assign({},f,{"libraryPosters":"stills"}),"origin":{"kind":"hf","label":"Robotiq-Official/simready-assets"}},"hf-standardbots":{"name":"Standard Bots","apiUrl":"","search_path":"/standardbots/","embedding_config":e,"features":Object.assign({},f,{"libraryPosters":"stills"}),"origin":{"kind":"hf","label":"standardbots"}}};window.__DEFAULT_SERVER__="usdsearch-dev";})();';
203
  }
204
  # index.html must always revalidate (covers the try_files fallback too): a swap or rollback
205
  # must not leave a browser holding an index.html that names deleted chunks.
@@ -285,66 +285,11 @@ server {
285
  default_type application/json;
286
  return 404 '{"detail":"Not Found"}';
287
  }
288
- # Six qualified partner robots are installed from one SHA-pinned S3 ZIP by
289
- # pipeline/partner_viewer.py. Its own viewer uses these root-relative paths;
290
- # the USD path is narrower than the native-USD release service's route.
291
- location = /trial { absolute_redirect off; return 308 /trial/; }
292
- location = /trial/ {
293
- root /app/hf-space-pipeline/.build/partner_viewer;
294
- try_files /trial/index.html @slim_not_found;
295
- }
296
- location ^~ /trial/ { root /app/hf-space-pipeline/.build/partner_viewer; index index.html; try_files $uri @slim_not_found; }
297
- location ^~ /media/ { root /app/hf-space-pipeline/.build/partner_viewer; try_files $uri @slim_not_found; }
298
- location ^~ /rust/ { root /app/hf-space-pipeline/.build/partner_viewer; try_files $uri @slim_not_found; }
299
- location ^~ /three/ { root /app/hf-space-pipeline/.build/partner_viewer; try_files $uri @slim_not_found; }
300
- location ^~ /usd-round2/ { root /app/hf-space-pipeline/.build/partner_viewer; try_files $uri @slim_not_found; }
301
- location ^~ /usd/usd-central/rust-assets/hf- {
302
- root /app/hf-space-pipeline/.build/partner_viewer;
303
- try_files $uri @slim_not_found;
304
- }
305
  # Library media — the Explorer's joints viewer (model.glb + articulation.json), moving-parts and drop-test
306
  # clips, per asset of this corpus: static files pipeline/library_media.py fetches at container start from
307
  # the artifact bucket (supervisord program library-media). Not there (not fetched yet, or none for
308
  # this corpus) → a JSON 404 and the Explorer shows no media; never the SPA's index.html. Range requests
309
  # (Safari's <video>) are nginx's own. add_header drops his server-level headers: his CORS lines re-declared.
310
- # Native USD is a separately pinned release. Its verified 2 GiB cache keeps
311
- # the full catalog out of the Space's boot-time restore and disk budget.
312
- location = /library_media/usdsearch-dev/usd-catalog.json {
313
- proxy_pass http://127.0.0.1:8023;
314
- proxy_read_timeout 120s;
315
- gzip_types application/json;
316
- }
317
- location /usd/usd-central/ {
318
- proxy_pass http://127.0.0.1:8023;
319
- proxy_read_timeout 120s;
320
- proxy_buffering off;
321
- gzip_types application/json;
322
- }
323
- location /usd-rust/ {
324
- root /usr/share/nginx/explorer;
325
- try_files $uri =404;
326
- gzip_static on;
327
- add_header X-Content-Type-Options nosniff;
328
- }
329
- # The three picker entries share one physical corpus and one media archive.
330
- # Keep partner URLs on the same files so a scoped picker can load their RTX
331
- # media and native USD catalog without duplicating the archive on disk.
332
- location = /library_media/hf-robotiq/usd-catalog.json {
333
- root /app/hf-space-pipeline/.build;
334
- default_type application/json;
335
- add_header Cache-Control "no-cache" always;
336
- }
337
- location = /library_media/hf-standardbots/usd-catalog.json {
338
- root /app/hf-space-pipeline/.build;
339
- default_type application/json;
340
- add_header Cache-Control "no-cache" always;
341
- }
342
- location ^~ /library_media/hf-robotiq/ {
343
- rewrite ^/library_media/hf-robotiq/(.*)$ /library_media/usdsearch-dev/$1 last;
344
- }
345
- location ^~ /library_media/hf-standardbots/ {
346
- rewrite ^/library_media/hf-standardbots/(.*)$ /library_media/usdsearch-dev/$1 last;
347
- }
348
  location /library_media/ {
349
  root /app/hf-space-pipeline/.build; # .build/library_media/: outside .build/restore/, which the index restore empties
350
  try_files $uri @slim_not_found;
 
199
  location = /config.js {
200
  default_type application/javascript;
201
  add_header Cache-Control "no-cache, must-revalidate" always;
202
+ return 200 '(function(){var c="__CORPUS_NAME__";if(!c||c.indexOf("__")===0){c="usdsearch-dev";}window.__SERVER_MAPPING__={"usdsearch-dev":{"name":c+" (Hugging Face)","apiUrl":"","embedding_config":{"field_name":"siglip2-embedding.embedding","dimension":1536},"features":{"download":__DOWNLOAD_ENABLED__,"s3UrlRemap":false,"seedDefaultScope":false,"railFilters":["profiles","simready_metadata_asset_license","category"],"railDefaults":["profiles","simready_metadata_asset_license","category"],"propertyAliases":{"wikidata_qcode":"simready_metadata_qcode"},"propertyFilterCombine":"and","submitContentUrl":"__SUBMIT_CONTENT_URL__"}}};window.__DEFAULT_SERVER__="usdsearch-dev";})();';
203
  }
204
  # index.html must always revalidate (covers the try_files fallback too): a swap or rollback
205
  # must not leave a browser holding an index.html that names deleted chunks.
 
285
  default_type application/json;
286
  return 404 '{"detail":"Not Found"}';
287
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
288
  # Library media — the Explorer's joints viewer (model.glb + articulation.json), moving-parts and drop-test
289
  # clips, per asset of this corpus: static files pipeline/library_media.py fetches at container start from
290
  # the artifact bucket (supervisord program library-media). Not there (not fetched yet, or none for
291
  # this corpus) → a JSON 404 and the Explorer shows no media; never the SPA's index.html. Range requests
292
  # (Safari's <video>) are nginx's own. add_header drops his server-level headers: his CORS lines re-declared.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
293
  location /library_media/ {
294
  root /app/hf-space-pipeline/.build; # .build/library_media/: outside .build/restore/, which the index restore empties
295
  try_files $uri @slim_not_found;
docker/hf-space/supervisord-gpu.conf CHANGED
@@ -135,19 +135,6 @@ stdout_logfile_maxbytes=0
135
  stderr_logfile=/dev/stderr
136
  stderr_logfile_maxbytes=0
137
 
138
- [program:native-usd]
139
- ; User stopped the production USD experiment. Preserve artifacts for later.
140
- autostart=false
141
- command=/usr/bin/env -u PYTHONPATH /bin/sh -c "cd /app/hf-space-pipeline && exec /app/.venv/bin/python -m pipeline.native_usd"
142
- directory=/app/hf-space-pipeline
143
- user=1000
144
- autorestart=true
145
- startsecs=5
146
- stdout_logfile=/dev/stdout
147
- stdout_logfile_maxbytes=0
148
- stderr_logfile=/dev/stderr
149
- stderr_logfile_maxbytes=0
150
-
151
  [program:library-media]
152
  ; SimReady Central's library media for this corpus (the Explorer's joints viewer, moving-parts and drop-test
153
  ; clips), fetched once per container start from the artifact bucket into .build/library_media/ — see
 
135
  stderr_logfile=/dev/stderr
136
  stderr_logfile_maxbytes=0
137
 
 
 
 
 
 
 
 
 
 
 
 
 
 
138
  [program:library-media]
139
  ; SimReady Central's library media for this corpus (the Explorer's joints viewer, moving-parts and drop-test
140
  ; clips), fetched once per container start from the artifact bucket into .build/library_media/ — see
docker/hf-space/supervisord.conf CHANGED
@@ -147,17 +147,6 @@ stdout_logfile_maxbytes=0
147
  stderr_logfile=/dev/stderr
148
  stderr_logfile_maxbytes=0
149
 
150
- [program:native-usd]
151
- command=/usr/bin/env -u PYTHONPATH /bin/sh -c "cd /app/hf-space-pipeline && exec /app/.venv/bin/python -m pipeline.native_usd"
152
- directory=/app/hf-space-pipeline
153
- user=1000
154
- autorestart=true
155
- startsecs=5
156
- stdout_logfile=/dev/stdout
157
- stdout_logfile_maxbytes=0
158
- stderr_logfile=/dev/stderr
159
- stderr_logfile_maxbytes=0
160
-
161
  [program:library-media]
162
  ; SimReady Central's library media for this corpus (the Explorer's joints viewer, moving-parts and drop-test
163
  ; clips), fetched once per container start from the artifact bucket into .build/library_media/ — see
 
147
  stderr_logfile=/dev/stderr
148
  stderr_logfile_maxbytes=0
149
 
 
 
 
 
 
 
 
 
 
 
 
150
  [program:library-media]
151
  ; SimReady Central's library media for this corpus (the Explorer's joints viewer, moving-parts and drop-test
152
  ; clips), fetched once per container start from the artifact bucket into .build/library_media/ — see
licenses/extras-usd-search-explorer-ui-bundle-javascript-dependencies.txt CHANGED
@@ -1,9 +1,9 @@
1
- Third-party notices — SimReady Central Explorer slim-partner-usd-33f3a096
2
 
3
  The software in this web application's browser bundle includes the packages below, each under its own
4
  license. Each entry gives the package, its version, its license and the license / notice text it ships.
5
 
6
- 32 third-party packages: Apache-2.0 2, Apache-2.0 (LightUSD); MIT, BSD-2-Clause, ISC, BSL-1.0, zlib, Unlicense (bundled components) 1, MIT 29
7
  7 NVIDIA packages: @kui-contrib/brand-logo, @kui/foundations-css, @kui/foundations-react, @kui/foundations-react-core, @omniverse/auth, @omniverse/discovery, @omniverse/idl
8
 
9
  ====================================================================================================
@@ -1107,734 +1107,6 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1107
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1108
  SOFTWARE.
1109
 
1110
- ====================================================================================================
1111
- LightUSD next WebAssembly runtime (copied out of lightusd 1.0.0-rc4)
1112
- License: Apache-2.0 (LightUSD); MIT, BSD-2-Clause, ISC, BSL-1.0, zlib, Unlicense (bundled components)
1113
- Homepage: https://github.com/lighttransport/LightUSD/tree/v1.0.0-rc4/web
1114
- ----------------------------------------------------------------------------------------------------
1115
- [lightusd/LICENSE]
1116
-
1117
- Apache 2.0 License
1118
-
1119
- Copyright (c) 2020-2023 Syoyo Fujita
1120
- Copyright (c) 2024-Present Light Transport Entertainment Inc.
1121
-
1122
- Licensed under the Apache License, Version 2.0 (the "License");
1123
- you may not use this file except in compliance with the License.
1124
- You may obtain a copy of the License at
1125
-
1126
- http://www.apache.org/licenses/LICENSE-2.0
1127
-
1128
- Unless required by applicable law or agreed to in writing, software
1129
- distributed under the License is distributed on an "AS IS" BASIS,
1130
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1131
- See the License for the specific language governing permissions and
1132
- limitations under the License.
1133
- ----------------------------------------------------------------------------------------------------
1134
- [explorer/scripts/licenses/lightusd/LICENSE-APACHE-2.0.txt]
1135
-
1136
- Apache License
1137
- Version 2.0, January 2004
1138
- http://www.apache.org/licenses/
1139
-
1140
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1141
-
1142
- 1. Definitions.
1143
-
1144
- "License" shall mean the terms and conditions for use, reproduction,
1145
- and distribution as defined by Sections 1 through 9 of this document.
1146
-
1147
- "Licensor" shall mean the copyright owner or entity authorized by
1148
- the copyright owner that is granting the License.
1149
-
1150
- "Legal Entity" shall mean the union of the acting entity and all
1151
- other entities that control, are controlled by, or are under common
1152
- control with that entity. For the purposes of this definition,
1153
- "control" means (i) the power, direct or indirect, to cause the
1154
- direction or management of such entity, whether by contract or
1155
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
1156
- outstanding shares, or (iii) beneficial ownership of such entity.
1157
-
1158
- "You" (or "Your") shall mean an individual or Legal Entity
1159
- exercising permissions granted by this License.
1160
-
1161
- "Source" form shall mean the preferred form for making modifications,
1162
- including but not limited to software source code, documentation
1163
- source, and configuration files.
1164
-
1165
- "Object" form shall mean any form resulting from mechanical
1166
- transformation or translation of a Source form, including but
1167
- not limited to compiled object code, generated documentation,
1168
- and conversions to other media types.
1169
-
1170
- "Work" shall mean the work of authorship, whether in Source or
1171
- Object form, made available under the License, as indicated by a
1172
- copyright notice that is included in or attached to the work
1173
- (an example is provided in the Appendix below).
1174
-
1175
- "Derivative Works" shall mean any work, whether in Source or Object
1176
- form, that is based on (or derived from) the Work and for which the
1177
- editorial revisions, annotations, elaborations, or other modifications
1178
- represent, as a whole, an original work of authorship. For the purposes
1179
- of this License, Derivative Works shall not include works that remain
1180
- separable from, or merely link (or bind by name) to the interfaces of,
1181
- the Work and Derivative Works thereof.
1182
-
1183
- "Contribution" shall mean any work of authorship, including
1184
- the original version of the Work and any modifications or additions
1185
- to that Work or Derivative Works thereof, that is intentionally
1186
- submitted to Licensor for inclusion in the Work by the copyright owner
1187
- or by an individual or Legal Entity authorized to submit on behalf of
1188
- the copyright owner. For the purposes of this definition, "submitted"
1189
- means any form of electronic, verbal, or written communication sent
1190
- to the Licensor or its representatives, including but not limited to
1191
- communication on electronic mailing lists, source code control systems,
1192
- and issue tracking systems that are managed by, or on behalf of, the
1193
- Licensor for the purpose of discussing and improving the Work, but
1194
- excluding communication that is conspicuously marked or otherwise
1195
- designated in writing by the copyright owner as "Not a Contribution."
1196
-
1197
- "Contributor" shall mean Licensor and any individual or Legal Entity
1198
- on behalf of whom a Contribution has been received by Licensor and
1199
- subsequently incorporated within the Work.
1200
-
1201
- 2. Grant of Copyright License. Subject to the terms and conditions of
1202
- this License, each Contributor hereby grants to You a perpetual,
1203
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
1204
- copyright license to reproduce, prepare Derivative Works of,
1205
- publicly display, publicly perform, sublicense, and distribute the
1206
- Work and such Derivative Works in Source or Object form.
1207
-
1208
- 3. Grant of Patent License. Subject to the terms and conditions of
1209
- this License, each Contributor hereby grants to You a perpetual,
1210
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
1211
- (except as stated in this section) patent license to make, have made,
1212
- use, offer to sell, sell, import, and otherwise transfer the Work,
1213
- where such license applies only to those patent claims licensable
1214
- by such Contributor that are necessarily infringed by their
1215
- Contribution(s) alone or by combination of their Contribution(s)
1216
- with the Work to which such Contribution(s) was submitted. If You
1217
- institute patent litigation against any entity (including a
1218
- cross-claim or counterclaim in a lawsuit) alleging that the Work
1219
- or a Contribution incorporated within the Work constitutes direct
1220
- or contributory patent infringement, then any patent licenses
1221
- granted to You under this License for that Work shall terminate
1222
- as of the date such litigation is filed.
1223
-
1224
- 4. Redistribution. You may reproduce and distribute copies of the
1225
- Work or Derivative Works thereof in any medium, with or without
1226
- modifications, and in Source or Object form, provided that You
1227
- meet the following conditions:
1228
-
1229
- (a) You must give any other recipients of the Work or
1230
- Derivative Works a copy of this License; and
1231
-
1232
- (b) You must cause any modified files to carry prominent notices
1233
- stating that You changed the files; and
1234
-
1235
- (c) You must retain, in the Source form of any Derivative Works
1236
- that You distribute, all copyright, patent, trademark, and
1237
- attribution notices from the Source form of the Work,
1238
- excluding those notices that do not pertain to any part of
1239
- the Derivative Works; and
1240
-
1241
- (d) If the Work includes a "NOTICE" text file as part of its
1242
- distribution, then any Derivative Works that You distribute must
1243
- include a readable copy of the attribution notices contained
1244
- within such NOTICE file, excluding those notices that do not
1245
- pertain to any part of the Derivative Works, in at least one
1246
- of the following places: within a NOTICE text file distributed
1247
- as part of the Derivative Works; within the Source form or
1248
- documentation, if provided along with the Derivative Works; or,
1249
- within a display generated by the Derivative Works, if and
1250
- wherever such third-party notices normally appear. The contents
1251
- of the NOTICE file are for informational purposes only and
1252
- do not modify the License. You may add Your own attribution
1253
- notices within Derivative Works that You distribute, alongside
1254
- or as an addendum to the NOTICE text from the Work, provided
1255
- that such additional attribution notices cannot be construed
1256
- as modifying the License.
1257
-
1258
- You may add Your own copyright statement to Your modifications and
1259
- may provide additional or different license terms and conditions
1260
- for use, reproduction, or distribution of Your modifications, or
1261
- for any such Derivative Works as a whole, provided Your use,
1262
- reproduction, and distribution of the Work otherwise complies with
1263
- the conditions stated in this License.
1264
-
1265
- 5. Submission of Contributions. Unless You explicitly state otherwise,
1266
- any Contribution intentionally submitted for inclusion in the Work
1267
- by You to the Licensor shall be under the terms and conditions of
1268
- this License, without any additional terms or conditions.
1269
- Notwithstanding the above, nothing herein shall supersede or modify
1270
- the terms of any separate license agreement you may have executed
1271
- with Licensor regarding such Contributions.
1272
-
1273
- 6. Trademarks. This License does not grant permission to use the trade
1274
- names, trademarks, service marks, or product names of the Licensor,
1275
- except as required for reasonable and customary use in describing the
1276
- origin of the Work and reproducing the content of the NOTICE file.
1277
-
1278
- 7. Disclaimer of Warranty. Unless required by applicable law or
1279
- agreed to in writing, Licensor provides the Work (and each
1280
- Contributor provides its Contributions) on an "AS IS" BASIS,
1281
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
1282
- implied, including, without limitation, any warranties or conditions
1283
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
1284
- PARTICULAR PURPOSE. You are solely responsible for determining the
1285
- appropriateness of using or redistributing the Work and assume any
1286
- risks associated with Your exercise of permissions under this License.
1287
-
1288
- 8. Limitation of Liability. In no event and under no legal theory,
1289
- whether in tort (including negligence), contract, or otherwise,
1290
- unless required by applicable law (such as deliberate and grossly
1291
- negligent acts) or agreed to in writing, shall any Contributor be
1292
- liable to You for damages, including any direct, indirect, special,
1293
- incidental, or consequential damages of any character arising as a
1294
- result of this License or out of the use or inability to use the
1295
- Work (including but not limited to damages for loss of goodwill,
1296
- work stoppage, computer failure or malfunction, or any and all
1297
- other commercial damages or losses), even if such Contributor
1298
- has been advised of the possibility of such damages.
1299
-
1300
- 9. Accepting Warranty or Additional Liability. While redistributing
1301
- the Work or Derivative Works thereof, You may choose to offer,
1302
- and charge a fee for, acceptance of support, warranty, indemnity,
1303
- or other liability obligations and/or rights consistent with this
1304
- License. However, in accepting such obligations, You may act only
1305
- on Your own behalf and on Your sole responsibility, not on behalf
1306
- of any other Contributor, and only if You agree to indemnify,
1307
- defend, and hold each Contributor harmless for any liability
1308
- incurred by, or claims asserted against, such Contributor by reason
1309
- of your accepting any such warranty or additional liability.
1310
-
1311
- END OF TERMS AND CONDITIONS
1312
-
1313
- APPENDIX: How to apply the Apache License to your work.
1314
-
1315
- To apply the Apache License to your work, attach the following
1316
- boilerplate notice, with the fields enclosed by brackets "[]"
1317
- replaced with your own identifying information. (Don't include
1318
- the brackets!) The text should be enclosed in the appropriate
1319
- comment syntax for the file format. We also recommend that a
1320
- file or class name and description of purpose be included on the
1321
- same "printed page" as the copyright notice for easier
1322
- identification within third-party archives.
1323
-
1324
- Copyright 2019-2026 Binomial LLC
1325
-
1326
- Licensed under the Apache License, Version 2.0 (the "License");
1327
- you may not use this file except in compliance with the License.
1328
- You may obtain a copy of the License at
1329
-
1330
- http://www.apache.org/licenses/LICENSE-2.0
1331
-
1332
- Unless required by applicable law or agreed to in writing, software
1333
- distributed under the License is distributed on an "AS IS" BASIS,
1334
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1335
- See the License for the specific language governing permissions and
1336
- limitations under the License.
1337
- ----------------------------------------------------------------------------------------------------
1338
- [explorer/scripts/licenses/lightusd/LICENSE.3rdparty]
1339
-
1340
- # Third-Party Notices
1341
-
1342
- This file summarizes third-party code and data redistributed in this repository.
1343
- The authoritative license text is the license file or source header referenced
1344
- in each entry.
1345
-
1346
- ## Core And Runtime Dependencies
1347
-
1348
- | Component | License | Location |
1349
- | --- | --- | --- |
1350
- | nonstd optional-lite, expected-lite, span-lite, string-view-lite | Boost Software License 1.0 | `src/nonstd/*.hpp` |
1351
- | LZ4 | BSD 2-Clause | `src/lz4/LICENSE` |
1352
- | miniz | MIT | `src/external/LICENSE.miniz` |
1353
- | Zstandard | BSD-style or GPLv2 | `src/external/zstd.h`, `src/external/zstd.c` |
1354
- | yyjson | MIT | `src/external/yyjson.LICENSE` |
1355
- | pugixml | MIT | `src/external/pugixml.LICENSE` |
1356
- | nlohmann/json | MIT | `src/external/jsonhpp/LICENSE.MIT` |
1357
- | fast_float | Apache 2.0, Boost Software License 1.0, or MIT | `src/external/fast_float/` |
1358
- | Dragonbox | Boost Software License 1.0 or Apache 2.0 with LLVM exception | `src/external/dragonbox/` |
1359
- | Mapbox earcut.hpp | ISC | `src/external/mapbox/earcut/LICENSE` |
1360
- | Mapbox eternal | ISC | `src/external/mapbox/eternal/LICENSE.md` |
1361
- | simple_match | Boost Software License 1.0 | `src/external/simple_match/LICENSE_1_0.txt` |
1362
- | string_id | zlib | `src/external/string_id/LICENSE` |
1363
- | ghc/filesystem | MIT | `src/external/filesystem/LICENSE` |
1364
- | p-ranav/glob | MIT | `src/external/glob/LICENSE` |
1365
- | nanoflann | BSD 2-Clause | `src/external/nanoflann.COPYING` |
1366
- | linalg.h | Unlicense | `src/external/linalg.UNLICENSE` |
1367
- | jeaiii_to_text | MIT | `src/external/jeaiii_to_text.LICENSE` |
1368
- | xxHash | BSD 2-Clause | `src/external/xxhash.LICENSE` |
1369
- | tinycolorio | MIT | `src/external/tinycolorio.LICENSE` |
1370
- | stb_image, stb_image_resize, stb_image_write, stb_truetype | Public domain or MIT | `src/external/stb_*.h` |
1371
- | TinyEXR and included OpenEXR code | BSD-style | `src/external/tinyexr.h` |
1372
- | TinyDNG | MIT | `src/external/tiny_dng_loader.h`, `src/external/tiny_dng_writer.h` |
1373
- | tinyobjloader | MIT | `src/external/tiny_obj_loader.h` |
1374
- | tinygltf | MIT | `src/external/tiny_gltf.h` |
1375
- | pystring | BSD 3-Clause | `src/external/pystring.LICENSE` |
1376
- | fpng | Unlicense | `src/external/fpng.h`, `src/external/fpng.cpp` |
1377
- | Wuffs unsupported snapshot | Apache 2.0 | `src/external/wuffs-unsupported-snapshot.c` |
1378
- | MikkTSpace | zlib | `src/external/mikktspace/LICENSE` |
1379
- | sRGB transform by Project Nayuki | MIT | `src/image-util.cc` |
1380
- | OpenSubdiv | Modified Apache 2.0 | `src/osd/LICENSE.txt` |
1381
- | MaterialX data | Apache 2.0 | `data/materialx/LICENSE` |
1382
-
1383
- ## Optional Feature Dependencies
1384
-
1385
- | Component | License | Location |
1386
- | --- | --- | --- |
1387
- | meshoptimizer | MIT | `src/external/meshoptimizer/LICENSE.md` |
1388
- | OpenFBX | MIT | `src/external/OpenFBX/LICENSE` |
1389
- | ALAC | Apache 2.0 | `src/external/alac/LICENSE` |
1390
- | dr_wav, dr_mp3 | Public domain or MIT-0 | `src/external/dr_wav.h`, `src/external/dr_mp3.h` |
1391
- | ogt_vox | MIT | `src/external/LICENSE.ogt_vox.md` |
1392
- | WebAssembly Micro Runtime (WAMR) | Apache 2.0 | `src/external/wamr/LICENSE` |
1393
- | QuickJS-ng | MIT | `src/external/quickjs-ng/LICENSE` |
1394
- | civetweb | MIT | `src/external/civetweb/LICENSE.md` |
1395
- | Remotery | Apache 2.0 | `src/external/Remotery/Remotery.LICENSE` |
1396
- | libsais | Apache 2.0 | `src/external/libsais/libsais.LICENSE` |
1397
- | nanozlib | Apache 2.0 | `src/external/nanozlib.h` |
1398
- | nanobind | BSD 3-Clause | `src/external/nanobind/LICENSE` |
1399
- | pybind11 | BSD 3-Clause | `src/external/pybind11/LICENSE` |
1400
- | tir image resizer (tinyexr tools) | BSD 3-Clause | `src/external/textools/resize/LICENSE` |
1401
- | texcomp texture compressor (tinyexr tools) | Apache 2.0 | `src/external/textools/texcomp/LICENSE`, `NOTICE.md` |
1402
- | texpipe texture pipeline (tinyexr tools) | Apache 2.0 | `src/external/textools/texpipe/LICENSE` |
1403
- | envmap IBL library (tinyexr tools) | Apache 2.0 | `src/external/textools/envmap/LICENSE` |
1404
-
1405
- ## Examples, Tools, And Development Assets
1406
-
1407
- | Component | License | Location |
1408
- | --- | --- | --- |
1409
- | SDL2-related viewer dependencies | zlib/MIT-style, see bundled notices | `examples/sdlviewer/README.md` |
1410
- | GLFW | zlib/libpng | `examples/common/glfw-3.3.6/LICENSE.md` |
1411
- | Dear ImGui | MIT | `examples/common/imgui/LICENSE.txt` |
1412
- | imnodes | MIT | `examples/common/imnodes/LICENSE.md` |
1413
- | nativefiledialog-extended | zlib | `examples/common/nativefiledialog-extended/LICENSE` |
1414
- | virtualGizmo3D | BSD 2-Clause | `examples/common/virtualGizmo3D/license.txt` |
1415
- | miniaudio | Public domain or MIT-0 | `examples/common/miniaudio.LICENSE` |
1416
- | cuew | Apache 2.0 | `examples/common/cuew/LICENSE` |
1417
- | volk | MIT | `examples/common/volk/LICENSE.md` |
1418
- | Vulkan-Headers | Apache 2.0 | `examples/common/vulkan-headers/include/vulkan/vulkan_core.h` |
1419
- | bvh | MIT | `examples/common/bvh/LICENSE.txt` |
1420
- | Metal-cpp | Apache 2.0 | `examples/common/metalcpp/LICENSE.txt` |
1421
- | Roboto Mono embedded assets | Apache 2.0 | `examples/common/LICENSE.roboto_mono_embed.md` |
1422
- | Vulkan sample camera code by Sascha Willems | MIT | `examples/common/viewport_camera.hh` |
1423
- | Silicon Graphics trackball code | SGI permissive notice | `examples/common/trackball.h`, `examples/common/trackball.cc` |
1424
- | par_shapes | MIT | `examples/common/par_shapes.h` |
1425
- | criterion benchmark helper | MIT | `benchmarks/criterion.LICENSE` |
1426
- | acutest | MIT | `tests/unit/LICENSE.acutest` |
1427
- ----------------------------------------------------------------------------------------------------
1428
- [explorer/scripts/licenses/lightusd/THIRD-PARTY-NOTICES.txt]
1429
-
1430
- LightUSD next WebAssembly runtime — third-party notices
1431
-
1432
- Notice sources: LightUSD v1.0.0-rc4 (c9f177148f7dcddde33f4f8d6e82599f151d8803).
1433
- This conservatively retains notices for next-core, tydra-next, the WebAssembly
1434
- binding and related render helpers. Inclusion here does not assert that every
1435
- listed component survives link-time dead-code elimination.
1436
- For dual-licensed components, the permissive option named below is selected.
1437
- The upstream inventory LICENSE.3rdparty is also retained unchanged.
1438
-
1439
- ================================================================================
1440
- nonstd optional-lite, expected-lite, string-view-lite (Boost Software License)
1441
-
1442
- Copyright (c) 2014-2018 Martin Moene (optional-lite)
1443
- Copyright (C) 2016-2020 Martin Moene (expected-lite)
1444
- Copyright 2017-2020 by Martin Moene (string-view-lite)
1445
-
1446
- Source headers: src/nonstd/{optional,expected,string_view}.hpp
1447
-
1448
- Boost Software License - Version 1.0 - August 17th, 2003
1449
-
1450
- Permission is hereby granted, free of charge, to any person or organization
1451
- obtaining a copy of the software and accompanying documentation covered by
1452
- this license (the "Software") to use, reproduce, display, distribute,
1453
- execute, and transmit the Software, and to prepare derivative works of the
1454
- Software, and to permit third-parties to whom the Software is furnished to
1455
- do so, all subject to the following:
1456
-
1457
- The copyright notices in the Software and this entire statement, including
1458
- the above license grant, this restriction and the following disclaimer,
1459
- must be included in all copies of the Software, in whole or in part, and
1460
- all derivative works of the Software, unless such copies or derivative
1461
- works are solely in the form of machine-executable object code generated by
1462
- a source language processor.
1463
-
1464
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1465
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1466
- FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
1467
- SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
1468
- FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
1469
- ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
1470
- DEALINGS IN THE SOFTWARE.
1471
-
1472
- ================================================================================
1473
- LZ4 (BSD-2-Clause)
1474
- Source: https://github.com/lighttransport/LightUSD/blob/c9f177148f7dcddde33f4f8d6e82599f151d8803/src/lz4/LICENSE
1475
-
1476
- LZ4 Library
1477
- Copyright (c) 2011-2020, Yann Collet
1478
- All rights reserved.
1479
-
1480
- Redistribution and use in source and binary forms, with or without modification,
1481
- are permitted provided that the following conditions are met:
1482
-
1483
- * Redistributions of source code must retain the above copyright notice, this
1484
- list of conditions and the following disclaimer.
1485
-
1486
- * Redistributions in binary form must reproduce the above copyright notice, this
1487
- list of conditions and the following disclaimer in the documentation and/or
1488
- other materials provided with the distribution.
1489
-
1490
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
1491
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1492
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1493
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
1494
- ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1495
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
1496
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
1497
- ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1498
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
1499
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1500
-
1501
- ================================================================================
1502
- miniz (MIT)
1503
- Source: https://github.com/lighttransport/LightUSD/blob/c9f177148f7dcddde33f4f8d6e82599f151d8803/src/external/LICENSE.miniz
1504
-
1505
- Copyright 2013-2014 RAD Game Tools and Valve Software
1506
- Copyright 2010-2014 Rich Geldreich and Tenacious Software LLC
1507
-
1508
- All Rights Reserved.
1509
-
1510
- Permission is hereby granted, free of charge, to any person obtaining a copy
1511
- of this software and associated documentation files (the "Software"), to deal
1512
- in the Software without restriction, including without limitation the rights
1513
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1514
- copies of the Software, and to permit persons to whom the Software is
1515
- furnished to do so, subject to the following conditions:
1516
-
1517
- The above copyright notice and this permission notice shall be included in
1518
- all copies or substantial portions of the Software.
1519
-
1520
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1521
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1522
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1523
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1524
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1525
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1526
- THE SOFTWARE.
1527
-
1528
- ================================================================================
1529
- nlohmann/json (MIT)
1530
- Source: https://github.com/lighttransport/LightUSD/blob/c9f177148f7dcddde33f4f8d6e82599f151d8803/src/external/jsonhpp/LICENSE.MIT
1531
-
1532
- MIT License
1533
-
1534
- Copyright (c) 2013-2022 Niels Lohmann
1535
-
1536
- Permission is hereby granted, free of charge, to any person obtaining a copy
1537
- of this software and associated documentation files (the "Software"), to deal
1538
- in the Software without restriction, including without limitation the rights
1539
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1540
- copies of the Software, and to permit persons to whom the Software is
1541
- furnished to do so, subject to the following conditions:
1542
-
1543
- The above copyright notice and this permission notice shall be included in all
1544
- copies or substantial portions of the Software.
1545
-
1546
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1547
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1548
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1549
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1550
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1551
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1552
- SOFTWARE.
1553
-
1554
- ================================================================================
1555
- fast_float (MIT option)
1556
- Source: https://github.com/lighttransport/LightUSD/blob/c9f177148f7dcddde33f4f8d6e82599f151d8803/src/external/fast_float/LICENSE-MIT
1557
-
1558
- MIT License
1559
-
1560
- Copyright (c) 2021 The fast_float authors
1561
-
1562
- Permission is hereby granted, free of charge, to any
1563
- person obtaining a copy of this software and associated
1564
- documentation files (the "Software"), to deal in the
1565
- Software without restriction, including without
1566
- limitation the rights to use, copy, modify, merge,
1567
- publish, distribute, sublicense, and/or sell copies of
1568
- the Software, and to permit persons to whom the Software
1569
- is furnished to do so, subject to the following
1570
- conditions:
1571
-
1572
- The above copyright notice and this permission notice
1573
- shall be included in all copies or substantial portions
1574
- of the Software.
1575
-
1576
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
1577
- ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
1578
- TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
1579
- PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
1580
- SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
1581
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
1582
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
1583
- IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
1584
- DEALINGS IN THE SOFTWARE.
1585
-
1586
- ================================================================================
1587
- Dragonbox (Boost Software License option)
1588
- Source: https://github.com/lighttransport/LightUSD/blob/c9f177148f7dcddde33f4f8d6e82599f151d8803/src/external/dragonbox/LICENSE-Boost
1589
-
1590
- Boost Software License - Version 1.0 - August 17th, 2003
1591
-
1592
- Permission is hereby granted, free of charge, to any person or organization
1593
- obtaining a copy of the software and accompanying documentation covered by
1594
- this license (the "Software") to use, reproduce, display, distribute,
1595
- execute, and transmit the Software, and to prepare derivative works of the
1596
- Software, and to permit third-parties to whom the Software is furnished to
1597
- do so, all subject to the following:
1598
-
1599
- The copyright notices in the Software and this entire statement, including
1600
- the above license grant, this restriction and the following disclaimer,
1601
- must be included in all copies of the Software, in whole or in part, and
1602
- all derivative works of the Software, unless such copies or derivative
1603
- works are solely in the form of machine-executable object code generated by
1604
- a source language processor.
1605
-
1606
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1607
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1608
- FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
1609
- SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
1610
- FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
1611
- ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
1612
- DEALINGS IN THE SOFTWARE.
1613
-
1614
- ================================================================================
1615
- Mapbox earcut (ISC)
1616
- Source: https://github.com/lighttransport/LightUSD/blob/c9f177148f7dcddde33f4f8d6e82599f151d8803/src/external/mapbox/earcut/LICENSE
1617
-
1618
- ISC License
1619
-
1620
- Copyright (c) 2015, Mapbox
1621
-
1622
- Permission to use, copy, modify, and/or distribute this software for any purpose
1623
- with or without fee is hereby granted, provided that the above copyright notice
1624
- and this permission notice appear in all copies.
1625
-
1626
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
1627
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
1628
- FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
1629
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
1630
- OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
1631
- TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
1632
- THIS SOFTWARE.
1633
-
1634
- ================================================================================
1635
- Mapbox eternal (ISC)
1636
- Source: https://github.com/lighttransport/LightUSD/blob/c9f177148f7dcddde33f4f8d6e82599f151d8803/src/external/mapbox/eternal/LICENSE.md
1637
-
1638
- ISC License
1639
-
1640
- Copyright (c) 2018, Mapbox
1641
-
1642
- Permission to use, copy, modify, and/or distribute this software for any purpose
1643
- with or without fee is hereby granted, provided that the above copyright notice
1644
- and this permission notice appear in all copies.
1645
-
1646
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
1647
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
1648
- FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
1649
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
1650
- OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
1651
- TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
1652
- THIS SOFTWARE.
1653
-
1654
- ================================================================================
1655
- ghc/filesystem (MIT)
1656
- Source: https://github.com/lighttransport/LightUSD/blob/c9f177148f7dcddde33f4f8d6e82599f151d8803/src/external/filesystem/LICENSE
1657
-
1658
- Copyright (c) 2018, Steffen Schümann <s.schuemann@pobox.com>
1659
-
1660
- Permission is hereby granted, free of charge, to any person obtaining a copy
1661
- of this software and associated documentation files (the "Software"), to deal
1662
- in the Software without restriction, including without limitation the rights
1663
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1664
- copies of the Software, and to permit persons to whom the Software is
1665
- furnished to do so, subject to the following conditions:
1666
-
1667
- The above copyright notice and this permission notice shall be included in all
1668
- copies or substantial portions of the Software.
1669
-
1670
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1671
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1672
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1673
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1674
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1675
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1676
- SOFTWARE.
1677
-
1678
- ================================================================================
1679
- linalg (Unlicense)
1680
- Source: https://github.com/lighttransport/LightUSD/blob/c9f177148f7dcddde33f4f8d6e82599f151d8803/src/external/linalg.UNLICENSE
1681
-
1682
- This is free and unencumbered software released into the public domain.
1683
-
1684
- Anyone is free to copy, modify, publish, use, compile, sell, or
1685
- distribute this software, either in source code form or as a compiled
1686
- binary, for any purpose, commercial or non-commercial, and by any
1687
- means.
1688
-
1689
- In jurisdictions that recognize copyright laws, the author or authors
1690
- of this software dedicate any and all copyright interest in the
1691
- software to the public domain. We make this dedication for the benefit
1692
- of the public at large and to the detriment of our heirs and
1693
- successors. We intend this dedication to be an overt act of
1694
- relinquishment in perpetuity of all present and future rights to this
1695
- software under copyright law.
1696
-
1697
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
1698
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
1699
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
1700
- IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
1701
- OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
1702
- ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
1703
- OTHER DEALINGS IN THE SOFTWARE.
1704
-
1705
- For more information, please refer to <http://unlicense.org/>
1706
-
1707
- ================================================================================
1708
- jeaiii_to_text (MIT)
1709
- Source: https://github.com/lighttransport/LightUSD/blob/c9f177148f7dcddde33f4f8d6e82599f151d8803/src/external/jeaiii_to_text.LICENSE
1710
-
1711
- MIT License
1712
-
1713
- Copyright (c) 2017 James Edward Anhalt III - https://github.com/jeaiii/itoa
1714
-
1715
- Permission is hereby granted, free of charge, to any person obtaining a copy
1716
- of this software and associated documentation files (the "Software"), to deal
1717
- in the Software without restriction, including without limitation the rights
1718
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1719
- copies of the Software, and to permit persons to whom the Software is
1720
- furnished to do so, subject to the following conditions:
1721
-
1722
- The above copyright notice and this permission notice shall be included in all
1723
- copies or substantial portions of the Software.
1724
-
1725
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1726
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1727
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1728
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1729
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1730
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1731
- SOFTWARE.
1732
-
1733
- ================================================================================
1734
- xxHash (BSD-2-Clause)
1735
- Source: https://github.com/lighttransport/LightUSD/blob/c9f177148f7dcddde33f4f8d6e82599f151d8803/src/external/xxhash.LICENSE
1736
-
1737
- xxHash Library
1738
- Copyright (c) 2012-2021 Yann Collet
1739
- All rights reserved.
1740
-
1741
- BSD 2-Clause License (https://www.opensource.org/licenses/bsd-license.php)
1742
-
1743
- Redistribution and use in source and binary forms, with or without modification,
1744
- are permitted provided that the following conditions are met:
1745
-
1746
- * Redistributions of source code must retain the above copyright notice, this
1747
- list of conditions and the following disclaimer.
1748
-
1749
- * Redistributions in binary form must reproduce the above copyright notice, this
1750
- list of conditions and the following disclaimer in the documentation and/or
1751
- other materials provided with the distribution.
1752
-
1753
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
1754
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1755
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1756
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
1757
- ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1758
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
1759
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
1760
- ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1761
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
1762
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1763
-
1764
- ================================================================================
1765
- tinycolorio (MIT)
1766
- Source: https://github.com/lighttransport/LightUSD/blob/c9f177148f7dcddde33f4f8d6e82599f151d8803/src/external/tinycolorio.LICENSE
1767
-
1768
- MIT License
1769
-
1770
- Copyright (c) 2018 Syoyo Fujita.
1771
-
1772
- Permission is hereby granted, free of charge, to any person obtaining a copy
1773
- of this software and associated documentation files (the "Software"), to deal
1774
- in the Software without restriction, including without limitation the rights
1775
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1776
- copies of the Software, and to permit persons to whom the Software is
1777
- furnished to do so, subject to the following conditions:
1778
-
1779
- The above copyright notice and this permission notice shall be included in all
1780
- copies or substantial portions of the Software.
1781
-
1782
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1783
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1784
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1785
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1786
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1787
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1788
- SOFTWARE.
1789
-
1790
- ================================================================================
1791
- MikkTSpace (zlib)
1792
- Source: https://github.com/lighttransport/LightUSD/blob/c9f177148f7dcddde33f4f8d6e82599f151d8803/src/external/mikktspace/LICENSE
1793
-
1794
- Copyright (C) 2011 by Morten S. Mikkelsen
1795
-
1796
- This software is provided 'as-is', without any express or implied
1797
- warranty. In no event will the authors be held liable for any damages
1798
- arising from the use of this software.
1799
-
1800
- Permission is granted to anyone to use this software for any purpose,
1801
- including commercial applications, and to alter it and redistribute it
1802
- freely, subject to the following restrictions:
1803
-
1804
- 1. The origin of this software must not be misrepresented; you must not
1805
- claim that you wrote the original software. If you use this software
1806
- in a product, an acknowledgment in the product documentation would be
1807
- appreciated but is not required.
1808
- 2. Altered source versions must be plainly marked as such, and must not be
1809
- misrepresented as being the original software.
1810
- 3. This notice may not be removed or altered from any source distribution.
1811
-
1812
- ================================================================================
1813
- LightRT (MIT)
1814
- Source: https://github.com/lighttransport/LightUSD/blob/c9f177148f7dcddde33f4f8d6e82599f151d8803/src/external/lightrt/LICENSE
1815
-
1816
- MIT License
1817
-
1818
- Copyright (c) 2026 Light Transport Entertainment, Inc.
1819
-
1820
- Permission is hereby granted, free of charge, to any person obtaining a copy
1821
- of this software and associated documentation files (the "Software"), to deal
1822
- in the Software without restriction, including without limitation the rights
1823
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1824
- copies of the Software, and to permit persons to whom the Software is
1825
- furnished to do so, subject to the following conditions:
1826
-
1827
- The above copyright notice and this permission notice shall be included in all
1828
- copies or substantial portions of the Software.
1829
-
1830
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1831
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1832
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1833
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1834
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1835
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1836
- SOFTWARE.
1837
-
1838
  ====================================================================================================
1839
  motion-dom 11.18.1
1840
  License: MIT
 
1
+ Third-party notices — SimReady Central Explorer slim-ui-743312d3
2
 
3
  The software in this web application's browser bundle includes the packages below, each under its own
4
  license. Each entry gives the package, its version, its license and the license / notice text it ships.
5
 
6
+ 31 third-party packages: Apache-2.0 2, MIT 29
7
  7 NVIDIA packages: @kui-contrib/brand-logo, @kui/foundations-css, @kui/foundations-react, @kui/foundations-react-core, @omniverse/auth, @omniverse/discovery, @omniverse/idl
8
 
9
  ====================================================================================================
 
1107
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1108
  SOFTWARE.
1109
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1110
  ====================================================================================================
1111
  motion-dom 11.18.1
1112
  License: MIT
pipeline/native_usd.py DELETED
@@ -1,264 +0,0 @@
1
- """Serve an explicitly pinned, qualified USD release with a bounded verified cache.
2
-
3
- The private artifact bucket owns the immutable bytes. HF's small ephemeral disk
4
- holds only recently requested files; neither index restore nor GLB media changes.
5
- Only manifest-listed paths are readable. No URL supplied by a caller is fetched.
6
- """
7
- from contextlib import contextmanager
8
- import hashlib
9
- from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
10
- import json
11
- import mimetypes
12
- import os
13
- from pathlib import Path
14
- import re
15
- import shutil
16
- import threading
17
- import urllib.request
18
- from urllib.parse import urlsplit, unquote
19
-
20
- from .config import BUILD_DIR, Config
21
-
22
- MAX_FILE = 64 << 20
23
- CACHE_BYTES = 2 << 30
24
- DISK_RESERVE = 8 << 30
25
- CATALOG = '/library_media/usdsearch-dev/usd-catalog.json'
26
- SHA = re.compile(r'^[a-f0-9]{64}$')
27
- PREFIX = re.compile(r'^simready-assets/[A-Za-z0-9_-]+/library-media/native-usd/v1/blobs$')
28
-
29
-
30
- class NoRedirect(urllib.request.HTTPRedirectHandler):
31
- def redirect_request(self, *args):
32
- raise ValueError('Native artifact requests must not follow redirects')
33
-
34
-
35
- def safe_path(path):
36
- return (isinstance(path, str) and path.startswith('/usd/usd-central/')
37
- and len(path) < 4096 and '\\' not in path and '%' not in path
38
- and not any(p in ('', '.', '..') for p in path[1:].split('/'))
39
- and not any(ord(c) < 32 for c in path))
40
-
41
-
42
- def validate_release(value):
43
- if (value.get('version') != 1 or not PREFIX.fullmatch(value.get('objectPrefix', ''))
44
- or value.get('bucket') != 'simreadycentral-index-store'):
45
- raise ValueError('Unsupported native USD release')
46
- files = value.get('files')
47
- if not isinstance(files, dict) or not 1 <= len(files) <= 100000:
48
- raise ValueError('Invalid native USD file list')
49
- for path, item in files.items():
50
- if (not safe_path(path) or not SHA.fullmatch(item.get('sha256', ''))
51
- or type(item.get('bytes')) is not int or not 0 < item['bytes'] <= MAX_FILE):
52
- raise ValueError('Invalid native USD artifact')
53
- catalog = value.get('catalog', {})
54
- if (catalog.get('version') != 1 or catalog.get('profile') != 'usd-central-assets-v1'
55
- or catalog.get('index') != 'usdsearch-dev' or not catalog.get('examples')):
56
- raise ValueError('Invalid native USD catalog')
57
- seen = set()
58
- ready = 0
59
- for row in catalog['examples']:
60
- if row['id'] in seen or row.get('status') not in ('ready', 'blocked'):
61
- raise ValueError('Unqualified or duplicate catalog row')
62
- seen.add(row['id'])
63
- if row['status'] == 'blocked':
64
- continue
65
- ready += 1
66
- proof = row.get('qualification', {})
67
- if (proof.get('passed') is not True or proof.get('sourceSha256') != row.get('nativeBaseline', {}).get('sha256')
68
- or proof.get('interaction') != row.get('interaction')
69
- or not all(proof.get(k) is True for k in ('geometry', 'materials', 'interactionPassed'))):
70
- raise ValueError('Catalog qualification is incomplete')
71
- for field in ('nativeBaseline', 'preparedMetadata', 'preparedColliders'):
72
- item = row.get(field, {})
73
- listed = files.get(item.get('url'))
74
- if not listed or any(item.get(k) != listed[k] for k in ('bytes', 'sha256')):
75
- raise ValueError('Catalog artifact is not in this release')
76
- if ready != value.get('qualifiedAssets') or not ready:
77
- raise ValueError('Qualified asset count mismatch')
78
- return value
79
-
80
-
81
- def byte_range(header, size):
82
- if not header:
83
- return 0, size - 1, 200
84
- match = re.fullmatch(r'bytes=(\d*)-(\d*)', header)
85
- if not match or not any(match.groups()):
86
- raise ValueError('Invalid range')
87
- left, right = match.groups()
88
- if left:
89
- start = int(left); end = min(int(right) if right else size - 1, size - 1)
90
- else:
91
- length = int(right)
92
- if not length:
93
- raise ValueError('Empty range')
94
- start, end = max(0, size - length), size - 1
95
- if start >= size or end < start:
96
- raise ValueError('Unsatisfiable range')
97
- return start, end, 206
98
-
99
-
100
- class VerifiedCache:
101
- def __init__(self, root, fetch, limit=CACHE_BYTES, reserve=DISK_RESERVE):
102
- self.root, self.fetch, self.limit, self.reserve = Path(root), fetch, limit, reserve
103
- self.root.mkdir(parents=True, exist_ok=True)
104
- self.lock = threading.RLock()
105
- self.downloads = threading.BoundedSemaphore(4)
106
- self.in_use = {}
107
- self.verified = set()
108
- self.locks = {}
109
- for path in self.root.glob('*.part'):
110
- path.unlink()
111
-
112
- def make_room(self, wanted):
113
- files = sorted((p for p in self.root.iterdir() if SHA.fullmatch(p.name)), key=lambda p: p.stat().st_mtime)
114
- used = sum(p.stat().st_size for p in files)
115
- for path in files:
116
- if used + wanted <= self.limit and shutil.disk_usage(self.root).free >= self.reserve + wanted:
117
- return
118
- if self.in_use.get(path.name):
119
- continue
120
- used -= path.stat().st_size
121
- self.verified.discard(path.name); path.unlink()
122
- if used + wanted > self.limit or shutil.disk_usage(self.root).free < self.reserve + wanted:
123
- raise OSError('Native USD cache has no safe disk capacity')
124
-
125
- @contextmanager
126
- def open(self, item):
127
- key, size = item['sha256'], item['bytes']
128
- with self.lock:
129
- file_lock = self.locks.setdefault(key, threading.Lock())
130
- self.in_use[key] = self.in_use.get(key, 0) + 1
131
- try:
132
- with file_lock:
133
- path = self.root / key
134
- if key not in self.verified:
135
- if path.exists():
136
- if path.stat().st_size == size and hashlib.sha256(path.read_bytes()).hexdigest() == key:
137
- self.verified.add(key)
138
- else:
139
- path.unlink()
140
- if key not in self.verified:
141
- with self.downloads:
142
- with self.lock:
143
- # Reserve for four simultaneous maximum-size downloads.
144
- self.make_room(4 * MAX_FILE)
145
- part = path.with_suffix('.part')
146
- try:
147
- digest = hashlib.sha256(); received = 0
148
- with self.fetch(key) as source, part.open('wb') as target:
149
- while block := source.read(1 << 20):
150
- received += len(block)
151
- if received > size:
152
- raise ValueError('Native USD transfer exceeded pinned size')
153
- digest.update(block); target.write(block)
154
- if received != size or digest.hexdigest() != key:
155
- raise ValueError('Native USD transfer failed integrity check')
156
- part.replace(path); self.verified.add(key)
157
- finally:
158
- part.unlink(missing_ok=True)
159
- os.utime(path, None)
160
- handle = path.open('rb')
161
- try:
162
- yield handle
163
- finally:
164
- handle.close()
165
- finally:
166
- with self.lock:
167
- self.in_use[key] -= 1
168
-
169
-
170
- def handler(release, cache):
171
- catalog = json.dumps(release['catalog'], separators=(',', ':')).encode()
172
- catalog_sha = hashlib.sha256(catalog).hexdigest()
173
-
174
- class Handler(BaseHTTPRequestHandler):
175
- def log_message(self, *args):
176
- pass
177
-
178
- def do_HEAD(self):
179
- self.do_GET()
180
-
181
- def do_GET(self):
182
- raw = urlsplit(self.path).path
183
- path = unquote(raw)
184
- if raw != path:
185
- return self.send_error(404)
186
- if path == CATALOG:
187
- self.send_response(200)
188
- self.send_header('Content-Type', 'application/json')
189
- self.send_header('Content-Length', str(len(catalog)))
190
- self.send_header('Cache-Control', 'private, no-cache')
191
- self.send_header('ETag', '"'+catalog_sha+'"')
192
- self.end_headers()
193
- if self.command != 'HEAD':
194
- self.wfile.write(catalog)
195
- return
196
- item = release['files'].get(path)
197
- if not item or not safe_path(path):
198
- return self.send_error(404)
199
- size = item['bytes']; etag = '"'+item['sha256']+'"'
200
- if self.headers.get('If-None-Match') == etag:
201
- self.send_response(304); self.send_header('ETag', etag); self.end_headers(); return
202
- try:
203
- start, end, status = byte_range(self.headers.get('Range'), size)
204
- except ValueError:
205
- self.send_response(416); self.send_header('Content-Range', 'bytes */'+str(size)); self.end_headers(); return
206
- try:
207
- with cache.open(item) as source:
208
- self.send_response(status)
209
- self.send_header('Content-Type', 'application/json' if path.endswith('.json') else mimetypes.guess_type(path)[0] or 'application/octet-stream')
210
- self.send_header('Content-Length', str(end-start+1))
211
- self.send_header('Cache-Control', 'private, no-cache')
212
- self.send_header('ETag', etag)
213
- self.send_header('Accept-Ranges', 'bytes')
214
- self.send_header('X-Content-Type-Options', 'nosniff')
215
- if status == 206:
216
- self.send_header('Content-Range', f'bytes {start}-{end}/{size}')
217
- self.end_headers()
218
- if self.command == 'HEAD':
219
- return
220
- source.seek(start); remaining = end-start+1
221
- while remaining:
222
- block = source.read(min(1 << 20, remaining))
223
- if not block:
224
- raise OSError('Verified cache file was truncated during delivery')
225
- self.wfile.write(block); remaining -= len(block)
226
- except (BrokenPipeError, ConnectionResetError):
227
- pass
228
- except Exception as error:
229
- print('Native USD delivery failed: '+type(error).__name__, flush=True)
230
- self.send_error(503, 'Native USD delivery temporarily unavailable')
231
-
232
- return Handler
233
-
234
-
235
- def main():
236
- import faulthandler
237
- faulthandler.enable(all_threads=True)
238
- from . import artifact_store
239
- run = os.environ.get('RESTORE_RUN_ID', '')
240
- if not re.fullmatch(r'[A-Za-z0-9_-]+', run):
241
- raise ValueError('A pinned restored run is required for native USD')
242
- release_path = Path(__file__).with_name('native_usd_releases') / (run+'.json')
243
- release = validate_release(json.loads(release_path.read_text()))
244
- if release['objectPrefix'] != 'simready-assets/'+run+'/library-media/native-usd/v1/blobs':
245
- raise ValueError('Native USD release does not belong to the restored run')
246
- cfg = Config(values=dict(os.environ))
247
- client = artifact_store.s3_client(cfg)
248
- def fetch(sha):
249
- # Keep the SDK's response/checksum transport out of HTTP worker threads.
250
- # The signed URL stays server-side; our pinned SHA256 and size remain the
251
- # acceptance gate before any bytes are exposed to the browser.
252
- signed = client.generate_presigned_url('get_object', Params={
253
- 'Bucket': release['bucket'], 'Key': release['objectPrefix']+'/'+sha}, ExpiresIn=300)
254
- parsed = urlsplit(signed)
255
- if parsed.scheme != 'https' or not parsed.hostname.endswith('.amazonaws.com'):
256
- raise ValueError('Unexpected artifact host')
257
- return urllib.request.build_opener(NoRedirect()).open(signed, timeout=120)
258
- cache = VerifiedCache(BUILD_DIR/'native_usd_cache', fetch)
259
- print('Native USD release ready: '+str(release['qualifiedAssets'])+' qualified assets', flush=True)
260
- ThreadingHTTPServer(('127.0.0.1', 8023), handler(release, cache)).serve_forever()
261
-
262
-
263
- if __name__ == '__main__':
264
- main()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
pipeline/native_usd_releases/20261005-ee37df6.json DELETED
The diff for this file is too large to render. See raw diff
 
pipeline/native_usd_releases/20261012-9d9f42a.json DELETED
The diff for this file is too large to render. See raw diff
 
pipeline/native_usd_releases/production-glb-catalog.json DELETED
The diff for this file is too large to render. See raw diff
 
pipeline/partner_viewer.py DELETED
@@ -1,229 +0,0 @@
1
- """Install the six-asset Robotiq/Standard Bots browser viewer from a pinned S3 ZIP.
2
-
3
- The Space keeps this 214 MB expanded site outside its Git repository. The ZIP
4
- is uploaded write-once below each Space's pinned restore run in the artifact
5
- bucket. Its SHA256 is pinned here so a restart installs exactly the approved
6
- package. Optional Space variables may override the URI or digest.
7
- """
8
-
9
- from __future__ import annotations
10
-
11
- import hashlib
12
- import json
13
- import os
14
- import re
15
- import shutil
16
- import zipfile
17
- from pathlib import Path, PurePosixPath
18
-
19
- from .config import BUILD_DIR, Config
20
- from .library_media import INDEX_KEY, MEDIA_ROOT
21
-
22
- PREFIX = "robotiq-standardbots-viewer/"
23
- ROOT = BUILD_DIR / "partner_viewer"
24
- MAX_FILES = 3000
25
- MAX_EXPANDED = 300_000_000
26
- MAX_FILE = 80_000_000
27
- PACKAGE_NAME = "robotiq-standardbots-viewer.zip"
28
- PACKAGE_SHA256 = "09facc4123b6b87bf22ad23a3dd6435e3a6c3d07fc625d61ce095557af949b20"
29
- # The exact base_key values indexed by config/corpus.simready-assets.json.
30
- # Three of the submitted dataset revisions differ from the media source
31
- # revision, but their package paths and file hashes were checked identical.
32
- BASE_KEYS = {
33
- "Robotiq_2F_85": "hf://huggingface.co/datasets/Robotiq-Official/simready-assets/resolve/e6e8380e394fcf6fec437e8c56559f9aeb8b4a27/Robotiq_2F_85/simready_usd/Robotiq_2F_85.usda",
34
- "Robotiq_2F_140": "hf://huggingface.co/datasets/Robotiq-Official/simready-assets/resolve/db3922996bee2ab0ba56ebe676c96d7664514c14/Robotiq_2F_140/simready_usd/Robotiq_2F_140.usda",
35
- "Robotiq_Hand_E": "hf://huggingface.co/datasets/Robotiq-Official/simready-assets/resolve/caebd2848c56ee9db57c0a4bb8ac371924751b6a/Robotiq_Hand_E/simready_usd/Robotiq_Hand_E.usda",
36
- "standardbots_core": "hf://huggingface.co/datasets/standardbots/simready-core/resolve/456dc1397e969780ec5a40c6c21f3c764d9e3906/standardbots_core/core/standardbots_core.usd",
37
- "standardbots_spark": "hf://huggingface.co/datasets/standardbots/simready-spark/resolve/a64078b146c8d34f3edbd401fe9fbd8547f15778/standardbots_spark/spark/standardbots_spark.usd",
38
- "standardbots_thor": "hf://huggingface.co/datasets/standardbots/simready-thor/resolve/36e597c735e486bc77af93ec7e48e3be5541cd2a/standardbots_thor/thor/standardbots_thor.usd",
39
- }
40
-
41
-
42
- def _sha256(path: Path) -> str:
43
- digest = hashlib.sha256()
44
- with path.open("rb") as source:
45
- for block in iter(lambda: source.read(1 << 20), b""):
46
- digest.update(block)
47
- return digest.hexdigest()
48
-
49
-
50
- def unpack(archive: Path, dest: Path) -> int:
51
- """Extract only regular files under the known site root and check six assets."""
52
- with zipfile.ZipFile(archive) as source:
53
- members = source.infolist()
54
- if len(members) > MAX_FILES or sum(i.file_size for i in members) > MAX_EXPANDED:
55
- raise ValueError("partner viewer ZIP exceeds its file or byte budget")
56
- for item in members:
57
- path = PurePosixPath(item.filename)
58
- mode = (item.external_attr >> 16) & 0o170000
59
- if (not item.filename.startswith(PREFIX) or path.is_absolute()
60
- or ".." in path.parts or item.file_size > MAX_FILE
61
- or mode not in (0, 0o040000, 0o100000)):
62
- raise ValueError(f"unsafe partner viewer member: {item.filename!r}")
63
- relative = PurePosixPath(*path.parts[1:])
64
- if not relative.parts or item.is_dir():
65
- continue
66
- target = dest.joinpath(*relative.parts)
67
- target.parent.mkdir(parents=True, exist_ok=True)
68
- with source.open(item) as contents, target.open("wb") as output:
69
- shutil.copyfileobj(contents, output, 1 << 20)
70
-
71
- rows = json.loads((dest / "trial" / "assets.json").read_text())
72
- if (len(rows) != 6 or {r.get("label") for r in rows} != set(BASE_KEYS)
73
- or {r.get("index") for r in rows} != {"hf-robotiq", "hf-standardbots"}
74
- or sum(r.get("index") == "hf-robotiq" for r in rows) != 3):
75
- raise ValueError("partner viewer asset list is not three Robotiq plus three Standard Bots")
76
- for row in rows:
77
- for key in ("rtxThumbnail", "rtx360", "rtxMotion"):
78
- path = PurePosixPath(row[key])
79
- if not row[key].startswith("/") or ".." in path.parts or not dest.joinpath(*path.parts[1:]).is_file():
80
- raise ValueError(f"partner viewer is missing {row.get('id')} {key}")
81
- model = PurePosixPath(row["nativeBaseline"]["url"])
82
- if ".." in model.parts or not dest.joinpath(*model.parts[1:]).is_file():
83
- raise ValueError(f"partner viewer is missing {row.get('id')} USD")
84
- qualification = json.loads((dest / "qualification.json").read_text())
85
- if (len(qualification) != 6 or not all(
86
- q["nativeBrowser"]["passed"] and q["motion"]["passed"]
87
- and q["motion"]["cutFrames"] == 0 and q["spin"]["frames"] == 72
88
- for q in qualification)):
89
- raise ValueError("partner viewer qualification is incomplete")
90
- return len(rows)
91
-
92
-
93
- def install_media(viewer: Path, media_root: Path = MEDIA_ROOT) -> int:
94
- """Add the six RTX renders to the Explorer's manifest and file tree."""
95
- rows = json.loads((viewer / "trial" / "assets.json").read_text())
96
- tree = media_root / INDEX_KEY
97
- tree.mkdir(parents=True, exist_ok=True)
98
- manifest_path = tree / "manifest.json"
99
- manifest = json.loads(manifest_path.read_text()) if manifest_path.is_file() else {
100
- "version": 1, "index": INDEX_KEY, "assets": {},
101
- }
102
- if manifest.get("version") != 1 or not isinstance(manifest.get("assets"), dict):
103
- raise ValueError("base library media manifest is malformed")
104
- additions = {}
105
- for row in rows:
106
- label = row["label"]
107
- base_key = BASE_KEYS[label]
108
- folder = PurePosixPath(row["rtxThumbnail"]).parts[2]
109
- source = viewer / "media" / folder
110
- if not source.is_dir() or not all((source / f).is_file() for f in (
111
- "still_tile.jpg", "still_poster.jpg", "spin_card.mp4", "jointsclip_rtx.mp4",
112
- "jointsclip_rtx_card.mp4", "jointsclip_rtx_poster.webp")):
113
- raise ValueError(f"incomplete RTX media for {label}")
114
- spin = json.loads((source / "spin.json").read_text())
115
- if spin.get("frames") != 72 or spin.get("files", {}).get("pattern") != "spin_{k:03d}.webp":
116
- raise ValueError(f"invalid spin metadata for {label}")
117
- if not all((source / f"spin_{k:03d}.webp").is_file() for k in range(72)):
118
- raise ValueError(f"incomplete 72-frame RTX spin for {label}")
119
- spin["v"] = _sha256(source / "spin.json")[:12]
120
- spin["files"]["card"] = "spin_card.mp4"
121
- clip = json.loads((source / "rtxclip.json").read_text())
122
- additions[base_key] = {
123
- "id": folder,
124
- "still": {"v": _sha256(source / "still.json")[:12],
125
- "files": {"tile": "still_tile.jpg", "poster": "still_poster.jpg"},
126
- "meta": json.loads((source / "still.json").read_text())},
127
- "spin": spin,
128
- "rtxclip": {"v": _sha256(source / "rtxclip.json")[:12],
129
- "files": {"textured": "jointsclip_rtx.mp4", "card": "jointsclip_rtx_card.mp4",
130
- "poster": "jointsclip_rtx_poster.webp"},
131
- "size": [clip["width"], clip["height"]], "crop": clip.get("crop"), "meta": clip},
132
- }
133
- target = tree / folder
134
- if target.exists():
135
- shutil.rmtree(target)
136
- # Both trees sit below BUILD_DIR: hard links avoid a second media copy.
137
- shutil.copytree(source, target, copy_function=os.link)
138
- manifest["assets"].update(additions)
139
- part = manifest_path.with_suffix(".json.part")
140
- part.write_text(json.dumps(manifest, separators=(",", ":")))
141
- os.replace(part, manifest_path)
142
- install_catalogs(viewer, media_root)
143
- return len(additions)
144
-
145
-
146
- def install_catalogs(viewer: Path, media_root: Path = MEDIA_ROOT) -> None:
147
- """Publish exact-source native USD catalogs for the two Explorer scopes."""
148
- rows = json.loads((viewer / "trial" / "assets.json").read_text())
149
- qualifications = {q["assetId"]: q for q in json.loads((viewer / "qualification.json").read_text())}
150
- grouped = {"hf-robotiq": [], "hf-standardbots": []}
151
- for row in rows:
152
- label, index, asset_id = row["label"], row["index"], row["id"]
153
- q = qualifications[asset_id]
154
- native = row["nativeBaseline"]
155
- model = viewer / native["url"].lstrip("/")
156
- binding = json.loads((model.parent / "binding-audit.json").read_text())
157
- if (index not in grouped or q["index"] != index or q["label"] != label
158
- or q["browserUsdSha256"] != native["sha256"]
159
- or _sha256(model) != native["sha256"] or model.stat().st_size != native["bytes"]
160
- or not binding["bindings"]
161
- or not q["nativeBrowser"]["passed"] or q["nativeBrowser"]["meshes"] < 1
162
- or q["nativeBrowser"]["movableJoints"] < 1 or not q["motion"]["passed"]):
163
- raise ValueError(f"unqualified partner USD catalog entry: {label}")
164
- grouped[index].append({
165
- "id": asset_id, "label": label, "index": index,
166
- "source": BASE_KEYS[label].replace("hf://", "https://", 1),
167
- "status": "ready", "nativeBaseline": native,
168
- "interaction": "articulated",
169
- "sourceJointCount": q["nativeBrowser"]["movableJoints"],
170
- "qualification": {"passed": True, "sourceSha256": native["sha256"],
171
- "interaction": "articulated", "geometry": True,
172
- "materials": True, "interactionPassed": True},
173
- })
174
- for index, entries in grouped.items():
175
- if len(entries) != 3:
176
- raise ValueError(f"expected three qualified assets in {index}")
177
- folder = media_root / index
178
- folder.mkdir(parents=True, exist_ok=True)
179
- path = folder / "usd-catalog.json"
180
- part = path.with_suffix(".json.part")
181
- part.write_text(json.dumps({"version": 1, "profile": "usd-central-assets-v1",
182
- "index": index, "examples": entries}, separators=(",", ":")))
183
- os.replace(part, path)
184
-
185
-
186
- def fetch(env: dict[str, str], root: Path = ROOT, store=None) -> int:
187
- corpus = env.get("CORPUS_NAME", "").strip()
188
- run_id = env.get("RESTORE_RUN_ID", "").strip()
189
- if corpus != "simready-assets" or not run_id:
190
- return 0
191
- if not re.fullmatch(r"[A-Za-z0-9_-]+", run_id):
192
- raise ValueError("RESTORE_RUN_ID is not a safe pinned run")
193
- expected = env.get("PARTNER_VIEWER_SHA256", "").strip().lower() or PACKAGE_SHA256
194
- if len(expected) != 64 or any(c not in "0123456789abcdef" for c in expected):
195
- raise ValueError("PARTNER_VIEWER_SHA256 must be a lowercase SHA256 digest")
196
- if store is None:
197
- from . import artifact_store as store
198
- cfg = Config(values=dict(env))
199
- uri = env.get("PARTNER_VIEWER_S3_URI", "").strip() or (
200
- f"{store.bucket_base(cfg).rstrip('/')}/{corpus}/{run_id}/library-media/partner-viewer/{PACKAGE_NAME}")
201
- if not uri.startswith(store.bucket_base(cfg).rstrip("/") + "/"):
202
- raise ValueError("partner viewer URI is outside the configured artifact bucket")
203
- if ("/library-media/partner-viewer/" not in uri
204
- or not uri.startswith(
205
- f"{store.bucket_base(cfg).rstrip('/')}/{corpus}/{run_id}/library-media/partner-viewer/")):
206
- raise ValueError("partner viewer must belong to the restored simready-assets run's library media")
207
- root.parent.mkdir(parents=True, exist_ok=True)
208
- tmp = root.with_name(root.name + ".download")
209
- shutil.rmtree(tmp, ignore_errors=True)
210
- try:
211
- archive = tmp / "viewer.zip"
212
- archive.parent.mkdir(parents=True)
213
- if not store.download_file(cfg, uri, archive):
214
- raise FileNotFoundError(uri)
215
- actual = _sha256(archive)
216
- if actual != expected:
217
- raise ValueError(f"partner viewer SHA256 mismatch: {actual}")
218
- count = unpack(archive, tmp / "tree")
219
- old = root.with_name(root.name + ".old")
220
- shutil.rmtree(old, ignore_errors=True)
221
- if root.exists():
222
- root.rename(old)
223
- (tmp / "tree").rename(root)
224
- shutil.rmtree(old, ignore_errors=True)
225
- install_media(root)
226
- print(f"==> partner viewer: {count} native USD assets from {uri}")
227
- return count
228
- finally:
229
- shutil.rmtree(tmp, ignore_errors=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
services/explorer/dist/native-usd-fixtures/articulated.usda DELETED
@@ -1,178 +0,0 @@
1
- #usda 1.0
2
- (
3
- defaultPrim = "Qualification"
4
- metersPerUnit = 1
5
- upAxis = "Y"
6
- )
7
-
8
- # Deterministic native-reader fixture. Four visible triangle-mesh boxes;
9
- # slider travel is +X 0..0.6 m; door rotates +Y 0..90 degrees about
10
- # (-0.7, 1.1, 0.35). Visual rest bounds: (-0.7, 0, -0.4)..(0.7, 1.4, 0.4).
11
- def Xform "Qualification"
12
- {
13
- def Scope "Looks"
14
- {
15
- def Material "Base"
16
- {
17
- token outputs:surface.connect = </Qualification/Looks/Base/Surface.outputs:surface>
18
- def Shader "Surface"
19
- {
20
- uniform token info:id = "UsdPreviewSurface"
21
- color3f inputs:diffuseColor = (0.2, 0.25, 0.3)
22
- float inputs:roughness = 0.55
23
- float inputs:metallic = 0
24
- token outputs:surface
25
- }
26
- }
27
- def Material "Slider"
28
- {
29
- token outputs:surface.connect = </Qualification/Looks/Slider/Surface.outputs:surface>
30
- def Shader "Surface"
31
- {
32
- uniform token info:id = "UsdPreviewSurface"
33
- color3f inputs:diffuseColor = (0.12, 0.5, 0.75)
34
- float inputs:roughness = 0.4
35
- float inputs:metallic = 0
36
- token outputs:surface
37
- }
38
- }
39
- def Material "Door"
40
- {
41
- token outputs:surface.connect = </Qualification/Looks/Door/Surface.outputs:surface>
42
- def Shader "Surface"
43
- {
44
- uniform token info:id = "UsdPreviewSurface"
45
- color3f inputs:diffuseColor = (0.85, 0.45, 0.15)
46
- float inputs:roughness = 0.45
47
- float inputs:metallic = 0
48
- token outputs:surface
49
- }
50
- }
51
- }
52
-
53
- def Xform "Base" (prepend apiSchemas = ["PhysicsRigidBodyAPI"])
54
- {
55
- bool physics:rigidBodyEnabled = false
56
- double3 xformOp:translate = (0, 0.2, 0)
57
- uniform token[] xformOpOrder = ["xformOp:translate"]
58
- def Mesh "Visual" (prepend apiSchemas = ["MaterialBindingAPI"])
59
- {
60
- rel material:binding = </Qualification/Looks/Base>
61
- uniform token subdivisionScheme = "none"
62
- point3f[] points = [(-0.7, -0.2, -0.4), (0.7, -0.2, -0.4), (0.7, 0.2, -0.4), (-0.7, 0.2, -0.4), (-0.7, -0.2, 0.4), (0.7, -0.2, 0.4), (0.7, 0.2, 0.4), (-0.7, 0.2, 0.4)]
63
- int[] faceVertexCounts = [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
64
- int[] faceVertexIndices = [0, 2, 1, 0, 3, 2, 4, 5, 6, 4, 6, 7, 0, 1, 5, 0, 5, 4, 3, 7, 6, 3, 6, 2, 0, 4, 7, 0, 7, 3, 1, 2, 6, 1, 6, 5]
65
- color3f[] primvars:displayColor = [(0.2, 0.25, 0.3)] (interpolation = "constant")
66
- }
67
- }
68
-
69
- def Xform "Slider" (prepend apiSchemas = ["PhysicsRigidBodyAPI", "PhysicsMassAPI"])
70
- {
71
- bool physics:rigidBodyEnabled = true
72
- float physics:mass = 2
73
- double3 xformOp:translate = (0, 0.65, 0)
74
- uniform token[] xformOpOrder = ["xformOp:translate"]
75
- # This mesh must remain visible while also supplying collider geometry.
76
- def Mesh "Visual" (prepend apiSchemas = ["MaterialBindingAPI", "PhysicsCollisionAPI", "PhysicsMeshCollisionAPI"])
77
- {
78
- rel material:binding = </Qualification/Looks/Slider>
79
- bool physics:collisionEnabled = true
80
- uniform token physics:approximation = "none"
81
- uniform token subdivisionScheme = "none"
82
- point3f[] points = [(-0.4, -0.15, -0.3), (0.4, -0.15, -0.3), (0.4, 0.15, -0.3), (-0.4, 0.15, -0.3), (-0.4, -0.15, 0.3), (0.4, -0.15, 0.3), (0.4, 0.15, 0.3), (-0.4, 0.15, 0.3)]
83
- int[] faceVertexCounts = [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
84
- int[] faceVertexIndices = [0, 2, 1, 0, 3, 2, 4, 5, 6, 4, 6, 7, 0, 1, 5, 0, 5, 4, 3, 7, 6, 3, 6, 2, 0, 4, 7, 0, 7, 3, 1, 2, 6, 1, 6, 5]
85
- color3f[] primvars:displayColor = [(0.12, 0.5, 0.75)] (interpolation = "constant")
86
- }
87
- def Mesh "CollisionGuide" (prepend apiSchemas = ["PhysicsCollisionAPI", "PhysicsMeshCollisionAPI"])
88
- {
89
- uniform token purpose = "guide"
90
- bool physics:collisionEnabled = true
91
- uniform token physics:approximation = "none"
92
- uniform token subdivisionScheme = "none"
93
- point3f[] points = [(-0.42, -0.17, -0.32), (0.42, -0.17, -0.32), (0.42, 0.17, -0.32), (-0.42, 0.17, -0.32), (-0.42, -0.17, 0.32), (0.42, -0.17, 0.32), (0.42, 0.17, 0.32), (-0.42, 0.17, 0.32)]
94
- int[] faceVertexCounts = [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
95
- int[] faceVertexIndices = [0, 2, 1, 0, 3, 2, 4, 5, 6, 4, 6, 7, 0, 1, 5, 0, 5, 4, 3, 7, 6, 3, 6, 2, 0, 4, 7, 0, 7, 3, 1, 2, 6, 1, 6, 5]
96
- }
97
- def Xform "PurposeChecks"
98
- {
99
- uniform token purpose = "guide"
100
- double3 xformOp:translate = (0, 0.35, -0.25)
101
- uniform token[] xformOpOrder = ["xformOp:translate"]
102
- # No authored purpose here: this far-away box must inherit guide.
103
- def Mesh "InheritedGuide"
104
- {
105
- uniform token subdivisionScheme = "none"
106
- point3f[] points = [(19.95, -0.05, -0.05), (20.05, -0.05, -0.05), (20.05, 0.05, -0.05), (19.95, 0.05, -0.05), (19.95, -0.05, 0.05), (20.05, -0.05, 0.05), (20.05, 0.05, 0.05), (19.95, 0.05, 0.05)]
107
- int[] faceVertexCounts = [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
108
- int[] faceVertexIndices = [0, 2, 1, 0, 3, 2, 4, 5, 6, 4, 6, 7, 0, 1, 5, 0, 5, 4, 3, 7, 6, 3, 6, 2, 0, 4, 7, 0, 7, 3, 1, 2, 6, 1, 6, 5]
109
- }
110
- # An authored default overrides guide and must remain visible.
111
- def Mesh "DefaultOverride" (prepend apiSchemas = ["MaterialBindingAPI"])
112
- {
113
- uniform token purpose = "default"
114
- rel material:binding = </Qualification/Looks/Slider>
115
- uniform token subdivisionScheme = "none"
116
- point3f[] points = [(-0.05, -0.05, -0.05), (0.05, -0.05, -0.05), (0.05, 0.05, -0.05), (-0.05, 0.05, -0.05), (-0.05, -0.05, 0.05), (0.05, -0.05, 0.05), (0.05, 0.05, 0.05), (-0.05, 0.05, 0.05)]
117
- int[] faceVertexCounts = [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
118
- int[] faceVertexIndices = [0, 2, 1, 0, 3, 2, 4, 5, 6, 4, 6, 7, 0, 1, 5, 0, 5, 4, 3, 7, 6, 3, 6, 2, 0, 4, 7, 0, 7, 3, 1, 2, 6, 1, 6, 5]
119
- color3f[] primvars:displayColor = [(0.12, 0.5, 0.75)] (interpolation = "constant")
120
- }
121
- }
122
- }
123
-
124
- def Xform "Door" (prepend apiSchemas = ["PhysicsRigidBodyAPI", "PhysicsMassAPI"])
125
- {
126
- bool physics:rigidBodyEnabled = true
127
- float physics:mass = 1
128
- double3 xformOp:translate = (-0.7, 1.1, 0.35)
129
- uniform token[] xformOpOrder = ["xformOp:translate"]
130
- def Mesh "Visual" (prepend apiSchemas = ["MaterialBindingAPI"])
131
- {
132
- rel material:binding = </Qualification/Looks/Door>
133
- uniform token subdivisionScheme = "none"
134
- point3f[] points = [(0, -0.3, -0.03), (0.8, -0.3, -0.03), (0.8, 0.3, -0.03), (0, 0.3, -0.03), (0, -0.3, 0.03), (0.8, -0.3, 0.03), (0.8, 0.3, 0.03), (0, 0.3, 0.03)]
135
- int[] faceVertexCounts = [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
136
- int[] faceVertexIndices = [0, 2, 1, 0, 3, 2, 4, 5, 6, 4, 6, 7, 0, 1, 5, 0, 5, 4, 3, 7, 6, 3, 6, 2, 0, 4, 7, 0, 7, 3, 1, 2, 6, 1, 6, 5]
137
- color3f[] primvars:displayColor = [(0.85, 0.45, 0.15)] (interpolation = "constant")
138
- }
139
- }
140
-
141
- def Scope "Joints"
142
- {
143
- def PhysicsFixedJoint "BaseAnchor"
144
- {
145
- rel physics:body1 = </Qualification/Base>
146
- point3f physics:localPos0 = (0, 0.2, 0)
147
- point3f physics:localPos1 = (0, 0, 0)
148
- quatf physics:localRot0 = (1, 0, 0, 0)
149
- quatf physics:localRot1 = (1, 0, 0, 0)
150
- }
151
- def PhysicsRevoluteJoint "DoorHinge" (prepend apiSchemas = ["PhysicsDriveAPI:angular"])
152
- {
153
- rel physics:body0 = </Qualification/Base>
154
- rel physics:body1 = </Qualification/Door>
155
- point3f physics:localPos0 = (-0.7, 0.9, 0.35)
156
- point3f physics:localPos1 = (0, 0, 0)
157
- quatf physics:localRot0 = (1, 0, 0, 0)
158
- quatf physics:localRot1 = (1, 0, 0, 0)
159
- uniform token physics:axis = "Y"
160
- float physics:lowerLimit = 0
161
- float physics:upperLimit = 90
162
- float drive:angular:physics:targetPosition = 0
163
- }
164
- def PhysicsPrismaticJoint "SliderSlide" (prepend apiSchemas = ["PhysicsDriveAPI:linear"])
165
- {
166
- rel physics:body0 = </Qualification/Base>
167
- rel physics:body1 = </Qualification/Slider>
168
- point3f physics:localPos0 = (0, 0.45, 0)
169
- point3f physics:localPos1 = (0, 0, 0)
170
- quatf physics:localRot0 = (1, 0, 0, 0)
171
- quatf physics:localRot1 = (1, 0, 0, 0)
172
- uniform token physics:axis = "X"
173
- float physics:lowerLimit = 0
174
- float physics:upperLimit = 0.6
175
- float drive:linear:physics:targetPosition = 0
176
- }
177
- }
178
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
services/explorer/dist/native-usd-fixtures/articulated.usdc DELETED
Binary file (4.54 kB)
 
services/explorer/dist/native-usd-runtime.json DELETED
@@ -1 +0,0 @@
1
- {"version":1,"reader":"lightusd-next","readerVersion":"1.0.0-rc4","worker":"static/native-usd/1.0.0-rc4/3eb7e2d4525a58fb/worker.js","revision":"3eb7e2d4525a58fb","wasmBytes":1672421}
 
 
services/explorer/dist/static/css/13.2d67a70a.chunk.css DELETED
@@ -1 +0,0 @@
1
- .ur2-page{color:#e8e5e2;font-family:sans-serif;margin:auto;max-width:1280px;padding:24px}.ur2-page h1{font-size:28px;margin:8px 0}.ur2-page p{line-height:1.5}.ur2-eyebrow{color:#cfaa85;font-size:12px}.ur2-actions,.ur2-nav{align-items:center;display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}.ur2-page button{background:#242220;border:1px solid #5c5650;border-radius:7px;color:#e8e5e2;cursor:pointer;padding:9px 13px}.ur2-page button[aria-pressed=true]{background:#493528;border-color:#ddab76}.ur2-page a:focus-visible,.ur2-page button:focus-visible{outline:2px solid #edb780;outline-offset:3px}.ur2-pane{background:#191817;border:1px solid #514a43;border-radius:12px;padding:16px}.ur2-stage{aspect-ratio:1;background:#fff;border-radius:8px;margin:16px auto;overflow:hidden;position:relative;width:min(100%,68vh,720px)}.ur2-note{color:#bdb6ae;font-size:13px;line-height:1.5;margin:12px 0}.ur2-pane .apple-native-pane{color:#e8e5e2}.ur2-pane .apple-native-note{color:#bdb6ae}.ur2-pane .apple-native-stage{color:#243041;width:min(100%,68vh,720px)}.ur2-pane .needle-native-preview{aspect-ratio:1;border-radius:8px;height:auto;margin:16px auto;min-height:0;width:min(100%,68vh,720px)}.ur2-pane .needle-native-preview iframe{height:100%;inset:0;min-height:0;position:absolute;width:100%}.ur2-unavailable{min-height:220px;padding:24px}.ur2-page a{color:#efbe8b}.ur2-page table{border-collapse:collapse;font-size:13px;width:100%}.ur2-page td,.ur2-page th{border-bottom:1px solid #413a33;padding:10px;text-align:left}@media (max-width:700px){.ur2-page{padding:12px}.ur2-page table{display:block;overflow-x:auto}}.usd-central{max-width:1480px}.usc-header,.usc-title{align-items:center;display:flex;gap:20px;justify-content:space-between}.usc-layout{grid-gap:24px;display:grid;gap:24px;grid-template-columns:280px minmax(0,1fr);margin-top:24px}.usc-layout aside{min-width:0}.usc-layout input{background:#191817;border:1px solid #61594f;border-radius:7px;color:#fff;display:block;margin-top:8px;padding:12px;width:100%}.usc-robots{grid-gap:8px;display:grid;gap:8px;max-height:74vh;overflow-y:auto;padding:3px}.usc-robots button{align-items:center;display:flex;gap:10px;text-align:left}.usc-robots img{border-radius:4px;object-fit:cover}.usc-robots small{color:#c1b8ac;display:block;margin-top:5px}.usc-title h2{margin:0}.usc-title>span{color:#c1b8ac;text-transform:capitalize}.usd-central .ur2-stage{width:min(100%,60vh,650px)}.usd-central details{color:#bdb6ae;font-size:13px;line-height:1.5;margin-top:20px}@media (max-width:820px){.usc-header{align-items:start;flex-direction:column}.usc-layout{grid-template-columns:1fr}.usc-robots{display:flex;max-height:none;overflow-x:auto}.usc-robots button{min-width:220px}}
 
 
services/explorer/dist/static/css/408.a882dfe3.chunk.css DELETED
@@ -1 +0,0 @@
1
- .gqr-page{color:#e8e5e2;font-family:sans-serif;margin:auto;max-width:1280px;padding:24px}.gqr-page h1{font-size:30px;margin:8px 0}.gqr-page p{line-height:1.5}.gqr-page button,.gqr-profile-controls button{background:#242220;border:1px solid #5c5650;border-radius:7px;color:#e8e5e2;cursor:pointer;padding:9px 13px}.gqr-page button[aria-pressed=true],.gqr-profile-controls button[aria-pressed=true]{background:#493528;border-color:#ddab76}.gqr-page button:disabled,.gqr-profile-controls button:disabled{cursor:default;opacity:.45}.gqr-page a:focus-visible,.gqr-page button:focus-visible,.gqr-profile-controls button:focus-visible{outline:2px solid #edb780;outline-offset:3px}.gqr-actions,.gqr-page nav,.gqr-toolbar,.gqr-toolbar [role=group]{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.gqr-toolbar{justify-content:space-between}.gqr-pose-controls{background:#191817eb;border-radius:8px;color:#e8e5e2;font:13px sans-serif;left:12px;padding:8px;position:absolute;right:12px;top:12px;z-index:10}.gqr-eyebrow{color:#cfaa85;font-size:12px}.gqr-pane{background:#191817;border:1px solid #514a43;border-radius:12px;margin-top:18px;padding:16px}.gqr-stage{aspect-ratio:1;background:#fff;border-radius:8px;margin:16px auto;overflow:hidden;position:relative;width:min(100%,68vh,720px)}.gqr-note,[data-testid=glb-quality-storage]{color:#bdb6ae;font-size:13px}.gqr-page table{border-collapse:collapse;font-size:13px;margin-top:16px;width:100%}.gqr-page td,.gqr-page th{border-bottom:1px solid #413a33;padding:10px;text-align:left}.gqr-page a{color:#efbe8b}@media (max-width:700px){.gqr-page{padding:12px}.gqr-toolbar{display:block}}
 
 
services/explorer/dist/static/css/493.7df49819.chunk.css DELETED
@@ -1 +0,0 @@
1
- .apple-native-pane{color:inherit;min-width:0}.apple-native-toolbar{align-items:baseline;display:flex;flex-wrap:wrap;gap:12px}.apple-native-toolbar [role=status]{font-size:13px}.apple-native-actions,.apple-native-profiles{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.apple-native-pane button{background:#fff;border:1px solid #c3cbd6;border-radius:6px;color:#243041;cursor:pointer;padding:8px 12px}.apple-native-pane button[aria-pressed=true]{background:#edf6e0;border-color:#729d34}.apple-native-pane button:disabled{cursor:default;opacity:.5}.apple-native-stage{aspect-ratio:1;background:#fff;border:1px solid #e0e5eb;border-radius:8px;margin-inline:auto;overflow:hidden;position:relative;width:100%}.apple-native-stage model{background:#fff;display:block;height:100%;width:100%}.apple-native-unavailable{align-items:center;box-sizing:border-box;color:#243041;display:flex;flex-direction:column;height:100%;justify-content:center;padding:24px;text-align:center}.apple-native-unavailable p{max-width:440px}.apple-native-note{color:inherit;font-size:13px;line-height:1.5;opacity:.8}.apple-native-pane a{color:#76b900}.needle-native-preview{background:#fff;height:100%;min-height:360px;overflow:hidden;position:relative;width:100%}.needle-native-preview iframe{border:0;display:block;height:100%;min-height:360px;width:100%}.needle-native-preview__status{background:#ffffffde;border-radius:5px;color:#26323c;font:12px/1.4 sans-serif;left:12px;max-width:calc(100% - 24px);padding:4px 8px;pointer-events:none;position:absolute;top:12px}.needle-native-preview__note{background:#ffffffd9;bottom:8px;color:#45535f;font:11px/1.4 sans-serif;left:12px;padding:3px 6px;pointer-events:none;position:absolute;right:12px}.needle-native-preview__error{background:#fff;border:1px solid #d6dce1;color:#7d2929;font:14px/1.5 sans-serif;left:24px;padding:16px;position:absolute;right:24px;top:50%}.ur2-page{color:#e8e5e2;font-family:sans-serif;margin:auto;max-width:1280px;padding:24px}.ur2-page h1{font-size:28px;margin:8px 0}.ur2-page p{line-height:1.5}.ur2-eyebrow{color:#cfaa85;font-size:12px}.ur2-actions,.ur2-nav{align-items:center;display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}.ur2-page button{background:#242220;border:1px solid #5c5650;border-radius:7px;color:#e8e5e2;cursor:pointer;padding:9px 13px}.ur2-page button[aria-pressed=true]{background:#493528;border-color:#ddab76}.ur2-page a:focus-visible,.ur2-page button:focus-visible{outline:2px solid #edb780;outline-offset:3px}.ur2-pane{background:#191817;border:1px solid #514a43;border-radius:12px;padding:16px}.ur2-stage{aspect-ratio:1;background:#fff;border-radius:8px;margin:16px auto;overflow:hidden;position:relative;width:min(100%,68vh,720px)}.ur2-note{color:#bdb6ae;font-size:13px;line-height:1.5;margin:12px 0}.ur2-pane .apple-native-pane{color:#e8e5e2}.ur2-pane .apple-native-note{color:#bdb6ae}.ur2-pane .apple-native-stage{color:#243041;width:min(100%,68vh,720px)}.ur2-pane .needle-native-preview{aspect-ratio:1;border-radius:8px;height:auto;margin:16px auto;min-height:0;width:min(100%,68vh,720px)}.ur2-pane .needle-native-preview iframe{height:100%;inset:0;min-height:0;position:absolute;width:100%}.ur2-unavailable{min-height:220px;padding:24px}.ur2-page a{color:#efbe8b}.ur2-page table{border-collapse:collapse;font-size:13px;width:100%}.ur2-page td,.ur2-page th{border-bottom:1px solid #413a33;padding:10px;text-align:left}@media (max-width:700px){.ur2-page{padding:12px}.ur2-page table{display:block;overflow-x:auto}}
 
 
services/explorer/dist/static/css/734.22c494cb.chunk.css DELETED
@@ -1 +0,0 @@
1
- .vc-page{color:#e8e5e2;font-family:sans-serif;margin:auto;max-width:1560px;padding:24px}.vc-page h1{font-size:30px;margin:8px 0 10px}.vc-page h2{font-size:21px;margin:0 0 8px}.vc-page h3{font-size:17px;margin:0}.vc-page p{line-height:1.5}.vc-page button{background:#242220;border:1px solid #5c5650;border-radius:7px;color:inherit;cursor:pointer;padding:9px 13px}.vc-page button:hover{background:#35302b}.vc-page button:disabled{cursor:default;opacity:.45}.vc-page a:focus-visible,.vc-page button:focus-visible,.vc-page summary:focus-visible{outline:2px solid #edb780;outline-offset:3px}.vc-page button[aria-pressed=true]{background:#493528;border-color:#ddab76}.vc-page a{color:#efbe8b}.vc-eyebrow{color:#cfaa85;font-size:12px;letter-spacing:.07em;margin:0;text-transform:uppercase}.vc-muted{color:#bdb6ae;font-size:13px}.vc-categories{display:flex;flex-wrap:wrap;gap:8px;margin:22px 0 14px}.vc-assets{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(3,1fr);margin-bottom:24px}.vc-assets button{padding:14px;text-align:left}.vc-assets span,.vc-assets strong{display:block}.vc-assets span{color:#bdb6ae;font-size:12px;margin-top:7px}.vc-selection{align-items:center;display:flex;gap:16px;justify-content:space-between;margin-bottom:12px}.vc-selection p{margin:0}.vc-actions,.vc-layout{display:flex;flex-wrap:wrap;gap:8px}.vc-layout{margin:0 0 18px}.vc-pair{grid-gap:16px;display:grid;gap:16px;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.vc-pair.vc-single{grid-template-columns:minmax(0,1fr)}.vc-single .vc-stage{height:min(68vh,720px)}.vc-pane{background:#191817;border:1px solid #514a43;border-radius:12px;min-width:0;padding:12px}.vc-pane-facts,.vc-pane-heading{align-items:center;display:flex;gap:10px;justify-content:space-between}.vc-pane-heading{margin:2px 0 10px}.vc-pane-heading span{color:#c7c0b8;font-size:12px}.vc-stage{border-radius:8px;height:min(57vh,570px);min-height:330px;overflow:hidden;position:relative}.vc-pair[data-viewport=square] .vc-stage{aspect-ratio:1;height:auto;margin-inline:auto;min-height:0;width:min(100%,68vh,720px)}.vc-pane-facts{color:#d4cdc5;font-size:12px;margin-top:12px}.vc-failure{color:#f0b5a6;flex-direction:column;justify-content:center}.vc-failure,.vc-pending{display:flex;min-height:330px;padding:24px}.vc-pending{align-items:center;color:#bdb6ae}.vc-motion-note{background:#30261c;border:1px solid #92704c;border-radius:7px;color:#efcfaa;font-size:13px;margin:0 0 12px;padding:10px 12px}.vc-viewport-note{background:#28211b;border:1px solid #6f5b45;border-radius:7px;color:#e4cdb6;font-size:13px;margin:0 0 18px;padding:10px 12px}.vc-media-tabs{margin:0 -12px}.vc-links{font-size:12px;margin-bottom:0}.vc-joints{grid-gap:10px;display:grid;gap:10px;margin-top:12px}.vc-joint{grid-gap:12px;display:grid;font-size:12px;gap:12px;grid-template-columns:1fr 1fr}.vc-joint input{width:100%}.vc-method{margin:14px 0}.vc-table{border-collapse:collapse;font-size:13px;margin-top:16px;width:100%}.vc-table td,.vc-table th{border-bottom:1px solid #413a33;padding:11px 12px;text-align:left}.vc-table thead th{background:#27231f}.vc-table tbody th{font-weight:500}.vc-table tbody th button{background:#0000;border:0;padding:0;text-align:left}.vc-findings{background:#25211e;border-radius:9px;font-size:13px;margin:18px 0;padding:4px 16px}.vc-overview{margin:24px 0}.vc-page summary{color:#dfc7ae;cursor:pointer}.vc-table-scroll{overflow:auto}@media (max-width:850px){.vc-page{padding:16px}.vc-pair{grid-template-columns:1fr}.vc-assets{gap:8px}.vc-selection{display:block}.vc-actions{margin-top:12px}}
 
 
services/explorer/dist/static/js/13.492f8275.chunk.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkdeepsearch_ui=self.webpackChunkdeepsearch_ui||[]).push([[13,857],{1219(){},2973(e,r,t){t.d(r,{A:()=>v});var n=t(9379),a=t(5043),i=t(3139),s=t(5597),o=t(3333),l=t(6796),c=t(9885),d=t(9207),u=t(5260),h=t(579);const p=Object.freeze({position:[3,-4,2],target:[0,0,0]}),m=Object.freeze({maxPixels:2073600,reference:"square"});function v(e){let{asset:r,mode:t,reader:v=c.Me,cameraRecipe:f,onTelemetry:w,backLabel:g="USD comparison",showImplementationNote:b=!0,nativeMountOnly:x=!1,presentation:y="white-studio",showMount:j=!0}=e;const[S,M]=(0,a.useState)(null),[A,k]=(0,a.useState)("Loading"),[U,D]=(0,a.useState)(null),L=(0,a.useRef)(0),C=(0,a.useRef)(!1),R=(0,a.useRef)(w),N=(0,a.useRef)(f);N.current=f,R.current=w;const B=(0,a.useCallback)(e=>{var n;const a=(null===e||void 0===e?void 0:e.message)||"This renderer could not load the asset";D(a),k("Failed"),null===(n=R.current)||void 0===n||n.call(R,{assetId:r.id,renderer:t,status:"failed",error:a})},[r.id,t]);(0,a.useEffect)(()=>{var e;const a=new AbortController;let i=null;M(null),D(null),k("Loading"),C.current=!1,L.current=performance.now(),null===(e=R.current)||void 0===e||e.call(R,{assetId:r.id,renderer:t,status:"loading"});return(async()=>{var e;if("reference"===t){var s;const[e,t]=await Promise.all([(0,l._z)(r.articulation.url,{signal:a.signal,maxBytes:2097152,sha256:r.articulation.sha256,expectedBytes:r.articulation.bytes}),(0,l._z)(r.current.url,{signal:a.signal,maxBytes:67108864,sha256:r.current.sha256,expectedBytes:r.current.bytes})]);if(a.signal.aborted)return null;const n=JSON.parse((new TextDecoder).decode(e));if(1!==n.version||"gltf"!==n.frame||!Array.isArray(n.bodies)||!n.bodies.length||!Array.isArray(n.joints))throw new Error("Unsupported reference articulation export");return i=URL.createObjectURL(new Blob([t],{type:"model/gltf-binary"})),{glbUrl:i,articulation:n,store:(0,o.createJointStore)(n),view:r.view||(null===(s=r.clipMeta)||void 0===s?void 0:s.camera)||p,clipMeta:r.clipMeta,sourceVerified:!0,sha256:r.current.sha256,fetchAndVerifyMs:performance.now()-L.current}}const c=r.nativeBaseline,h=await v({url:c.url,signal:a.signal,expectedSha256:c.sha256,onProgress:e=>{a.signal.aborted||k(e)}});if(a.signal.aborted)return null;const m=performance.now(),f=!1===c.motionQualified?(0,d.nativeUsdVisualMapping)(h):(0,d.nativeUsdArticulation)(h);f.articulation.kind=c.presentationKind;const w=(0,n.A)((0,n.A)({},h.metrics),{},{mappingMs:performance.now()-m});return{usdModel:{loadScene:async e=>{const r=await(0,u.createUsdScene)(h,f,(0,n.A)((0,n.A)({},e),{},{baseUrl:c.url,renderBothSides:!0,textureConcurrency:["lightusd-parallel","lightusd-packed"].includes(t)?4:1}));return Object.assign(w,r.userData.usdLoading),r}},articulation:f.articulation,store:(0,o.createJointStore)(f.articulation),view:r.view||(null===(e=r.clipMeta)||void 0===e?void 0:e.camera)||p,clipMeta:r.clipMeta,metrics:w,sourceVerified:!0,sha256:c.sha256}})().then(e=>{!a.signal.aborted&&e&&(M((0,n.A)((0,n.A)({},e),{},{inspectCamera:!0,presentation:y,renderPixelBudget:m,previewMount:!j||x&&"reference"===t?null:r.previewMount||null})),k("Preparing viewport"))}).catch(e=>{a.signal.aborted||B(e)}),()=>{a.abort(),i&&URL.revokeObjectURL(i)}},[r,t,v,B,x,y,j]);const E=(0,i.A)({resetKey:"".concat(r.id,":").concat(t),modelKey:"".concat(r.id,":").concat(t),active:!0,imageTab:!1,model:S,modelPending:!S&&!U,onModelUnavailable:B,workspace:{portal:!0,lazyShell:!0,onEscape:"self",labels:{back:g,dock:"Dock viewer"}}});return(0,a.useEffect)(()=>{if(!S||!E.viewerApi||C.current)return;if(S.store.setPose(S.store.homes,"instant"),"reference"!==t&&N.current)try{E.viewerApi.setInspectionCamera(N.current)}catch(n){return void B(n)}let e=!1;return k("Completing first frame"),E.viewerApi.waitForInspectionDraw().then(n=>{var a,i,s,o,l;e||(n.drawn?(C.current=!0,k("Ready"),null===(a=R.current)||void 0===a||a.call(R,{assetId:r.id,renderer:t,status:"ready",readyMs:performance.now()-L.current,firstCompletedDraw:n.drawn,gpuSynchronized:n.gpuSynchronized,sourceVerified:S.sourceVerified,sha256:S.sha256,fetchAndVerifyMs:S.fetchAndVerifyMs,readerMs:null===(i=S.metrics)||void 0===i?void 0:i.loadMs,heapBytes:null===(s=S.metrics)||void 0===s?void 0:s.wasmHeapBytes,metrics:S.metrics,jointCount:S.store.ids.length,pixelBuffer:E.viewerApi.renderSize,assetStorage:E.viewerApi.assetStorage,camera:E.viewerApi.cameraDiagnostics,cameraMatched:"reference"!==t&&(o=E.viewerApi.cameraDiagnostics,l=N.current,Boolean(o&&l&&o.frame===l.frame&&["position","target","up","verticalFovDegrees","near","far","viewMatrix","projectionMatrix"].every(e=>{const r=Array.isArray(o[e])?o[e]:[o[e]],t=Array.isArray(l[e])?l[e]:[l[e]];return r.length===t.length&&r.every((e,r)=>Number.isFinite(e)&&Number.isFinite(t[r])&&Math.abs(e-t[r])<=1e-8*Math.max(1,Math.abs(e)))}))),scope:"reference"===t?r.referenceScope:"Native USD geometry; same shared PBR viewport. No source MDL execution."})):B(new Error(n.error||"The viewport closed before completing its first frame")))}).catch(r=>{e||B(r)}),()=>{e=!0}},[r,t,S,E.viewerApi,B]),(0,h.jsxs)("section",{className:"ur2-shared","data-testid":"round2-shared-pane","data-engine":t,children:[(0,h.jsx)("p",{role:"status","data-testid":"round2-status",children:A}),U&&(0,h.jsx)("p",{role:"alert",children:U}),(0,h.jsx)("div",{className:"ur2-stage",ref:E.regionRef,tabIndex:-1,children:(0,h.jsx)(s.z_,{ctl:E,fileName:r.label,renderPicture:()=>null})}),S&&(0,h.jsxs)("div",{className:"ur2-actions",children:[(0,h.jsx)("button",{onClick:()=>{var e;return null===(e=E.viewerApi)||void 0===e?void 0:e.resetView()},children:"Reset camera"}),S.store.ids.length>0&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)("button",{disabled:!E.viewerApi,onClick:E.expandPose,children:"Move individual joints"}),(0,h.jsx)("button",{onClick:()=>S.store.setAll(0),children:"Home pose"}),(0,h.jsx)("button",{onClick:()=>S.store.playSequence(),children:"Play joint sequence"})]})]}),(null===S||void 0===S?void 0:S.store.ids.length)>0&&(0,h.jsxs)("p",{className:"ur2-note",children:["Move individual joints opens the same pose workspace as the GLB viewer: select a joint and adjust its position.",b&&"reference"!==t&&" This view loads USD geometry and source joint data directly; it does not use Apple\u2019s model element or a GLB geometry substitute."]}),(0,h.jsx)(s.Vo,{ctl:E,fileName:r.label,topOffset:0})]})}},3013(e,r,t){t.r(r),t.d(r,{default:()=>d});var n=t(9379),a=t(5043),i=t(2973),s=t(6857),o=t(8276),l=(t(1219),t(579));const c=e=>Number.isFinite(e)?"".concat((e/1e3).toFixed(2)," s"):"\u2014";function d(){var e,r;const[t,d]=(0,a.useState)(null),[u,h]=(0,a.useState)(null),[p,m]=(0,a.useState)(new URLSearchParams(window.location.search).get("robot")||"franka"),[v,f]=(0,a.useState)("lightusd-packed"),[w,g]=(0,a.useState)({}),[b,x]=(0,a.useState)(""),y="1"===new URLSearchParams(window.location.search).get("qualify");(0,a.useEffect)(()=>{const e=new AbortController;return fetch("".concat("","/usd-central/manifest.json"),{signal:e.signal,cache:"no-cache"}).then(e=>{if(!e.ok)throw new Error("The robot catalog is unavailable");return e.json()}).then(e=>d((0,o.I)(e))).catch(r=>{e.signal.aborted||h(r.message)}),()=>e.abort()},[]);const j=(null===t||void 0===t?void 0:t.examples.find(e=>e.id===p))||(null===t||void 0===t?void 0:t.examples[0]),S=(null===t||void 0===t?void 0:t.examples.filter(e=>"ready"===e.status).length)||0,M="reference"===v,A=j&&(M?j.current&&j.articulation:"ready"===j.status||y&&"candidate"===j.status);return(0,l.jsxs)("main",{className:"ur2-page usd-central",children:[(0,l.jsxs)("header",{className:"usc-header",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("span",{className:"ur2-eyebrow",children:"SIMREADY CENTRAL \xb7 USD ENVIRONMENT"}),(0,l.jsx)("h1",{children:"Robots you can move"}),(0,l.jsx)("p",{children:"Source USD assets with Central\u2019s familiar joint controls."})]}),(0,l.jsx)("a",{href:"https://stg-simready-central.nvidia.com/ui/",target:"_blank",rel:"noreferrer",children:"Open Central staging \u2197"})]}),u&&(0,l.jsx)("p",{role:"alert",children:u}),!t&&!u&&(0,l.jsx)("p",{role:"status",children:"Loading robots\u2026"}),t&&(0,l.jsxs)("div",{className:"usc-layout",children:[(0,l.jsxs)("aside",{"aria-label":"Robot catalog",children:[(0,l.jsx)("label",{htmlFor:"usc-search",children:"Find a robot"}),(0,l.jsx)("input",{id:"usc-search",type:"search",value:b,onChange:e=>x(e.target.value),placeholder:"Arm, hand, gripper\u2026"}),(0,l.jsxs)("p",{className:"ur2-note",children:[S," of ",t.examples.length," ready for USD joint interaction"]}),(0,l.jsx)("nav",{className:"usc-robots",children:t.examples.filter(e=>"".concat(e.label," ").concat(e.kind).toLowerCase().includes(b.toLowerCase())).map(e=>(0,l.jsxs)("button",{"aria-pressed":e.id===(null===j||void 0===j?void 0:j.id),onClick:()=>function(e){m(e.id),f("lightusd-packed");const r=new URL(window.location.href);r.searchParams.set("robot",e.id),window.history.replaceState(null,"",r)}(e),"data-robot":e.id,children:[e.poster&&(0,l.jsx)("img",{src:e.poster.url,alt:"",loading:"lazy",width:"88",height:"55"}),(0,l.jsxs)("span",{children:[(0,l.jsx)("strong",{children:e.label}),(0,l.jsx)("small",{children:"ready"===e.status?"Interactive 3D":"candidate"===e.status?"Testing joints":"USD needs attention"})]})]},e.id))})]}),j&&(0,l.jsxs)("section",{className:"ur2-pane","aria-label":"Robot preview",children:[(0,l.jsxs)("div",{className:"usc-title",children:[(0,l.jsx)("h2",{children:j.label}),(0,l.jsx)("span",{children:j.kind})]}),(0,l.jsxs)("div",{className:"ur2-nav","aria-label":"Preview format",children:[(0,l.jsx)("button",{"aria-pressed":!M,onClick:()=>f("lightusd-packed"),children:"Interactive 3D"}),(0,l.jsx)("button",{"aria-pressed":M,disabled:!j.current||!j.articulation,onClick:()=>f("reference"),children:"Current GLB reference"}),!M&&"ready"===j.status&&j.package&&(0,l.jsx)("a",{href:j.package.url,download:!0,children:"Download USD package"})]}),A?(0,l.jsx)(i.A,{asset:j,mode:v,reader:s.readLightUsdSnapshotRound2,backLabel:"Robot library",showImplementationNote:!1,nativeMountOnly:!0,presentation:"rtx-media",showMount:!1,onTelemetry:function(e){g(r=>(0,n.A)((0,n.A)({},r),{},{["".concat(e.assetId,":").concat(e.renderer)]:e}))}},"".concat(j.id,":").concat(v)):(0,l.jsxs)("div",{className:"ur2-unavailable",children:[(0,l.jsx)("h3",{children:"USD joint interaction is not ready for this robot"}),(0,l.jsx)("p",{children:j.reason||"This source is still being checked."}),(0,l.jsx)("p",{children:"The current GLB reference is available using the labelled button above."})]}),(0,l.jsxs)("table",{"aria-label":"Opening speed this visit",children:[(0,l.jsx)("thead",{children:(0,l.jsxs)("tr",{children:[(0,l.jsx)("th",{children:"Ready this visit"}),(0,l.jsx)("th",{children:"Interactive 3D"}),(0,l.jsx)("th",{children:"Current GLB"})]})}),(0,l.jsx)("tbody",{children:(0,l.jsxs)("tr",{children:[(0,l.jsx)("td",{children:"Completed first frame"}),(0,l.jsx)("td",{"data-testid":"usc-native-ready",children:c(null===(e=w["".concat(j.id,":lightusd-packed")])||void 0===e?void 0:e.readyMs)}),(0,l.jsx)("td",{children:c(null===(r=w["".concat(j.id,":reference")])||void 0===r?void 0:r.readyMs)})]})})]}),(0,l.jsx)("p",{className:"ur2-note",children:"Times reflect this browser and connection, including downloading and drawing the asset. Open each format to measure it."}),(0,l.jsxs)("details",{children:[(0,l.jsx)("summary",{children:"About this USD preview"}),(0,l.jsx)("p",{children:"USD supplies the geometry, materials and joint definitions. LightUSD reads it in the browser; Central\u2019s shared renderer and pose controls display and move it. Materials are prepared for browser PBR rendering; MDL and RTX are not executed here."}),(0,l.jsx)("p",{children:"The downloadable USD retains joint definitions. Interactive controls are supplied by this viewer, rather than stored as a user interface in the file."}),(0,l.jsx)("p",{children:"Experimental environment. Browser joint checks do not establish simulation validity or collision safety."})]})]})]})]})}},6857(e,r,t){t.r(r),t.d(r,{readLightUsdSnapshotRound2:()=>c});var n=t(9379),a=t(9885),i=t(7863);const s=()=>new DOMException("USD load cancelled","AbortError");let o;function l(e){const r=new URL(e,window.location.href);if(r.origin!==window.location.origin)throw new Error("USD review resources must use this origin");return r.href}async function c(){let{file:e,url:r,filename:t,getHeaders:c,signal:d,onProgress:u,expectedSha256:h,snapshotCache:p}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(null!==d&&void 0!==d&&d.aborted)throw s();const m=performance.now(),v=(0,a.mx)(t||(null===e||void 0===e?void 0:e.name)||r);if((null===e||void 0===e?void 0:e.size)>a.Z6)throw new Error("USD layer exceeds the 64 MiB qualification limit");const f="",w="public-central-robot-demo-v1"===(null===p||void 0===p?void 0:p.context)&&!e&&!c&&/^[a-f0-9]{64}$/.test(h||""),g=await function(e,r,t){const n=()=>fetch("".concat(e,"/usd-round2/lightusd/snapshot-v2/runtime.json"),{signal:t?void 0:r,credentials:"same-origin",cache:t?"default":"no-store"}).then(e=>{if(!e.ok)throw new Error("The isolated LightUSD experiment runtime is not installed");return e.json()});return t?(o||(o=n().catch(e=>{throw o=null,e})),o):n()}(f,d,w);if(1!==g.version||"lightusd-next-loaded-layer"!==g.reader||"1.0.0-rc4"!==g.readerVersion||1!==g.loadedLayerApi||1!==g.viewerSnapshotApi||"simready-viewer-snapshot-v2"!==g.variant||"string"!==typeof g.revision||!g.revision)throw new Error("The isolated LightUSD runtime manifest is unsupported");const b=new URL("".concat(f.replace(/\/$/,""),"/"),window.location.origin),x=l(new URL(g.worker,b).href),y=w?JSON.stringify([p.context,l(r),h,g.revision,x]):null,j=(0,a.yM)(y);if(null!==d&&void 0!==d&&d.aborted)throw s();var S;if(j)return j.metrics=(0,n.A)((0,n.A)({},j.metrics),{},{snapshotCacheSourceWorkerMs:null===(S=j.metrics)||void 0===S?void 0:S.workerMs,runtimeMs:0,physicsMs:0,opinionMs:0,geometryMs:0,workerMs:0,wasmHeapBytes:0,downloadMs:0,verificationMs:0,snapshotCacheHit:!0,loadMs:performance.now()-m}),j;null===u||void 0===u||u("download");const M=performance.now(),A=e?await e.arrayBuffer():await(0,a.HX)(await fetch(l(r),{signal:d,credentials:"same-origin",headers:(null===c||void 0===c?void 0:c())||{}}),d);if(A.byteLength>a.Z6)throw new Error("USD layer exceeds the 64 MiB qualification limit");if(null!==d&&void 0!==d&&d.aborted)throw s();const k=performance.now()-M,U=performance.now(),D=void 0===h?null:await(0,i.n)(A,h,"USD layer"),L=void 0===h?0:performance.now()-U;if(null!==d&&void 0!==d&&d.aborted)throw s();return new Promise((e,r)=>{let t,i,o=!1;const l=(n,a)=>{var s;o||(o=!0,clearTimeout(i),null===d||void 0===d||d.removeEventListener("abort",c),null===(s=t)||void 0===s||s.terminate(),n?r(n):e(a))},c=()=>l(s());try{if(t=new Worker(x,{type:"module",name:"simready-lightusd-snapshot-round2"}),null===d||void 0===d||d.addEventListener("abort",c,{once:!0}),null!==d&&void 0!==d&&d.aborted)return void c();t.onerror=e=>l(new Error(e.message||"LightUSD worker failed")),t.onmessageerror=()=>l(new Error("LightUSD result could not be transferred")),t.onmessage=e=>{let{data:r}=e;if("progress"===r.type)null===u||void 0===u||u(r.stage);else if("error"===r.type)l(new Error(r.message));else if("result"===r.type){if(r.result.metrics=(0,n.A)((0,n.A)({},r.result.metrics),{},{downloadMs:k,verificationMs:L,loadMs:performance.now()-m,runtimeWasmBytes:g.wasmBytes,runtimeRevision:g.revision,snapshotCacheHit:!1}),D&&(r.result.metrics.sourceSha256=D),y)try{(0,a.eH)(y,r.result)}catch(t){}l(null,r.result)}},i=setTimeout(()=>l(new Error("LightUSD exceeded the 60 second parse limit")),6e4),t.postMessage({bytes:A,filename:v},[A])}catch(h){l(h)}})}}}]);
 
 
services/explorer/dist/static/js/13.53221a3d.chunk.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkdeepsearch_ui=self.webpackChunkdeepsearch_ui||[]).push([[13,857],{1219(){},2973(e,r,t){t.d(r,{A:()=>v});var n=t(9379),a=t(5043),i=t(3139),s=t(5597),o=t(3333),l=t(6796),c=t(9885),d=t(9207),u=t(5260),h=t(579);const p=Object.freeze({position:[3,-4,2],target:[0,0,0]}),m=Object.freeze({maxPixels:2073600,reference:"square"});function v(e){let{asset:r,mode:t,reader:v=c.Me,cameraRecipe:f,onTelemetry:w,backLabel:g="USD comparison",showImplementationNote:b=!0,nativeMountOnly:x=!1,presentation:y="white-studio",showMount:j=!0}=e;const[S,M]=(0,a.useState)(null),[A,U]=(0,a.useState)("Loading"),[k,D]=(0,a.useState)(null),L=(0,a.useRef)(0),C=(0,a.useRef)(!1),R=(0,a.useRef)(w),N=(0,a.useRef)(f);N.current=f,R.current=w;const B=(0,a.useCallback)(e=>{var n;const a=(null===e||void 0===e?void 0:e.message)||"This renderer could not load the asset";D(a),U("Failed"),null===(n=R.current)||void 0===n||n.call(R,{assetId:r.id,renderer:t,status:"failed",error:a})},[r.id,t]);(0,a.useEffect)(()=>{var e;const a=new AbortController;let i=null;M(null),D(null),U("Loading"),C.current=!1,L.current=performance.now(),null===(e=R.current)||void 0===e||e.call(R,{assetId:r.id,renderer:t,status:"loading"});return(async()=>{var e;if("reference"===t){var s;const[e,t]=await Promise.all([(0,l._z)(r.articulation.url,{signal:a.signal,maxBytes:2097152,sha256:r.articulation.sha256,expectedBytes:r.articulation.bytes}),(0,l._z)(r.current.url,{signal:a.signal,maxBytes:67108864,sha256:r.current.sha256,expectedBytes:r.current.bytes})]);if(a.signal.aborted)return null;const n=JSON.parse((new TextDecoder).decode(e));if(1!==n.version||"gltf"!==n.frame||!Array.isArray(n.bodies)||!n.bodies.length||!Array.isArray(n.joints))throw new Error("Unsupported reference articulation export");return i=URL.createObjectURL(new Blob([t],{type:"model/gltf-binary"})),{glbUrl:i,articulation:n,store:(0,o.createJointStore)(n),view:r.view||(null===(s=r.clipMeta)||void 0===s?void 0:s.camera)||p,clipMeta:r.clipMeta,sourceVerified:!0,sha256:r.current.sha256,fetchAndVerifyMs:performance.now()-L.current}}const c=r.nativeBaseline,h=await v({url:c.url,signal:a.signal,expectedSha256:c.sha256,onProgress:e=>{a.signal.aborted||U(e)}});if(a.signal.aborted)return null;const m=performance.now(),f=!1===c.motionQualified?(0,d.nativeUsdVisualMapping)(h):(0,d.nativeUsdArticulation)(h);f.articulation.kind=c.presentationKind;const w=(0,n.A)((0,n.A)({},h.metrics),{},{mappingMs:performance.now()-m});return{usdModel:{loadScene:async e=>{const r=await(0,u.createUsdScene)(h,f,(0,n.A)((0,n.A)({},e),{},{baseUrl:c.url,renderBothSides:!0,textureConcurrency:["lightusd-parallel","lightusd-packed"].includes(t)?4:1}));return Object.assign(w,r.userData.usdLoading),r}},articulation:f.articulation,store:(0,o.createJointStore)(f.articulation),view:r.view||(null===(e=r.clipMeta)||void 0===e?void 0:e.camera)||p,clipMeta:r.clipMeta,metrics:w,sourceVerified:!0,sha256:c.sha256}})().then(e=>{!a.signal.aborted&&e&&(M((0,n.A)((0,n.A)({},e),{},{inspectCamera:!0,presentation:y,renderPixelBudget:m,previewMount:!j||x&&"reference"===t?null:r.previewMount||null})),U("Preparing viewport"))}).catch(e=>{a.signal.aborted||B(e)}),()=>{a.abort(),i&&URL.revokeObjectURL(i)}},[r,t,v,B,x,y,j]);const E=(0,i.A)({resetKey:"".concat(r.id,":").concat(t),modelKey:"".concat(r.id,":").concat(t),active:!0,imageTab:!1,model:S,modelPending:!S&&!k,onModelUnavailable:B,workspace:{portal:!0,lazyShell:!0,onEscape:"self",labels:{back:g,dock:"Dock viewer"}}});return(0,a.useEffect)(()=>{if(!S||!E.viewerApi||C.current)return;if(S.store.setPose(S.store.homes,"instant"),"reference"!==t&&N.current)try{E.viewerApi.setInspectionCamera(N.current)}catch(n){return void B(n)}let e=!1;return U("Completing first frame"),E.viewerApi.waitForInspectionDraw().then(n=>{var a,i,s,o,l;e||(n.drawn?(C.current=!0,U("Ready"),null===(a=R.current)||void 0===a||a.call(R,{assetId:r.id,renderer:t,status:"ready",readyMs:performance.now()-L.current,firstCompletedDraw:n.drawn,gpuSynchronized:n.gpuSynchronized,sourceVerified:S.sourceVerified,sha256:S.sha256,fetchAndVerifyMs:S.fetchAndVerifyMs,readerMs:null===(i=S.metrics)||void 0===i?void 0:i.loadMs,heapBytes:null===(s=S.metrics)||void 0===s?void 0:s.wasmHeapBytes,metrics:S.metrics,jointCount:S.store.ids.length,pixelBuffer:E.viewerApi.renderSize,assetStorage:E.viewerApi.assetStorage,camera:E.viewerApi.cameraDiagnostics,cameraMatched:"reference"!==t&&(o=E.viewerApi.cameraDiagnostics,l=N.current,Boolean(o&&l&&o.frame===l.frame&&["position","target","up","verticalFovDegrees","near","far","viewMatrix","projectionMatrix"].every(e=>{const r=Array.isArray(o[e])?o[e]:[o[e]],t=Array.isArray(l[e])?l[e]:[l[e]];return r.length===t.length&&r.every((e,r)=>Number.isFinite(e)&&Number.isFinite(t[r])&&Math.abs(e-t[r])<=1e-8*Math.max(1,Math.abs(e)))}))),scope:"reference"===t?r.referenceScope:"Native USD geometry; same shared PBR viewport. No source MDL execution."})):B(new Error(n.error||"The viewport closed before completing its first frame")))}).catch(r=>{e||B(r)}),()=>{e=!0}},[r,t,S,E.viewerApi,B]),(0,h.jsxs)("section",{className:"ur2-shared","data-testid":"round2-shared-pane","data-engine":t,children:[(0,h.jsx)("p",{role:"status","data-testid":"round2-status",children:A}),k&&(0,h.jsx)("p",{role:"alert",children:k}),(0,h.jsx)("div",{className:"ur2-stage",ref:E.regionRef,tabIndex:-1,children:(0,h.jsx)(s.z_,{ctl:E,fileName:r.label,renderPicture:()=>null})}),S&&(0,h.jsxs)("div",{className:"ur2-actions",children:[(0,h.jsx)("button",{onClick:()=>{var e;return null===(e=E.viewerApi)||void 0===e?void 0:e.resetView()},children:"Reset camera"}),S.store.ids.length>0&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)("button",{disabled:!E.viewerApi,onClick:E.expandPose,children:"Move individual joints"}),(0,h.jsx)("button",{onClick:()=>S.store.setAll(0),children:"Home pose"}),(0,h.jsx)("button",{onClick:()=>S.store.playSequence(),children:"Play joint sequence"})]})]}),(null===S||void 0===S?void 0:S.store.ids.length)>0&&(0,h.jsxs)("p",{className:"ur2-note",children:["Move individual joints opens the same pose workspace as the GLB viewer: select a joint and adjust its position.",b&&"reference"!==t&&" This view loads USD geometry and source joint data directly; it does not use Apple\u2019s model element or a GLB geometry substitute."]}),(0,h.jsx)(s.Vo,{ctl:E,fileName:r.label,topOffset:0})]})}},3013(e,r,t){t.r(r),t.d(r,{default:()=>d});var n=t(9379),a=t(5043),i=t(2973),s=t(6857),o=t(8276),l=(t(1219),t(579));const c=e=>Number.isFinite(e)?"".concat((e/1e3).toFixed(2)," s"):"\u2014";function d(){var e,r;const[t,d]=(0,a.useState)(null),[u,h]=(0,a.useState)(null),[p,m]=(0,a.useState)(new URLSearchParams(window.location.search).get("robot")||"franka"),[v,f]=(0,a.useState)("lightusd-packed"),[w,g]=(0,a.useState)({}),[b,x]=(0,a.useState)(""),y="1"===new URLSearchParams(window.location.search).get("qualify");(0,a.useEffect)(()=>{const e=new AbortController;return fetch("".concat("","/usd-central/manifest.json"),{signal:e.signal,cache:"no-cache"}).then(e=>{if(!e.ok)throw new Error("The robot catalog is unavailable");return e.json()}).then(e=>d((0,o.I)(e))).catch(r=>{e.signal.aborted||h(r.message)}),()=>e.abort()},[]);const j=(null===t||void 0===t?void 0:t.examples.find(e=>e.id===p))||(null===t||void 0===t?void 0:t.examples[0]),S=(null===t||void 0===t?void 0:t.examples.filter(e=>"ready"===e.status).length)||0,M="reference"===v,A=j&&(M?j.current&&j.articulation:"ready"===j.status||y&&"candidate"===j.status);return(0,l.jsxs)("main",{className:"ur2-page usd-central",children:[(0,l.jsxs)("header",{className:"usc-header",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("span",{className:"ur2-eyebrow",children:"SIMREADY CENTRAL \xb7 USD ENVIRONMENT"}),(0,l.jsx)("h1",{children:"Robots you can move"}),(0,l.jsx)("p",{children:"Source USD assets with Central\u2019s familiar joint controls."})]}),(0,l.jsx)("a",{href:"https://stg-simready-central.nvidia.com/ui/",target:"_blank",rel:"noreferrer",children:"Open Central staging \u2197"})]}),u&&(0,l.jsx)("p",{role:"alert",children:u}),!t&&!u&&(0,l.jsx)("p",{role:"status",children:"Loading robots\u2026"}),t&&(0,l.jsxs)("div",{className:"usc-layout",children:[(0,l.jsxs)("aside",{"aria-label":"Robot catalog",children:[(0,l.jsx)("label",{htmlFor:"usc-search",children:"Find a robot"}),(0,l.jsx)("input",{id:"usc-search",type:"search",value:b,onChange:e=>x(e.target.value),placeholder:"Arm, hand, gripper\u2026"}),(0,l.jsxs)("p",{className:"ur2-note",children:[S," of ",t.examples.length," ready for USD joint interaction"]}),(0,l.jsx)("nav",{className:"usc-robots",children:t.examples.filter(e=>"".concat(e.label," ").concat(e.kind).toLowerCase().includes(b.toLowerCase())).map(e=>(0,l.jsxs)("button",{"aria-pressed":e.id===(null===j||void 0===j?void 0:j.id),onClick:()=>function(e){m(e.id),f("lightusd-packed");const r=new URL(window.location.href);r.searchParams.set("robot",e.id),window.history.replaceState(null,"",r)}(e),"data-robot":e.id,children:[e.poster&&(0,l.jsx)("img",{src:e.poster.url,alt:"",loading:"lazy",width:"88",height:"55"}),(0,l.jsxs)("span",{children:[(0,l.jsx)("strong",{children:e.label}),(0,l.jsx)("small",{children:"ready"===e.status?"Interactive USD":"candidate"===e.status?"Testing joints":"USD needs attention"})]})]},e.id))})]}),j&&(0,l.jsxs)("section",{className:"ur2-pane","aria-label":"Robot preview",children:[(0,l.jsxs)("div",{className:"usc-title",children:[(0,l.jsx)("h2",{children:j.label}),(0,l.jsx)("span",{children:j.kind})]}),(0,l.jsxs)("div",{className:"ur2-nav","aria-label":"Preview format",children:[(0,l.jsx)("button",{"aria-pressed":!M,onClick:()=>f("lightusd-packed"),children:"Interactive USD"}),(0,l.jsx)("button",{"aria-pressed":M,disabled:!j.current||!j.articulation,onClick:()=>f("reference"),children:"Current GLB reference"}),!M&&"ready"===j.status&&j.package&&(0,l.jsx)("a",{href:j.package.url,download:!0,children:"Download USD package"})]}),A?(0,l.jsx)(i.A,{asset:j,mode:v,reader:s.readLightUsdSnapshotRound2,backLabel:"Robot library",showImplementationNote:!1,nativeMountOnly:!0,presentation:"rtx-media",showMount:!1,onTelemetry:function(e){g(r=>(0,n.A)((0,n.A)({},r),{},{["".concat(e.assetId,":").concat(e.renderer)]:e}))}},"".concat(j.id,":").concat(v)):(0,l.jsxs)("div",{className:"ur2-unavailable",children:[(0,l.jsx)("h3",{children:"USD joint interaction is not ready for this robot"}),(0,l.jsx)("p",{children:j.reason||"This source is still being checked."}),(0,l.jsx)("p",{children:"The current GLB reference is available using the labelled button above."})]}),(0,l.jsxs)("table",{"aria-label":"Opening speed this visit",children:[(0,l.jsx)("thead",{children:(0,l.jsxs)("tr",{children:[(0,l.jsx)("th",{children:"Ready this visit"}),(0,l.jsx)("th",{children:"Interactive USD"}),(0,l.jsx)("th",{children:"Current GLB"})]})}),(0,l.jsx)("tbody",{children:(0,l.jsxs)("tr",{children:[(0,l.jsx)("td",{children:"Completed first frame"}),(0,l.jsx)("td",{"data-testid":"usc-native-ready",children:c(null===(e=w["".concat(j.id,":lightusd-packed")])||void 0===e?void 0:e.readyMs)}),(0,l.jsx)("td",{children:c(null===(r=w["".concat(j.id,":reference")])||void 0===r?void 0:r.readyMs)})]})})]}),(0,l.jsx)("p",{className:"ur2-note",children:"Times reflect this browser and connection, including downloading and drawing the asset. Open each format to measure it."}),(0,l.jsxs)("details",{children:[(0,l.jsx)("summary",{children:"About this USD preview"}),(0,l.jsx)("p",{children:"USD supplies the geometry, materials and joint definitions. LightUSD reads it in the browser; Central\u2019s shared renderer and pose controls display and move it. Materials are prepared for browser PBR rendering; MDL and RTX are not executed here."}),(0,l.jsx)("p",{children:"The downloadable USD retains joint definitions. Interactive controls are supplied by this viewer, rather than stored as a user interface in the file."}),(0,l.jsx)("p",{children:"Experimental environment. Browser joint checks do not establish simulation validity or collision safety."})]})]})]})]})}},6857(e,r,t){t.r(r),t.d(r,{readLightUsdSnapshotRound2:()=>c});var n=t(9379),a=t(9885),i=t(7863);const s=()=>new DOMException("USD load cancelled","AbortError");let o;function l(e){const r=new URL(e,window.location.href);if(r.origin!==window.location.origin)throw new Error("USD review resources must use this origin");return r.href}async function c(){let{file:e,url:r,filename:t,getHeaders:c,signal:d,onProgress:u,expectedSha256:h,snapshotCache:p}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(null!==d&&void 0!==d&&d.aborted)throw s();const m=performance.now(),v=(0,a.mx)(t||(null===e||void 0===e?void 0:e.name)||r);if((null===e||void 0===e?void 0:e.size)>a.Z6)throw new Error("USD layer exceeds the 64 MiB qualification limit");const f="",w="public-central-robot-demo-v1"===(null===p||void 0===p?void 0:p.context)&&!e&&!c&&/^[a-f0-9]{64}$/.test(h||""),g=await function(e,r,t){const n=()=>fetch("".concat(e,"/usd-round2/lightusd/snapshot-v2/runtime.json"),{signal:t?void 0:r,credentials:"same-origin",cache:t?"default":"no-store"}).then(e=>{if(!e.ok)throw new Error("The isolated LightUSD experiment runtime is not installed");return e.json()});return t?(o||(o=n().catch(e=>{throw o=null,e})),o):n()}(f,d,w);if(1!==g.version||"lightusd-next-loaded-layer"!==g.reader||"1.0.0-rc4"!==g.readerVersion||1!==g.loadedLayerApi||1!==g.viewerSnapshotApi||"simready-viewer-snapshot-v2"!==g.variant||"string"!==typeof g.revision||!g.revision)throw new Error("The isolated LightUSD runtime manifest is unsupported");const b=new URL("".concat(f.replace(/\/$/,""),"/"),window.location.origin),x=l(new URL(g.worker,b).href),y=w?JSON.stringify([p.context,l(r),h,g.revision,x]):null,j=(0,a.yM)(y);if(null!==d&&void 0!==d&&d.aborted)throw s();var S;if(j)return j.metrics=(0,n.A)((0,n.A)({},j.metrics),{},{snapshotCacheSourceWorkerMs:null===(S=j.metrics)||void 0===S?void 0:S.workerMs,runtimeMs:0,physicsMs:0,opinionMs:0,geometryMs:0,workerMs:0,wasmHeapBytes:0,downloadMs:0,verificationMs:0,snapshotCacheHit:!0,loadMs:performance.now()-m}),j;null===u||void 0===u||u("download");const M=performance.now(),A=e?await e.arrayBuffer():await(0,a.HX)(await fetch(l(r),{signal:d,credentials:"same-origin",headers:(null===c||void 0===c?void 0:c())||{}}),d);if(A.byteLength>a.Z6)throw new Error("USD layer exceeds the 64 MiB qualification limit");if(null!==d&&void 0!==d&&d.aborted)throw s();const U=performance.now()-M,k=performance.now(),D=void 0===h?null:await(0,i.n)(A,h,"USD layer"),L=void 0===h?0:performance.now()-k;if(null!==d&&void 0!==d&&d.aborted)throw s();return new Promise((e,r)=>{let t,i,o=!1;const l=(n,a)=>{var s;o||(o=!0,clearTimeout(i),null===d||void 0===d||d.removeEventListener("abort",c),null===(s=t)||void 0===s||s.terminate(),n?r(n):e(a))},c=()=>l(s());try{if(t=new Worker(x,{type:"module",name:"simready-lightusd-snapshot-round2"}),null===d||void 0===d||d.addEventListener("abort",c,{once:!0}),null!==d&&void 0!==d&&d.aborted)return void c();t.onerror=e=>l(new Error(e.message||"LightUSD worker failed")),t.onmessageerror=()=>l(new Error("LightUSD result could not be transferred")),t.onmessage=e=>{let{data:r}=e;if("progress"===r.type)null===u||void 0===u||u(r.stage);else if("error"===r.type)l(new Error(r.message));else if("result"===r.type){if(r.result.metrics=(0,n.A)((0,n.A)({},r.result.metrics),{},{downloadMs:U,verificationMs:L,loadMs:performance.now()-m,runtimeWasmBytes:g.wasmBytes,runtimeRevision:g.revision,snapshotCacheHit:!1}),D&&(r.result.metrics.sourceSha256=D),y)try{(0,a.eH)(y,r.result)}catch(t){}l(null,r.result)}},i=setTimeout(()=>l(new Error("LightUSD exceeded the 60 second parse limit")),6e4),t.postMessage({bytes:A,filename:v},[A])}catch(h){l(h)}})}}}]);
 
 
services/explorer/dist/static/js/207.a8b74874.chunk.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkdeepsearch_ui=self.webpackChunkdeepsearch_ui||[]).push([[207],{9207(e,i,t){t.r(i),t.d(i,{NativeUsdArticulationError:()=>h,classifyNativeUsdMesh:()=>A,isNativeUsdCollider:()=>w,nativeUsdArticulation:()=>N,nativeUsdVisualMapping:()=>F});var o=t(9379),n=t(9435);const s=1e-5,a={PhysicsFixedJoint:"fixed",PhysicsPrismaticJoint:"prismatic",PhysicsRevoluteJoint:"revolute"},r=(e,i)=>Object.prototype.hasOwnProperty.call(e||{},i),l=e=>(null===e||void 0===e?void 0:e.properties)||{},c=(e,i)=>"/"===i||e===i||e.startsWith("".concat(i,"/")),p=e=>"string"===typeof e&&("/"===e||e.startsWith("/")&&!e.endsWith("/")&&!e.includes("//"))&&!e.split("/").some(e=>"."===e||".."===e),d=(e,i)=>((null===e||void 0===e?void 0:e.apiSchemas)||[]).some(e=>e.split(":")[0]===i),u=e=>Array.from({length:16},(i,t)=>e.elements[t%4*4+Math.floor(t/4)]),m=(e,i)=>!r(e,"authoredProperties")||e.authoredProperties.includes(i);class h extends Error{constructor(e,i){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;super(i),this.name="NativeUsdArticulationError",this.code=e,this.path=t}}function f(e,i,t){throw new h(e,i,t)}function v(e,i,t){if(!m(e,i)||!r(l(e),i))return t;const o=l(e)[i];return null==o&&f("unreadable_property","USD property ".concat(i," could not be read."),e.path),o}function y(e,i,t){const o=v(e,i,t);return"boolean"!==typeof o&&f("invalid_property","".concat(i," must be a boolean."),e.path),o}function g(e,i,t){const o=v(e,i,t);return void 0===o||"number"===typeof o&&Number.isFinite(o)||f("invalid_property","".concat(i," must be finite."),e.path),o}function b(e,i){var t;const o=null===(t=e.nativeLimitValues)||void 0===t?void 0:t[i];return void 0!==o?(Array.isArray(e.authoredProperties)&&e.authoredProperties.includes(i)&&r(l(e),i)&&null===l(e)[i]&&["-inf","inf"].includes(o)||f("invalid_limit_provenance","An infinite joint limit requires exact native authored-float provenance.",e.path),o):g(e,i)}function _(e){const i=Array.isArray(e)?e:null===e||void 0===e?void 0:e.prims;Array.isArray(i)||f("physics_unavailable","A native USD physics snapshot is required.");const t=new Map;for(const o of i)p(null===o||void 0===o?void 0:o.path)&&!t.has(o.path)||f("invalid_prim_path","USD prim paths must be unique and absolute.",null===o||void 0===o?void 0:o.path),!r(o,"authoredProperties")||Array.isArray(o.authoredProperties)&&!o.authoredProperties.some(e=>"string"!==typeof e)||f("invalid_authored_properties","Native authored property provenance must be a list of property names.",o.path),t.set(o.path,o);return t}function P(e){const i=[];let t=e;for(;t;)i.push(t),t="/"===t?null:t.slice(0,t.lastIndexOf("/"))||"/";return i}function w(e){return d(e,"PhysicsCollisionAPI")&&y(e,"physics:collisionEnabled",!0)}function x(e,i){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new Set,o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];p(e)||f("invalid_prim_path","A mesh must retain its USD prim path.",e);let n="default",s=!0;for(const p of P(e).reverse()){t.has(p)&&(s=!1);const e=i.get(p);e&&(m(e,"purpose")&&(r(l(e),"purpose")?n=v(e,"purpose"):e.purpose&&(n=e.purpose)),"invisible"===v(e,"visibility","inherited")&&(s=!1))}const a=i.get(e),c=o&&w(a),d=s&&("default"===n||"render"===n);return{purpose:n,visible:s,visual:d,collider:c,collisionOnly:c&&!d}}function A(e,i){return x(e,_(i))}function M(){var e,i;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s=null!==(e=null!==(i=t.upAxis)&&void 0!==i?i:o.upAxis)&&void 0!==e?e:"Y",a=t.metersPerUnit,r=void 0===t.kilogramsPerUnit?1:t.kilogramsPerUnit;"Y"!==s&&"Z"!==s&&f("unsupported_up_axis","Unsupported USD up axis ".concat(s,".")),"number"===typeof a&&Number.isFinite(a)&&a>0||f("invalid_stage_units","The native reader must supply a positive metersPerUnit."),"number"===typeof r&&Number.isFinite(r)&&r>0||f("invalid_mass_units","USD kilogramsPerUnit must be positive and finite.");const l="Z"===s?(new n.kn4).makeRotationX(-Math.PI/2):new n.kn4,c=l.clone().multiply((new n.kn4).makeScale(a,a,a));return{upAxis:s,metersPerUnit:a,kilogramsPerUnit:r,rotation:l,conversion:c}}function j(e,i){e&&16===e.length&&Array.from(e).every(Number.isFinite)||f("missing_world_transform","The native reader must supply the authored world matrix.",i);const t=(new n.kn4).fromArray(e),o=t.elements;return(Math.abs(o[3])+Math.abs(o[7])+Math.abs(o[11])>s||Math.abs(o[15]-1)>s)&&f("non_affine_transform","USD world transforms must be affine.",i),t}function q(e,i,t){const o=v(e,i,t);return Array.isArray(o)&&o.length===t.length&&o.every(Number.isFinite)||f("invalid_joint_frame","Invalid joint frame ".concat(i,"."),e.path),o}function U(e,i,t){const o=(new n.Pq0).fromArray(q(e,"physics:localPos".concat(i),[0,0,0])).applyMatrix4(t),[a,r,l,c]=q(e,"physics:localRot".concat(i),[1,0,0,0]),p=new n.PTz(r,l,c,a);p.lengthSq()<s&&f("invalid_joint_frame","A joint quaternion cannot be zero.",e.path);const d=function(e,i){const t=[0,1,2].map(i=>(new n.Pq0).setFromMatrixColumn(e,i));return(t.some(e=>Math.abs(e.length()-1)>s)||t.some((e,i)=>t.slice(i+1).some(i=>Math.abs(e.dot(i))>s))||e.determinant()<0)&&f("unsupported_body_scale","Scaled, reflected or sheared joint body frames require separate qualification.",i),(new n.PTz).setFromRotationMatrix(e).normalize()}(t,e.path).multiply(p.normalize());return{position:o,rotation:d}}function k(e,i,t){var o;const n="physics:body".concat(i),s=null===(o=e.relationships)||void 0===o?void 0:o[n];return null==s&&r(e.relationships,n)&&f("unreadable_relationship","Cannot read ".concat(n,"."),e.path),void 0===s||Array.isArray(s)&&!s.length?null:(Array.isArray(s)&&1===s.length&&p(s[0])&&t.has(s[0])||f("invalid_body_target","".concat(n," must identify one prim in the prepared USD."),e.path),s[0])}function S(e,i,t){var o;const n=[...e.apiSchemas||[],...Object.keys(l(e)),...Object.keys(e.relationships||{})].filter(e=>/mimic/i.test(e));if(!n.length)return null;"prismatic"!==i&&"revolute"!==i&&f("unsupported_coupling","A native mimic must couple qualified single-axis joints.",e.path);const s=new Set;for(const l of n){const i=/^(?:PhysxMimicJointAPI:|physxMimicJoint:)(rotX|rotY|rotZ)(?::(gearing|offset|referenceJoint|referenceJointAxis|naturalFrequency|dampingRatio))?$/.exec(l);i||f("unsupported_coupling","Native mimic semantics require an exact PhysxMimicJoint binding.",e.path),s.add(i[1])}1!==s.size&&f("unsupported_coupling","Multiple native mimic axes need separate qualification.",e.path);const a=[...s][0],r="physxMimicJoint:".concat(a,":"),c=null===(o=e.relationships)||void 0===o?void 0:o["".concat(r,"referenceJoint")];Array.isArray(c)&&1===c.length&&p(c[0])||f("invalid_mimic_reference","A native mimic requires one absolute reference joint path.",e.path);const d=v(e,"".concat(r,"referenceJointAxis"),"rotX");["rotX","rotY","rotZ"].includes(d)||f("invalid_mimic_axis","Native mimic reference axis needs qualification.",e.path);const u=g(e,"".concat(r,"gearing"),1),m=g(e,"".concat(r,"offset"),0)*("prismatic"===i?t.metersPerUnit:1);u||f("invalid_mimic_gearing","Native mimic gearing must be nonzero.",e.path);for(const l of["naturalFrequency","dampingRatio"]){const i=g(e,"".concat(r).concat(l));void 0!==i&&i<0&&f("invalid_mimic_compliance","Native mimic compliance values must be nonnegative.",e.path)}return{referencePath:c[0],gearing:u,offset:m,axis:a,referenceAxis:d}}function N(e){let{physics:i,metadata:t,meshes:r=[],nodes:h=[]}=e;const A=_(i),q=M(t,i),N=[],F=new Map,D=new Set;for(const o of[...h,...r]){if(p(null===o||void 0===o?void 0:o.primPath)||f("invalid_prim_path","Native render records must retain their USD prim path.",null===o||void 0===o?void 0:o.primPath),o.worldMatrix){const e=j(o.worldMatrix,o.primPath),i=F.get(o.primPath);i&&i.elements.some((i,t)=>Math.abs(i-e.elements[t])>s)&&f("ambiguous_source_transform","One USD prim has conflicting world placements; instance identity requires separate qualification.",o.primPath),F.set(o.primPath,e)}!1===o.visible&&D.add(o.primPath)}const T=new Set([...A.values()].filter(e=>d(e,"PhysicsRigidBodyAPI")).map(e=>e.path)),I=new Set(T),J=e=>null==e?null:P(e).find(e=>I.has(e))||e,C=[],O=[];for(const o of A.values()){const e=[...o.apiSchemas||[],...Object.keys(l(o)),...Object.keys(o.relationships||{})];if(e.some(e=>/tendon|coupl|gearjoint|rackjoint/i.test(e))&&f("unsupported_coupling","Native mimic, tendon and coupled constraints require separate qualification.",o.path),e.some(e=>/mimic/i.test(e))&&!["PhysicsPrismaticJoint","PhysicsRevoluteJoint"].includes(o.type)&&f("unsupported_coupling","Native mimic semantics must belong to a qualified single-axis joint.",o.path),!/Joint$/.test(o.type||""))continue;if(!y(o,"physics:jointEnabled",!0)){N.push({code:"disabled_joint",path:o.path});continue}if("PhysicsJoint"===o.type){const i=[0,1].map(e=>k(o,e,A));(1!==i.filter(Boolean).length||e.some(e=>/^Physics(?:Limit|Drive)API:|^(?:limit|drive|physxMimicJoint):/.test(e)))&&f("unsupported_joint_type","A generic joint with relative-body constraints requires separate qualification.",o.path);const t=i.find(Boolean);d(A.get(t),"PhysicsRigidBodyAPI")||f("unsupported_body_target","A free-world joint marker must target one rigid body.",o.path),O.push({sourcePath:o.path,bodyPath:t,degreesOfFreedom:["transX","transY","transZ","rotX","rotY","rotZ"]}),N.push({code:"free_world_joint",path:o.path,message:"The native world joint leaves all six DOFs free. This kinematic preview holds the base at its source placement and does not simulate free-body motion."});continue}const i=a[o.type];i||f("unsupported_joint_type","Unsupported active joint ".concat(o.type,"."),o.path);const t=[0,1].map(e=>k(o,e,A)),n=t.map(J);(n.every(e=>null==e)||n[0]===n[1])&&f("invalid_joint_bodies","A joint must connect two different bodies or one body to the world.",o.path);for(const o of n.filter(Boolean))T.add(o);t.some((e,i)=>e!==n[i])&&N.push({code:"descendant_joint_frame",path:o.path,frameTargets:t,bodyTargets:n}),C.push({prim:o,type:i,targets:n,frameTargets:t})}const R=new Set(r.map(e=>e.primPath)),z=[],X=[];for(const o of A.values()){var B,E;if(!w(o)||R.has(o.path))continue;if(d(o,"PhysxMeshMergeCollisionAPI")){const e=[...o.authoredProperties||Object.keys(l(o)),...Object.keys(o.relationships||{}).filter(e=>{var i;return m(o,e)||(null===(i=o.relationships[e])||void 0===i?void 0:i.length)})];("Xform"!==o.type||!d(o,"PhysicsMeshCollisionAPI")||e.some(e=>e.startsWith("collection:"))||(o.apiSchemas||[]).some(e=>e.startsWith("CollectionAPI:")))&&f("unsupported_merge_collider","Native mesh merging requires a qualified Xform and the default descendant collection.",o.path),[...A.values()].some(e=>e.path!==o.path&&c(e.path,o.path)&&d(e,"PhysicsRigidBodyAPI"))&&f("unsupported_merge_collider","Native mesh merging must not cross another rigid-body frame.",o.path),X.push(o);continue}const e=F.get(o.path);e||f("missing_collider_transform","A filtered collider requires its native world transform.",o.path);const i=null===(B=o.geometry)||void 0===B?void 0:B.positions,t=null===(E=o.geometry)||void 0===E?void 0:E.indices,n=v(o,"faceVertexCounts");i&&t&&Array.isArray(n)||f("missing_collider_geometry","A filtered collider requires snapshot geometry and faceVertexCounts.",o.path),(n.some(e=>3!==e)||3*n.length!==t.length)&&f("unsupported_collider_polygon","Filtered native collider fallback supports authored triangles only.",o.path),z.push({primPath:o.path,points:i,indices:t,worldMatrix:e.elements,debugOnly:!0}),N.push({code:"snapshot_collider",path:o.path})}const Y=[...r,...z];for(const o of X){const e=[...A.values()].filter(e=>"Mesh"===e.type&&c(e.path,o.path)).map(e=>e.path);e.length&&!e.some(e=>!Y.some(i=>i.primPath===e))||f("missing_merge_collider_geometry","Every authored descendant mesh of a native merge collider requires exact snapshot geometry.",o.path)}const Z=e=>P(e).find(e=>T.has(e));T.size&&!Y.some(e=>!Z(e.primPath))||T.add("/");const W=new Map,L=[...T].sort().map((e,i)=>{const t=A.get(e),o=d(t,"PhysicsRigidBodyAPI")&&y(t,"physics:rigidBodyEnabled",!0),s=y(t,"physics:kinematicEnabled",!1),a=F.get(e)||("/"===e?new n.kn4:null),r=g(t,"physics:mass"),l=void 0===r?null:r*q.kilogramsPerUnit;null!==l&&(!Number.isFinite(l)||l<0)&&f("invalid_body_mass","USD authored mass must convert to a finite, nonnegative kilogram value.",e);const c={id:"b".concat(String(i).padStart(2,"0")),path:e,sourcePath:e,role:"fixed",rigid:o,kinematic:s,mass_kg:l,colliders:0,restWorldMatrix:a?u(q.conversion.clone().multiply(a).multiply(q.conversion.clone().invert())):null};return W.set(e,c),c}),V=e=>{var i;return p(e)&&(null===(i=W.get(Z(e)))||void 0===i?void 0:i.id)||null},Q=e=>{if(null==e)return new n.kn4;const i=F.get(e);return i||f("missing_body_transform","A joint body is missing its authored world transform.",e),i},$=new Set,G=new Map([...T].map(e=>[e,[]]));for(const{targets:o}of C)o.every(Boolean)&&(G.get(o[0]).push(o[1]),G.get(o[1]).push(o[0]));const H=[];for(const o of A.values()){if(!d(o,"PhysicsArticulationRootAPI"))continue;const e=C.find(e=>e.prim.path===o.path);e?H.push(...e.targets.filter(Boolean)):T.has(o.path)?H.push(o.path):H.push(...[...T].filter(e=>c(e,o.path)))}for(let o=0;o<H.length;o+=1){const e=H[o];$.has(e)||($.add(e),H.push(...G.get(e).filter(e=>!$.has(e))))}const K=C.sort((e,i)=>e.prim.path.localeCompare(i.prim.path)).map((e,i)=>{let{prim:t,type:a,targets:r,frameTargets:l}=e;return(0,o.A)({id:"j".concat(String(i).padStart(2,"0")),type:a,sourcePath:t.path,path:t.path,name:t.name||t.path.split("/").pop(),label:t.name||t.path.split("/").pop(),body0:null==r[0]?null:W.get(r[0]).id,body1:null==r[1]?null:W.get(r[1]).id},"fixed"===a?{}:function(e,i,t,a,r){let l=arguments.length>5&&void 0!==arguments[5]&&arguments[5];const c=U(e,0,t[0]),p=U(e,1,t[1]),d=v(e,"physics:axis","X");["X","Y","Z"].includes(d)||f("invalid_joint_axis","Joint axis must be X, Y or Z.",e.path);const u=new n.Pq0(...{X:[1,0,0],Y:[0,1,0],Z:[0,0,1]}[d]),m=u.clone().applyQuaternion(c.rotation),h=c.rotation.clone().invert().multiply(p.rotation).normalize(),y=p.position.clone().sub(c.position);let _;"prismatic"===i?((h.angleTo(new n.PTz)>s||y.clone().cross(m).length()*a.metersPerUnit>s)&&f("joint_frame_mismatch","Prismatic frames do not define a single aligned slide.",e.path),_=y.dot(m)*a.metersPerUnit):((y.length()*a.metersPerUnit>s||u.clone().applyQuaternion(h).distanceTo(u)>s)&&f("joint_frame_mismatch","Revolute frames do not define one coincident rotation axis.",e.path),_=2*Math.atan2(h[d.toLowerCase()],h.w)*180/Math.PI,_=((_+180)%360+360)%360-180);const P="prismatic"===i?a.metersPerUnit:1,w="state:".concat("prismatic"===i?"linear":"angular",":physics:position"),x=b(e,"physics:lowerLimit"),A=b(e,"physics:upperLimit"),M="-inf"===x&&"inf"===A&&"revolute"===i;"string"!==typeof x&&"string"!==typeof A||M||f("unsupported_infinite_limits","Only paired authored unlimited revolute limits have a qualified phase preview.",e.path),(void 0===x||void 0===A||x>A)&&f("unbounded_joint","A moving joint requires two finite authored limits for this qualification.",e.path);let j=M?void 0:x*P,q=M?void 0:A*P;const k=g(e,w),S="PhysicsJointStateAPI:".concat("prismatic"===i?"linear":"angular"),N=void 0===k&&l&&(e.apiSchemas||[]).includes(S)?0:void 0,F=null!==k&&void 0!==k?k:N;if(void 0!==F){const t=F*P-_,o="revolute"===i?((t+180)%360+360)%360-180:t,n="revolute"===i?180*s/Math.PI:s;Math.abs(o)>n&&f("rest_state_mismatch","Native joint initial state differs from its drawn rest geometry.",e.path),_=F*P,void 0!==N&&r.push({code:"schema_default_joint_state",path:e.path,state:0,message:"The applied native joint-state schema supplies its zero initial position; no state value is authored."})}else if("revolute"===i&&!M){const i=Math.ceil((j-_-s)/360),t=Math.floor((q-_+s)/360);i<t&&f("ambiguous_rest_angle","Multiple turns fit the rest geometry; an authored joint state is required.",e.path),i===t&&(_+=360*i)}const D=g(e,"drive:".concat("prismatic"===i?"linear":"angular",":physics:targetPosition")),T=void 0===D?_:D*P;M&&(j=T-180,q=T+180,(!Number.isFinite(j)||!Number.isFinite(q)||Math.abs(q-j-360)>s)&&f("invalid_preview_range","The source home must support a precise finite one-turn preview.",e.path),r.push({code:"continuous_joint_preview",path:e.path,message:"The source has no angular limits. This control previews one full rotation; its displayed range is not a physical limit or a multi-turn simulation."}));const I=!M&&(_<j-s||_>q+s);return!I||void 0!==k&&void 0!==D||f("rest_outside_limits","Drawn rest lies outside the authored joint limits.",e.path),(T<j-s||T>q+s)&&f("drive_outside_limits","Drive target lies outside the authored limits.",e.path),I&&r.push({code:"source_bind_rest_outside_limits",path:e.path,rest:_,home:T,message:"The authored bind state lies outside limits; the valid authored drive target supplies the displayed home pose."}),void 0!==D&&r.push({code:"drive_home",path:e.path,message:"The authored drive target supplies the viewer home pose; no dynamics are simulated."}),(0,o.A)((0,o.A)({axis:m.applyMatrix4(a.rotation).normalize().toArray(),pivot:c.position.applyMatrix4(a.conversion).toArray(),unit:"prismatic"===i?"m":"deg",lower:j,upper:q,rest:_,home:T},M?{continuous:!0,sourceLimits:{lower:"-inf",upper:"inf"},previewRange:[j,q]}:{}),{},{far:Math.abs(q-T)>=Math.abs(j-T)?q:j,range:[j,q],drive:void 0!==D,partial:!1})}(t,a,l.map(Q),q,N,r.filter(Boolean).every(e=>$.has(e))))});!function(e,i,t,o){const n=new Map(e.map(e=>[e.sourcePath,e])),a=new Map(e.flatMap(e=>[e.body0,e.body1]).filter(Boolean).map(e=>[e,e])),r=e=>{let i=e;for(;a.get(i)!==i;)i=a.get(i);return i};for(const s of e)null!=s.body0&&null!=s.body1&&a.set(r(s.body1),r(s.body0));for(const s of e){var l,c;const e=S(i.get(s.sourcePath),s.type,t);if(!e)continue;const a=n.get(e.referencePath);a&&a.type===s.type&&["prismatic","revolute"].includes(a.type)||f("invalid_mimic_reference","Native mimic reference must be an enabled joint of the same qualified type and units.",s.sourcePath),(s.continuous||a.continuous)&&f("unsupported_continuous_mimic","A continuous revolute preview cannot participate in a native mimic dependency.",s.sourcePath),r(null!==(l=s.body0)&&void 0!==l?l:s.body1)!==r(null!==(c=a.body0)&&void 0!==c?c:a.body1)&&f("invalid_mimic_reference","Native mimic dependencies must remain within one connected body articulation.",s.sourcePath),s.drive&&f("unsupported_mimic_drive","A driven native mimic needs separate compliance qualification.",s.sourcePath),s.mimic={of:a.id,gearing:e.gearing,offset:e.offset},o.push({code:"native_mimic",path:s.sourcePath,referencePath:a.sourcePath,message:"This joint follows its native PhysX position dependency; no compliance dynamics are simulated."})}const p=new Map(e.map(e=>[e.id,e])),d=new Set,u=new Set,m=new Map,h=e=>{if(!u.has(e.id)){if(d.has(e.id)&&f("cyclic_mimic_reference","Native mimic dependencies must be acyclic.",e.sourcePath),d.add(e.id),e.mimic){const i=p.get(e.mimic.of);h(i);const t=-(e.mimic.gearing*i.rest+e.mimic.offset);Math.abs(t-e.rest)>s&&f("mimic_rest_mismatch","Native mimic rest geometry must satisfy its authored dependency.",e.sourcePath);const o=m.get(i.id).map(i=>-(e.mimic.gearing*i+e.mimic.offset)),n=Math.min(...o),a=Math.max(...o);(n<e.lower-s||a>e.upper+s)&&f("mimic_range_outside_limits","Native mimic dependency must fit its follower limits throughout the controllable reference interval.",e.sourcePath),m.set(e.id,[n,a]);const r=-(e.mimic.gearing*i.home+e.mimic.offset);(r<e.lower-s||r>e.upper+s)&&f("mimic_home_outside_limits","Native mimic home lies outside its authored limits.",e.sourcePath),e.home=r,e.far=Math.abs(e.upper-r)>=Math.abs(e.lower-r)?e.upper:e.lower}else m.set(e.id,[e.lower,e.upper]);d.delete(e.id),u.add(e.id)}};e.forEach(h)}(K,A,q,N);const ee=new Map([[null,[]],...L.map(e=>[e.id,[]])]),ie=new Map([...ee.keys()].map(e=>[e,e])),te=e=>{let i=e;for(;ie.get(i)!==i;)i=ie.get(i);return i};for(const o of K){const e=te(o.body0),i=te(o.body1);e===i&&f("unsupported_closed_loop","Closed-loop constraints require an authored solver/replay contract.",o.sourcePath),ie.set(i,e),ee.get(o.body0).push({joint:o,other:o.body1}),ee.get(o.body1).push({joint:o,other:o.body0})}const oe=new Set,ne=[],se=new Map(L.map(e=>[e.id,e])),ae=[null,...L.slice().sort((e,i)=>{const t=e=>!e.rigid||e.kinematic?0:K.some(i=>i.body1===e.id)?2:1;return t(e)-t(i)||e.id.localeCompare(i.id)}).map(e=>e.id)];for(const o of ae){if(oe.has(o))continue;const e=[{id:o,moving:!1}];oe.add(o);for(let i=0;i<e.length;i+=1){const t=e[i];for(const{joint:i,other:o}of ee.get(t.id)){if(oe.has(o))continue;const n=t.moving||"fixed"!==i.type,s=se.get(o);!n||s.rigid&&!s.kinematic||f("moving_static_body","A moving chain contains a disabled, implicit-static or kinematic body.",s.sourcePath),s.role=n?"moving":"fixed",ne.push({joint:i.id,parent:t.id,child:o,inverse:i.body1===t.id}),oe.add(o),e.push({id:o,moving:n})}}}const re=[new n.Pq0(1/0,1/0,1/0),new n.Pq0(-1/0,-1/0,-1/0)],le=[],ce=new Map(X.map(e=>[e.path,{prim:e,points:[],faces:[],sourceMeshPaths:[]}]));let pe=0;for(const o of Y){p(o.primPath)||f("invalid_prim_path","A mesh must retain its USD prim path.",o.primPath);const e=x(o.primPath,A,D),i=X.filter(e=>{var i;return c(o.primPath,e.path)&&"Mesh"===(null===(i=A.get(o.primPath))||void 0===i?void 0:i.type)});if(!e.visual&&!e.collider&&!i.length)continue;const t=o.points;(!t||t.length%3||!t.length)&&f("invalid_mesh","Mesh positions must contain xyz triples.",o.primPath);const s=q.conversion.clone().multiply(j(o.worldMatrix,o.primPath)),a=[];for(let r=0;r<t.length;r+=3){[t[r],t[r+1],t[r+2]].every(Number.isFinite)||f("invalid_mesh","Mesh coordinates must be finite.",o.primPath);const l=new n.Pq0(t[r],t[r+1],t[r+2]).applyMatrix4(s);e.visual&&!o.debugOnly&&(re[0].min(l),re[1].max(l),pe+=1),(e.collider||i.length)&&a.push(l.toArray())}if(e.collider||i.length){var de;const t=null!==(de=o.indices)&&void 0!==de&&de.length?o.indices:Array.from({length:a.length},(e,i)=>i);(!t.length||t.length%3||!Array.from(t).every(e=>Number.isInteger(e)&&e>=0&&e<a.length))&&f("invalid_collider_mesh","Collider mesh must contain valid triangle indices.",o.primPath);const n=[];for(let e=0;e<t.length;e+=3)n.push([t[e],t[e+1],t[e+2]]);const s=V(o.primPath),r=v(A.get(o.primPath),"physics:approximation","none");"none"!==r&&N.push({code:"raw_collider_surface",path:o.primPath,approximation:r,message:"Collider debug geometry shows the authored mesh surface, without the simulator's collision approximation."}),e.collider&&(le.push({body:s,points:a,faces:n,sourcePath:o.primPath,approximation:r}),se.get(s).colliders+=1);for(const e of i){const i=ce.get(e.path),t=i.points.length;for(const e of a)i.points.push(e);for(const e of n)i.faces.push(t?e.map(e=>e+t):e);i.sourceMeshPaths.push(o.primPath)}}}for(const{prim:o,points:n,faces:s,sourceMeshPaths:a}of ce.values()){const e=V(o.path),i=v(o,"physics:approximation","none");le.push({body:e,points:n,faces:s,sourcePath:o.path,sourceMeshPaths:a,approximation:i}),se.get(e).colliders+=1,N.push({code:"native_merge_collider",path:o.path,sourceMeshPaths:a,approximation:i,message:"Collider debug geometry shows the exact authored descendant mesh surfaces, without the simulator's merged collision approximation."})}pe||f("no_visual_geometry","Prepared USD contains no supported visible mesh geometry.");const ue={version:1,frame:"gltf",units:{length:"m",angle:"deg",mass:"kg"},kind:[...A.values()].some(e=>d(e,"PhysicsArticulationRootAPI"))?"robot":"furniture",bbox:re.map(e=>e.toArray()),sequence:"serial",order:ne.map(e=>e.joint).filter(e=>"fixed"!==K.find(i=>i.id===e).type),bodies:L,joints:K,tree:ne,colliders:le,selftest:[],sourceUnconstrainedJoints:O,fixed_base:ne.some(e=>null==e.parent&&"fixed"===K.find(i=>i.id===e.joint).type),source:"native-usd",sourceFrame:{upAxis:q.upAxis,metersPerUnit:q.metersPerUnit,kilogramsPerUnit:q.kilogramsPerUnit}},me=e=>x(e,A,D);return{articulation:ue,bodyForPath:V,classifyPath:e=>{const i=me(e);return i.visual?"visual":i.collider?"collider":"hidden"},classifyMesh:me,diagnostics:N}}function F(e){let{physics:i,metadata:t,meshes:o=[],nodes:a=[]}=e;const r=_(i),l=M(t,i);Array.isArray(o)&&Array.isArray(a)||f("invalid_render_inventory","Native render meshes and nodes must be arrays.");for(const n of r.values()){const e=v(n,"visibility","inherited"),i=v(n,"purpose","default");["inherited","invisible"].includes(e)||f("invalid_visibility","USD visibility must be inherited or invisible.",n.path),["default","render","guide","proxy"].includes(i)||f("invalid_purpose","USD purpose requires a qualified render classification.",n.path)}const c=new Map,m=new Set;for(const n of[...a,...o]){if(p(null===n||void 0===n?void 0:n.primPath)&&r.has(n.primPath)||f("invalid_prim_path","Native render records must identify a prim in the USD snapshot.",null===n||void 0===n?void 0:n.primPath),void 0!==n.visible&&"boolean"!==typeof n.visible&&f("invalid_visibility","Native node visibility must be a boolean.",n.primPath),void 0!==n.worldMatrix){const e=j(n.worldMatrix,n.primPath),i=c.get(n.primPath);i&&i.elements.some((i,t)=>Math.abs(i-e.elements[t])>s)&&f("ambiguous_source_transform","One USD prim has conflicting world placements; instance identity requires separate qualification.",n.primPath),c.set(n.primPath,e)}!1===n.visible&&m.add(n.primPath)}const h=e=>x(e,r,m,!1),y=[new n.Pq0(1/0,1/0,1/0),new n.Pq0(-1/0,-1/0,-1/0)];let g=0;for(const s of o){const e=l.conversion.clone().multiply(j(s.worldMatrix,s.primPath));if(!h(s.primPath).visual||s.debugOnly)continue;const i=s.points;(!i||!i.length||i.length%3)&&f("invalid_mesh","Mesh positions must contain xyz triples.",s.primPath);for(let t=0;t<i.length;t+=3){[i[t],i[t+1],i[t+2]].every(Number.isFinite)||f("invalid_mesh","Mesh coordinates must be finite.",s.primPath);const o=new n.Pq0(i[t],i[t+1],i[t+2]).applyMatrix4(e);[o.x,o.y,o.z].every(Number.isFinite)||f("invalid_mesh","Converted mesh coordinates must be finite.",s.primPath),y[0].min(o),y[1].max(o),g+=1}}g||f("no_visual_geometry","Prepared USD contains no supported visible mesh geometry.");const b=u(new n.kn4);return{articulation:{version:1,frame:"gltf",units:{length:"m",angle:"deg",mass:"kg"},kind:[...r.values()].some(e=>d(e,"PhysicsArticulationRootAPI"))?"robot":"furniture",bbox:y.map(e=>e.toArray()),sequence:"serial",order:[],joints:[],tree:[],colliders:[],selftest:[],bodies:[{id:"b00",path:"/",sourcePath:"/",role:"fixed",rigid:!1,kinematic:!1,mass_kg:null,colliders:0,restWorldMatrix:b,presentationOnly:!0}],sourceUnconstrainedJoints:[],fixed_base:!1,source:"native-usd",sourcePhysicsQualified:!1,sourceFrame:{upAxis:l.upAxis,metersPerUnit:l.metersPerUnit,kilogramsPerUnit:l.kilogramsPerUnit}},bodyForPath:e=>p(e)&&r.has(e)?"b00":null,classifyPath:e=>h(e).visual?"visual":"hidden",classifyMesh:h,diagnostics:[{code:"visual_only_source_physics",message:"This explicitly selected preview shows source geometry and materials at their authored placement. Source physics is unqualified; joint motion and collider overlays are unavailable."}]}}}}]);
 
 
services/explorer/dist/static/js/217.2c2256b2.chunk.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkdeepsearch_ui=self.webpackChunkdeepsearch_ui||[]).push([[217],{217(t,e,n){n.r(e),n.d(e,{OutputPass:()=>p});var i=n(9435),r=n(3521);const s="OutputShader",a={tDiffuse:{value:null},toneMappingExposure:{value:1}},o="\n\t\tprecision highp float;\n\n\t\tuniform mat4 modelViewMatrix;\n\t\tuniform mat4 projectionMatrix;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}",l="\n\n\t\tprecision highp float;\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\t#include <tonemapping_pars_fragment>\n\t\t#include <colorspace_pars_fragment>\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tgl_FragColor = texture2D( tDiffuse, vUv );\n\n\t\t\t// tone mapping\n\n\t\t\t#ifdef LINEAR_TONE_MAPPING\n\n\t\t\t\tgl_FragColor.rgb = LinearToneMapping( gl_FragColor.rgb );\n\n\t\t\t#elif defined( REINHARD_TONE_MAPPING )\n\n\t\t\t\tgl_FragColor.rgb = ReinhardToneMapping( gl_FragColor.rgb );\n\n\t\t\t#elif defined( CINEON_TONE_MAPPING )\n\n\t\t\t\tgl_FragColor.rgb = CineonToneMapping( gl_FragColor.rgb );\n\n\t\t\t#elif defined( ACES_FILMIC_TONE_MAPPING )\n\n\t\t\t\tgl_FragColor.rgb = ACESFilmicToneMapping( gl_FragColor.rgb );\n\n\t\t\t#elif defined( AGX_TONE_MAPPING )\n\n\t\t\t\tgl_FragColor.rgb = AgXToneMapping( gl_FragColor.rgb );\n\n\t\t\t#elif defined( NEUTRAL_TONE_MAPPING )\n\n\t\t\t\tgl_FragColor.rgb = NeutralToneMapping( gl_FragColor.rgb );\n\n\t\t\t#elif defined( CUSTOM_TONE_MAPPING )\n\n\t\t\t\tgl_FragColor.rgb = CustomToneMapping( gl_FragColor.rgb );\n\n\t\t\t#endif\n\n\t\t\t// color space\n\n\t\t\t#ifdef SRGB_TRANSFER\n\n\t\t\t\tgl_FragColor = sRGBTransferOETF( gl_FragColor );\n\n\t\t\t#endif\n\n\t\t}";class p extends r.o{constructor(){super(),this.isOutputPass=!0,this.uniforms=i.LlO.clone(a),this.material=new i.D$Q({name:s,uniforms:this.uniforms,vertexShader:o,fragmentShader:l}),this._fsQuad=new r.F(this.material),this._outputColorSpace=null,this._toneMapping=null}render(t,e,n){this.uniforms.tDiffuse.value=n.texture,this.uniforms.toneMappingExposure.value=t.toneMappingExposure,this._outputColorSpace===t.outputColorSpace&&this._toneMapping===t.toneMapping||(this._outputColorSpace=t.outputColorSpace,this._toneMapping=t.toneMapping,this.material.defines={},i.ppV.getTransfer(this._outputColorSpace)===i.KLL&&(this.material.defines.SRGB_TRANSFER=""),this._toneMapping===i.kyO?this.material.defines.LINEAR_TONE_MAPPING="":this._toneMapping===i.Mjd?this.material.defines.REINHARD_TONE_MAPPING="":this._toneMapping===i.nNL?this.material.defines.CINEON_TONE_MAPPING="":this._toneMapping===i.FV?this.material.defines.ACES_FILMIC_TONE_MAPPING="":this._toneMapping===i.LAk?this.material.defines.AGX_TONE_MAPPING="":this._toneMapping===i.aJ8?this.material.defines.NEUTRAL_TONE_MAPPING="":this._toneMapping===i.g7M&&(this.material.defines.CUSTOM_TONE_MAPPING=""),this.material.needsUpdate=!0),!0===this.renderToScreen?(t.setRenderTarget(null),this._fsQuad.render(t)):(t.setRenderTarget(e),this.clear&&t.clear(t.autoClearColor,t.autoClearDepth,t.autoClearStencil),this._fsQuad.render(t))}dispose(){this.material.dispose(),this._fsQuad.dispose()}}},3521(t,e,n){n.d(e,{F:()=>l,o:()=>r});var i=n(9435);class r{constructor(){this.isPass=!0,this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!1}setSize(){}render(){console.error("THREE.Pass: .render() must be implemented in derived pass.")}dispose(){}}const s=new i.qUd(-1,1,1,-1,0,1);class a extends i.LoY{constructor(){super(),this.setAttribute("position",new i.qtW([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new i.qtW([0,2,0,0,2,0],2))}}const o=new a;class l{constructor(t){this._mesh=new i.eaF(o,t)}dispose(){this._mesh.geometry.dispose()}render(t){t.render(this._mesh,s)}get material(){return this._mesh.material}set material(t){this._mesh.material=t}}}}]);
 
 
services/explorer/dist/static/js/218.c928f993.chunk.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkdeepsearch_ui=self.webpackChunkdeepsearch_ui||[]).push([[218],{4218(e,r,l){l.r(r),l.d(r,{default:()=>c});var t=l(9379),a=l(5043),i=l(3139),o=l(5597),n=l(3333),s=l(579);const d=e=>{if(!e)return null;const r=new URL(e,window.location.href);if(r.origin!==window.location.origin||!["http:","https:"].includes(r.protocol))throw new Error("Examples must be served from this preview.");return r.href};function c(){const[e,r]=(0,a.useState)([]),[l,c]=(0,a.useState)(null),[h,p]=(0,a.useState)(null),[u,m]=(0,a.useState)(null),[x,f]=(0,a.useState)("Preparing examples\u2026"),[g,w]=(0,a.useState)(null),[v,b]=(0,a.useState)(0),y="".concat(null===l||void 0===l?void 0:l.id,":").concat(v),j=(null===u||void 0===u?void 0:u.selectionKey)===y?u:null;(0,a.useEffect)(()=>{const e=new AbortController;return fetch("".concat("","/viewer-examples/manifest.json"),{signal:e.signal,cache:"no-store"}).then(async e=>{if(!e.ok)throw new Error("The example catalog is not installed in this preview.");const r=await e.json();if(!Array.isArray(r.examples)||!r.examples.length)throw new Error("The example catalog is empty.");return r.examples.map(e=>{if(!e.hdUrl||!e.articulationUrl)throw new Error("Every example needs its published HD model and paired joint data.");return(0,t.A)((0,t.A)({},e),{},{glbUrl:d(e.glbUrl),articulationUrl:d(e.articulationUrl),hdUrl:d(e.hdUrl),referenceUrl:d(e.referenceUrl)})})}).then(l=>{if(e.signal.aborted)return;r(l);const t=new URLSearchParams(window.location.search).get("example");c(l.find(e=>e.id===t)||l[0])}).catch(r=>{e.signal.aborted||(p(r.message),f("Examples unavailable"))}),()=>e.abort()},[]),(0,a.useEffect)(()=>{if(!l)return;const e=new AbortController;return m(null),w(null),f("Loading HD GLB\u2026"),fetch(l.articulationUrl,{signal:e.signal}).then(async e=>{if(!e.ok)throw new Error("Joint data could not load (".concat(e.status,")."));const r=await e.json();if(1!==r.version||"gltf"!==r.frame||!Array.isArray(r.bodies)||!Array.isArray(r.joints))throw new Error("This file is not a supported articulation.json export.");return r}).then(r=>{e.signal.aborted||m({selectionKey:"".concat(l.id,":").concat(v),glbUrl:l.hdUrl,articulation:r,store:(0,n.createJointStore)(r),view:l.view,clipMeta:l.clipMeta})}).catch(r=>{e.signal.aborted||(w(r.message),f("Could not load this example"))}),()=>e.abort()},[l,v]);const U=(0,i.A)({resetKey:y,modelKey:y,active:!0,imageTab:!1,model:j,modelPending:!(null===l||void 0===l||!l.articulationUrl)&&!j&&!g,onModelUnavailable:e=>{w((null===e||void 0===e?void 0:e.message)||"The current GLB viewer could not load this example."),f("Could not load this example")},workspace:{portal:!0,lazyShell:!0,onEscape:"self",labels:{back:"GLB examples",dock:"Dock viewer"}}});(0,a.useEffect)(()=>{j&&U.viewerApi&&(f("Ready"),w(null))},[j,U.viewerApi]);return(0,s.jsxs)("main",{style:{maxWidth:1280,margin:"0 auto",padding:"24px 20px",color:"#e4e4e4",fontFamily:"sans-serif"},children:[(0,s.jsx)("h1",{style:{fontSize:26,marginBottom:8},children:"Current GLB viewer \u2014 HD examples"}),(0,s.jsx)("p",{children:"Orbit, zoom and inspect the surfaces. For moving parts, open the Pose workspace, drag a joint or try its presets."}),(0,s.jsx)("nav",{"aria-label":"GLB examples",style:{display:"flex",flexWrap:"wrap",gap:10,margin:"20px 0"},children:e.map(e=>(0,s.jsx)("button",{"aria-pressed":(null===l||void 0===l?void 0:l.id)===e.id,onClick:()=>(e=>{c(e);const r=new URL(window.location.href);r.searchParams.set("example",e.id),window.history.replaceState(null,"",r)})(e),style:{padding:"10px 16px",borderRadius:8,border:"1px solid #666",background:(null===l||void 0===l?void 0:l.id)===e.id?"#493125":"#252525",color:"inherit",cursor:"pointer"},children:e.label},e.id))}),h&&(0,s.jsx)("p",{role:"alert",children:h}),l&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("h2",{style:{fontSize:18,marginBottom:6},children:l.label}),(0,s.jsx)("p",{style:{marginTop:0,color:"#bbb"},children:l.description}),(0,s.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:16,alignItems:"center",marginBottom:12},children:[(0,s.jsxs)("a",{href:l.hdUrl,download:!0,children:["Download HD GLB (",(S=l.hdBytes,S?"".concat((S/1024/1024).toFixed(2)," MiB"):null),")"]}),l.articulationUrl&&(0,s.jsx)("a",{href:l.articulationUrl,download:!0,children:"Download joint data"})]})]}),(0,s.jsx)("p",{role:"status","data-testid":"glb-status",children:x}),g&&(0,s.jsxs)("p",{role:"alert",style:{color:"#ffb4aa"},children:[g," ",(0,s.jsx)("button",{onClick:()=>b(e=>e+1),children:"Retry example"})]}),(0,s.jsx)("div",{ref:U.regionRef,tabIndex:-1,style:{height:"min(66vh, 680px)",minHeight:360,position:"relative",border:"1px solid #555",borderRadius:12,overflow:"hidden"},children:(0,s.jsx)(o.z_,{ctl:U,fileName:(null===l||void 0===l?void 0:l.label)||"GLB",renderPicture:()=>null})}),j&&(0,s.jsxs)("p",{"data-testid":"glb-facts",children:[j.articulation.bodies.length," bodies \xb7 ",j.store.ids.length," movable joints \xb7 Published HD GLB from ",(null===l||void 0===l?void 0:l.index)||"the library",". ",null===l||void 0===l?void 0:l.qualitySummary]}),(null===l||void 0===l?void 0:l.referenceUrl)&&(0,s.jsxs)("details",{style:{marginTop:16},children:[(0,s.jsx)("summary",{children:"Show the source USD\u2019s RTX reference image"}),(0,s.jsx)("img",{src:l.referenceUrl,alt:"RTX reference for ".concat(l.label),style:{display:"block",width:"100%",maxWidth:720,marginTop:12}})]}),(0,s.jsxs)("p",{style:{color:"#aaa",fontSize:13},children:["These are existing GLB exports displayed with the current viewer\u2019s materials, lighting and controls. The ",(0,s.jsx)("a",{href:"?usdQualification=1",children:"native USD prototype"})," has separate USDA and USDC examples."]}),(0,s.jsx)(o.Vo,{ctl:U,fileName:(null===l||void 0===l?void 0:l.label)||"GLB examples",topOffset:0})]});var S}}}]);
 
 
services/explorer/dist/static/js/27.b6bb28ea.chunk.js DELETED
The diff for this file is too large to render. See raw diff
 
services/explorer/dist/static/js/27.b6bb28ea.chunk.js.LICENSE.txt DELETED
@@ -1,5 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2010-2026 Three.js Authors
4
- * SPDX-License-Identifier: MIT
5
- */
 
 
 
 
 
 
services/explorer/dist/static/js/381.2d3cf0a4.chunk.js DELETED
The diff for this file is too large to render. See raw diff
 
services/explorer/dist/static/js/408.ff11db79.chunk.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkdeepsearch_ui=self.webpackChunkdeepsearch_ui||[]).push([[408],{4408(e,t,r){r.r(t),r.d(t,{GlbReviewPane:()=>v,default:()=>x});var a=r(9379),i=r(5043),n=r(7950),s=r(3139),l=r(5597),d=r(3101),o=r(3333),c=r(6796),u=r(579);const h=Object.freeze({position:[3,-4,2],target:[0,0,0]}),p=Object.freeze({maxPixels:2073600,reference:"square"}),g=e=>Number.isFinite(e)?"".concat((e/1024/1024).toFixed(2)," MiB"):"Unavailable";function v(e){let{asset:t}=e;const[r,v]=(0,i.useState)(null),[x,m]=(0,i.useState)("Loading Current HD"),[b,w]=(0,i.useState)(null),[f,j]=(0,i.useState)(!1),[y,C]=(0,i.useState)("current"),[A,q]=(0,i.useState)(null),S=(0,i.useRef)(null),B=(0,i.useRef)(0),D=(0,i.useRef)(null),k=(0,d.B0)(t.id),H=(0,i.useCallback)(e=>{w((null===e||void 0===e?void 0:e.message)||"Current GLB could not load"),m("Current unavailable")},[]);(0,i.useEffect)(()=>{const e=new AbortController;return v(null),w(null),m("Loading Current HD"),C("current"),q(null),D.current=null,(0,c._z)(t.articulation.url,{signal:e.signal,maxBytes:2097152,sha256:t.articulation.sha256}).then(r=>{const a=JSON.parse((new TextDecoder).decode(r));if(1!==a.version||"gltf"!==a.frame||!Array.isArray(a.bodies)||!a.bodies.length||a.bodies.length>512||!Array.isArray(a.joints)||a.joints.length>512||new Set(a.bodies.map(e=>e.id)).size!==a.bodies.length)throw new Error("Unsupported GLB review articulation export");e.signal.aborted||v({glbUrl:t.current.url,glbReview:t,articulation:a,store:(0,o.createJointStore)(a),view:t.view||h,presentation:"white-studio",renderPixelBudget:p})}).catch(t=>{e.signal.aborted||H(t)}),()=>{var t;e.abort(),null===(t=S.current)||void 0===t||t.abort(),B.current+=1}},[t,H]);const L=(0,s.A)({resetKey:t.id,modelKey:t.id,active:!0,imageTab:!1,model:r,modelPending:!r&&!b,onModelUnavailable:H,workspace:(0,a.A)((0,a.A)({},k),{},{portal:!0,lazyShell:!0,onEscape:"self",labels:{back:"GLB review",dock:"Dock viewer"}})});(0,i.useEffect)(()=>{r&&L.viewerApi&&D.current!==L.viewerApi&&(D.current=L.viewerApi,r.store.setPose(r.store.homes,"instant"),m("Current HD"),q(L.viewerApi.reviewDiagnostics))},[r,L.viewerApi]);const P=async e=>{var t;if(!L.viewerApi||e===y&&!f)return;null===(t=S.current)||void 0===t||t.abort();const r=new AbortController;S.current=r;const a=++B.current;j(!0),w(null);try{const t=await L.viewerApi.setReviewVariant(e,{signal:r.signal,onStatus:e=>{a===B.current&&m(e)}});if(a!==B.current||r.signal.aborted)return;C(t.activeProfile),q(t),m("candidate"===t.activeProfile?"Candidate HD \xb7 explicit review":"Current HD")}catch(i){if(a!==B.current||r.signal.aborted)return;const e=L.viewerApi.reviewDiagnostics;C(e.activeProfile),q(e),w(i.message),m("current"===e.activeProfile?"Current HD \xb7 candidate unavailable":"Candidate HD")}finally{a===B.current&&j(!1)}},G=(0,u.jsxs)("div",{className:"gqr-toolbar gqr-profile-controls".concat(L.poseOpen?" gqr-pose-controls":""),children:[(0,u.jsxs)("div",{role:"group","aria-label":"GLB quality profile",children:[(0,u.jsx)("button",{"data-testid":"glb-quality-current","aria-pressed":"current"===y,disabled:!L.viewerApi,onClick:()=>P("current"),children:"Current HD"}),(0,u.jsx)("button",{"data-testid":"glb-quality-candidate","aria-pressed":"candidate"===y,disabled:!L.viewerApi||f,onClick:()=>P("candidate"),children:null!==A&&void 0!==A&&A.candidatePrepared?"Candidate HD":"Load candidate HD"})]}),(0,u.jsx)("span",{role:"status","data-testid":"glb-quality-status",children:x})]});return(0,u.jsxs)("section",{className:"gqr-pane","aria-label":"GLB quality review","data-testid":"glb-quality-pane","data-active-profile":y,"data-current-sha256":t.current.sha256,"data-candidate-sha256":t.candidate.sha256,"data-candidate-ready":String(t.ready),"data-geometry-verified":String(!(null===A||void 0===A||!A.geometryVerified)),children:[L.poseOpen&&L.viewerContainer?(0,n.createPortal)(G,L.viewerContainer):G,!t.ready&&(0,u.jsx)("p",{className:"gqr-note",children:"Candidate quality and performance are awaiting qualification. Selection is an explicit review; Current remains the default."}),b&&(0,u.jsx)("p",{role:"alert",children:b}),(0,u.jsx)("div",{className:"gqr-stage",ref:L.regionRef,tabIndex:-1,"data-testid":"glb-quality-stage","data-active-profile":y,children:(0,u.jsx)(l.z_,{ctl:L,fileName:"".concat(t.label," \xb7 GLB"),renderPicture:()=>null})}),(0,u.jsxs)("div",{className:"gqr-actions",children:[(0,u.jsx)("button",{disabled:!L.viewerApi,onClick:()=>L.viewerApi.resetView(),children:"Reset camera"}),(null===r||void 0===r?void 0:r.store.ids.length)>0&&(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)("button",{onClick:()=>r.store.setAll(0),children:"Home pose"}),(0,u.jsx)("button",{onClick:()=>r.store.setAll(1),children:"Open all"})]})]}),(0,u.jsxs)("table",{children:[(0,u.jsx)("thead",{children:(0,u.jsxs)("tr",{children:[(0,u.jsx)("th",{children:"Artifact"}),(0,u.jsx)("th",{children:"Download"}),(0,u.jsx)("th",{children:"Audited asset storage estimate"})]})}),(0,u.jsx)("tbody",{children:["current","candidate"].map(e=>(0,u.jsxs)("tr",{children:[(0,u.jsx)("th",{children:"current"===e?"Current HD":"Candidate HD"}),(0,u.jsx)("td",{children:g(t[e].bytes)}),(0,u.jsx)("td",{children:g(t[e].gpuBytes)})]},e))})]}),(0,u.jsx)("p",{children:t[y].textureSummary}),A&&(0,u.jsxs)("p",{"data-testid":"glb-quality-storage",children:["Active maps: ",g(A.active.textureBytes),". Retained A/B maps: ",g(A.retained.textureBytes),"."," ","One mounted geometry: ",g(A.retained.geometryBytes),". Texture figures use actual transcoded mip payloads or decoded RGBA8 estimates; they exclude render targets, driver overhead and upload staging. They are not physical GPU memory measurements."]}),(0,u.jsx)("p",{className:"gqr-note",children:"One Square viewport retains the same mesh geometry, camera, pose, pins, white studio and lighting. Both material sets stay resident only during this review. The production viewer\u2019s first tier and progressive HD loading are unchanged."}),(0,u.jsxs)("p",{children:[(0,u.jsx)("a",{href:t.current.url,download:!0,children:"Current GLB"})," \xb7 ",(0,u.jsx)("a",{href:t.candidate.url,download:!0,children:"Candidate GLB"}),t.auditUrl&&(0,u.jsxs)(u.Fragment,{children:[" \xb7 ",(0,u.jsx)("a",{href:t.auditUrl,target:"_blank",rel:"noreferrer",children:"Candidate audit"})]})]}),(0,u.jsx)(l.Vo,{ctl:L,fileName:"".concat(t.label," \xb7 GLB"),topOffset:0})]})}function x(){const[e,t]=(0,i.useState)(null),[r,a]=(0,i.useState)(null),[n,s]=(0,i.useState)(null);return(0,i.useEffect)(()=>{const e=new AbortController;return(0,c._z)("".concat("","/glb-quality-review/manifest.json"),{signal:e.signal,maxBytes:1048576}).then(e=>(0,c.iJ)(JSON.parse((new TextDecoder).decode(e)),window.location.href)).then(r=>{if(e.signal.aborted)return;const i=new URLSearchParams(window.location.search).get("example");t(r),a(r.examples.find(e=>e.id===i)||r.examples[0])}).catch(t=>{e.signal.aborted||s(t.message)}),()=>e.abort()},[]),(0,u.jsxs)("main",{className:"gqr-page",children:[(0,u.jsx)("p",{className:"gqr-eyebrow",children:"SimReady Central \xb7 isolated quality experiment"}),(0,u.jsx)("h1",{children:"GLB material quality review"}),(0,u.jsx)("p",{children:"Compare current HD textures with a selective quality candidate in the same interactive view."}),n?(0,u.jsx)("p",{role:"alert",children:n}):r?(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)("nav",{"aria-label":"Review asset",children:e.examples.map(e=>(0,u.jsx)("button",{"aria-pressed":e.id===r.id,onClick:()=>a(e),children:e.label},e.id))}),(0,u.jsx)(d.Ay,{dockSignal:r.id,children:(0,u.jsx)(v,{asset:r},r.id)})]}):(0,u.jsx)("p",{role:"status",children:"Loading review manifest\u2026"})]})}}}]);
 
 
services/explorer/dist/static/js/435.31dcfdae.chunk.js DELETED
The diff for this file is too large to render. See raw diff
 
services/explorer/dist/static/js/435.31dcfdae.chunk.js.LICENSE.txt DELETED
@@ -1,5 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2010-2026 Three.js Authors
4
- * SPDX-License-Identifier: MIT
5
- */
 
 
 
 
 
 
services/explorer/dist/static/js/436.fb7d7bfa.chunk.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkdeepsearch_ui=self.webpackChunkdeepsearch_ui||[]).push([[436],{6436(A,I,B){B.r(I),B.d(I,{KTX2Loader:()=>iA});var g=B(9435);class C{constructor(){let A=arguments.length>0&&void 0!==arguments[0]?arguments[0]:4;this.pool=A,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0,this.workerCreator=null}_initWorker(A){if(!this.workers[A]){const I=this.workerCreator();I.addEventListener("message",this._onMessage.bind(this,A)),this.workers[A]=I}}_getIdleWorker(){for(let A=0;A<this.pool;A++)if(!(this.workerStatus&1<<A))return A;return-1}_onMessage(A,I){const B=this.workersResolve[A];if(B&&B(I),this.queue.length){const{resolve:I,msg:B,transfer:g}=this.queue.shift();this.workersResolve[A]=I,this.workers[A].postMessage(B,g)}else this.workerStatus^=1<<A}setWorkerCreator(A){this.workerCreator=A}setWorkerLimit(A){this.pool=A}postMessage(A,I){return new Promise(B=>{const g=this._getIdleWorker();-1!==g?(this._initWorker(g),this.workerStatus|=1<<g,this.workersResolve[g]=B,this.workers[g].postMessage(A,I)):this.queue.push({resolve:B,msg:A,transfer:I})})}dispose(){this.workers.forEach(A=>A.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}const Q=9,E=15,i=16,e=22,t=37,o=43,s=76,a=83,r=97,n=100,D=103,h=109,w=122,F=123,G=131,y=132,S=133,c=134,U=137,R=138,d=139,L=140,f=141,k=142,N=145,p=146,M=148,q=152,J=153,l=154,H=155,Y=156,K=157,T=158,m=165,x=166,u=1000054e3,_=1000054001,O=1000054004,V=1000054005,X=1000066e3,W=1000066004;class b{constructor(A,I,B,g){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(A.buffer,A.byteOffset+I,B),this._littleEndian=g,this._offset=0}_nextUint8(){const A=this._dataView.getUint8(this._offset);return this._offset+=1,A}_nextUint16(){const A=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,A}_nextUint32(){const A=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,A}_nextUint64(){const A=this._dataView.getUint32(this._offset,this._littleEndian)+2**32*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,A}_nextInt32(){const A=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,A}_nextUint8Array(A){const I=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,A);return this._offset+=A,I}_skip(A){return this._offset+=A,this}_scan(A){let I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const B=this._offset;let g=0;for(;this._dataView.getUint8(this._offset)!==I&&g<A;)g++,this._offset++;return g<A&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+B,g)}}new Uint8Array([0]);const P=[171,75,84,88,32,50,48,187,13,10,26,10];function v(A){return(new TextDecoder).decode(A)}let Z,j,z;const $={env:{emscripten_notify_memory_growth:function(A){z=new Uint8Array(j.exports.memory.buffer)}}};class AA{init(){return Z||(Z="undefined"!=typeof fetch?fetch("data:application/wasm;base64,"+IA).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,$)).then(this._init):WebAssembly.instantiate(Buffer.from(IA,"base64"),$).then(this._init),Z)}_init(A){j=A.instance,$.env.emscripten_notify_memory_growth(0)}decode(A){let I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!j)throw new Error("ZSTDDecoder: Await .init() before decoding.");const B=A.byteLength,g=j.exports.malloc(B);z.set(A,g),I=I||Number(j.exports.ZSTD_findDecompressedSize(g,B));const C=j.exports.malloc(I),Q=j.exports.ZSTD_decompress(C,I,g,B),E=z.slice(C,C+Q);return j.exports.free(g),j.exports.free(C),E}}const IA="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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY0AAQMyIFEAMiBg0AIANBHzYCfCADIANB/ABqIANB+ABqIAQgBCAFaiAGGyIEIAEgAmoiAiAEaxAVIgUQAw0AIAMoAnwiBkEfSw0AIAMoAngiB0EJTw0AIABBiCBqIAMgBkGAC0GADCAHEBggA0E0NgJ8IAMgA0H8AGogA0H4AGogBCAFaiIEIAIgBGsQFSIFEAMNACADKAJ8IgZBNEsNACADKAJ4IgdBCk8NACAAQZAwaiADIAZBgA1B4A4gBxAYIANBIzYCfCADIANB/ABqIANB+ABqIAQgBWoiBCACIARrEBUiBRADDQAgAygCfCIGQSNLDQAgAygCeCIHQQpPDQAgACADIAZBwBBB0BEgBxAYIAQgBWoiBEEMaiIFIAJLDQAgAiAFayEFQQAhAgNAIAJBA0cEQCAEKAAAIgZBf2ogBU8NAiAAIAJBAnRqQZzQAWogBjYCACACQQFqIQIgBEEEaiEEDAELCyAEIAFrIQgLIANBgAFqJAAgCAtGAQN/IABBCGohAyAAKAIEIQJBACEAA0AgACACdkUEQCABIAMgAEEDdGotAAJBFktqIQEgAEEBaiEADAELCyABQQggAmt0C4YDAQV/Qbh/IQcCQCADRQ0AIAItAAAiBEUEQCABQQA2AgBBAUG4fyADQQFGGw8LAn8gAkEBaiIFIARBGHRBGHUiBkF/Sg0AGiAGQX9GBEAgA0EDSA0CIAUvAABBgP4BaiEEIAJBA2oMAQsgA0ECSA0BIAItAAEgBEEIdHJBgIB+aiEEIAJBAmoLIQUgASAENgIAIAVBAWoiASACIANqIgNLDQBBbCEHIABBEGogACAFLQAAIgVBBnZBI0EJIAEgAyABa0HAEEHQEUHwEiAAKAKM4QEgACgCnOIBIAQQHyIGEAMiCA0AIABBmCBqIABBCGogBUEEdkEDcUEfQQggASABIAZqIAgbIgEgAyABa0GAC0GADEGAFyAAKAKM4QEgACgCnOIBIAQQHyIGEAMiCA0AIABBoDBqIABBBGogBUECdkEDcUE0QQkgASABIAZqIAgbIgEgAyABa0GADUHgDkGQGSAAKAKM4QEgACgCnOIBIAQQHyIAEAMNACAAIAFqIAJrIQcLIAcLrQMBCn8jAEGABGsiCCQAAn9BUiACQf8BSw0AGkFUIANBDEsNABogAkEBaiELIABBBGohCUGAgAQgA0F/anRBEHUhCkEAIQJBASEEQQEgA3QiB0F/aiIMIQUDQCACIAtGRQRAAkAgASACQQF0Ig1qLwEAIgZB//8DRgRAIAkgBUECdGogAjoAAiAFQX9qIQVBASEGDAELIARBACAKIAZBEHRBEHVKGyEECyAIIA1qIAY7AQAgAkEBaiECDAELCyAAIAQ7AQIgACADOwEAIAdBA3YgB0EBdmpBA2ohBkEAIQRBACECA0AgBCALRkUEQCABIARBAXRqLgEAIQpBACEAA0AgACAKTkUEQCAJIAJBAnRqIAQ6AAIDQCACIAZqIAxxIgIgBUsNAAsgAEEBaiEADAELCyAEQQFqIQQMAQsLQX8gAg0AGkEAIQIDfyACIAdGBH9BAAUgCCAJIAJBAnRqIgAtAAJBAXRqIgEgAS8BACIBQQFqOwEAIAAgAyABEBRrIgU6AAMgACABIAVB/wFxdCAHazsBACACQQFqIQIMAQsLCyEFIAhBgARqJAAgBQvjBgEIf0FsIQcCQCACQQNJDQACQAJAAkACQCABLQAAIgNBA3EiCUEBaw4DAwEAAgsgACgCiOEBDQBBYg8LIAJBBUkNAkEDIQYgASgAACEFAn8CQAJAIANBAnZBA3EiCEF+aiIEQQFNBEAgBEEBaw0BDAILIAVBDnZB/wdxIQQgBUEEdkH/B3EhAyAIRQwCCyAFQRJ2IQRBBCEGIAVBBHZB//8AcSEDQQAMAQsgBUEEdkH//w9xIgNBgIAISw0DIAEtAARBCnQgBUEWdnIhBEEFIQZBAAshBSAEIAZqIgogAksNAgJAIANBgQZJDQAgACgCnOIBRQ0AQQAhAgNAIAJBg4ABSw0BIAJBQGshAgwAAAsACwJ/IAlBA0YEQCABIAZqIQEgAEHw4gFqIQIgACgCDCEGIAUEQCACIAMgASAEIAYQXwwCCyACIAMgASAEIAYQXQwBCyAAQbjQAWohAiABIAZqIQEgAEHw4gFqIQYgAEGo0ABqIQggBQRAIAggBiADIAEgBCACEF4MAQsgCCAGIAMgASAEIAIQXAsQAw0CIAAgAzYCgOIBIABBATYCiOEBIAAgAEHw4gFqNgLw4QEgCUECRgRAIAAgAEGo0ABqNgIMCyAAIANqIgBBiOMBakIANwAAIABBgOMBakIANwAAIABB+OIBakIANwAAIABB8OIBakIANwAAIAoPCwJ/AkACQAJAIANBAnZBA3FBf2oiBEECSw0AIARBAWsOAgACAQtBASEEIANBA3YMAgtBAiEEIAEvAABBBHYMAQtBAyEEIAEQIUEEdgsiAyAEaiIFQSBqIAJLBEAgBSACSw0CIABB8OIBaiABIARqIAMQCyEBIAAgAzYCgOIBIAAgATYC8OEBIAEgA2oiAEIANwAYIABCADcAECAAQgA3AAggAEIANwAAIAUPCyAAIAM2AoDiASAAIAEgBGo2AvDhASAFDwsCfwJAAkACQCADQQJ2QQNxQX9qIgRBAksNACAEQQFrDgIAAgELQQEhByADQQN2DAILQQIhByABLwAAQQR2DAELIAJBBEkgARAhIgJBj4CAAUtyDQFBAyEHIAJBBHYLIQIgAEHw4gFqIAEgB2otAAAgAkEgahAQIQEgACACNgKA4gEgACABNgLw4QEgB0EBaiEHCyAHC0sAIABC+erQ0OfJoeThADcDICAAQgA3AxggAELP1tO+0ser2UI3AxAgAELW64Lu6v2J9eAANwMIIABCADcDACAAQShqQQBBKBAQGgviAgICfwV+IABBKGoiASAAKAJIaiECAn4gACkDACIDQiBaBEAgACkDECIEQgeJIAApAwgiBUIBiXwgACkDGCIGQgyJfCAAKQMgIgdCEol8IAUQGSAEEBkgBhAZIAcQGQwBCyAAKQMYQsXP2bLx5brqJ3wLIAN8IQMDQCABQQhqIgAgAk0EQEIAIAEpAAAQCSADhUIbiUKHla+vmLbem55/fkLj3MqV/M7y9YV/fCEDIAAhAQwBCwsCQCABQQRqIgAgAksEQCABIQAMAQsgASgAAK1Ch5Wvr5i23puef34gA4VCF4lCz9bTvtLHq9lCfkL5893xmfaZqxZ8IQMLA0AgACACSQRAIAAxAABCxc/ZsvHluuonfiADhUILiUKHla+vmLbem55/fiEDIABBAWohAAwBCwsgA0IhiCADhULP1tO+0ser2UJ+IgNCHYggA4VC+fPd8Zn2masWfiIDQiCIIAOFC+8CAgJ/BH4gACAAKQMAIAKtfDcDAAJAAkAgACgCSCIDIAJqIgRBH00EQCABRQ0BIAAgA2pBKGogASACECAgACgCSCACaiEEDAELIAEgAmohAgJ/IAMEQCAAQShqIgQgA2ogAUEgIANrECAgACAAKQMIIAQpAAAQCTcDCCAAIAApAxAgACkAMBAJNwMQIAAgACkDGCAAKQA4EAk3AxggACAAKQMgIABBQGspAAAQCTcDICAAKAJIIQMgAEEANgJIIAEgA2tBIGohAQsgAUEgaiACTQsEQCACQWBqIQMgACkDICEFIAApAxghBiAAKQMQIQcgACkDCCEIA0AgCCABKQAAEAkhCCAHIAEpAAgQCSEHIAYgASkAEBAJIQYgBSABKQAYEAkhBSABQSBqIgEgA00NAAsgACAFNwMgIAAgBjcDGCAAIAc3AxAgACAINwMICyABIAJPDQEgAEEoaiABIAIgAWsiBBAgCyAAIAQ2AkgLCy8BAX8gAEUEQEG2f0EAIAMbDwtBun8hBCADIAFNBH8gACACIAMQEBogAwVBun8LCy8BAX8gAEUEQEG2f0EAIAMbDwtBun8hBCADIAFNBH8gACACIAMQCxogAwVBun8LC6gCAQZ/IwBBEGsiByQAIABB2OABaikDAEKAgIAQViEIQbh/IQUCQCAEQf//B0sNACAAIAMgBBBCIgUQAyIGDQAgACgCnOIBIQkgACAHQQxqIAMgAyAFaiAGGyIKIARBACAFIAYbayIGEEAiAxADBEAgAyEFDAELIAcoAgwhBCABRQRAQbp/IQUgBEEASg0BCyAGIANrIQUgAyAKaiEDAkAgCQRAIABBADYCnOIBDAELAkACQAJAIARBBUgNACAAQdjgAWopAwBCgICACFgNAAwBCyAAQQA2ApziAQwBCyAAKAIIED8hBiAAQQA2ApziASAGQRRPDQELIAAgASACIAMgBSAEIAgQOSEFDAELIAAgASACIAMgBSAEIAgQOiEFCyAHQRBqJAAgBQtnACAAQdDgAWogASACIAAoAuzhARAuIgEQAwRAIAEPC0G4fyECAkAgAQ0AIABB7OABaigCACIBBEBBYCECIAAoApjiASABRw0BC0EAIQIgAEHw4AFqKAIARQ0AIABBkOEBahBDCyACCycBAX8QVyIERQRAQUAPCyAEIAAgASACIAMgBBBLEE8hACAEEFYgAAs/AQF/AkACQAJAIAAoAqDiAUEBaiIBQQJLDQAgAUEBaw4CAAECCyAAEDBBAA8LIABBADYCoOIBCyAAKAKU4gELvAMCB38BfiMAQRBrIgkkAEG4fyEGAkAgBCgCACIIQQVBCSAAKALs4QEiBRtJDQAgAygCACIHQQFBBSAFGyAFEC8iBRADBEAgBSEGDAELIAggBUEDakkNACAAIAcgBRBJIgYQAw0AIAEgAmohCiAAQZDhAWohCyAIIAVrIQIgBSAHaiEHIAEhBQNAIAcgAiAJECwiBhADDQEgAkF9aiICIAZJBEBBuH8hBgwCCyAJKAIAIghBAksEQEFsIQYMAgsgB0EDaiEHAn8CQAJAAkAgCEEBaw4CAgABCyAAIAUgCiAFayAHIAYQSAwCCyAFIAogBWsgByAGEEcMAQsgBSAKIAVrIActAAAgCSgCCBBGCyIIEAMEQCAIIQYMAgsgACgC8OABBEAgCyAFIAgQRQsgAiAGayECIAYgB2ohByAFIAhqIQUgCSgCBEUNAAsgACkD0OABIgxCf1IEQEFsIQYgDCAFIAFrrFINAQsgACgC8OABBEBBaiEGIAJBBEkNASALEEQhDCAHKAAAIAynRw0BIAdBBGohByACQXxqIQILIAMgBzYCACAEIAI2AgAgBSABayEGCyAJQRBqJAAgBgsuACAAECsCf0EAQQAQAw0AGiABRSACRXJFBEBBYiAAIAEgAhA9EAMNARoLQQALCzcAIAEEQCAAIAAoAsTgASABKAIEIAEoAghqRzYCnOIBCyAAECtBABADIAFFckUEQCAAIAEQWwsL0QIBB38jAEEQayIGJAAgBiAENgIIIAYgAzYCDCAFBEAgBSgCBCEKIAUoAgghCQsgASEIAkACQANAIAAoAuzhARAWIQsCQANAIAQgC0kNASADKAAAQXBxQdDUtMIBRgRAIAMgBBAiIgcQAw0EIAQgB2shBCADIAdqIQMMAQsLIAYgAzYCDCAGIAQ2AggCQCAFBEAgACAFEE5BACEHQQAQA0UNAQwFCyAAIAogCRBNIgcQAw0ECyAAIAgQUCAMQQFHQQAgACAIIAIgBkEMaiAGQQhqEEwiByIDa0EAIAMQAxtBCkdyRQRAQbh/IQcMBAsgBxADDQMgAiAHayECIAcgCGohCEEBIQwgBigCDCEDIAYoAgghBAwBCwsgBiADNgIMIAYgBDYCCEG4fyEHIAQNASAIIAFrIQcMAQsgBiADNgIMIAYgBDYCCAsgBkEQaiQAIAcLRgECfyABIAAoArjgASICRwRAIAAgAjYCxOABIAAgATYCuOABIAAoArzgASEDIAAgATYCvOABIAAgASADIAJrajYCwOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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";var BA=B(9379);const gA="display-p3",CA=(g.KLL,g.VxR,g.VxR,(0,BA.A)((0,BA.A)({},g.ppV.spaces[g.er$]),{},{outputColorSpaceConfig:{drawingBufferColorSpace:g.er$,toneMappingMode:"extended"}}),new WeakMap);let QA,EA=0;class iA extends g.aHM{constructor(A){super(A),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new C,this.workerSourceURL="",this.workerConfig=null,"undefined"!==typeof MSC_TRANSCODER&&console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.')}setTranscoderPath(A){return this.transcoderPath=A,this}setWorkerLimit(A){return this.workerPool.setWorkerLimit(A),this}async detectSupportAsync(A){return console.warn('KTX2Loader: "detectSupportAsync()" has been deprecated. Use "detectSupport()" and "await renderer.init();" when creating the renderer.'),await A.init(),this.detectSupport(A)}detectSupport(A){return!0===A.isWebGPURenderer?this.workerConfig={astcSupported:A.hasFeature("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:A.hasFeature("texture-compression-etc1"),etc2Supported:A.hasFeature("texture-compression-etc2"),dxtSupported:A.hasFeature("texture-compression-s3tc"),bptcSupported:A.hasFeature("texture-compression-bc"),pvrtcSupported:A.hasFeature("texture-compression-pvrtc")}:(this.workerConfig={astcSupported:A.extensions.has("WEBGL_compressed_texture_astc"),astcHDRSupported:A.extensions.has("WEBGL_compressed_texture_astc")&&A.extensions.get("WEBGL_compressed_texture_astc").getSupportedProfiles().includes("hdr"),etc1Supported:A.extensions.has("WEBGL_compressed_texture_etc1"),etc2Supported:A.extensions.has("WEBGL_compressed_texture_etc"),dxtSupported:A.extensions.has("WEBGL_compressed_texture_s3tc"),bptcSupported:A.extensions.has("EXT_texture_compression_bptc"),pvrtcSupported:A.extensions.has("WEBGL_compressed_texture_pvrtc")||A.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")},"undefined"!==typeof navigator&&"undefined"!==typeof navigator.platform&&"undefined"!==typeof navigator.userAgent&&navigator.platform.indexOf("Linux")>=0&&navigator.userAgent.indexOf("Firefox")>=0&&this.workerConfig.astcSupported&&this.workerConfig.etc2Supported&&this.workerConfig.bptcSupported&&this.workerConfig.dxtSupported&&(this.workerConfig.astcSupported=!1,this.workerConfig.etc2Supported=!1)),this}init(){if(!this.transcoderPending){const A=new g.Y9S(this.manager);A.setPath(this.transcoderPath),A.setWithCredentials(this.withCredentials);const I=A.loadAsync("basis_transcoder.js"),B=new g.Y9S(this.manager);B.setPath(this.transcoderPath),B.setResponseType("arraybuffer"),B.setWithCredentials(this.withCredentials);const C=B.loadAsync("basis_transcoder.wasm");this.transcoderPending=Promise.all([I,C]).then(A=>{let[I,B]=A;const g=iA.BasisWorker.toString(),C=["/* constants */","let _EngineFormat = "+JSON.stringify(iA.EngineFormat),"let _EngineType = "+JSON.stringify(iA.EngineType),"let _TranscoderFormat = "+JSON.stringify(iA.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(iA.BasisFormat),"/* basis_transcoder.js */",I,"/* worker */",g.substring(g.indexOf("{")+1,g.lastIndexOf("}"))].join("\n");this.workerSourceURL=URL.createObjectURL(new Blob([C])),this.transcoderBinary=B,this.workerPool.setWorkerCreator(()=>{const A=new Worker(this.workerSourceURL),I=this.transcoderBinary.slice(0);return A.postMessage({type:"init",config:this.workerConfig,transcoderBinary:I},[I]),A})}),EA>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),EA++}return this.transcoderPending}load(A,I,B,C){if(null===this.workerConfig)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");const Q=new g.Y9S(this.manager);Q.setPath(this.path),Q.setCrossOrigin(this.crossOrigin),Q.setWithCredentials(this.withCredentials),Q.setRequestHeader(this.requestHeader),Q.setResponseType("arraybuffer"),Q.load(A,A=>{this.parse(A,I,C)},B,C)}parse(A,I,B){if(null===this.workerConfig)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");if(CA.has(A)){return CA.get(A).promise.then(I).catch(B)}this._createTexture(A).then(A=>I?I(A):null).catch(B)}_createTextureFrom(A,I){const{type:B,error:C,data:{faces:Q,width:E,height:i,format:e,type:t,dfdFlags:o}}=A;if("error"===B)return Promise.reject(C);let s;if(6===I.faceCount)s=new g.c5h(Q,e,t);else{const A=Q[0].mipmaps;s=I.layerCount>1?new g.iOZ(A,E,i,I.layerCount,e,t):new g.FvD(A,E,i,e,t)}return s.minFilter=1===Q[0].mipmaps.length?g.k6q:g.$_I,s.magFilter=g.k6q,s.generateMipmaps=!1,s.needsUpdate=!0,s.colorSpace=sA(I),s.premultiplyAlpha=!!(1&o),s}async _createTexture(A){let I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const B=function(A){const I=new Uint8Array(A.buffer,A.byteOffset,P.length);if(I[0]!==P[0]||I[1]!==P[1]||I[2]!==P[2]||I[3]!==P[3]||I[4]!==P[4]||I[5]!==P[5]||I[6]!==P[6]||I[7]!==P[7]||I[8]!==P[8]||I[9]!==P[9]||I[10]!==P[10]||I[11]!==P[11])throw new Error("Missing KTX 2.0 identifier.");const B={vkFormat:0,typeSize:1,pixelWidth:0,pixelHeight:0,pixelDepth:0,layerCount:0,faceCount:1,levelCount:0,supercompressionScheme:0,levels:[],dataFormatDescriptor:[{vendorId:0,descriptorType:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],keyValue:{},globalData:null},g=17*Uint32Array.BYTES_PER_ELEMENT,C=new b(A,P.length,g,!0);B.vkFormat=C._nextUint32(),B.typeSize=C._nextUint32(),B.pixelWidth=C._nextUint32(),B.pixelHeight=C._nextUint32(),B.pixelDepth=C._nextUint32(),B.layerCount=C._nextUint32(),B.faceCount=C._nextUint32(),B.levelCount=C._nextUint32(),B.supercompressionScheme=C._nextUint32();const Q=C._nextUint32(),E=C._nextUint32(),i=C._nextUint32(),e=C._nextUint32(),t=C._nextUint64(),o=C._nextUint64(),s=3*Math.max(B.levelCount,1)*8,a=new b(A,P.length+g,s,!0);for(let K=0,T=Math.max(B.levelCount,1);K<T;K++)B.levels.push({levelData:new Uint8Array(A.buffer,A.byteOffset+a._nextUint64(),a._nextUint64()),uncompressedByteLength:a._nextUint64()});const r=new b(A,Q,E,!0);r._skip(4);const n=r._nextUint16(),D=r._nextUint16(),h=r._nextUint16(),w=r._nextUint16(),F={vendorId:n,descriptorType:D,versionNumber:h,colorModel:r._nextUint8(),colorPrimaries:r._nextUint8(),transferFunction:r._nextUint8(),flags:r._nextUint8(),texelBlockDimension:[r._nextUint8(),r._nextUint8(),r._nextUint8(),r._nextUint8()],bytesPlane:[r._nextUint8(),r._nextUint8(),r._nextUint8(),r._nextUint8(),r._nextUint8(),r._nextUint8(),r._nextUint8(),r._nextUint8()],samples:[]},G=(w/4-6)/4;for(let K=0;K<G;K++){const A={bitOffset:r._nextUint16(),bitLength:r._nextUint8(),channelType:r._nextUint8(),samplePosition:[r._nextUint8(),r._nextUint8(),r._nextUint8(),r._nextUint8()],sampleLower:Number.NEGATIVE_INFINITY,sampleUpper:Number.POSITIVE_INFINITY};64&A.channelType?(A.sampleLower=r._nextInt32(),A.sampleUpper=r._nextInt32()):(A.sampleLower=r._nextUint32(),A.sampleUpper=r._nextUint32()),F.samples[K]=A}B.dataFormatDescriptor.length=0,B.dataFormatDescriptor.push(F);const y=new b(A,i,e,!0);for(;y._offset<e;){const A=y._nextUint32(),I=y._scan(A),g=v(I);if(B.keyValue[g]=y._nextUint8Array(A-I.byteLength-1),g.match(/^ktx/i)){const A=v(B.keyValue[g]);B.keyValue[g]=A.substring(0,A.lastIndexOf("\0"))}y._skip(A%4?4-A%4:0)}if(o<=0)return B;const S=new b(A,t,o,!0),c=S._nextUint16(),U=S._nextUint16(),R=S._nextUint32(),d=S._nextUint32(),L=S._nextUint32(),f=S._nextUint32(),k=[];for(let K=0,T=Math.max(B.levelCount,1);K<T;K++)k.push({imageFlags:S._nextUint32(),rgbSliceByteOffset:S._nextUint32(),rgbSliceByteLength:S._nextUint32(),alphaSliceByteOffset:S._nextUint32(),alphaSliceByteLength:S._nextUint32()});const N=t+S._offset,p=N+R,M=p+d,q=M+L,J=new Uint8Array(A.buffer,A.byteOffset+N,R),l=new Uint8Array(A.buffer,A.byteOffset+p,d),H=new Uint8Array(A.buffer,A.byteOffset+M,L),Y=new Uint8Array(A.buffer,A.byteOffset+q,f);return B.globalData={endpointCount:c,selectorCount:U,imageDescs:k,endpointsData:J,selectorsData:l,tablesData:H,extendedData:Y},B}(new Uint8Array(A)),C=B.vkFormat===X&&167===B.dataFormatDescriptor[0].colorModel;if(!(0===B.vkFormat||C&&!this.workerConfig.astcHDRSupported))return async function(A){const{vkFormat:I}=A;if(void 0===tA[I])throw new Error("THREE.KTX2Loader: Unsupported vkFormat: "+I);void 0===oA[I]&&console.warn('THREE.KTX2Loader: Missing ".type" for vkFormat: '+I);let B;2===A.supercompressionScheme&&(QA||(QA=new Promise(async A=>{const I=new AA;await I.init(),A(I)})),B=await QA);const C=[];for(let i=0;i<A.levels.length;i++){const Q=Math.max(1,A.pixelWidth>>i),E=Math.max(1,A.pixelHeight>>i),e=A.pixelDepth?Math.max(1,A.pixelDepth>>i):0,t=A.levels[i];let o,s;if(0===A.supercompressionScheme)o=t.levelData;else{if(2!==A.supercompressionScheme)throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");o=B.decode(t.levelData,t.uncompressedByteLength)}s=oA[I]===g.RQf?new Float32Array(o.buffer,o.byteOffset,o.byteLength/Float32Array.BYTES_PER_ELEMENT):oA[I]===g.ix0?new Uint16Array(o.buffer,o.byteOffset,o.byteLength/Uint16Array.BYTES_PER_ELEMENT):oA[I]===g.Dmk||oA[I]===g.yT7?new Uint32Array(o.buffer,o.byteOffset,o.byteLength/Uint32Array.BYTES_PER_ELEMENT):o,C.push({data:s,width:Q,height:E,depth:e})}const Q=0===A.levelCount||C.length>1;let E;if(eA.has(tA[I]))E=0===A.pixelDepth?new g.GYF(C[0].data,A.pixelWidth,A.pixelHeight):new g.dYF(C[0].data,A.pixelWidth,A.pixelHeight,A.pixelDepth),E.minFilter=Q?g.pHI:g.hxR,E.magFilter=g.hxR,E.generateMipmaps=0===A.levelCount;else{if(A.pixelDepth>0)throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");E=new g.FvD(C,A.pixelWidth,A.pixelHeight),E.minFilter=Q?g.$_I:g.k6q,E.magFilter=g.k6q}return E.mipmaps=C,E.type=oA[I],E.format=tA[I],E.colorSpace=sA(A),E.needsUpdate=!0,Promise.resolve(E)}(B);const Q=I,E=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:A,taskConfig:Q},[A])).then(A=>this._createTextureFrom(A.data,B));return CA.set(A,{promise:E}),E}dispose(){this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),EA--}}iA.BasisFormat={ETC1S:0,UASTC:1,UASTC_HDR:2},iA.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16,BC6H:22,RGB_HALF:24,RGBA_HALF:25},iA.EngineFormat={RGBAFormat:g.GWd,RGBA_ASTC_4x4_Format:g.qa3,RGB_BPTC_UNSIGNED_Format:g.W9U,RGBA_BPTC_Format:g.Fn,RGBA_ETC2_EAC_Format:g.KDk,RGBA_PVRTC_4BPPV1_Format:g.HXV,RGBA_S3TC_DXT5_Format:g.BXX,RGB_ETC1_Format:g.CVz,RGB_ETC2_Format:g.Riy,RGB_PVRTC_4BPPV1_Format:g.k6Q,RGBA_S3TC_DXT1_Format:g.Nz6},iA.EngineType={UnsignedByteType:g.OUM,HalfFloatType:g.ix0,FloatType:g.RQf},iA.BasisWorker=function(){let A,I,B;const g=_EngineFormat,C=_EngineType,Q=_TranscoderFormat,E=_BasisFormat;self.addEventListener("message",function(g){const Q=g.data;switch(Q.type){case"init":A=Q.config,i=Q.transcoderBinary,I=new Promise(A=>{B={wasmBinary:i,onRuntimeInitialized:A},BASIS(B)}).then(()=>{B.initializeBasis(),void 0===B.KTX2File&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")});break;case"transcode":I.then(()=>{try{const{faces:I,buffers:g,width:i,height:s,hasAlpha:a,format:r,type:n,dfdFlags:D}=function(I){const g=new B.KTX2File(new Uint8Array(I));function Q(){g.close(),g.delete()}if(!g.isValid())throw Q(),new Error("THREE.KTX2Loader:\tInvalid or unsupported .ktx2 file");let i;if(g.isUASTC())i=E.UASTC;else if(g.isETC1S())i=E.ETC1S;else{if(!g.isHDR())throw new Error("THREE.KTX2Loader: Unknown Basis encoding");i=E.UASTC_HDR}const s=g.getWidth(),a=g.getHeight(),r=g.getLayers()||1,n=g.getLevels(),D=g.getFaces(),h=g.getHasAlpha(),w=g.getDFDFlags(),{transcoderFormat:F,engineFormat:G,engineType:y}=function(I,B,g,C){const Q=e[I];for(let E=0;E<Q.length;E++){const i=Q[E];if(i.if&&!A[i.if])continue;if(!i.basisFormat.includes(I))continue;if(C&&i.transcoderFormat.length<2)continue;if(i.needsPowerOfTwo&&(!t(B)||!t(g)))continue;return{transcoderFormat:i.transcoderFormat[C?1:0],engineFormat:i.engineFormat[C?1:0],engineType:i.engineType[0]}}throw new Error("THREE.KTX2Loader: Failed to identify transcoding target.")}(i,s,a,h);if(!s||!a||!n)throw Q(),new Error("THREE.KTX2Loader:\tInvalid texture");if(!g.startTranscoding())throw Q(),new Error("THREE.KTX2Loader: .startTranscoding failed");const S=[],c=[];for(let A=0;A<D;A++){const I=[];for(let B=0;B<n;B++){const E=[];let i,e;for(let I=0;I<r;I++){const t=g.getImageLevelInfo(B,I,A);0!==A||0!==B||0!==I||t.origWidth%4===0&&t.origHeight%4===0||console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."),n>1?(i=t.origWidth,e=t.origHeight):(i=t.width,e=t.height);let o=new Uint8Array(g.getImageTranscodedSizeInBytes(B,I,0,F));const s=g.transcodeImage(o,B,I,A,F,0,-1,-1);if(y===C.HalfFloatType&&(o=new Uint16Array(o.buffer,o.byteOffset,o.byteLength/Uint16Array.BYTES_PER_ELEMENT)),!s)throw Q(),new Error("THREE.KTX2Loader: .transcodeImage failed.");E.push(o)}const t=o(E);I.push({data:t,width:i,height:e}),c.push(t.buffer)}S.push({mipmaps:I,width:s,height:a,format:G,type:y})}return Q(),{faces:S,buffers:c,width:s,height:a,hasAlpha:h,dfdFlags:w,format:G,type:y}}(Q.buffer);self.postMessage({type:"transcode",id:Q.id,data:{faces:I,width:i,height:s,hasAlpha:a,format:r,type:n,dfdFlags:D}},g)}catch(I){console.error(I),self.postMessage({type:"error",id:Q.id,error:I.message})}})}var i});const i=[{if:"astcSupported",basisFormat:[E.UASTC],transcoderFormat:[Q.ASTC_4x4,Q.ASTC_4x4],engineFormat:[g.RGBA_ASTC_4x4_Format,g.RGBA_ASTC_4x4_Format],engineType:[C.UnsignedByteType],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[E.ETC1S,E.UASTC],transcoderFormat:[Q.BC7_M5,Q.BC7_M5],engineFormat:[g.RGBA_BPTC_Format,g.RGBA_BPTC_Format],engineType:[C.UnsignedByteType],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[E.ETC1S,E.UASTC],transcoderFormat:[Q.BC1,Q.BC3],engineFormat:[g.RGBA_S3TC_DXT1_Format,g.RGBA_S3TC_DXT5_Format],engineType:[C.UnsignedByteType],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[E.ETC1S,E.UASTC],transcoderFormat:[Q.ETC1,Q.ETC2],engineFormat:[g.RGB_ETC2_Format,g.RGBA_ETC2_EAC_Format],engineType:[C.UnsignedByteType],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[E.ETC1S,E.UASTC],transcoderFormat:[Q.ETC1],engineFormat:[g.RGB_ETC1_Format],engineType:[C.UnsignedByteType],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[E.ETC1S,E.UASTC],transcoderFormat:[Q.PVRTC1_4_RGB,Q.PVRTC1_4_RGBA],engineFormat:[g.RGB_PVRTC_4BPPV1_Format,g.RGBA_PVRTC_4BPPV1_Format],engineType:[C.UnsignedByteType],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0},{if:"bptcSupported",basisFormat:[E.UASTC_HDR],transcoderFormat:[Q.BC6H],engineFormat:[g.RGB_BPTC_UNSIGNED_Format],engineType:[C.HalfFloatType],priorityHDR:1,needsPowerOfTwo:!1},{basisFormat:[E.ETC1S,E.UASTC],transcoderFormat:[Q.RGBA32,Q.RGBA32],engineFormat:[g.RGBAFormat,g.RGBAFormat],engineType:[C.UnsignedByteType,C.UnsignedByteType],priorityETC1S:100,priorityUASTC:100,needsPowerOfTwo:!1},{basisFormat:[E.UASTC_HDR],transcoderFormat:[Q.RGBA_HALF],engineFormat:[g.RGBAFormat],engineType:[C.HalfFloatType],priorityHDR:100,needsPowerOfTwo:!1}],e={[E.ETC1S]:i.filter(A=>A.basisFormat.includes(E.ETC1S)).sort((A,I)=>A.priorityETC1S-I.priorityETC1S),[E.UASTC]:i.filter(A=>A.basisFormat.includes(E.UASTC)).sort((A,I)=>A.priorityUASTC-I.priorityUASTC),[E.UASTC_HDR]:i.filter(A=>A.basisFormat.includes(E.UASTC_HDR)).sort((A,I)=>A.priorityHDR-I.priorityHDR)};function t(A){return A<=2||0===(A&A-1)&&0!==A}function o(A){if(1===A.length)return A[0];let I=0;for(let C=0;C<A.length;C++){I+=A[C].byteLength}const B=new Uint8Array(I);let g=0;for(let C=0;C<A.length;C++){const I=A[C];B.set(I,g),g+=I.byteLength}return B}};const eA=new Set([g.GWd,g.HIg,g.paN,g.VT0]),tA={[h]:g.GWd,[D]:g.paN,[n]:g.VT0,[r]:g.GWd,[a]:g.paN,[s]:g.VT0,[o]:g.GWd,[t]:g.GWd,[e]:g.paN,[i]:g.paN,[E]:g.VT0,[Q]:g.VT0,[F]:g.HIg,[w]:g.HIg,[q]:g.KDk,[M]:g.Riy,[J]:g.BVL,[l]:g.gZr,[H]:g.OtU,[Y]:g.jSS,[X]:g.qa3,[T]:g.qa3,[K]:g.qa3,[W]:g.Qrf,[x]:g.Qrf,[m]:g.Qrf,[c]:g.Nz6,[S]:g.Nz6,[y]:g.IE4,[G]:g.IE4,[R]:g.BXX,[U]:g.BXX,[L]:g.XG_,[d]:g.Kef,[k]:g.CWW,[f]:g.HO_,[p]:g.Fn,[N]:g.Fn,[V]:g.HXV,[_]:g.HXV,[O]:g.pBf,[u]:g.pBf},oA={[h]:g.RQf,[D]:g.RQf,[n]:g.RQf,[r]:g.ix0,[a]:g.ix0,[s]:g.ix0,[o]:g.OUM,[t]:g.OUM,[e]:g.OUM,[i]:g.OUM,[E]:g.OUM,[Q]:g.OUM,[F]:g.Dmk,[w]:g.yT7,[q]:g.OUM,[M]:g.OUM,[J]:g.OUM,[l]:g.OUM,[H]:g.OUM,[Y]:g.OUM,[X]:g.ix0,[T]:g.OUM,[K]:g.OUM,[W]:g.ix0,[x]:g.OUM,[m]:g.OUM,[c]:g.OUM,[S]:g.OUM,[y]:g.OUM,[G]:g.OUM,[R]:g.OUM,[U]:g.OUM,[L]:g.OUM,[d]:g.OUM,[k]:g.OUM,[f]:g.OUM,[p]:g.OUM,[N]:g.OUM,[V]:g.OUM,[_]:g.OUM,[O]:g.OUM,[u]:g.OUM};function sA(A){const I=A.dataFormatDescriptor[0];return 1===I.colorPrimaries?2===I.transferFunction?g.er$:g.Zr2:10===I.colorPrimaries?2===I.transferFunction?gA:"display-p3-linear":(0===I.colorPrimaries||console.warn('THREE.KTX2Loader: Unsupported color primaries, "'.concat(I.colorPrimaries,'"')),g.jf0)}}}]);
 
 
services/explorer/dist/static/js/445.395e0fec.chunk.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkdeepsearch_ui=self.webpackChunkdeepsearch_ui||[]).push([[445],{6445(t,e,s){s.r(e),s.d(e,{RoomEnvironment:()=>a});var i=s(9435);class a extends i.Z58{constructor(){super(),this.name="RoomEnvironment",this.position.y=-3.5;const t=new i.iNn;t.deleteAttribute("uv");const e=new i._4j({side:i.hsX}),s=new i._4j,a=new i.HiM(16777215,900,28,2);a.position.set(.418,16.199,.3),this.add(a);const n=new i.eaF(t,e);n.position.set(-.757,13.219,.717),n.scale.set(31.713,28.305,28.591),this.add(n);const r=new i.ZLX(t,s,6),d=new i.B69;d.position.set(-10.906,2.009,1.846),d.rotation.set(0,-.195,0),d.scale.set(2.328,7.905,4.651),d.updateMatrix(),r.setMatrixAt(0,d.matrix),d.position.set(-5.607,-.754,-.758),d.rotation.set(0,.994,0),d.scale.set(1.97,1.534,3.955),d.updateMatrix(),r.setMatrixAt(1,d.matrix),d.position.set(6.167,.857,7.803),d.rotation.set(0,.561,0),d.scale.set(3.927,6.285,3.687),d.updateMatrix(),r.setMatrixAt(2,d.matrix),d.position.set(-2.017,.018,6.124),d.rotation.set(0,.333,0),d.scale.set(2.002,4.566,2.064),d.updateMatrix(),r.setMatrixAt(3,d.matrix),d.position.set(2.291,-.756,-2.621),d.rotation.set(0,-.286,0),d.scale.set(1.546,1.552,1.496),d.updateMatrix(),r.setMatrixAt(4,d.matrix),d.position.set(-2.193,-.369,-5.547),d.rotation.set(0,.516,0),d.scale.set(3.875,3.487,2.986),d.updateMatrix(),r.setMatrixAt(5,d.matrix),this.add(r);const c=new i.eaF(t,o(50));c.position.set(-16.116,14.37,8.208),c.scale.set(.1,2.428,2.739),this.add(c);const p=new i.eaF(t,o(50));p.position.set(-16.109,18.021,-8.207),p.scale.set(.1,2.425,2.751),this.add(p);const h=new i.eaF(t,o(17));h.position.set(14.904,12.198,-1.832),h.scale.set(.15,4.265,6.331),this.add(h);const l=new i.eaF(t,o(43));l.position.set(-.462,8.89,14.52),l.scale.set(4.38,5.441,.088),this.add(l);const x=new i.eaF(t,o(20));x.position.set(3.235,11.486,-12.541),x.scale.set(2.5,2,.1),this.add(x);const u=new i.eaF(t,o(100));u.position.set(0,20,0),u.scale.set(1,.1,1),this.add(u)}dispose(){const t=new Set;this.traverse(e=>{e.isMesh&&(t.add(e.geometry),t.add(e.material))});for(const e of t)e.dispose()}}function o(t){return new i.G_z({color:0,emissive:16777215,emissiveIntensity:t})}}}]);
 
 
services/explorer/dist/static/js/493.1fbf9797.chunk.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkdeepsearch_ui=self.webpackChunkdeepsearch_ui||[]).push([[493,857],{1219(){},2973(e,t,r){r.d(t,{A:()=>m});var n=r(9379),i=r(5043),a=r(3139),o=r(5597),s=r(3333),l=r(6796),d=r(9885),c=r(9207),u=r(5260),p=r(579);const v=Object.freeze({position:[3,-4,2],target:[0,0,0]}),h=Object.freeze({maxPixels:2073600,reference:"square"});function m(e){let{asset:t,mode:r,reader:m=d.Me,cameraRecipe:f,onTelemetry:w,backLabel:g="USD comparison",showImplementationNote:y=!0,nativeMountOnly:x=!1,presentation:b="white-studio",showMount:S=!0}=e;const[j,U]=(0,i.useState)(null),[A,D]=(0,i.useState)("Loading"),[M,N]=(0,i.useState)(null),L=(0,i.useRef)(0),R=(0,i.useRef)(!1),E=(0,i.useRef)(w),k=(0,i.useRef)(f);k.current=f,E.current=w;const T=(0,i.useCallback)(e=>{var n;const i=(null===e||void 0===e?void 0:e.message)||"This renderer could not load the asset";N(i),D("Failed"),null===(n=E.current)||void 0===n||n.call(E,{assetId:t.id,renderer:r,status:"failed",error:i})},[t.id,r]);(0,i.useEffect)(()=>{var e;const i=new AbortController;let a=null;U(null),N(null),D("Loading"),R.current=!1,L.current=performance.now(),null===(e=E.current)||void 0===e||e.call(E,{assetId:t.id,renderer:r,status:"loading"});return(async()=>{var e;if("reference"===r){var o;const[e,r]=await Promise.all([(0,l._z)(t.articulation.url,{signal:i.signal,maxBytes:2097152,sha256:t.articulation.sha256,expectedBytes:t.articulation.bytes}),(0,l._z)(t.current.url,{signal:i.signal,maxBytes:67108864,sha256:t.current.sha256,expectedBytes:t.current.bytes})]);if(i.signal.aborted)return null;const n=JSON.parse((new TextDecoder).decode(e));if(1!==n.version||"gltf"!==n.frame||!Array.isArray(n.bodies)||!n.bodies.length||!Array.isArray(n.joints))throw new Error("Unsupported reference articulation export");return a=URL.createObjectURL(new Blob([r],{type:"model/gltf-binary"})),{glbUrl:a,articulation:n,store:(0,s.createJointStore)(n),view:t.view||(null===(o=t.clipMeta)||void 0===o?void 0:o.camera)||v,clipMeta:t.clipMeta,sourceVerified:!0,sha256:t.current.sha256,fetchAndVerifyMs:performance.now()-L.current}}const d=t.nativeBaseline,p=await m({url:d.url,signal:i.signal,expectedSha256:d.sha256,onProgress:e=>{i.signal.aborted||D(e)}});if(i.signal.aborted)return null;const h=performance.now(),f=!1===d.motionQualified?(0,c.nativeUsdVisualMapping)(p):(0,c.nativeUsdArticulation)(p);f.articulation.kind=d.presentationKind;const w=(0,n.A)((0,n.A)({},p.metrics),{},{mappingMs:performance.now()-h});return{usdModel:{loadScene:async e=>{const t=await(0,u.createUsdScene)(p,f,(0,n.A)((0,n.A)({},e),{},{baseUrl:d.url,renderBothSides:!0,textureConcurrency:["lightusd-parallel","lightusd-packed"].includes(r)?4:1}));return Object.assign(w,t.userData.usdLoading),t}},articulation:f.articulation,store:(0,s.createJointStore)(f.articulation),view:t.view||(null===(e=t.clipMeta)||void 0===e?void 0:e.camera)||v,clipMeta:t.clipMeta,metrics:w,sourceVerified:!0,sha256:d.sha256}})().then(e=>{!i.signal.aborted&&e&&(U((0,n.A)((0,n.A)({},e),{},{inspectCamera:!0,presentation:b,renderPixelBudget:h,previewMount:!S||x&&"reference"===r?null:t.previewMount||null})),D("Preparing viewport"))}).catch(e=>{i.signal.aborted||T(e)}),()=>{i.abort(),a&&URL.revokeObjectURL(a)}},[t,r,m,T,x,b,S]);const B=(0,a.A)({resetKey:"".concat(t.id,":").concat(r),modelKey:"".concat(t.id,":").concat(r),active:!0,imageTab:!1,model:j,modelPending:!j&&!M,onModelUnavailable:T,workspace:{portal:!0,lazyShell:!0,onEscape:"self",labels:{back:g,dock:"Dock viewer"}}});return(0,i.useEffect)(()=>{if(!j||!B.viewerApi||R.current)return;if(j.store.setPose(j.store.homes,"instant"),"reference"!==r&&k.current)try{B.viewerApi.setInspectionCamera(k.current)}catch(n){return void T(n)}let e=!1;return D("Completing first frame"),B.viewerApi.waitForInspectionDraw().then(n=>{var i,a,o,s,l;e||(n.drawn?(R.current=!0,D("Ready"),null===(i=E.current)||void 0===i||i.call(E,{assetId:t.id,renderer:r,status:"ready",readyMs:performance.now()-L.current,firstCompletedDraw:n.drawn,gpuSynchronized:n.gpuSynchronized,sourceVerified:j.sourceVerified,sha256:j.sha256,fetchAndVerifyMs:j.fetchAndVerifyMs,readerMs:null===(a=j.metrics)||void 0===a?void 0:a.loadMs,heapBytes:null===(o=j.metrics)||void 0===o?void 0:o.wasmHeapBytes,metrics:j.metrics,jointCount:j.store.ids.length,pixelBuffer:B.viewerApi.renderSize,assetStorage:B.viewerApi.assetStorage,camera:B.viewerApi.cameraDiagnostics,cameraMatched:"reference"!==r&&(s=B.viewerApi.cameraDiagnostics,l=k.current,Boolean(s&&l&&s.frame===l.frame&&["position","target","up","verticalFovDegrees","near","far","viewMatrix","projectionMatrix"].every(e=>{const t=Array.isArray(s[e])?s[e]:[s[e]],r=Array.isArray(l[e])?l[e]:[l[e]];return t.length===r.length&&t.every((e,t)=>Number.isFinite(e)&&Number.isFinite(r[t])&&Math.abs(e-r[t])<=1e-8*Math.max(1,Math.abs(e)))}))),scope:"reference"===r?t.referenceScope:"Native USD geometry; same shared PBR viewport. No source MDL execution."})):T(new Error(n.error||"The viewport closed before completing its first frame")))}).catch(t=>{e||T(t)}),()=>{e=!0}},[t,r,j,B.viewerApi,T]),(0,p.jsxs)("section",{className:"ur2-shared","data-testid":"round2-shared-pane","data-engine":r,children:[(0,p.jsx)("p",{role:"status","data-testid":"round2-status",children:A}),M&&(0,p.jsx)("p",{role:"alert",children:M}),(0,p.jsx)("div",{className:"ur2-stage",ref:B.regionRef,tabIndex:-1,children:(0,p.jsx)(o.z_,{ctl:B,fileName:t.label,renderPicture:()=>null})}),j&&(0,p.jsxs)("div",{className:"ur2-actions",children:[(0,p.jsx)("button",{onClick:()=>{var e;return null===(e=B.viewerApi)||void 0===e?void 0:e.resetView()},children:"Reset camera"}),j.store.ids.length>0&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)("button",{disabled:!B.viewerApi,onClick:B.expandPose,children:"Move individual joints"}),(0,p.jsx)("button",{onClick:()=>j.store.setAll(0),children:"Home pose"}),(0,p.jsx)("button",{onClick:()=>j.store.playSequence(),children:"Play joint sequence"})]})]}),(null===j||void 0===j?void 0:j.store.ids.length)>0&&(0,p.jsxs)("p",{className:"ur2-note",children:["Move individual joints opens the same pose workspace as the GLB viewer: select a joint and adjust its position.",y&&"reference"!==r&&" This view loads USD geometry and source joint data directly; it does not use Apple\u2019s model element or a GLB geometry substitute."]}),(0,p.jsx)(o.Vo,{ctl:B,fileName:t.label,topOffset:0})]})}},4493(e,t,r){r.r(t),r.d(t,{default:()=>A});var n=r(9379),i=r(5043),a=r(2973),o=r(579);function s(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;const t="function"===typeof e.HTMLModelElement,r=t?e.HTMLModelElement.prototype:null,n=!!r&&"ready"in r;return{supported:t&&n,api:"HTMLModelElement",constructor:t,ready:n,entityTransform:!!r&&"entityTransform"in r}}function l(e,t){try{const r=new URL(e,window.location.href);return r.origin!==window.location.origin||!t.test(r.pathname)||r.username||r.password||r.hash||r.search?null:r.href}catch(r){return null}}function d(e){if(!e||!Number.isSafeInteger(e.bytes)||e.bytes<=0||!/^[a-f0-9]{64}$/i.test(e.sha256||""))return null;const t=l(e.url,/\.usdz$/i);return t?(0,n.A)((0,n.A)({},e),{},{url:t}):null}const c=e=>(null===e||void 0===e?void 0:e.message)||"Native animation could not play.";function u(e){var t,r,n,a,u;let{asset:p,onTelemetry:v,environmentMap:h}=e;const[m,f]=(0,i.useState)("baseline"),[w,g]=(0,i.useState)("Loading native USDZ"),[y,x]=(0,i.useState)(null),[b,S]=(0,i.useState)(0),[j,U]=(0,i.useState)(null),[A,D]=(0,i.useState)(!1),[M,N]=(0,i.useState)(()=>Math.max(1,Number(window.devicePixelRatio)||1)),L=(0,i.useRef)(null),R=(0,i.useRef)(v),E=(0,i.useRef)(null);R.current=v;const k=s(),{supported:T,constructor:B,ready:P,entityTransform:C}=k,I=d(null===p||void 0===p||null===(t=p.apple)||void 0===t?void 0:t.baseline),z=d(null===p||void 0===p||null===(r=p.apple)||void 0===r?void 0:r.optimized),F=l(null===p||void 0===p||null===(n=p.apple)||void 0===n?void 0:n.auditUrl,/\.json$/i),q=l(h,/\.(hdr|exr)$/i),Z="optimized"===m?z:I,_=(null===Z||void 0===Z?void 0:Z.url)||null,H=!!Z,O=Math.floor(Math.sqrt(2073600)/M);(0,i.useEffect)(()=>{const e=()=>N(Math.max(1,Number(window.devicePixelRatio)||1));return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]),(0,i.useEffect)(()=>{f("baseline")},[null===p||void 0===p?void 0:p.id]),(0,i.useEffect)(()=>{var e,t,r;if(U(null),x(null),S(0),D(!1),E.current=null,!T)return g("Native HTML model is unavailable in this browser"),void(null===(t=R.current)||void 0===t||t.call(R,{assetId:null===p||void 0===p?void 0:p.id,renderer:"html-model",supported:!1,status:"unsupported",capability:k}));if(!H)return g("Native USDZ package unavailable"),void(null===(r=R.current)||void 0===r||r.call(R,{assetId:null===p||void 0===p?void 0:p.id,renderer:"html-model",supported:!0,status:"error",capability:k,error:"The selected native USDZ package has no valid audited descriptor."}));const n=L.current;if(!n)return;let i=!0;const a=performance.now();let o;g("Loading native USDZ"),null===(e=R.current)||void 0===e||e.call(R,{assetId:null===p||void 0===p?void 0:p.id,variant:m,renderer:"html-model",supported:!0,status:"loading",capability:k}),n.setAttribute("stagemode","orbit"),n.setAttribute("src",_),q?n.setAttribute("environmentmap",q):n.removeAttribute("environmentmap");try{if(o=n.ready,!o||"function"!==typeof o.then)throw new Error("The model element does not provide a native readiness promise.")}catch(s){o=Promise.reject(s)}return Promise.resolve(o).then(()=>{var e,t,r,o;if(!i)return;const s=performance.now()-a,l=Number(n.duration);if(C)try{E.current=n.entityTransform}catch(u){}x(s),S(Number.isFinite(l)&&l>0?l:0),g("Native USDZ ready");const d=null===(e=(t=performance).getEntriesByName)||void 0===e||null===(r=e.call(t,_))||void 0===r?void 0:r.at(-1),c=d?{duration:d.duration,transferSize:d.transferSize,encodedBodySize:d.encodedBodySize,decodedBodySize:d.decodedBodySize}:null;null===(o=R.current)||void 0===o||o.call(R,{assetId:null===p||void 0===p?void 0:p.id,variant:m,renderer:"html-model",supported:!0,status:"ready",capability:k,readyMs:s,animationDuration:Number.isFinite(l)?l:0,resource:c,download:c})}).catch(e=>{var t;if(!i)return;const r=(null===e||void 0===e?void 0:e.message)||"The browser rejected this native USDZ package.";U(r),g("Native USDZ could not render"),null===(t=R.current)||void 0===t||t.call(R,{assetId:null===p||void 0===p?void 0:p.id,variant:m,renderer:"html-model",supported:!0,status:"error",capability:k,error:r})}),()=>{i=!1;try{var e;Promise.resolve(null===(e=n.pause)||void 0===e?void 0:e.call(n)).catch(()=>{})}catch(t){}n.removeAttribute("src")}},[null===p||void 0===p?void 0:p.id,m,T,B,P,C,_,H,q]);return(0,o.jsxs)("section",{className:"apple-native-pane","aria-label":"Apple native USDZ preview","data-testid":"apple-native-pane","data-native-supported":String(T),"data-selected":m,children:[(0,o.jsxs)("div",{className:"apple-native-toolbar",children:[(0,o.jsx)("strong",{children:"Apple native USDZ"}),(0,o.jsx)("span",{role:"status",children:w})]}),(0,o.jsxs)("div",{className:"apple-native-profiles",role:"group","aria-label":"USDZ delivery profile",children:[(0,o.jsx)("button",{"aria-pressed":"baseline"===m,onClick:()=>f("baseline"),disabled:!I,children:"Baseline USDZ"}),(0,o.jsx)("button",{"aria-pressed":"optimized"===m,onClick:()=>f("optimized"),disabled:!z,children:"Optimized USDZ"})]}),j&&(0,o.jsx)("p",{role:"alert",children:j}),(0,o.jsx)("div",{className:"apple-native-stage","data-testid":"apple-native-stage",style:{maxWidth:O},children:T&&H?(0,o.jsx)("model",{ref:L,"aria-label":"".concat((null===p||void 0===p?void 0:p.label)||"Asset"," native USDZ"),"data-testid":"apple-native-model"},"".concat(null===p||void 0===p?void 0:p.id,":").concat(m,":").concat(_)):(0,o.jsxs)("div",{className:"apple-native-unavailable",children:[(0,o.jsx)("strong",{children:T?"Package unavailable":"Native preview unavailable"}),(0,o.jsx)("p",{children:T?"This asset has no audited USDZ package for the selected profile.":"This browser does not expose the native HTML model API in this session. Safari 27 documents support, but the installed version alone does not establish that the feature is enabled and available."}),(0,o.jsxs)("p",{children:["Detected API: constructor ",String(B),", ready ",String(P),", entityTransform ",String(C),"."]}),!T&&(0,o.jsxs)("p",{children:["In Safari or Safari Technology Preview, open Settings \u2192 Feature Flags and search for \u201cmodel\u201d. If \u201cHTML <model> element\u201d is listed and disabled, enable it and reload this page. If Feature Flags is hidden, first enable \u201cShow features for web developers\u201d in Settings \u2192 Advanced. An absent flag or an enabled flag with the same result needs further browser diagnosis."," ",(0,o.jsx)("a",{href:"https://developer.apple.com/documentation/safari-developer-tools/feature-flag-settings",target:"_blank",rel:"noreferrer",children:"Apple\u2019s feature flag instructions"}),"."]}),(0,o.jsx)("p",{children:"The current GLB reference remains available in its own labelled view."})]})}),T&&null!==y&&(0,o.jsxs)("div",{className:"apple-native-actions",children:[(0,o.jsx)("button",{disabled:!C||!E.current,onClick:()=>{const e=L.current;if(e&&C&&E.current)try{e.setAttribute("stagemode","none"),e.entityTransform=E.current,U(null)}catch(t){U((null===t||void 0===t?void 0:t.message)||"Native orientation could not reset.")}finally{e.setAttribute("stagemode","orbit")}},children:"Reset native orientation"}),b>0&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("button",{onClick:async()=>{const e=L.current;if(e&&b)try{A?await e.pause():await e.play(),D(!A),U(null)}catch(t){U(c(t))}},children:A?"Pause native animation":"Play native animation"}),(0,o.jsx)("button",{onClick:async()=>{const e=L.current;if(e)try{await e.pause(),e.currentTime=0,D(!1)}catch(t){U(c(t))}},children:"Reset native animation"})]})]}),T&&!C&&(0,o.jsx)("p",{className:"apple-native-note",children:"Native loading is available; this browser does not expose the optional orientation reset API."}),Z&&(0,o.jsxs)("p",{children:["Package: ",(V=Z.bytes,"".concat((V/1024/1024).toFixed(2)," MiB")),".",null!==y&&(0,o.jsxs)(o.Fragment,{children:[" Native model ready: ",(y/1e3).toFixed(2)," s."]})]}),T&&null!==y&&0===b&&(0,o.jsx)("p",{children:"This package has no baked animation timeline. Source physics joints do not create native animation automatically."}),(0,o.jsx)("p",{className:"apple-native-note",children:"The native renderer controls framing, lighting and internal render resolution. Its ready time covers the browser\u2019s model preparation; it does not expose a GPU first-frame or physical-memory measurement. This pane does not offer independent joint posing or match the GLB renderer pixel for pixel."}),!z&&(0,o.jsx)("p",{className:"apple-native-note",children:"An optimized Apple USDZ is not available yet. It needs an actual supported Apple compression environment and separate validation."}),null===p||void 0===p||null===(a=p.apple)||void 0===a||null===(u=a.limitations)||void 0===u?void 0:u.map((e,t)=>(0,o.jsx)("p",{className:"apple-native-note",children:e},t)),(0,o.jsxs)("p",{children:[I&&(0,o.jsx)("a",{href:I.url,download:!0,children:"Download baseline USDZ"}),z&&(0,o.jsxs)(o.Fragment,{children:[I&&" \xb7 ",(0,o.jsx)("a",{href:z.url,download:!0,children:"Download optimized USDZ"})]}),F&&(0,o.jsxs)(o.Fragment,{children:[(I||z)&&" \xb7 ",(0,o.jsx)("a",{href:F,target:"_blank",rel:"noreferrer",children:"Package source audit"})]})]})]});var V}const p="simready-needle-native-v1";function v(e){let{asset:t,stagePixels:r=2073600,dpr:a=2,cameraRecipe:s=null,onTelemetry:l,onReady:d,onError:c}=e;const u=(0,i.useRef)(null),v=(0,i.useRef)({onTelemetry:l,onReady:d,onError:c}),h=(0,i.useRef)(s),m=(0,i.useRef)(null),[f,w]=(0,i.useState)("Loading local Needle runtime"),[g,y]=(0,i.useState)(null),[x,b]=(0,i.useState)(null);return v.current={onTelemetry:l,onReady:d,onError:c},h.current=s,(0,i.useEffect)(()=>{w("Loading local Needle runtime"),y(null);let e=!1,i=!1,o=0;const s=new Map;let l,d;try{var c,f,g,x,S;if("function"!==typeof(null===(c=window.crypto)||void 0===c?void 0:c.randomUUID))throw new Error("Needle requires a secure preview origin");l=window.crypto.randomUUID(),d=new URL(function(e,t){const r=new URL(e,t);if(r.origin!==t||!["http:","https:"].includes(r.protocol))throw new Error("Needle preview requires same-origin resources");return r.href}((null===t||void 0===t||null===(f=t.needle)||void 0===f?void 0:f.frameUrl)||(null===t||void 0===t||null===(g=t.needle)||void 0===g?void 0:g.runtime)||"/usd-round2/needle/native-preview.html",window.location.origin)),d.searchParams.set("nonce",l);const e=null===t||void 0===t||null===(x=t.needle)||void 0===x?void 0:x.metersPerUnit;if(!Number.isFinite(e)||e<=0||e>1e6||!/^[0-9a-f]{64}$/i.test((null===t||void 0===t||null===(S=t.needle)||void 0===S?void 0:S.unitsSourceSha256)||""))throw new Error("Needle needs audited source units and the matching USD identity")}catch(R){var j,U;return y(R.message),b(null),void(null===(j=(U=v.current).onError)||void 0===j||j.call(U,R))}const A=e=>{var t,r;return null===(t=u.current)||void 0===t||null===(r=t.contentWindow)||void 0===r?void 0:r.postMessage((0,n.A)({kind:p,nonce:l},e),window.location.origin)},D=(t,r)=>new Promise((n,i)=>{if(e)return void i(new Error("Needle frame is closed"));const a=++o,l=setTimeout(()=>{s.delete(a),i(new Error("Needle ".concat(t," did not complete")))},3e4);s.set(a,{resolve:n,reject:i,timeout:l}),A({type:"command",id:a,name:t,value:r})}),M=()=>{var n,o,s;e||i||null===(n=u.current)||void 0===n||!n.contentWindow||(i=!0,A({type:"initialize",asset:{id:t.id,kind:t.kind||(null===(o=t.glb)||void 0===o?void 0:o.kind)||(null===(s=t.nativeBaseline)||void 0===s?void 0:s.presentationKind),needle:t.needle},cameraRecipe:h.current,stagePixels:Math.min(2073600,Math.max(1,r)),dpr:Math.min(2,Math.max(.25,a))}))},N={engine:"needle-openusd",element:()=>u.current,getCameraState:()=>D("getCamera"),setCameraState:e=>D("setCamera",e),sceneSnapshot:()=>D("snapshot"),stagePhysics:()=>D("physics"),setUsdTime:e=>D("setTime",e),setPlaying:e=>D("setPlaying",e),setIncludedPurposes:e=>D("setIncludedPurposes",e),setComplexity:e=>D("setComplexity",e),resetView:()=>D("resetView"),inspectNative:()=>{var e,t;return(null===(e=u.current)||void 0===e||null===(t=e.contentWindow)||void 0===t?void 0:t.__simreadyNeedleNative)||null}},L=r=>{var i,a,o,d,c,h;if(e||r.origin!==window.location.origin||r.source!==(null===(i=u.current)||void 0===i?void 0:i.contentWindow)||(null===(a=r.data)||void 0===a?void 0:a.kind)!==p||(null===(o=r.data)||void 0===o?void 0:o.nonce)!==l)return;const m=r.data;var f,g;("listening"===m.type&&M(),"status"===m.type)&&(w(m.status),null===(f=(g=v.current).onTelemetry)||void 0===f||f.call(g,{assetId:t.id,engine:"needle-openusd",status:"loading",phase:m.status}));if("telemetry"===m.type&&(null===(d=(c=v.current).onTelemetry)||void 0===d||d.call(c,(0,n.A)((0,n.A)({},m.telemetry),{},{assetId:t.id,engine:"needle-openusd",status:(null===(h=m.telemetry)||void 0===h?void 0:h.status)||"loading"}))),"ready"===m.type){var x,S,j,U;const e=t.needle.quality||t.needle.qualityAudit||{status:"unqualified"},r=t.needle.runtimeQualification||{status:"unqualified"},i="passed"===r.status,a="passed"===e.status&&i;w("failed"===r.status?"Native USD first draw \xb7 runtime and visual qualification failed":"failed"===e.status?"Native USD first draw \xb7 visual qualification failed":a?"Native USD ready \xb7 Needle / OpenUSD":"Native USD first draw \xb7 fidelity unqualified"),N.metrics=(0,n.A)((0,n.A)({},m.telemetry),{},{assetId:t.id,status:"ready",ready:!0,firstDrawReady:!0,faithfulReady:a,sourceQuality:e,runtimeQualified:i,runtimeQualification:r}),null===(x=(S=v.current).onTelemetry)||void 0===x||x.call(S,N.metrics),null===(j=(U=v.current).onReady)||void 0===j||j.call(U,N)}if("error"===m.type){var D,L,R,E,k,T;const r=new Error(m.error||"Needle native USD failed");A({type:"dispose"}),e=!0,s.forEach(e=>{clearTimeout(e.timeout),e.reject(r)}),s.clear(),b(null),y(r.message),w("Native USD unavailable"),null===(D=(L=v.current).onReady)||void 0===D||D.call(L,null),null===(R=(E=v.current).onTelemetry)||void 0===R||R.call(E,(0,n.A)((0,n.A)({},m.telemetry),{},{assetId:t.id,engine:"needle-openusd",status:"error",ready:!1,error:r.message})),null===(k=(T=v.current).onError)||void 0===k||k.call(T,r)}if("reply"===m.type){const e=s.get(m.id);if(!e)return;clearTimeout(e.timeout),s.delete(m.id),m.error?e.reject(new Error(m.error)):e.resolve(m.value)}};return window.addEventListener("message",L),m.current={start:M,api:N},b(d.href),()=>{var t,r;A({type:"dispose"}),e=!0,window.removeEventListener("message",L),s.forEach(e=>{clearTimeout(e.timeout),e.reject(new Error("Needle frame closed"))}),s.clear(),m.current=null,null===(t=(r=v.current).onReady)||void 0===t||t.call(r,null)}},[t,r,a]),(0,o.jsxs)("div",{className:"needle-native-preview","data-engine":"needle-openusd",children:[x&&(0,o.jsx)("iframe",{ref:u,src:x,title:"Needle native USD: ".concat((null===t||void 0===t?void 0:t.label)||(null===t||void 0===t?void 0:t.id)||"asset"),onLoad:()=>{var e;return null===(e=m.current)||void 0===e?void 0:e.start()},allow:"cross-origin-isolated"}),(0,o.jsx)("div",{className:"needle-native-preview__status",role:"status",children:f}),g&&(0,o.jsx)("div",{className:"needle-native-preview__error",role:"alert",children:g}),(0,o.jsx)("div",{className:"needle-native-preview__note",children:"OpenUSD + Hydra evaluation \xb7 Pose and joint controls are not integrated."})]})}var h=r(9885),m=r(7863);const f=()=>new DOMException("USD load cancelled","AbortError");function w(e){const t=new URL(e,window.location.href);if(t.origin!==window.location.origin)throw new Error("USD review resources must use this origin");return t.href}async function g(){let{file:e,url:t,filename:r,getHeaders:i,signal:a,onProgress:o,expectedSha256:s}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(null!==a&&void 0!==a&&a.aborted)throw f();const l=performance.now(),d=(0,h.mx)(r||(null===e||void 0===e?void 0:e.name)||t);if((null===e||void 0===e?void 0:e.size)>h.Z6)throw new Error("USD layer exceeds the 64 MiB qualification limit");const c="",u=await fetch("".concat(c,"/usd-round2/lightusd/runtime.json"),{signal:a,credentials:"same-origin",cache:"no-store"});if(!u.ok)throw new Error("The isolated LightUSD experiment runtime is not installed");const p=await u.json();if(1!==p.version||"lightusd-next-loaded-layer"!==p.reader||"1.0.0-rc4"!==p.readerVersion||1!==p.loadedLayerApi||"string"!==typeof p.revision||!p.revision)throw new Error("The isolated LightUSD runtime manifest is unsupported");const v=new URL("".concat(c.replace(/\/$/,""),"/"),window.location.origin),g=w(new URL(p.worker,v).href);null===o||void 0===o||o("download");const y=performance.now(),x=e?await e.arrayBuffer():await(0,h.HX)(await fetch(w(t),{signal:a,credentials:"same-origin",headers:(null===i||void 0===i?void 0:i())||{}}),a);if(x.byteLength>h.Z6)throw new Error("USD layer exceeds the 64 MiB qualification limit");if(null!==a&&void 0!==a&&a.aborted)throw f();const b=performance.now()-y,S=performance.now(),j=void 0===s?null:await(0,m.n)(x,s,"USD layer"),U=void 0===s?0:performance.now()-S;if(null!==a&&void 0!==a&&a.aborted)throw f();return new Promise((e,t)=>{let r,i,s=!1;const c=(n,o)=>{var l;s||(s=!0,clearTimeout(i),null===a||void 0===a||a.removeEventListener("abort",u),null===(l=r)||void 0===l||l.terminate(),n?t(n):e(o))},u=()=>c(f());try{if(r=new Worker(g,{type:"module",name:"simready-lightusd-round2"}),null===a||void 0===a||a.addEventListener("abort",u,{once:!0}),null!==a&&void 0!==a&&a.aborted)return void u();r.onerror=e=>c(new Error(e.message||"LightUSD worker failed")),r.onmessageerror=()=>c(new Error("LightUSD result could not be transferred")),r.onmessage=e=>{let{data:t}=e;"progress"===t.type?null===o||void 0===o||o(t.stage):"error"===t.type?c(new Error(t.message)):"result"===t.type&&(t.result.metrics=(0,n.A)((0,n.A)({},t.result.metrics),{},{downloadMs:b,verificationMs:U,loadMs:performance.now()-l,runtimeWasmBytes:p.wasmBytes,runtimeRevision:p.revision,snapshotCacheHit:!1}),j&&(t.result.metrics.sourceSha256=j),c(null,t.result))},i=setTimeout(()=>c(new Error("LightUSD exceeded the 60 second parse limit")),6e4),r.postMessage({bytes:x,filename:d},[x])}catch(v){c(v)}})}var y=r(6857),x=r(6796),b=r(8573);r(1219);const S=[["reference","Current GLB \xb7 HD reference"],["lightusd-baseline","Original LightUSD"],["lightusd","Optimized LightUSD"],["lightusd-snapshot","LightUSD \xb7 compact snapshot"],["lightusd-parallel","LightUSD \xb7 parallel textures"],["lightusd-packed","LightUSD \xb7 lossless packed textures"],["needle","Needle / OpenUSD \xb7 experimental"],["needle-profile","Needle \xb7 material compatibility USD"],["apple","Apple native USDZ"]],j=e=>Number.isFinite(e)?"".concat((e/1e3).toFixed(2)," s"):"Unmeasured",U=e=>Number.isFinite(e)?"".concat((e/1024/1024).toFixed(2)," MiB"):"Unmeasured";function A(){var e,t,r;const[s,l]=(0,i.useState)(null),[d,c]=(0,i.useState)(null),[p,h]=(0,i.useState)(()=>{const e=new URLSearchParams(window.location.search).get("engine");return S.some(t=>{let[r]=t;return r===e})?e:"reference"}),[m,f]=(0,i.useState)(0),[w,A]=(0,i.useState)(null),[D,M]=(0,i.useState)({}),N="".concat(d,":").concat(p,":").concat(m),L=(0,i.useRef)(N);L.current=N;const R=(0,i.useMemo)(()=>null===s||void 0===s?void 0:s.examples.find(e=>e.id===d),[s,d]),E=(0,i.useMemo)(()=>"needle-profile"===p&&R?(0,n.A)((0,n.A)({},R),{},{needle:R[p]}):R,[p,R]),k=(0,i.useMemo)(()=>{var e;return"lightusd-packed"===p&&null!==R&&void 0!==R&&null!==(e=R[p])&&void 0!==e&&e.source?(0,n.A)((0,n.A)({},R),{},{nativeBaseline:(0,n.A)((0,n.A)({},R.nativeBaseline),R[p].source)}):R},[p,R]);(0,i.useEffect)(()=>{const e=new AbortController;return(0,x._z)("".concat("","/usd-round2/manifest.json"),{signal:e.signal,maxBytes:2097152}).then(e=>(0,b.G)(JSON.parse((new TextDecoder).decode(e)))).then(t=>{var r;if(e.signal.aborted)return;const n=new URLSearchParams(window.location.search).get("example");l(t),c((null===(r=t.examples.find(e=>e.id===n))||void 0===r?void 0:r.id)||t.examples[0].id)}).catch(t=>{e.signal.aborted||A(t.message)}),()=>e.abort()},[]);const T=(0,i.useCallback)((e,t,r)=>{null!==e&&void 0!==e&&e.assetId&&L.current===t&&M(t=>(0,n.A)((0,n.A)({},t),{},{["".concat(e.assetId,":").concat(r)]:(0,n.A)((0,n.A)((0,n.A)({},"loading"===e.status?{}:t["".concat(e.assetId,":").concat(r)]),e),{},{renderer:r},["failed","error","unsupported"].includes(e.status)?{readyMs:void 0,readerMs:void 0,heapBytes:void 0}:{})}))},[]),B=null===R||void 0===R?void 0:R["lightusd-parallel"===p?"lightusd-snapshot":p],P=["lightusd","lightusd-snapshot","lightusd-parallel","lightusd-packed","needle","needle-profile"].includes(p)&&"experimental"!==(null===B||void 0===B?void 0:B.status)&&"ready"!==(null===B||void 0===B?void 0:B.status),C=e=>T(e,N,p),I=R&&(null===(e=D["".concat(R.id,":reference")])||void 0===e?void 0:e.camera);return(0,i.useEffect)(()=>{const e={version:1,assetId:d,mode:p,runKey:N,results:D};return window.__simreadyUsdRound2=e,()=>{window.__simreadyUsdRound2===e&&delete window.__simreadyUsdRound2}},[d,p,N,D]),(0,o.jsxs)("main",{className:"ur2-page",children:[(0,o.jsx)("p",{className:"ur2-eyebrow",children:"SimReady Central \xb7 native USD experiments"}),(0,o.jsx)("h1",{children:"Native USD against our current GLB"}),(0,o.jsx)("p",{children:"Start with the unchanged HD reference, then inspect each native path in this viewport."}),w&&(0,o.jsx)("p",{role:"alert",children:w}),!R&&!w&&(0,o.jsx)("p",{role:"status",children:"Loading experiment manifest\u2026"}),R&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("nav",{className:"ur2-nav","aria-label":"Experiment asset",children:s.examples.map(e=>(0,o.jsx)("button",{"aria-pressed":e.id===d,onClick:()=>(e=>{c(e),h("reference"),f(0);const t=new URL(window.location.href);t.searchParams.set("example",e),window.history.replaceState(null,"",t)})(e.id),children:e.label},e.id))}),(0,o.jsx)("nav",{className:"ur2-nav","aria-label":"Viewer engine",children:S.map(e=>{let[t,r]=e;return(0,o.jsx)("button",{"data-testid":"round2-".concat(t),"aria-pressed":t===p,onClick:()=>{h(t),f(0)},children:r},t)})}),(0,o.jsxs)("div",{className:"ur2-note",children:[R.referenceScope," The review loads one renderer at a time. Switching engines rebuilds that engine\u2019s scene; this is not an instant material-only A/B."]}),p.startsWith("needle")&&(0,o.jsxs)("div",{className:"ur2-note",role:"note",children:[(0,o.jsxs)("strong",{children:["Native SDK visual qualification: ",(null===B||void 0===B||null===(t=B.quality)||void 0===t?void 0:t.status)||"pending","."]}),((null===B||void 0===B||null===(r=B.quality)||void 0===r?void 0:r.issues)||[]).map(e=>(0,o.jsx)("p",{children:e},e)),(0,o.jsx)("p",{children:"Its timing measures the first drawable SDK scene. Missing source materials or meshes invalidate a comparison of faithful opening speed."})]}),(0,o.jsx)("div",{className:"ur2-pane","data-testid":"round2-pane","data-engine":p,children:P?(0,o.jsxs)("div",{className:"ur2-unavailable",role:"status",children:[(0,o.jsx)("strong",{children:"blocked"===(null===B||void 0===B?void 0:B.status)?"Not run":"Preparation in progress"}),(0,o.jsx)("p",{children:(null===B||void 0===B?void 0:B.reason)||"This runtime has not passed its setup and source checks."}),(null===B||void 0===B?void 0:B.proofUrl)&&(0,o.jsx)("a",{href:B.proofUrl,children:"Preparation evidence"})]}):"apple"===p?(0,o.jsx)(u,{asset:R,onTelemetry:C}):p.startsWith("needle")?(0,o.jsx)(v,{asset:E,cameraRecipe:I,onTelemetry:C}):(0,o.jsx)(a.A,{asset:k,mode:p,reader:["lightusd-snapshot","lightusd-parallel","lightusd-packed"].includes(p)?y.readLightUsdSnapshotRound2:"lightusd"===p?g:void 0,cameraRecipe:I,onTelemetry:C})},"".concat(R.id,":").concat(p,":").concat(m)),(0,o.jsxs)("div",{className:"ur2-actions",children:[(0,o.jsx)("button",{onClick:()=>f(e=>e+1),children:"Reload selected engine"}),(0,o.jsxs)("a",{href:R.current.url,download:!0,children:["Download unchanged GLB (",U(R.current.bytes),")"]}),(0,o.jsx)("a",{href:R.nativeBaseline.url,download:!0,children:"Download paired native USD"})]}),(0,o.jsxs)("table",{children:[(0,o.jsx)("thead",{children:(0,o.jsxs)("tr",{children:[(0,o.jsx)("th",{children:"Engine"}),(0,o.jsx)("th",{children:"This visit"}),(0,o.jsx)("th",{children:"Reported readiness"}),(0,o.jsx)("th",{children:"Reader pipeline"}),(0,o.jsx)("th",{children:"Reported reader heap"})]})}),(0,o.jsx)("tbody",{children:S.map(e=>{let[t,r]=e;const n=D["".concat(R.id,":").concat(t)];return(0,o.jsxs)("tr",{children:[(0,o.jsx)("th",{children:r}),(0,o.jsx)("td",{children:(null===n||void 0===n?void 0:n.status)||"Not measured"}),(0,o.jsx)("td",{children:j(null===n||void 0===n?void 0:n.readyMs)}),(0,o.jsx)("td",{children:j(null===n||void 0===n?void 0:n.readerMs)}),(0,o.jsx)("td",{children:U(null===n||void 0===n?void 0:n.heapBytes)})]},t)})})]}),(0,o.jsx)("p",{className:"ur2-note",children:"GLB and LightUSD readiness includes their first completed GPU draw. Apple exposes its model-ready promise; it does not expose that GPU-completion measurement. Reader pipeline includes its download and verification work. Reader heap is not GPU memory. These visit timings include the local preview transport and are not production latency benchmarks. GLB and LightUSD share our white PBR viewport. Needle and Apple have their own renderers; camera, pose, lighting and interaction parity require separate qualification."}),(0,o.jsx)("p",{className:"ur2-note",children:"Apple requires a browser with native HTMLModelElement support. No unsupported engine is substituted with a GLB or still image. These native paths do not establish original NVIDIA MDL execution or RTX path tracing."})]})]})}},6857(e,t,r){r.r(t),r.d(t,{readLightUsdSnapshotRound2:()=>d});var n=r(9379),i=r(9885),a=r(7863);const o=()=>new DOMException("USD load cancelled","AbortError");let s;function l(e){const t=new URL(e,window.location.href);if(t.origin!==window.location.origin)throw new Error("USD review resources must use this origin");return t.href}async function d(){let{file:e,url:t,filename:r,getHeaders:d,signal:c,onProgress:u,expectedSha256:p,snapshotCache:v}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(null!==c&&void 0!==c&&c.aborted)throw o();const h=performance.now(),m=(0,i.mx)(r||(null===e||void 0===e?void 0:e.name)||t);if((null===e||void 0===e?void 0:e.size)>i.Z6)throw new Error("USD layer exceeds the 64 MiB qualification limit");const f="",w="public-central-robot-demo-v1"===(null===v||void 0===v?void 0:v.context)&&!e&&!d&&/^[a-f0-9]{64}$/.test(p||""),g=await function(e,t,r){const n=()=>fetch("".concat(e,"/usd-round2/lightusd/snapshot-v2/runtime.json"),{signal:r?void 0:t,credentials:"same-origin",cache:r?"default":"no-store"}).then(e=>{if(!e.ok)throw new Error("The isolated LightUSD experiment runtime is not installed");return e.json()});return r?(s||(s=n().catch(e=>{throw s=null,e})),s):n()}(f,c,w);if(1!==g.version||"lightusd-next-loaded-layer"!==g.reader||"1.0.0-rc4"!==g.readerVersion||1!==g.loadedLayerApi||1!==g.viewerSnapshotApi||"simready-viewer-snapshot-v2"!==g.variant||"string"!==typeof g.revision||!g.revision)throw new Error("The isolated LightUSD runtime manifest is unsupported");const y=new URL("".concat(f.replace(/\/$/,""),"/"),window.location.origin),x=l(new URL(g.worker,y).href),b=w?JSON.stringify([v.context,l(t),p,g.revision,x]):null,S=(0,i.yM)(b);if(null!==c&&void 0!==c&&c.aborted)throw o();var j;if(S)return S.metrics=(0,n.A)((0,n.A)({},S.metrics),{},{snapshotCacheSourceWorkerMs:null===(j=S.metrics)||void 0===j?void 0:j.workerMs,runtimeMs:0,physicsMs:0,opinionMs:0,geometryMs:0,workerMs:0,wasmHeapBytes:0,downloadMs:0,verificationMs:0,snapshotCacheHit:!0,loadMs:performance.now()-h}),S;null===u||void 0===u||u("download");const U=performance.now(),A=e?await e.arrayBuffer():await(0,i.HX)(await fetch(l(t),{signal:c,credentials:"same-origin",headers:(null===d||void 0===d?void 0:d())||{}}),c);if(A.byteLength>i.Z6)throw new Error("USD layer exceeds the 64 MiB qualification limit");if(null!==c&&void 0!==c&&c.aborted)throw o();const D=performance.now()-U,M=performance.now(),N=void 0===p?null:await(0,a.n)(A,p,"USD layer"),L=void 0===p?0:performance.now()-M;if(null!==c&&void 0!==c&&c.aborted)throw o();return new Promise((e,t)=>{let r,a,s=!1;const l=(n,i)=>{var o;s||(s=!0,clearTimeout(a),null===c||void 0===c||c.removeEventListener("abort",d),null===(o=r)||void 0===o||o.terminate(),n?t(n):e(i))},d=()=>l(o());try{if(r=new Worker(x,{type:"module",name:"simready-lightusd-snapshot-round2"}),null===c||void 0===c||c.addEventListener("abort",d,{once:!0}),null!==c&&void 0!==c&&c.aborted)return void d();r.onerror=e=>l(new Error(e.message||"LightUSD worker failed")),r.onmessageerror=()=>l(new Error("LightUSD result could not be transferred")),r.onmessage=e=>{let{data:t}=e;if("progress"===t.type)null===u||void 0===u||u(t.stage);else if("error"===t.type)l(new Error(t.message));else if("result"===t.type){if(t.result.metrics=(0,n.A)((0,n.A)({},t.result.metrics),{},{downloadMs:D,verificationMs:L,loadMs:performance.now()-h,runtimeWasmBytes:g.wasmBytes,runtimeRevision:g.revision,snapshotCacheHit:!1}),N&&(t.result.metrics.sourceSha256=N),b)try{(0,i.eH)(b,t.result)}catch(r){}l(null,t.result)}},a=setTimeout(()=>l(new Error("LightUSD exceeded the 60 second parse limit")),6e4),r.postMessage({bytes:A,filename:m},[A])}catch(p){l(p)}})}}}]);
 
 
services/explorer/dist/static/js/53.865cff8c.chunk.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkdeepsearch_ui=self.webpackChunkdeepsearch_ui||[]).push([[53],{1053(e,r,t){t.r(r),t.d(r,{RenderPass:()=>a});var s=t(9435),l=t(3521);class a extends l.o{constructor(e,r){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;super(),this.scene=e,this.camera=r,this.overrideMaterial=t,this.clearColor=l,this.clearAlpha=a,this.clear=!0,this.clearDepth=!1,this.needsSwap=!1,this.isRenderPass=!0,this._oldClearColor=new s.Q1f}render(e,r,t){const s=e.autoClear;let l,a;e.autoClear=!1,null!==this.overrideMaterial&&(a=this.scene.overrideMaterial,this.scene.overrideMaterial=this.overrideMaterial),null!==this.clearColor&&(e.getClearColor(this._oldClearColor),e.setClearColor(this.clearColor,e.getClearAlpha())),null!==this.clearAlpha&&(l=e.getClearAlpha(),e.setClearAlpha(this.clearAlpha)),1==this.clearDepth&&e.clearDepth(),e.setRenderTarget(this.renderToScreen?null:t),!0===this.clear&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),e.render(this.scene,this.camera),null!==this.clearColor&&e.setClearColor(this._oldClearColor),null!==this.clearAlpha&&e.setClearAlpha(l),null!==this.overrideMaterial&&(this.scene.overrideMaterial=a),e.autoClear=s}}},3521(e,r,t){t.d(r,{F:()=>o,o:()=>l});var s=t(9435);class l{constructor(){this.isPass=!0,this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!1}setSize(){}render(){console.error("THREE.Pass: .render() must be implemented in derived pass.")}dispose(){}}const a=new s.qUd(-1,1,1,-1,0,1);class i extends s.LoY{constructor(){super(),this.setAttribute("position",new s.qtW([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new s.qtW([0,2,0,0,2,0],2))}}const h=new i;class o{constructor(e){this._mesh=new s.eaF(h,e)}dispose(){this._mesh.geometry.dispose()}render(e){e.render(this._mesh,a)}get material(){return this._mesh.material}set material(e){this._mesh.material=e}}}}]);
 
 
services/explorer/dist/static/js/583.b4f476c9.chunk.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkdeepsearch_ui=self.webpackChunkdeepsearch_ui||[]).push([[583],{7583(t,e,i){i.r(e),i.d(e,{OrbitControls:()=>v});var s=i(9435);const o={type:"change"},n={type:"start"},h={type:"end"},a=new s.RlV,r=new s.Zcv,l=Math.cos(70*s.cj9.DEG2RAD),c=new s.Pq0,p=2*Math.PI,d=-1,_=0,u=1,m=2,y=3,b=4,g=5,P=6,E=1e-6;class v extends s.H2z{constructor(t){super(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:null),this.state=d,this.target=new s.Pq0,this.cursor=new s.Pq0,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.keyRotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:s.kBv.ROTATE,MIDDLE:s.kBv.DOLLY,RIGHT:s.kBv.PAN},this.touches={ONE:s.wtR.ROTATE,TWO:s.wtR.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._cursorStyle="auto",this._domElementKeyEvents=null,this._lastPosition=new s.Pq0,this._lastQuaternion=new s.PTz,this._lastTargetPosition=new s.Pq0,this._quat=(new s.PTz).setFromUnitVectors(t.up,new s.Pq0(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new s.YHV,this._sphericalDelta=new s.YHV,this._scale=1,this._panOffset=new s.Pq0,this._rotateStart=new s.I9Y,this._rotateEnd=new s.I9Y,this._rotateDelta=new s.I9Y,this._panStart=new s.I9Y,this._panEnd=new s.I9Y,this._panDelta=new s.I9Y,this._dollyStart=new s.I9Y,this._dollyEnd=new s.I9Y,this._dollyDelta=new s.I9Y,this._dollyDirection=new s.Pq0,this._mouse=new s.I9Y,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=f.bind(this),this._onPointerDown=D.bind(this),this._onPointerUp=S.bind(this),this._onContextMenu=x.bind(this),this._onMouseWheel=T.bind(this),this._onKeyDown=j.bind(this),this._onTouchStart=R.bind(this),this._onTouchMove=k.bind(this),this._onMouseDown=w.bind(this),this._onMouseMove=M.bind(this),this._interceptControlDown=L.bind(this),this._interceptControlUp=Y.bind(this),null!==this.domElement&&this.connect(this.domElement),this.update()}set cursorStyle(t){this._cursorStyle=t,this.domElement.style.cursor="grab"===t?"grab":"auto"}get cursorStyle(){return this._cursorStyle}connect(t){super.connect(t),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointercancel",this._onPointerUp),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.addEventListener("wheel",this._onMouseWheel,{passive:!1});this.domElement.getRootNode().addEventListener("keydown",this._interceptControlDown,{passive:!0,capture:!0}),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.ownerDocument.removeEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerUp),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.stopListenToKeyEvents();this.domElement.getRootNode().removeEventListener("keydown",this._interceptControlDown,{capture:!0}),this.domElement.style.touchAction="auto"}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(t){t.addEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=t}stopListenToKeyEvents(){null!==this._domElementKeyEvents&&(this._domElementKeyEvents.removeEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=null)}saveState(){this.target0.copy(this.target),this.position0.copy(this.object.position),this.zoom0=this.object.zoom}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(o),this.update(),this.state=d}pan(t,e){this._pan(t,e),this.update()}dollyIn(t){this._dollyIn(t),this.update()}dollyOut(t){this._dollyOut(t),this.update()}rotateLeft(t){this._rotateLeft(t),this.update()}rotateUp(t){this._rotateUp(t),this.update()}update(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;const e=this.object.position;c.copy(e).sub(this.target),c.applyQuaternion(this._quat),this._spherical.setFromVector3(c),this.autoRotate&&this.state===d&&this._rotateLeft(this._getAutoRotationAngle(t)),this.enableDamping?(this._spherical.theta+=this._sphericalDelta.theta*this.dampingFactor,this._spherical.phi+=this._sphericalDelta.phi*this.dampingFactor):(this._spherical.theta+=this._sphericalDelta.theta,this._spherical.phi+=this._sphericalDelta.phi);let i=this.minAzimuthAngle,n=this.maxAzimuthAngle;isFinite(i)&&isFinite(n)&&(i<-Math.PI?i+=p:i>Math.PI&&(i-=p),n<-Math.PI?n+=p:n>Math.PI&&(n-=p),this._spherical.theta=i<=n?Math.max(i,Math.min(n,this._spherical.theta)):this._spherical.theta>(i+n)/2?Math.max(i,this._spherical.theta):Math.min(n,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),!0===this.enableDamping?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let h=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{const t=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),h=t!=this._spherical.radius}if(c.setFromSpherical(this._spherical),c.applyQuaternion(this._quatInverse),e.copy(this.target).add(c),this.object.lookAt(this.target),!0===this.enableDamping?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let t=null;if(this.object.isPerspectiveCamera){const e=c.length();t=this._clampDistance(e*this._scale);const i=e-t;this.object.position.addScaledVector(this._dollyDirection,i),this.object.updateMatrixWorld(),h=!!i}else if(this.object.isOrthographicCamera){const e=new s.Pq0(this._mouse.x,this._mouse.y,0);e.unproject(this.object);const i=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),h=i!==this.object.zoom;const o=new s.Pq0(this._mouse.x,this._mouse.y,0);o.unproject(this.object),this.object.position.sub(o).add(e),this.object.updateMatrixWorld(),t=c.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),this.zoomToCursor=!1;null!==t&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(t).add(this.object.position):(a.origin.copy(this.object.position),a.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(a.direction))<l?this.object.lookAt(this.target):(r.setFromNormalAndCoplanarPoint(this.object.up,this.target),a.intersectPlane(r,this.target))))}else if(this.object.isOrthographicCamera){const t=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),t!==this.object.zoom&&(this.object.updateProjectionMatrix(),h=!0)}return this._scale=1,this._performCursorZoom=!1,!!(h||this._lastPosition.distanceToSquared(this.object.position)>E||8*(1-this._lastQuaternion.dot(this.object.quaternion))>E||this._lastTargetPosition.distanceToSquared(this.target)>E)&&(this.dispatchEvent(o),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0)}_getAutoRotationAngle(t){return null!==t?p/60*this.autoRotateSpeed*t:p/60/60*this.autoRotateSpeed}_getZoomScale(t){const e=Math.abs(.01*t);return Math.pow(.95,this.zoomSpeed*e)}_rotateLeft(t){this._sphericalDelta.theta-=t}_rotateUp(t){this._sphericalDelta.phi-=t}_panLeft(t,e){c.setFromMatrixColumn(e,0),c.multiplyScalar(-t),this._panOffset.add(c)}_panUp(t,e){!0===this.screenSpacePanning?c.setFromMatrixColumn(e,1):(c.setFromMatrixColumn(e,0),c.crossVectors(this.object.up,c)),c.multiplyScalar(t),this._panOffset.add(c)}_pan(t,e){const i=this.domElement;if(this.object.isPerspectiveCamera){const s=this.object.position;c.copy(s).sub(this.target);let o=c.length();o*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*t*o/i.clientHeight,this.object.matrix),this._panUp(2*e*o/i.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(t*(this.object.right-this.object.left)/this.object.zoom/i.clientWidth,this.object.matrix),this._panUp(e*(this.object.top-this.object.bottom)/this.object.zoom/i.clientHeight,this.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),this.enablePan=!1)}_dollyOut(t){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=t:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_dollyIn(t){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=t:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_updateZoomParameters(t,e){if(!this.zoomToCursor)return;this._performCursorZoom=!0;const i=this.domElement.getBoundingClientRect(),s=t-i.left,o=e-i.top,n=i.width,h=i.height;this._mouse.x=s/n*2-1,this._mouse.y=-o/h*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(t){return Math.max(this.minDistance,Math.min(this.maxDistance,t))}_handleMouseDownRotate(t){this._rotateStart.set(t.clientX,t.clientY)}_handleMouseDownDolly(t){this._updateZoomParameters(t.clientX,t.clientX),this._dollyStart.set(t.clientX,t.clientY)}_handleMouseDownPan(t){this._panStart.set(t.clientX,t.clientY)}_handleMouseMoveRotate(t){this._rotateEnd.set(t.clientX,t.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const e=this.domElement;this._rotateLeft(p*this._rotateDelta.x/e.clientHeight),this._rotateUp(p*this._rotateDelta.y/e.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(t){this._dollyEnd.set(t.clientX,t.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(t){this._panEnd.set(t.clientX,t.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(t){this._updateZoomParameters(t.clientX,t.clientY),t.deltaY<0?this._dollyIn(this._getZoomScale(t.deltaY)):t.deltaY>0&&this._dollyOut(this._getZoomScale(t.deltaY)),this.update()}_handleKeyDown(t){let e=!1;switch(t.code){case this.keys.UP:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateUp(p*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),e=!0;break;case this.keys.BOTTOM:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateUp(-p*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),e=!0;break;case this.keys.LEFT:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateLeft(p*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),e=!0;break;case this.keys.RIGHT:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateLeft(-p*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),e=!0}e&&(t.preventDefault(),this.update())}_handleTouchStartRotate(t){if(1===this._pointers.length)this._rotateStart.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),i=.5*(t.pageX+e.x),s=.5*(t.pageY+e.y);this._rotateStart.set(i,s)}}_handleTouchStartPan(t){if(1===this._pointers.length)this._panStart.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),i=.5*(t.pageX+e.x),s=.5*(t.pageY+e.y);this._panStart.set(i,s)}}_handleTouchStartDolly(t){const e=this._getSecondPointerPosition(t),i=t.pageX-e.x,s=t.pageY-e.y,o=Math.sqrt(i*i+s*s);this._dollyStart.set(0,o)}_handleTouchStartDollyPan(t){this.enableZoom&&this._handleTouchStartDolly(t),this.enablePan&&this._handleTouchStartPan(t)}_handleTouchStartDollyRotate(t){this.enableZoom&&this._handleTouchStartDolly(t),this.enableRotate&&this._handleTouchStartRotate(t)}_handleTouchMoveRotate(t){if(1==this._pointers.length)this._rotateEnd.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),i=.5*(t.pageX+e.x),s=.5*(t.pageY+e.y);this._rotateEnd.set(i,s)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const e=this.domElement;this._rotateLeft(p*this._rotateDelta.x/e.clientHeight),this._rotateUp(p*this._rotateDelta.y/e.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(t){if(1===this._pointers.length)this._panEnd.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),i=.5*(t.pageX+e.x),s=.5*(t.pageY+e.y);this._panEnd.set(i,s)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(t){const e=this._getSecondPointerPosition(t),i=t.pageX-e.x,s=t.pageY-e.y,o=Math.sqrt(i*i+s*s);this._dollyEnd.set(0,o),this._dollyDelta.set(0,Math.pow(this._dollyEnd.y/this._dollyStart.y,this.zoomSpeed)),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);const n=.5*(t.pageX+e.x),h=.5*(t.pageY+e.y);this._updateZoomParameters(n,h)}_handleTouchMoveDollyPan(t){this.enableZoom&&this._handleTouchMoveDolly(t),this.enablePan&&this._handleTouchMovePan(t)}_handleTouchMoveDollyRotate(t){this.enableZoom&&this._handleTouchMoveDolly(t),this.enableRotate&&this._handleTouchMoveRotate(t)}_addPointer(t){this._pointers.push(t.pointerId)}_removePointer(t){delete this._pointerPositions[t.pointerId];for(let e=0;e<this._pointers.length;e++)if(this._pointers[e]==t.pointerId)return void this._pointers.splice(e,1)}_isTrackingPointer(t){for(let e=0;e<this._pointers.length;e++)if(this._pointers[e]==t.pointerId)return!0;return!1}_trackPointer(t){let e=this._pointerPositions[t.pointerId];void 0===e&&(e=new s.I9Y,this._pointerPositions[t.pointerId]=e),e.set(t.pageX,t.pageY)}_getSecondPointerPosition(t){const e=t.pointerId===this._pointers[0]?this._pointers[1]:this._pointers[0];return this._pointerPositions[e]}_customWheelEvent(t){const e=t.deltaMode,i={clientX:t.clientX,clientY:t.clientY,deltaY:t.deltaY};switch(e){case 1:i.deltaY*=16;break;case 2:i.deltaY*=100}return t.ctrlKey&&!this._controlActive&&(i.deltaY*=10),i}}function D(t){!1!==this.enabled&&(0===this._pointers.length&&(this.domElement.setPointerCapture(t.pointerId),this.domElement.ownerDocument.addEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.addEventListener("pointerup",this._onPointerUp)),this._isTrackingPointer(t)||(this._addPointer(t),"touch"===t.pointerType?this._onTouchStart(t):this._onMouseDown(t),"grab"===this._cursorStyle&&(this.domElement.style.cursor="grabbing")))}function f(t){!1!==this.enabled&&("touch"===t.pointerType?this._onTouchMove(t):this._onMouseMove(t))}function S(t){switch(this._removePointer(t),this._pointers.length){case 0:this.domElement.releasePointerCapture(t.pointerId),this.domElement.ownerDocument.removeEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this._onPointerUp),this.dispatchEvent(h),this.state=d,"grab"===this._cursorStyle&&(this.domElement.style.cursor="grab");break;case 1:const e=this._pointers[0],i=this._pointerPositions[e];this._onTouchStart({pointerId:e,pageX:i.x,pageY:i.y})}}function w(t){let e;switch(t.button){case 0:e=this.mouseButtons.LEFT;break;case 1:e=this.mouseButtons.MIDDLE;break;case 2:e=this.mouseButtons.RIGHT;break;default:e=-1}switch(e){case s.kBv.DOLLY:if(!1===this.enableZoom)return;this._handleMouseDownDolly(t),this.state=u;break;case s.kBv.ROTATE:if(t.ctrlKey||t.metaKey||t.shiftKey){if(!1===this.enablePan)return;this._handleMouseDownPan(t),this.state=m}else{if(!1===this.enableRotate)return;this._handleMouseDownRotate(t),this.state=_}break;case s.kBv.PAN:if(t.ctrlKey||t.metaKey||t.shiftKey){if(!1===this.enableRotate)return;this._handleMouseDownRotate(t),this.state=_}else{if(!1===this.enablePan)return;this._handleMouseDownPan(t),this.state=m}break;default:this.state=d}this.state!==d&&this.dispatchEvent(n)}function M(t){switch(this.state){case _:if(!1===this.enableRotate)return;this._handleMouseMoveRotate(t);break;case u:if(!1===this.enableZoom)return;this._handleMouseMoveDolly(t);break;case m:if(!1===this.enablePan)return;this._handleMouseMovePan(t)}}function T(t){!1!==this.enabled&&!1!==this.enableZoom&&this.state===d&&(t.preventDefault(),this.dispatchEvent(n),this._handleMouseWheel(this._customWheelEvent(t)),this.dispatchEvent(h))}function j(t){!1!==this.enabled&&this._handleKeyDown(t)}function R(t){switch(this._trackPointer(t),this._pointers.length){case 1:switch(this.touches.ONE){case s.wtR.ROTATE:if(!1===this.enableRotate)return;this._handleTouchStartRotate(t),this.state=y;break;case s.wtR.PAN:if(!1===this.enablePan)return;this._handleTouchStartPan(t),this.state=b;break;default:this.state=d}break;case 2:switch(this.touches.TWO){case s.wtR.DOLLY_PAN:if(!1===this.enableZoom&&!1===this.enablePan)return;this._handleTouchStartDollyPan(t),this.state=g;break;case s.wtR.DOLLY_ROTATE:if(!1===this.enableZoom&&!1===this.enableRotate)return;this._handleTouchStartDollyRotate(t),this.state=P;break;default:this.state=d}break;default:this.state=d}this.state!==d&&this.dispatchEvent(n)}function k(t){switch(this._trackPointer(t),this.state){case y:if(!1===this.enableRotate)return;this._handleTouchMoveRotate(t),this.update();break;case b:if(!1===this.enablePan)return;this._handleTouchMovePan(t),this.update();break;case g:if(!1===this.enableZoom&&!1===this.enablePan)return;this._handleTouchMoveDollyPan(t),this.update();break;case P:if(!1===this.enableZoom&&!1===this.enableRotate)return;this._handleTouchMoveDollyRotate(t),this.update();break;default:this.state=d}}function x(t){!1!==this.enabled&&t.preventDefault()}function L(t){if("Control"===t.key){this._controlActive=!0;this.domElement.getRootNode().addEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0})}}function Y(t){if("Control"===t.key){this._controlActive=!1;this.domElement.getRootNode().removeEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0})}}}}]);
 
 
services/explorer/dist/static/js/601.858a3d83.chunk.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkdeepsearch_ui=self.webpackChunkdeepsearch_ui||[]).push([[601],{8601(e,t,o){o.r(t),o.d(t,{loadUsd:()=>L});var a=o(3986),r=o(9379),n=o(9435),s=o(9408);const c=["warnings"];var i=class extends Error{constructor(e,t){let{url:o,status:a,cause:r}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};super(t,void 0===r?void 0:{cause:r}),this.name="UsdLoadError",this.code=e,void 0!==o&&(this.url=o),void 0!==a&&(this.status=a)}},l=/out of memory|memory allocation|allocation failed|memory size exceeded|could not allocate/i,u=/^(huggingface\.co|hf\.co)\.?$/,d=/\.hf\.co\.?$/,m=/^\/(?:(datasets|spaces)\/)?([\w.-]+)\/([\w.-]+)\/resolve\/([^/]*)/,p=/^\/api\/(datasets|models|spaces)\/([\w.-]+)\/([\w.-]+)\/tree\/([^/]*)/,h=new Set(["api","oauth","settings","login","logout","join","docs","models","datasets","spaces","organizations","new","pricing","blog","papers","posts","collections","notifications","search","chat","learn","tasks","enterprise","billing","static-proxy","avatars","front"]);function f(e){if(!u.test(e.hostname)||"https:"!==e.protocol)return null;const t=e.pathname.match(m);return!t||!t[1]&&h.has(t[2].toLowerCase())?e.pathname.match(p):t}function g(e){var t;const o=f(e);return o&&"".concat(null!==(t=o[1])&&void 0!==t?t:"models","/").concat(o[2],"/").concat(o[3])}function v(e){try{const t=new URL(e);return/^hf\.co\.?$/.test(t.hostname)?(t.hostname="huggingface.co",t.href):e}catch(t){return e}}function w(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];const a=function(e,t,o){if(e===t)return null;let a;try{a=new URL(e)}catch(c){return"not a URL: ".concat(e)}const r=new URL(t);if("http:"!==a.protocol&&"https:"!==a.protocol)return"only http(s) URLs are fetched: ".concat(e);if(a.username||a.password)return"URLs with credentials are not fetched: ".concat(e);const n=u.test(a.hostname);if(n&&!function(e){const t=f(e);if(!t)return!1;const o=t[0].length-t[4].length,a=e.pathname.slice(0,o)+e.pathname.slice(t[0].length);return!/%2f|%5c/i.test(a)&&!/%5c/i.test(t[4])}(a))return"only Hub repo files are fetched from ".concat(a.host,": ").concat(e);const s=u.test(r.hostname)&&(n||d.test(a.hostname))&&"https:"===a.protocol;return a.origin===r.origin||s||o.includes("*")||o.includes(a.origin)?null:"its origin is not in allowedOrigins: ".concat(e)}(v(e),v(t),o);return a?{refused:a}:{credentials:b(new URL(v(e)),new URL(v(t)))?"same-origin":"omit",referrerPolicy:"no-referrer"}}function b(e,t){if(e.origin!==t.origin)return!1;const o=g(t);return!u.test(t.hostname)||!!o&&g(e)===o}var y={diffuseColor:{map:"map",chunk:"map_fragment",from:"diffuseColor *= sampledDiffuseColor;",to:e=>"diffuseColor.rgb *= ".concat(e("sampledDiffuseColor",3),";")},emissiveColor:{map:"emissiveMap",chunk:"emissivemap_fragment",from:"totalEmissiveRadiance *= emissiveColor.rgb;",to:e=>"totalEmissiveRadiance *= ".concat(e("emissiveColor",3),";")},roughness:{map:"roughnessMap",chunk:"roughnessmap_fragment",from:"texelRoughness.g",to:e=>e("texelRoughness",1)},metallic:{map:"metalnessMap",chunk:"metalnessmap_fragment",from:"texelMetalness.b",to:e=>e("texelMetalness",1)},occlusion:{map:"aoMap",chunk:"aomap_fragment",from:"texture2D( aoMap, vAoMapUv ).r",to:e=>e("texture2D( aoMap, vAoMapUv )",1)},opacity:{map:"alphaMap",chunk:"alphamap_fragment",from:"texture2D( alphaMap, vAlphaMapUv ).g",to:e=>e("texture2D( alphaMap, vAlphaMapUv )",1)},normal:{map:"normalMap",chunk:"normal_fragment_maps",from:"texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0",to:e=>e("texture2D( normalMap, vNormalMapUv )",3)}};function x(e){return e.userData.patches={},e.onBeforeCompile=t=>{for(const[o,a]of Object.entries(e.userData.patches)){const{chunk:e,from:r,to:n}=y[o],c=s.ShaderChunk[e].replaceAll(r,n((e,t)=>k(e,t,a)));t.fragmentShader=t.fragmentShader.replace("#include <".concat(e,">"),c)}},e.customProgramCacheKey=()=>JSON.stringify(e.userData.patches),e}function k(e,t,o){const a=e=>e.toFixed(6),r=["r","g","b","a"].includes(o.channel)?o.channel:"rgb";if("rgb"===r){const r="(".concat(e,".rgb * vec3(").concat(o.scale.slice(0,3).map(a),") + vec3(").concat(o.bias.slice(0,3).map(a),"))");return 3===t?r:"".concat(r,".r")}const n="rgba".indexOf(r),s="(".concat(e,".").concat(r," * ").concat(a(o.scale[n])," + ").concat(a(o.bias[n]),")");return 3===t?"vec3".concat(s):s}function M(e,t,o,a){const r=e.userData.usd;let s=!1;for(const[c,i]of Object.entries(r.maps)){const l=y[c];if(i.path!==t||!l)continue;const u=a(i,S(i,o),Object.hasOwn(r.uvChannels,i.uvSet)?r.uvChannels[i.uvSet]:0);e[l.map]=u,e.userData.patches[c]={channel:i.channel,scale:i.scale,bias:i.bias},"diffuseColor"===c&&e.color.setRGB(...r.color,n.Zr2),"roughness"===c&&(e.roughness=1),"metallic"===c&&(e.metalness=1),"emissiveColor"===c&&e.emissive.setRGB(1,1,1),"opacity"===c&&(e.opacity=1),s=!0}s&&(e.needsUpdate=!0)}function S(e,t){return"raw"===e.colorSpace?n.jf0:"sRGB"===e.colorSpace||t?n.er$:n.jf0}var U=Symbol("show"),A={layers:[0,.4],compose:[.4,.5],geometry:[.5,.8],textures:[.8,1]};var C=null;function R(e){var t;return null!==(t=e)&&void 0!==t||(e=new URL("../wasm/usd_wasm_bg.wasm","https://invalid.example/explicit-runtime-required/")),C||(C=async function(e){var t;const o=await fetch(e);if(!o.ok)throw new Error("HTTP ".concat(o.status));return null!==(t=o.headers.get("content-type"))&&void 0!==t&&t.startsWith("application/wasm")?WebAssembly.compileStreaming(o):WebAssembly.compile(await o.arrayBuffer())}(e).catch(t=>{throw C=null,new i("worker","could not load the WASM module from ".concat(e,": ").concat(t.message),{url:String(e),cause:t})})),C}async function L(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{maxTextureSize:o,textures:s,maxConcurrentFetches:d,maxLayerBytes:m,maxTextureBytes:p,maxLayers:h,maxInstances:f,maxTriangles:g,allowedOrigins:b}=t,{onProgress:y,signal:k,headers:S}=t;if(void 0!==d&&!(Number.isInteger(d)&&d>0))throw new RangeError("maxConcurrentFetches must be a positive integer, got ".concat(d));const C=()=>new i("aborted","the load was aborted",{url:e,cause:null===k||void 0===k?void 0:k.reason});if(null!==k&&void 0!==k&&k.aborted)throw C();if("undefined"===typeof Worker)throw new i("worker","loading needs Web Workers: call loadUsd in a browser",{url:e});const L=v(new URL(e,location.href).href),O=await new Promise((e,o)=>{const a=()=>o(C());null===k||void 0===k||k.addEventListener("abort",a,{once:!0}),R(t.wasmUrl).then(e,o).finally(()=>null===k||void 0===k?void 0:k.removeEventListener("abort",a))});if(null!==k&&void 0!==k&&k.aborted)throw C();let D;try{D=t.workerUrl?new Worker(t.workerUrl,{type:"module"}):new Worker(new URL("./worker.js","https://invalid.example/explicit-runtime-required/"),{type:"module"})}catch(Q){throw new i("worker","could not start the worker: ".concat(Q.message),{url:t.workerUrl&&String(t.workerUrl),cause:Q})}const E=new AbortController,j=new Map;let P,_,G,W;const F=new Promise((e,t)=>(P=e,_=t)),H=new Promise((e,t)=>(G=e,W=t));H.catch(()=>{});const N={textures:0,failed:0};let Z=0,I=null,z=!1,$=!1;const q=e=>{if(!$){$=!0,D.terminate(),E.abort();for(const e of j.values())e.cancel().catch(()=>{});j.clear(),null===k||void 0===k||k.removeEventListener("abort",Y),_(e),e?W(e):G((0,r.A)({},N))}};function J(e){I&&!z&&I.dispose(),q(e)}function Y(){J(C())}null===k||void 0===k||k.addEventListener("abort",Y,{once:!0}),D.onmessage=e=>{let{data:o}=e;var s;if($)null===(s=o.bitmap)||void 0===s||s.close();else try{!function(e){var o,s;switch(e.type){case"fetch":!async function(e){let{id:o,url:a}=e;try{var n,s,c;const e=w(a,L,b);if(e.refused)throw new TypeError("request refused: ".concat(e.refused));const i=await async function(e,t,o,a){var n;let s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};if(!("same-origin"===o.credentials&&a&&Object.keys(a).length>0))return e(t,(0,r.A)((0,r.A)({},o),s));if(u.test(new URL(t).hostname))return e(t,(0,r.A)((0,r.A)({},o),{},{headers:a},s));const c=await e(t,(0,r.A)((0,r.A)({},o),{},{headers:a,redirect:"manual"},s));return"opaqueredirect"===c.type||c.status>=300&&c.status<400?(null===(n=c.body)||void 0===n||n.cancel().catch(()=>{}),e(t,(0,r.A)((0,r.A)({},o),{},{credentials:"omit"},s))):c}(t.fetch,a,e,S,{signal:E.signal});if($)return null===(n=i.body)||void 0===n?void 0:n.cancel().catch(()=>{});i.ok?j.set(o,(null!==(s=i.body)&&void 0!==s?s:(new Blob).stream()).getReader()):null===(c=i.body)||void 0===c||c.cancel(),D.postMessage({type:"fetched",id:o,ok:i.ok,status:i.status})}catch(Q){D.postMessage({type:"fetched",id:o,error:String(Q)})}}(e);break;case"pull":!async function(e){try{const{done:t,value:o}=await j.get(e).read();if(t)return j.delete(e),D.postMessage({type:"chunk",id:e,done:t});const a=o.byteLength===o.buffer.byteLength?o:o.slice();D.postMessage({type:"chunk",id:e,chunk:a},[a.buffer])}catch(Q){j.delete(e),D.postMessage({type:"chunk",id:e,error:String(Q)})}}(e.id);break;case"cancel":null===(o=j.get(e.id))||void 0===o||o.cancel(),j.delete(e.id);break;case"progress":Z=Math.max(Z,function(e){const[t,o]=A[e.stage];return t+(o-t)*("layers"===e.stage?e.loaded/(e.total+1):"compose"===e.stage?.5:e.total?e.loaded/e.total:1)}(e.progress)),null===y||void 0===y||y((0,r.A)((0,r.A)({},e.progress),{},{fraction:Z}));break;case"meta":if(null!==k&&void 0!==k&&k.aborted)return Y();I=function(e){const t={upAxis:e.upAxis,metersPerUnit:e.metersPerUnit,meshes:0,geometries:0,triangles:0,materials:e.materials.length,materialKinds:B(e.materials,e=>e.kind),warnings:[...e.warnings]},o=new n.YJl;o.name="usd","Z"===e.upAxis&&(o.rotation.x=-Math.PI/2);o.scale.setScalar(e.metersPerUnit||1);const a=e.materials.map(e=>function(e){const t=e=>(new n.Q1f).setRGB(e[0],e[1],e[2],n.Zr2),o=new n._4j({color:t(e.color),emissive:t(e.emissive),roughness:e.roughness,metalness:e.metallic,opacity:e.opacity}),a="opacity"in e.maps;return e.opacityThreshold>0&&(a||e.opacity<1)?o.alphaTest=e.opacityThreshold:(a||e.opacity<1)&&(o.transparent=!0,o.depthWrite=!1),o.name=e.path,o.userData.usd={maps:e.maps,colorPrimvar:e.colorPrimvar,uvChannels:Object.create(null),color:e.color},e.maps.diffuseColor&&o.color.setRGB(.18,.18,.18,n.Zr2),x(o)}(e)),r=new Map,s=(e,t,o,s)=>{const c=Object.keys(s).length>0;if(!t&&!o&&!c)return a[e];const i="".concat(e,"|").concat(t,"|").concat(o,"|").concat(JSON.stringify(s));return r.has(i)||r.set(i,function(e,t){let{doubleSided:o,vertexColors:a,uvChannels:r}=t;const s=e.clone();return s.userData.usd.uvChannels=r,o&&(s.side=n.$EB),a&&(s.vertexColors=!0,s.color.setRGB(1,1,1)),x(s)}(a[e],{doubleSided:t,vertexColors:o,uvChannels:s})),r.get(i)},c=[],i=new Map;for(const n of e.instances)i.has(n.geometry)||i.set(n.geometry,[]),i.get(n.geometry).push(n);const l=[],u=(e,r,u)=>{if(!r)return;const d=function(e,t){const o=new n.LoY;o.setAttribute("position",new n.THS(t.positions,3)),o.setAttribute("normal",new n.THS(t.normals,3)),t.uvs.forEach((e,t)=>o.setAttribute(t?"uv".concat(t):"uv",new n.THS(e,2))),t.colors&&o.setAttribute("color",new n.THS(t.colors,3));o.setIndex(new n.THS(t.indices,1));for(const a of[o.index,...Object.values(o.attributes)])a.onUpload(T);o.boundingBox=(new n.NRn).setFromArray(e.bounds),o.boundingSphere=o.boundingBox.getBoundingSphere(new n.iyt),e.groups.length>1&&e.groups.forEach((e,t)=>{let[a,r]=e;return o.addGroup(a,r,t)});return o}(r,u);c.push(d),t.geometries++;const m=r.groups.reduce((e,t)=>{let[,o]=t;return e+o/3},0),p=new Map;for(const o of null!==(h=i.get(e))&&void 0!==h?h:[]){var h;const e=r.groups.map(e=>{let[,,t]=e;const n=void 0!==t&&Object.hasOwn(o.subsets,t)?o.subsets[t]:o.material,c=a[n].userData.usd,i=Object.create(null);for(const o of Object.values(c.maps)){const e=r.uvSets.indexOf(o.uvSet);e>0&&(i[o.uvSet]=e)}return s(n,o.doubleSided,r.hasColors&&!!c.colorPrimvar,i)}),n=e.map(e=>e.uuid).join();p.has(n)||p.set(n,{material:e.length>1?e:e[0],list:[]}),p.get(n).list.push(o),t.meshes++,t.triangles+=m}for(const{material:t,list:a}of p.values()){if(a.length>4){const e=new n.ZLX(d,t,a.length);e.name=a[0].path;const r=new n.kn4;a.forEach((t,o)=>e.setMatrixAt(o,r.fromArray(t.matrix))),e.computeBoundingBox(),e.computeBoundingSphere(),l.push(e),o.add(e);continue}for(const e of a){const a=new n.eaF(d,t);a.name=e.path,a.matrix.fromArray(e.matrix),a.matrixAutoUpdate=!1,a.matrixWorldNeedsUpdate=!0,o.add(a)}}},d=()=>[...a,...r.values()],m=new Map,p=(e,t,o)=>{const a=new n.gPd(t);a.flipY=!1,a.anisotropy=4,m.set(e,a);const r=(e,t,o)=>function(e,t,o,a){const r=e.clone();r.colorSpace=o,r.channel=a;const s=e=>{var t;return null!==(t={mirror:n.kTW,clamp:n.ghU,black:n.ghU}[e])&&void 0!==t?t:n.GJx};r.wrapS=s(t.wrapS),r.wrapT=s(t.wrapT);const[c,i]=t.uvScale,[l,u]=t.uvTranslation,d=t.uvRotation*Math.PI/180;if(1!==c||1!==i||0!==l||0!==u||0!==d){const e=Math.cos(d),t=Math.sin(d);r.matrixAutoUpdate=!1,r.matrix.set(e*c,-t*i,l,t*c,e*i,u,0,0,1)}return r.needsUpdate=!0,r}(a,e,t,o);for(const n of d())M(n,e,o,r)},h=()=>{c.forEach(e=>e.dispose()),l.forEach(e=>e.dispose());for(const a of d()){for(const t of["map","emissiveMap","roughnessMap","metalnessMap","aoMap","alphaMap","normalMap"]){var e;null===(e=a[t])||void 0===e||e.dispose()}a.dispose()}for(const a of m.values()){var t,o;null===(t=a.image)||void 0===t||null===(o=t.close)||void 0===o||o.call(t),a.dispose()}};return{root:o,info:t,addGeometry:u,applyTexture:p,textureFailed:e=>d().forEach(t=>function(e,t){for(const[o,a]of Object.entries(e.userData.usd.maps)){if(a.path!==t||!a.value)continue;const[r,s,c]=a.value;"diffuseColor"===o&&e.color.setRGB(r,s,c,n.Zr2),"emissiveColor"===o&&e.emissive.setRGB(r,s,c,n.Zr2),"roughness"===o&&(e.roughness=r),"metallic"===o&&(e.metalness=r),"opacity"===o&&(e.opacity=r)}}(t,e)),dispose:h}}(e.meta),null===(s=t[U])||void 0===s||s.call(t,I.root,e.meta);break;case"geometry":I.addGeometry(e.index,e.meta,e.arrays);break;case"scene":{const t=e.stats,{warnings:o}=t,r=(0,a.A)(t,c);I.info.stats=r,I.info.warnings.push(...o),z=!0,P(I);break}case"texture":e.bitmap?(I.applyTexture(e.path,e.bitmap,e.color),N.textures++):(I.textureFailed(e.path),N.failed++,I.info.warnings.push({code:"texture-failed",message:e.error,path:e.path}));break;case"done":q();break;case"error":J(new i(e.code,e.message,{url:e.url,status:e.status}))}}(o)}catch(Q){var l;null===(l=o.bitmap)||void 0===l||l.close(),J(new i("worker","could not build the scene: ".concat((null===Q||void 0===Q?void 0:Q.message)||Q),{url:L,cause:Q}))}},D.onerror=e=>{var t;null===(t=e.preventDefault)||void 0===t||t.call(e);const o=e.message||"the worker failed";l.test(o)?J(new i("compose","scene too large to load: ran out of memory: ".concat(o),{url:L})):J(new i("worker",o,{url:L}))},D.postMessage({url:L,wasmModule:O,maxTextureSize:o,textures:s,maxConcurrentFetches:d,maxLayerBytes:m,maxTextureBytes:p,maxLayers:h,maxInstances:f,maxTriangles:g,allowedOrigins:b,headers:S,proxyFetch:!!t.fetch});const K=await F;return{root:K.root,info:K.info,complete:H,dispose(){q(C()),K.dispose()}}}function T(){this.array=null}function B(e,t){const o={};for(const a of e)o[t(a)]=(o[t(a)]||0)+1;return o}}}]);
 
 
services/explorer/dist/static/js/626.dd61d770.chunk.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkdeepsearch_ui=self.webpackChunkdeepsearch_ui||[]).push([[626],{3626(e,t,i){i.r(t),i.d(t,{default:()=>f});var r=i(9379),l=i(5043),n=i(3139),a=i(5597),o=i(1137),s=i(3333),d=i(3283),c=i(9885),u=i(9207),p=i(5260),h=i(579);const m=e=>{const t=new URL(e,window.location.href);if(t.origin!==window.location.origin||!["http:","https:"].includes(t.protocol)||!/\.(usd|usda|usdc)$/i.test(t.pathname))throw new Error("Native examples need a USD layer served by this preview.");return t.href};function x(e){let{joint:t,store:i,onMove:r}=e;const n=(0,l.useRef)(null);(0,l.useEffect)(()=>{const e=e=>{n.current&&void 0!==(null===e||void 0===e?void 0:e[t.id])&&(n.current.value=String(e[t.id]))};return e(i.live()),i.onFrame(e)},[i,t.id]);const a=t.label||t.name||t.id,o=t.continuous?" \xb7 Continuous rotation; preview one turn":"";return(0,h.jsxs)("label",{children:[a,o," ",(0,h.jsx)("input",{ref:n,"aria-label":"Joint ".concat(a).concat(o),type:"range",min:"0",max:"1",step:"0.01",defaultValue:i.homes[t.id],onChange:e=>{r(),i.setTarget(t.id,Number(e.target.value),"instant")}})]})}function f(){var e,t,i;const[f,v]=(0,l.useState)(null),[g,b]=(0,l.useState)([]),[w,y]=(0,l.useState)(null),[S,j]=(0,l.useState)("Choose a USD layer"),[U,k]=(0,l.useState)(null),[D,C]=(0,l.useState)([]),[A,R]=(0,l.useState)(null),[M,T]=(0,l.useState)(!1),[L,E]=(0,l.useState)(()=>{const e=new URLSearchParams(window.location.search).get("example");return!e||e.startsWith("fixture-")}),P=(0,l.useRef)(0),q=(0,l.useRef)(null),F=function(e){var t;let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g;null===(t=q.current)||void 0===t||t.abort(),R(null),k(null),T(!1),j("Loading USD"),v((0,r.A)((0,r.A)({},e),{},{key:++P.current,textureFiles:i}))};(0,l.useEffect)(()=>{const e=new AbortController,t=new URLSearchParams(window.location.search).get("example");return"fixture-usdc"!==t&&"fixture-usda"!==t||F({url:"".concat("","/native-usd-fixtures/articulated.").concat(t.slice(8))},[]),fetch("".concat("","/native-usd-examples/manifest.json"),{signal:e.signal,cache:"no-store"}).then(async e=>{if(!e.ok)throw new Error("The real USD example catalog is not installed in this preview.");const t=await e.json();if(1!==t.version||!Array.isArray(t.examples)||!t.examples.length)throw new Error("The native USD example catalog is empty.");const i=new Set;return t.examples.map(e=>{if(!e.id||!e.label||!e.usdUrl||i.has(e.id))throw new Error("The native USD example catalog is invalid.");return i.add(e.id),(0,r.A)((0,r.A)({},e),{},{usdUrl:m(e.usdUrl)})})}).then(i=>{if(!e.signal.aborted&&(C(i),0===P.current&&(!t||!t.startsWith("fixture-")))){const e=t?i.find(e=>e.id===t):i[0];if(!e)throw new Error("This native USD example is not in the catalog.");F({url:e.usdUrl,example:e},[])}}).catch(i=>{e.signal.aborted||0!==P.current||!t||t.startsWith("fixture-")||R(i.message)}),()=>e.abort()},[]);(0,l.useEffect)(()=>{if(!f)return;const e=new AbortController;return q.current=e,y(null),k(null),j("Loading USD"),(0,c.Me)((0,r.A)((0,r.A)({},f),{},{signal:e.signal,onProgress:j})).then(t=>{var i,l;if(e.signal.aborted)return;const n=(0,u.nativeUsdArticulation)(t);["robot","furniture"].includes(null===(i=f.example)||void 0===i?void 0:i.presentationKind)&&(n.articulation.kind=f.example.presentationKind);const a=(0,s.createJointStore)(n.articulation),o={loadScene:e=>(0,p.createUsdScene)(t,n,(0,r.A)((0,r.A)({},e),{},{textureFiles:f.textureFiles,renderBothSides:!!f.example,baseUrl:f.url?new URL(f.url,window.location.href).href:null})).then(e=>{var t;return null!==(t=f.example)&&void 0!==t&&t.previewMount&&(e.userData.previewMount=f.example.previewMount),e})};y({sourceKey:f.key,usdModel:o,articulation:n.articulation,store:a,clipMeta:null===(l=f.example)||void 0===l?void 0:l.clipMeta,metrics:t.metrics,diagnostics:n.diagnostics}),j("Preparing viewer")}).catch(t=>{e.signal.aborted||(k(t.message),j("Qualification failed"))}),()=>e.abort()},[f]);const N=(null===w||void 0===w?void 0:w.sourceKey)===(null===f||void 0===f?void 0:f.key)?w:null;(0,l.useEffect)(()=>{null!==N&&void 0!==N&&N.store.ids.length&&!(0,o.VN)()&&"1"===new URLSearchParams(window.location.search).get("motion")&&T(!0)},[N]);const W=(0,n.A)({resetKey:null===f||void 0===f?void 0:f.key,modelKey:null===f||void 0===f?void 0:f.key,active:!0,imageTab:!1,model:N,modelPending:!!f&&!N&&!U,onModelUnavailable:e=>{k((null===e||void 0===e?void 0:e.message)||"USD viewer could not render this asset"),y(null),j("Qualification failed")},workspace:{portal:!0,lazyShell:!0,onEscape:"self",labels:{back:"USD qualification",dock:"Dock viewer"}}});(0,l.useEffect)(()=>{N&&W.viewerApi&&j("Ready")},[N,W.viewerApi]),(0,l.useEffect)(()=>{if(!M||"Ready"!==S||null===N||void 0===N||!N.store.ids.length)return;const{store:e,articulation:t}=N,i="robot"===t.kind;let r,l=!1,n=e.get().motionSeq,a=!1;const o=()=>{if(a=!0,i){const i=e.live(),l=Math.max(0,...e.joints.map(t=>Math.abs(i[t.id]-e.homes[t.id])>1e-6?(0,d.R0)(t,i[t.id],e.homes[t.id],!0):0));e.playSequence(),r=setTimeout(o,1e3*(l+(0,d.Gc)(t,N.clipMeta).total+.4))}else l=!l,e.setAll(l),r=setTimeout(o,4e3);n=e.get().motionSeq,a=!1};o();const s=e.subscribe(e=>{a||e.motionSeq===n||T(!1)});return()=>{clearTimeout(r),s()}},[M,S,N]);const z=()=>{T(!1),M&&N&&N.store.setPose((0,r.A)({},N.store.live()),"instant")};return(0,h.jsxs)("main",{style:{maxWidth:1200,margin:"0 auto",padding:24,color:"#e4e4e4",fontFamily:"sans-serif"},children:[(0,h.jsx)("h1",{style:{fontSize:24},children:"Native USD viewer \u2014 interactive examples"}),(0,h.jsx)("p",{children:"Load a prepared USD layer directly in the browser. Joint motion, colliders and the Pose workspace use the existing viewer controls."}),D.length>0&&(0,h.jsx)("nav",{"aria-label":"Native USD examples",style:{display:"flex",flexWrap:"wrap",gap:10,margin:"20px 0"},children:D.map(e=>{var t,i;return(0,h.jsx)("button",{"aria-pressed":(null===f||void 0===f||null===(t=f.example)||void 0===t?void 0:t.id)===e.id,onClick:()=>(e=>{R(null),F({url:e.usdUrl,example:e},[]);const t=new URL(window.location.href);t.searchParams.set("example",e.id),window.history.replaceState(null,"",t)})(e),style:{padding:"10px 16px",borderRadius:8,border:"1px solid #666",background:(null===f||void 0===f||null===(i=f.example)||void 0===i?void 0:i.id)===e.id?"#493125":"#252525",color:"inherit",cursor:"pointer"},children:e.label},e.id)})}),A&&(0,h.jsx)("p",{role:"alert",style:{color:"#ffb4aa"},children:A}),(null===f||void 0===f?void 0:f.example)&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)("h2",{style:{fontSize:18},children:f.example.label}),(0,h.jsx)("p",{children:f.example.description}),(0,h.jsx)("p",{style:{color:"#bbb"},children:f.example.qualitySummary}),(0,h.jsx)("p",{style:{color:"#bbb"},children:"Surfaces are shown from both sides, matching Central\u2019s GLB preview; source surface settings are preserved in the USD download."}),f.example.previewMount&&(0,h.jsx)("p",{style:{color:"#bbb"},children:"A preview mounting stand supports the source robot; its original cables are retained."}),(0,h.jsxs)("p",{children:[(0,h.jsx)("a",{href:f.url,download:!0,children:"Download displayed USD"})," \xb7 ",(0,h.jsx)("a",{href:"?glbEvaluation=1&example=".concat(encodeURIComponent(f.example.id)),children:"Compare with the HD GLB example"})]})]}),(0,h.jsxs)("details",{open:L,onToggle:e=>E(e.currentTarget.open),style:{margin:"14px 0"},children:[(0,h.jsx)("summary",{style:{cursor:"pointer",color:"#bbb"},children:"Load another USD"}),(0,h.jsxs)("div",{style:{display:"flex",gap:12,flexWrap:"wrap",alignItems:"center",marginTop:12},children:[(0,h.jsx)("button",{onClick:()=>F({url:"".concat("","/native-usd-fixtures/articulated.usda")}),children:"Load articulated USDA fixture"}),(0,h.jsx)("button",{onClick:()=>F({url:"".concat("","/native-usd-fixtures/articulated.usdc")}),children:"Load articulated USDC fixture"}),(0,h.jsxs)("label",{children:["USD layer ",(0,h.jsx)("input",{type:"file",accept:".usd,.usda,.usdc",onChange:e=>{const t=e.target.files[0];e.target.value="",t&&F({file:t})}})]}),(0,h.jsxs)("label",{children:["Texture files ",(0,h.jsx)("input",{type:"file",multiple:!0,accept:".png,.jpg,.jpeg,.webp,.avif,.ktx2",onChange:e=>{const t=Array.from(e.target.files);b(t),f&&F(f,t)}})]}),f&&(0,h.jsx)("button",{onClick:()=>{var e;null===(e=q.current)||void 0===e||e.abort(),v(null),y(null),T(!1),k(null),j("Cancelled")},children:"Cancel / unload"})]})]}),(0,h.jsx)("p",{role:"status","data-testid":"usd-status",children:S}),U&&(0,h.jsxs)("p",{role:"alert",style:{color:"#ffb4aa"},children:[U," ",(0,h.jsx)("button",{onClick:()=>F(f,f.textureFiles),children:"Retry USD"})]}),(0,h.jsx)("div",{ref:W.regionRef,tabIndex:-1,style:{height:"min(65vh, 640px)",minHeight:340,position:"relative",border:"1px solid #555",borderRadius:12,overflow:"hidden"},children:(0,h.jsx)(a.z_,{ctl:W,fileName:(null===f||void 0===f||null===(e=f.file)||void 0===e?void 0:e.name)||(null===f||void 0===f||null===(t=f.url)||void 0===t?void 0:t.split("/").pop())||"USD",renderPicture:()=>null})}),N&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)("p",{"data-testid":"usd-metrics","data-load-metrics":JSON.stringify(N.metrics),children:["Reader: ",N.metrics.reader," ",N.metrics.readerVersion,"; meshes: ",N.metrics.meshCount,"; joints: ",N.store.ids.length,"; USD reader time: ",Math.round(N.metrics.loadMs)," ms; WASM heap: ",(N.metrics.wasmHeapBytes/1024/1024).toFixed(1)," MiB."]}),(0,h.jsxs)("fieldset",{disabled:"Ready"!==S,style:{display:"flex",gap:12,flexWrap:"wrap",border:0,padding:0,margin:0},children:[N.store.ids.length>0&&(0,h.jsx)("button",{"aria-pressed":M&&"Ready"===S,disabled:(0,o.VN)(),onClick:()=>M?z():T(!0),style:{padding:"8px 14px",border:"1px solid #777",borderRadius:6,cursor:"pointer"},children:M&&"Ready"===S?"Pause joint motion":"Play joint motion"}),N.store.ids.length>0&&(0,h.jsxs)(h.Fragment,{children:["robot"===N.articulation.kind?(0,h.jsx)("button",{onClick:()=>{T(!1),N.store.playSequence()},children:"Move all"}):(0,h.jsx)("button",{onClick:()=>{T(!1),N.store.setAll(!0)},children:"Open all"}),(0,h.jsx)("button",{onClick:()=>{T(!1),N.store.setAll(!1)},children:"robot"===N.articulation.kind?"Home":"Close all"})]}),(0,h.jsx)("button",{onClick:()=>N.store.setColliders(!N.store.get().colliders),children:"Toggle colliders"}),N.store.joints.map(e=>(0,h.jsx)(x,{joint:e,store:N.store,onMove:z},e.id))]}),N.diagnostics.length>0&&(0,h.jsxs)("details",{style:{marginTop:16,fontSize:13,color:"#aaa"},children:[(0,h.jsx)("summary",{children:"USD inspection details"}),(0,h.jsx)("pre",{style:{whiteSpace:"pre-wrap"},children:JSON.stringify(N.diagnostics,null,2)})]})]}),(0,h.jsx)("p",{style:{color:"#aaa",fontSize:13},children:"These examples read USD geometry and joints in the browser. Browser materials use prepared PreviewSurface graphs; full MDL optical equivalence and production Safari/iOS qualification remain separate checks."}),(0,h.jsx)(a.Vo,{ctl:W,fileName:(null===f||void 0===f||null===(i=f.file)||void 0===i?void 0:i.name)||"USD qualification",topOffset:0})]})}}}]);
 
 
services/explorer/dist/static/js/66.89eda487.chunk.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkdeepsearch_ui=self.webpackChunkdeepsearch_ui||[]).push([[66],{1066(b,a,c){c.r(a),c.d(a,{MeshoptDecoder:()=>e});var e=function(){var b=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),a=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if("object"!==typeof WebAssembly)return{supported:!1};var c,e=WebAssembly.validate(b)?i("b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuixkbbebeeddddilve9Weeeviebeoweuec:q:6dkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WbwY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbDl79IV9Rbqq:Ctklbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk:183lYud97dur978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxavaialfgmar9Rgoad;8qbbcj;abad9Uc;WFbGcjdadca0EhPdndndnadTmbaoadfhscbhzinaeaz9nmdamax9RaD6miabazad2fhHaxaDfhOaPaeaz9RazaPfae6EgAcsfgocl4cifcd4hCavcj;cbfaoc9WGgXcetfhQavcj;cbfaXci2fhLavcj;cbfaXfhKcbhYaoc;ab6h8AincbhodnawTmbaxaYcd4fRbbhokaocFeGhEcbh3avcj;cbfh5indndndndnaEa3cet4ciGgoc9:fPdebdkamaO9RaX6mwavcj;cbfa3aX2faOaX;8qbbaOaAfhOxdkavcj;cbfa3aX2fcbaX;8kbxekamaO9RaC6moaoclVcbawEhraOaCfhocbhidna8Ambamao9Rc;Gb6mbcbhlina5alfhidndndndndndnaOalco4fRbbgqciGarfPDbedibledibkaipxbbbbbbbbbbbbbbbbpklbxlkaiaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiaopbbbpklbaoczfhoxekaiaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcd4ciGarfPDbedibledibkaiczfpxbbbbbbbbbbbbbbbbpklbxlkaiczfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiczfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiczfaopbbbpklbaoczfhoxekaiczfaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcl4ciGarfPDbedibledibkaicafpxbbbbbbbbbbbbbbbbpklbxlkaicafaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaicafaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaicafaopbbbpklbaoczfhoxekaicafaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqco4arfPDbedibledibkaic8Wfpxbbbbbbbbbbbbbbbbpklbxlkaic8Wfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaoclffaqc:q:yjjbfRbbfhoxikaic8Wfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaocwffaqc:q:yjjbfRbbfhoxdkaic8Wfaopbbbpklbaoczfhoxekaic8WfaopbbdaoRbbgicitc:q1jjbfpbibaic:q:yjjbfRbbgipsaoRbegqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaiaocdffaqc:q:yjjbfRbbfhokalc;abfhialcjefaX0meaihlamao9Rc;Fb0mbkkdnaiaX9pmbaici4hlinamao9RcK6mwa5aifhqdndndndndndnaOaico4fRbbalcoG4ciGarfPDbedibledibkaqpxbbbbbbbbbbbbbbbbpkbbxlkaqaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaoclffahc:q:yjjbfRbbfhoxikaqaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaocwffahc:q:yjjbfRbbfhoxdkaqaopbbbpkbbaoczfhoxekaqaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpkbbaaaocdffahc:q:yjjbfRbbfhokalcdfhlaiczfgiaX6mbkkaohOaoTmoka5aXfh5a3cefg3cl9hmbkdndndndnawTmbasaYcd4fRbbglciGPlbedwbkaXTmdavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep9Ta8Epxeeeeeeeeeeeeeeeeg8Fp9op9Hp9rg8Eagp9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Ug8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9AbbbaladfhlaoczfgoaX6mbxikkaXTmeavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep:nea8Epxebebebebebebebebg8Fp9op:bep9rg8Eagp:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeg8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9AbbbaladfhlaoczfgoaX6mbxdkkaXTmbcbhocbalcl4gl9Rc8FGhiavcjdfaYfhravaYfpbdbh8Finaravcj;cbfaofpblbggaKaofpblbg8JpmbzeHdOiAlCvXoQrLg8KaQaofpblbg8LaLaofpblbg8MpmbzeHdOiAlCvXoQrLg8NpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ea8Fp9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Fa8Ka8NpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwKDYq8AkEx3m5P8Es8Fgga8La8MpmwKDYq8AkEx3m5P8Es8Fg8JpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9AbbbaradfhraoczfgoaX6mbkkaYclfgYad6mbkaHavcjdfaAad2;8qbbavavcjdfaAcufad2fad;8qbbaAazfhzc9:hoaOhxaOmbxlkkaeTmbaDalfhrcbhocuhlinaralaD9RglfaD6mdaPaeao9RaoaPfae6Eaofgoae6mbkaial9Rhxkcbc99amax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaokwbz:bjjjbk:TseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiaPfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaOfhiazaOfhxxekaxcbalRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhAascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhzaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkaOhlxekalcefhlkaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDclfaO87ebaDcdfaz87ebxekabarcdtfgDaABdbaDcwfaOBdbaDclfazBdbkavc;abfaocitfgDazBdbaDaABdlavaicdtfaABdbavc;abfaocefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfaocdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:2Pliur97eue978Jjjjjbc8W9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalaeSmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskaipxFubbFubbFubbFubbgxpklbdnalTmbcbhvabhdinadczfgmampbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraipblbaDaopmlvorxmPsCXQL358E8Fp9op;6eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgPp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;MeawaqawaPp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oaoarpmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalaeSmbaiczfpxbbbbbbbbbbbbbbbbgopklbaiaopklbaiabalcitfgdaeciGglcitgv;8qbbaiaxpkladnalTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraipblaaDaopmlvorxmPsCXQL358E8Fp9op;6eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgPp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;MeawaqawaPp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oaoarpmbezHdiOAlvCXorQLp9qpklbkadaiav;8qbbkk:Iwllue97euo978Jjjjjbca9Rhidnaec98GglTmbcbhvabhoinaocKfpx:ji:1S:ji:1S:ji:1S:ji:1SaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkpxibbbibbbibbbibbbp9qgxp;6ep;Negmaxaxp:1ep;7egxaxp;KearaDpmbediwDqkzHOAKY8AEgxczp:Reczp:Sep;6egrarp;Meaxczp:Sep;6egDaDp;Meaqczp:Reczp:Sep;6egqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jep;Mepxbbn0bbn0bbn0bbn0gxp;KepxFFbbFFbbFFbbFFbbgPp9oamaDp;Meaxp;Keczp:Rep9qgDamarp;Meaxp;KeaPp9oamaqp;Meaxp;Keczp:Rep9qgxpmwDKYqk8AExm35Ps8E8Fgrp5eakclp:RegmpEi:T:j83ibawarp5bampEd:T:j83ibaocwfaDaxpmbezHdiOAlvCXorQLgxp5eampEe:T:j83ibaoaxp5bampEb:T:j83ibaocafhoavclfgval6mbkkdnalaeSmbaiczfpxbbbbbbbbbbbbbbbbgmpklbaiampklbaiabalcitfgoaeciGgvcitgw;8qbbdnavTmbaipx:ji:1S:ji:1S:ji:1S:ji:1SaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkpxibbbibbbibbbibbbp9qgxp;6ep;Negmaxaxp:1ep;7egxaxp;KearaDpmbediwDqkzHOAKY8AEgxczp:Reczp:Sep;6egrarp;Meaxczp:Sep;6egDaDp;Meaqczp:Reczp:Sep;6egqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jep;Mepxbbn0bbn0bbn0bbn0gxp;KepxFFbbFFbbFFbbFFbbgPp9oamaDp;Meaxp;Keczp:Rep9qgDamarp;Meaxp;KeaPp9oamaqp;Meaxp;Keczp:Rep9qgxpmwDKYqk8AExm35Ps8E8Fgrp5eakclp:RegmpEi:T:j83iKaiarp5bampEd:T:j83izaiaDaxpmbezHdiOAlvCXorQLgxp5eampEe:T:j83iwaiaxp5bampEb:T:j83ibkaoaiaw;8qbbkk;uddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnavalSmbaic8WfpxbbbbbbbbbbbbbbbbgopklbaicafaopklbaiczfaopklbaiaopklbaiabavcdtfgdalciGgecdtgv;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkadaiav;8qbbkk:CPvdue97euw97eu8Jjjjjbc8W9Rhiaec98Ghldndnadcl9hmbaipxbbbbbbbbbbbbbbbbgvpklbdnalTmbcbhoabhdinadpbbbhradpxbbuJbbuJbbuJbbuJaipblbarcKp:Tep9qgwcep:Seawp9qgDcdp:SeaDp9qgDclp:SeaDp9qgqp;6ep;NegDarcwp:RecKp:SegkarpxFbbbFbbbFbbbFbbbgxp9ogmp:Uep;6ep;Mepxbbn0bbn0bbn0bbn0gPp;Kecwp:RepxbFbbbFbbbFbbbFbbp9oaDamakp:Xearczp:RecKp:Segrp:Uep;6ep;MeaPp;Keaxp9op9qaDamakarp:Uep:Xep;6ep;MeaPp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qaDaqawcep:Rep9oawpxebbbebbbebbbebbbp9op9qp;6ep;MeaPp;KecKp:Rep9qpkbbadczfhdaoclfgoal6mbkkalaeSmeaiavpklaaicafabalcdtfgdaeciGglcdtgo;8qbbaiavpklbdnalTmbaipblahraipxbbuJbbuJbbuJbbuJaipblbarcKp:Tep9qgwcep:Seawp9qgDcdp:SeaDp9qgDclp:SeaDp9qgqp;6ep;NegDarcwp:RecKp:SegkarpxFbbbFbbbFbbbFbbbgxp9ogmp:Uep;6ep;Mepxbbn0bbn0bbn0bbn0gPp;Kecwp:RepxbFbbbFbbbFbbbFbbp9oaDamakp:Xearczp:RecKp:Segrp:Uep;6ep;MeaPp;Keaxp9op9qaDamakarp:Uep:Xep;6ep;MeaPp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qaDaqawcep:Rep9oawpxebbbebbbebbbebbbp9op9qp;6ep;MeaPp;KecKp:Rep9qpklakadaicafao;8qbbskaipxbbbbbbbbbbbbbbbbgvpklbdnalTmbcbhoabhdinadczfgspxbFu9hbFu9hbFu9hbFu9hadpbbbgDaspbbbgPpmlvorxmPsCXQL358E8Fgmczp:Teaipblbp9qgrcep:Searp9qgwcdp:Seawp9qgwclp:Seawp9qgwcwp:Seawp9qgqp;6ep;NegwaDaPpmbediwDqkzHOAKY8AEgDpxFFbbFFbbFFbbFFbbgPp9ogkaDczp:Segxp:Ueamczp:Reczp:Segmp:Xep;6ep;Mepxbbn0bbn0bbn0bbn0gDp;KeaPp9oawakaxamp:Uep:Xep;6ep;MeaDp;Keczp:Rep9qgxawaqarcep:Rep9oarpxebbbebbbebbbebbbp9op9qp;6ep;MeaDp;Keczp:Reawamakp:Uep;6ep;MeaDp;KeaPp9op9qgrpmwDKYqk8AExm35Ps8E8FpkbbadaxarpmbezHdiOAlvCXorQLpkbbadcafhdaoclfgoal6mbkkalaeSmbaiczfpxbbbbbbbbbbbbbbbbgrpklbaiarpklbaiabalcitfgdaeciGglcitgo;8qbbaiavpkladnalTmbaipxbFu9hbFu9hbFu9hbFu9haipblbgDaipblzgPpmlvorxmPsCXQL358E8Fgmczp:Teaipblap9qgrcep:Searp9qgwcdp:Seawp9qgwclp:Seawp9qgwcwp:Seawp9qgqp;6ep;NegwaDaPpmbediwDqkzHOAKY8AEgDpxFFbbFFbbFFbbFFbbgPp9ogkaDczp:Segxp:Ueamczp:Reczp:Segmp:Xep;6ep;Mepxbbn0bbn0bbn0bbn0gDp;KeaPp9oawakaxamp:Uep:Xep;6ep;MeaDp;Keczp:Rep9qgxawaqarcep:Rep9oarpxebbbebbbebbbebbbp9op9qp;6ep;MeaDp;Keczp:Reawamakp:Uep;6ep;MeaDp;KeaPp9op9qgrpmwDKYqk8AExm35Ps8E8FpklzaiaxarpmbezHdiOAlvCXorQLpklbkadaiao;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz:Dbb"):i("b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuixkbeeeddddillviebeoweuec:W:Odkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WboY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbrl79IV9Rbwq;lZkdbk;jYi5ud9:du8Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxcj;abad9Uc;WFbGcjdadca0EhmaialfgPar9Rgoadfhsavaoadz:jjjjbgzceVhHcbhOdndninaeaO9nmeaPax9RaD6mdamaeaO9RaOamfgoae6EgAcsfglc9WGhCabaOad2fhXaAcethQaxaDfhiaOaeaoaeao6E9RhLalcl4cifcd4hKazcj;cbfaAfhYcbh8AazcjdfhEaHh3incbhodnawTmbaxa8Acd4fRbbhokaocFeGh5cbh8Eazcj;cbfhqinaih8Fdndndndna5a8Ecet4ciGgoc9:fPdebdkaPa8F9RaA6mrazcj;cbfa8EaA2fa8FaAz:jjjjb8Aa8FaAfhixdkazcj;cbfa8EaA2fcbaAz:kjjjb8Aa8FhixekaPa8F9RaK6mva8FaKfhidnaCTmbaPai9RcK6mbaocdtc:q1jjbfcj1jjbawEhaczhrcbhlinargoc9Wfghaqfhrdndndndndndnaaa8Fahco4fRbbalcoG4ciGcdtfydbPDbedvivvvlvkar9cb83bbarcwf9cb83bbxlkarcbaiRbdai8Xbb9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbaqaofgrcGfag9c8F1:NghcKtc8F91aicdfa8J9c8N1:Nfg8KRbbG86bbarcVfcba8KahcjeGcr4fghRbbag9cjjjjjl:dg8J9qE86bbarc7fcbaha8J9c8L1:NfghRbbag9cjjjjjd:dg8J9qE86bbarctfcbaha8J9c8K1:NfghRbbag9cjjjjje:dg8J9qE86bbarc91fcbaha8J9c8J1:NfghRbbag9cjjjj;ab:dg8J9qE86bbarc4fcbaha8J9cg1:NfghRbbag9cjjjja:dg8J9qE86bbarc93fcbaha8J9ch1:NfghRbbag9cjjjjz:dgg9qE86bbarc94fcbahag9ca1:NfghRbbai8Xbe9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbarc95fag9c8F1:NgicKtc8F91aha8J9c8N1:NfghRbbG86bbarc96fcbahaicjeGcr4fgiRbbag9cjjjjjl:dg8J9qE86bbarc97fcbaia8J9c8L1:NfgiRbbag9cjjjjjd:dg8J9qE86bbarc98fcbaia8J9c8K1:NfgiRbbag9cjjjjje:dg8J9qE86bbarc99fcbaia8J9c8J1:NfgiRbbag9cjjjj;ab:dg8J9qE86bbarc9:fcbaia8J9cg1:NfgiRbbag9cjjjja:dg8J9qE86bbarcufcbaia8J9ch1:NfgiRbbag9cjjjjz:dgg9qE86bbaiag9ca1:NfhixikaraiRblaiRbbghco4g8Ka8KciSg8KE86bbaqaofgrcGfaiclfa8Kfg8KRbbahcl4ciGg8La8LciSg8LE86bbarcVfa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc7fa8Ka8Lfg8KRbbahciGghahciSghE86bbarctfa8Kahfg8KRbbaiRbeghco4g8La8LciSg8LE86bbarc91fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc4fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc93fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc94fa8Kahfg8KRbbaiRbdghco4g8La8LciSg8LE86bbarc95fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc96fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc97fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc98fa8KahfghRbbaiRbigico4g8Ka8KciSg8KE86bbarc99faha8KfghRbbaicl4ciGg8Ka8KciSg8KE86bbarc9:faha8KfghRbbaicd4ciGg8Ka8KciSg8KE86bbarcufaha8KfgrRbbaiciGgiaiciSgiE86bbaraifhixdkaraiRbwaiRbbghcl4g8Ka8KcsSg8KE86bbaqaofgrcGfaicwfa8Kfg8KRbbahcsGghahcsSghE86bbarcVfa8KahfghRbbaiRbeg8Kcl4g8La8LcsSg8LE86bbarc7faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarctfaha8KfghRbbaiRbdg8Kcl4g8La8LcsSg8LE86bbarc91faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc4faha8KfghRbbaiRbig8Kcl4g8La8LcsSg8LE86bbarc93faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc94faha8KfghRbbaiRblg8Kcl4g8La8LcsSg8LE86bbarc95faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc96faha8KfghRbbaiRbvg8Kcl4g8La8LcsSg8LE86bbarc97faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc98faha8KfghRbbaiRbog8Kcl4g8La8LcsSg8LE86bbarc99faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc9:faha8KfghRbbaiRbrgicl4g8Ka8KcsSg8KE86bbarcufaha8KfgrRbbaicsGgiaicsSgiE86bbaraifhixekarai8Pbb83bbarcwfaicwf8Pbb83bbaiczfhikdnaoaC9pmbalcdfhlaoczfhraPai9RcL0mekkaoaC6moaimexokaCmva8FTmvkaqaAfhqa8Ecefg8Ecl9hmbkdndndndnawTmbasa8Acd4fRbbgociGPlbedrbkaATmdaza8Afh8Fazcj;cbfhhcbh8EaEhaina8FRbbhraahocbhlinaoahalfRbbgqce4cbaqceG9R7arfgr86bbaoadfhoaAalcefgl9hmbkaacefhaa8Fcefh8FahaAfhha8Ecefg8Ecl9hmbxikkaATmeaza8Afhaazcj;cbfhhcbhoceh8EaYh8FinaEaofhlaa8Vbbhrcbhoinala8FaofRbbcwtahaofRbbgqVc;:FiGce4cbaqceG9R7arfgr87bbaladfhlaLaocefgofmbka8FaQfh8FcdhoaacdfhaahaQfhha8EceGhlcbh8EalmbxdkkaATmbcbaocl49Rh8Eaza8AfRbbhqcwhoa3hlinalRbbaotaqVhqalcefhlaocwfgoca9hmbkcbhhaEh8FaYhainazcj;cbfahfRbbhrcwhoaahlinalRbbaotarVhralaAfhlaocwfgoca9hmbkara8E93aq7hqcbhoa8Fhlinalaqao486bbalcefhlaocwfgoca9hmbka8Fadfh8FaacefhaahcefghaA9hmbkkaEclfhEa3clfh3a8Aclfg8Aad6mbkaXazcjdfaAad2z:jjjjb8AazazcjdfaAcufad2fadz:jjjjb8AaAaOfhOaihxaimbkc9:hoxdkcbc99aPax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaok:XseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:kjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiaPfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaOfhiazaOfhxxekaxcbalRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhAascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhzaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkaOhlxekalcefhlkaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDclfaO87ebaDcdfaz87ebxekabarcdtfgDaABdbaDcwfaOBdbaDclfazBdbkavc;abfaocitfgDazBdbaDaABdlavaicdtfaABdbavc;abfaocefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfaocdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk::ioiue99dud99dud99dnaeTmbcbhiabhlindndnal8Uebgv:YgoJ:ji:1Salcof8UebgrciVgw:Y:vgDNJbbbZJbbb:;avcu9kEMgq:lJbbb9p9DTmbaq:Ohkxekcjjjj94hkkalclf8Uebhvalcdf8UebhxabaiarcefciGfcetfak87ebdndnax:YgqaDNJbbbZJbbb:;axcu9kEMgm:lJbbb9p9DTmbam:Ohxxekcjjjj94hxkabaiarciGfgkcd7cetfax87ebdndnav:YgmaDNJbbbZJbbb:;avcu9kEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkabaiarcufciGfcetfav87ebdndnawaw2:ZgPaPMaoaoN:taqaqN:tamamN:tgoJbbbbaoJbbbb9GE:raDNJbbbZMgD:lJbbb9p9DTmbaD:Ohrxekcjjjj94hrkabakcetfar87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk:Tvirud99eudndnadcl9hmbaeTmeindndnabRbbgiabcefgl8Sbbgvabcdfgo8Sbbgrf9R:YJbbuJabcifgwRbbgdce4adVgDcd4aDVgDcl4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax86bbdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao86bbdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai86bbdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad86bbabclfhbaecufgembxdkkaeTmbindndnab8Vebgiabcdfgl8Uebgvabclfgo8Uebgrf9R:YJbFu9habcofgw8Vebgdce4adVgDcd4aDVgDcl4aDVgDcw4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax87ebdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao87ebdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai87ebdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad87ebabcwfhbaecufgembkkk9teiucbcbyd:K1jjbgeabcifc98GfgbBd:K1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkk81dbcjwk8Kbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbc:Kwkl8WNbb"),p=WebAssembly.instantiate(e,{}).then(function(b){(c=b.instance).exports.__wasm_call_ctors()});function i(b){for(var c=new Uint8Array(b.length),e=0;e<b.length;++e){var p=b.charCodeAt(e);c[e]=p>96?p-97:p>64?p-39:p+4}var i=0;for(e=0;e<b.length;++e)c[i++]=c[e]<60?a[c[e]]:64*(c[e]-60)+c[++e];return c.buffer.slice(0,i)}function g(b,a,c,e,p,i,g){var d=b.exports.sbrk,f=e+3&-4,l=d(f*p),h=d(i.length),o=new Uint8Array(b.exports.memory.buffer);o.set(i,h);var s=a(l,e,p,h,i.length);if(0==s&&g&&g(l,f,p),c.set(o.subarray(l,l+e*p)),d(l-d(0)),0!=s)throw new Error("Malformed buffer data: "+s)}var d={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp",COLOR:"meshopt_decodeFilterColor"},f={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},l=[],h=0;function o(b){var a={object:new Worker(b),pending:0,requests:{}};return a.object.onmessage=function(b){var c=b.data;a.pending-=c.count,a.requests[c.id][c.action](c.value),delete a.requests[c.id]},a}function s(b){var a=b.data;if(!a.id)return self.close();self.ready.then(function(b){try{var c=new Uint8Array(a.count*a.size);g(b,b.exports[a.mode],c,a.count,a.size,a.source,b.exports[a.filter]),self.postMessage({id:a.id,count:a.count,action:"resolve",value:c},[c.buffer])}catch(e){self.postMessage({id:a.id,count:a.count,action:"reject",value:e})}})}return{ready:p,supported:!0,useWorkers:function(b){!function(b){for(var a="self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(e)+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+s.name+";"+g.toString()+s.toString(),c=new Blob([a],{type:"text/javascript"}),p=URL.createObjectURL(c),i=l.length;i<b;++i)l[i]=o(p);for(i=b;i<l.length;++i)l[i].object.postMessage({});l.length=b,URL.revokeObjectURL(p)}(b)},decodeVertexBuffer:function(b,a,e,p,i){g(c,c.exports.meshopt_decodeVertexBuffer,b,a,e,p,c.exports[d[i]])},decodeIndexBuffer:function(b,a,e,p){g(c,c.exports.meshopt_decodeIndexBuffer,b,a,e,p)},decodeIndexSequence:function(b,a,e,p){g(c,c.exports.meshopt_decodeIndexSequence,b,a,e,p)},decodeGltfBuffer:function(b,a,e,p,i,l){g(c,c.exports[f[i]],b,a,e,p,c.exports[d[l]])},decodeGltfBufferAsync:function(b,a,e,i,o){return l.length>0?function(b,a,c,e,p){for(var i=l[0],g=1;g<l.length;++g)l[g].pending<i.pending&&(i=l[g]);return new Promise(function(g,d){var f=new Uint8Array(c),l=++h;i.pending+=b,i.requests[l]={resolve:g,reject:d},i.object.postMessage({id:l,count:b,size:a,source:f,mode:e,filter:p},[f.buffer])})}(b,a,e,f[i],d[o]):p.then(function(){var p=new Uint8Array(b*a);return g(c,c.exports[f[i]],p,b,a,e,c.exports[d[o]]),p})}}}()}}]);
 
 
services/explorer/dist/static/js/672.c00e55f9.chunk.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkdeepsearch_ui=self.webpackChunkdeepsearch_ui||[]).push([[672],{4672(e,r,t){t.d(r,{loadRustRobotUsd:()=>p});var o=t(9379),n=t(7863),a=t(9885),i=t(3333),s=t(3986);const l=["pointCount","faceCount"],c=e=>8*Math.ceil(e/8);const d="2c24c43293ecda70265d3655de31bcd0eef1d214",u="".concat("","/usd-rust/").concat(d),f=()=>new DOMException("USD cancelled","AbortError");function h(e,r){var t,o;if(!(1===(null===e||void 0===e?void 0:e.version)&&"central-rust-usd-pilot-v1"===e.profile||2===(null===e||void 0===e?void 0:e.version)&&"central-rust-usd-split-v2"===e.profile&&!("colliders"in(e.articulation||{})))||e.sourceSha256!==r||"native-usd"!==(null===(t=e.articulation)||void 0===t?void 0:t.source)||"gltf"!==(null===(o=e.articulation)||void 0===o?void 0:o.frame)||!Array.isArray(e.articulation.bodies)||!e.articulation.bodies.length||!Array.isArray(e.articulation.joints)||!e.meshes||!e.materials)throw Error("Prepared USD metadata does not match this asset");const n=new Set(e.articulation.bodies.map(e=>e.id));for(const[a,i]of Object.entries(e.meshes))if(!a.startsWith("/")||"visual"===i.classification&&(!n.has(i.body)||!Number.isSafeInteger(i.triangles)||i.triangles<0))throw Error("Invalid prepared USD body mapping");return e}async function m(e,r){const t=performance.now(),o={},i=e.preparedMetadata;if(!i||i.bytes>33554432)throw Error("Prepared USD joint metadata is unavailable");const s=new URL(i.url,window.location.href);if(s.origin!==window.location.origin)throw Error("USD metadata must use this origin");const l=JSON.stringify(["central-rust-metadata-v1",s.href,i.sha256,e.nativeBaseline.sha256]),c=(0,a.yM)(l);if(c)return{value:h(c,e.nativeBaseline.sha256),cacheHit:!0,metrics:o};const d=await(0,a.HX)(await fetch(s.href,{signal:r,credentials:"same-origin"}),r);if(o.metadataDownloadMs=performance.now()-t,d.byteLength!==i.bytes)throw Error("USD metadata size changed");await(0,n.n)(d,i.sha256,"USD metadata");const u=performance.now(),f=h(JSON.parse((new TextDecoder).decode(d)),e.nativeBaseline.sha256);o.metadataDecodeMs=performance.now()-u;const m=performance.now();return(0,a.eH)(l,f),o.metadataCacheCopyMs=performance.now()-m,{value:f,cacheHit:!1,metrics:o}}async function w(e,r,t,i){const d=e.preparedColliders;if(!d||d.sourceSha256!==e.nativeBaseline.sha256)throw Error("USD collision identity is unavailable");const u=new URL(d.url,window.location.href);if(u.origin!==window.location.origin)throw Error("USD collisions must use this origin");const h=performance.now(),m=await(0,a.HX)(await fetch(u.href,{signal:t,credentials:"same-origin"}),t,64<<20,"USD collision data exceeds its limit");if(m.byteLength!==d.bytes)throw Error("USD collision size changed");if(await(0,n.n)(m,d.sha256,"USD collisions"),null!==t&&void 0!==t&&t.aborted)throw f();const w=performance.now(),p=function(e,r,t){const n=new DataView(e);if(e.byteLength<16||"SRUCOL01"!==(new TextDecoder).decode(new Uint8Array(e,0,8)))throw Error("Invalid USD collision payload");const a=n.getUint32(8,!0);if(a>1048576||16+c(a)>e.byteLength)throw Error("Invalid USD collision header");const i=JSON.parse((new TextDecoder).decode(new Uint8Array(e,16,a)));if(1!==i.version||i.sourceSha256!==r||!Array.isArray(i.shapes)||i.shapes.length>1e4)throw Error("USD collision source identity changed");const d=new Set(t.map(e=>e.id));let u=16+c(a);const f=r=>{if(!Number.isSafeInteger(r)||r<0||u+r>e.byteLength)throw Error("Truncated USD collision payload");const t=u;return u+=r,t},h=i.shapes.map(r=>{let{pointCount:t,faceCount:a}=r,i=(0,s.A)(r,l);if(!d.has(i.body)||!Number.isSafeInteger(t)||t<0||!Number.isSafeInteger(a)||a<0)throw Error("Invalid USD collision shape");const h=new Float64Array(e,f(24*t),3*t),m=[];for(let e=0;e<h.length;e+=3){const r=[h[e],h[e+1],h[e+2]];if(!r.every(Number.isFinite))throw Error("Invalid USD collision coordinates");m.push(r)}const w=[];for(let e=0;e<a;e++){const e=n.getUint32(f(4),!0),r=f(4*e),o=[];for(let a=0;a<e;a++){const e=n.getUint32(r+4*a,!0);if(e>=t)throw Error("Invalid USD collision index");o.push(e)}w.push(o)}return f(c(u)-u),(0,o.A)((0,o.A)({},i),{},{points:m,faces:w})});if(u!==e.byteLength)throw Error("Unexpected USD collision trailing bytes");return h}(m,e.nativeBaseline.sha256,r.bodies);if(p.length!==d.count)throw Error("USD collision count changed");return i.colliderDecodeMs=performance.now()-w,i.colliderLoadMs=performance.now()-h,p}async function p(e,r){const s=performance.now(),l=new URL(e.nativeBaseline.url,window.location.href);if(l.origin!==window.location.origin)throw Error("USD geometry must use this origin");const c=function(e,r){let t=null,o=null,i=!1;const s=()=>new DOMException("USD cancelled","AbortError"),l=()=>{var e;null===(e=o)||void 0===e||e.controller.abort(),o=null},c=()=>{l(),t=null,i=!0};return null===r||void 0===r||r.addEventListener("abort",c,{once:!0}),{cancelPending:l,dispose(){c(),null===r||void 0===r||r.removeEventListener("abort",c)},get retainedBytes(){var e;return(null===(e=t)||void 0===e?void 0:e.byteLength)||0},read(l){if(i||null!==r&&void 0!==r&&r.aborted||null!==l&&void 0!==l&&l.aborted)return Promise.reject(s());if(t)return Promise.resolve(t);if(o)return o.promise;const c={controller:new AbortController};o=c;const d=setTimeout(()=>c.controller.abort(),6e4);return c.promise=(async()=>{try{const o=await(0,a.HX)(await fetch(e.url,{signal:c.controller.signal}),c.controller.signal);if(o.byteLength!==e.bytes)throw Error("USD geometry size changed");if(await(0,n.n)(o,e.sha256,"USD geometry"),c.controller.signal.aborted||null!==r&&void 0!==r&&r.aborted||i)throw s();return t=o,o}finally{clearTimeout(d),o===c&&(o=null)}})(),c.promise.catch(()=>{}),c.promise}}}((0,o.A)((0,o.A)({},e.nativeBaseline),{},{url:l.href}),r);let h,p,g;c.read().then(()=>{h=performance.now()-s}).catch(()=>{});try{[{loadUsd:p},g]=await Promise.all([Promise.all([t.e(816),t.e(27),t.e(601)]).then(t.bind(t,8601)),m(e,r)])}catch(S){throw c.dispose(),S}if(null!==r&&void 0!==r&&r.aborted)throw f();const v=g.value;"robot"===e.nativeBaseline.presentationKind&&(v.articulation.kind="robot");const b=(0,o.A)((0,o.A)({reader:"rust-pilot-v1",readerRevision:d,offlineJointMetadata:!0},g.metrics),{},{splitColliders:2===v.version,metadataCacheHit:g.cacheHit,metadataMs:performance.now()-s,sourceSha256:e.nativeBaseline.sha256});if(2===v.version&&!e.preparedColliders)throw c.dispose(),Error("USD split metadata lacks collision identity");const y=new URL(".",l).href;return{articulation:v.articulation,store:(0,i.createJointStore)(v.articulation),usdModel:{diagnostics:b,dispose:()=>c.dispose(),loadScene:async t=>{let{THREE:n,signal:a,requireColliders:i=!1}=t;const s=performance.now();b.readerPhases={},delete b.firstDrawCpuMs,delete b.firstDrawAt;const d=new AbortController,m=()=>d.abort();for(const e of[r,a])null===e||void 0===e||e.addEventListener("abort",m,{once:!0}),null!==e&&void 0!==e&&e.aborted&&m();null===a||void 0===a||a.addEventListener("abort",c.cancelPending,{once:!0});const g=setTimeout(m,6e4);let U,D;try{let t;const m=()=>(t||(t=w(e,v.articulation,d.signal,b)),t),g=2===v.version&&i?m():Promise.resolve(null);g.catch(()=>{}),U=await p(l.href,{textures:"full",maxTextureSize:4096,maxLayers:1,maxLayerBytes:64<<20,maxTextureBytes:128<<20,maxTriangles:2e6,signal:d.signal,wasmUrl:"".concat(u,"/wasm/usd_wasm_bg.wasm"),workerUrl:"".concat(u,"/src/worker.js"),onProgress:e=>{const r=b.readerPhases||(b.readerPhases={});(r[e.stage]||(r[e.stage]={firstMs:performance.now()-s})).lastMs=performance.now()-s},fetch:async(e,r)=>{const t=new URL(e,l);if(!t.href.startsWith(y)||t.origin!==window.location.origin)throw Error("USD dependency escaped its prepared package");if(t.href!==l.href)return fetch(t.href,r);let o;try{o=await c.read(d.signal)}catch(S){throw D=S,S}return b.sourceFetchVerifiedMs=h,b.retainedVerifiedSourceBytes=c.retainedBytes,new Response(o,{headers:{"Content-Type":"application/octet-stream"}})}}),b.geometryMs=performance.now()-s,await U.complete;const E=await g;if(E&&(v.articulation.colliders=E),d.signal.aborted)throw f();b.readerCompleteMs=performance.now()-s,b.readerStats=U.info;const x=U;U=null;const M=function(e,r,t,n){const a=new e.Group,i=new Map,s=[],l=new Map,c=new Map,d=[];r.root.updateMatrixWorld(!0),r.root.traverse(e=>{e.isMesh&&d.push(e)});const u=()=>{s.forEach(e=>e.dispose()),i.forEach(e=>e.dispose()),r.dispose()};try{if(r.info.warnings.length)throw Error("USD reader qualification: "+r.info.warnings.map(e=>e.code).join(", "));for(const r of d){var f;if(r.isInstancedMesh)throw Error("USD instance-to-joint mapping needs qualification");const n=t.meshes[r.name];if(!n)throw Error("USD mesh is missing its prepared body mapping: "+r.name);if("visual"!==n.classification)continue;const d=r.geometry;for(const e of[d.index,...Object.values(d.attributes)])null===e||void 0===e||e.onUpload(()=>{});const u=Array.isArray(r.material)?r.material:[r.material],w=d.groups.length?d.groups:[{start:0,count:(null===(f=d.index)||void 0===f?void 0:f.count)||d.attributes.position.count,materialIndex:0}];for(const f of w){var h;if(!f.count)continue;const w=u[f.materialIndex];if(!w)throw Error("USD subset has no material");const p=w.name||1!==(null===(h=n.materialKeys)||void 0===h?void 0:h.length)||"__default"!==n.materialKeys[0]?null:"__default",g=t.materials[w.name]||t.materials[r.name]||p&&t.materials[p];if(!g)throw Error("USD material has no prepared parameters: "+w.name);const v=w.uuid+":"+JSON.stringify(g);if(!i.has(v)){const r=(0,o.A)((0,o.A)({},g.fields),{},{side:e.DoubleSide});for(const o of["color","emissive","specularColor","attenuationColor"])r[o]&&(r[o]=new e.Color(...r[o]));r.normalScale&&(r.normalScale=new e.Vector2(...r.normalScale));const t=new e.MeshPhysicalMaterial(r);for(const e of g.maps){var m;if(null===(m=w[e])||void 0===m||!m.isTexture)throw Error("USD material texture is unavailable: "+e);t[e]=w[e]}t.userData.usdPrimPath=w.name,t.userData.usdTextureBindings=g.bindings,i.set(v,t)}const b=new e.BufferGeometry;for(const[e,r]of Object.entries(d.attributes))b.setAttribute(e,r);b.setIndex(d.index),b.setDrawRange(f.start,f.count),s.push(b);const y=new e.Mesh(b,i.get(v)),S=l.get(n.body)||0;l.set(n.body,S+1),y.name="".concat(n.body,"m").concat(String(S).padStart(3,"0")),y.userData.usdPrimPath=r.name,y.matrix.copy(r.matrixWorld),y.matrixAutoUpdate=!1,a.add(y),c.set(r.name,(c.get(r.name)||0)+f.count/3)}}for(const[e,r]of Object.entries(t.meshes))if("visual"===r.classification&&r.triangles&&c.get(e)!==r.triangles)throw Error("USD visible triangle count differs from qualification: "+e);if(!a.children.length)throw Error("USD reader produced no qualified visible geometry");return a.userData.usdLoading=n,a.userData.disposeOriginalMaterials=u,a}catch(S){throw u(),S}}(n,x,v,b);if(2===v.version&&!i){let t;M.userData.loadColliders=()=>(t||(t=w(e,v.articulation,a||r,b)),t)}return b.sceneMs=performance.now()-s,M}catch(S){throw null!==a&&void 0!==a&&a.aborted||null!==r&&void 0!==r&&r.aborted||c.dispose(),D||S}finally{var E;null===(E=U)||void 0===E||E.dispose(),clearTimeout(g);for(const e of[r,a])null===e||void 0===e||e.removeEventListener("abort",m);null===a||void 0===a||a.removeEventListener("abort",c.cancelPending)}}},glbUrl:void 0,hdUrl:void 0,hdGpuBytes:void 0,previewMount:null,presentation:"rtx-media",inspectCamera:!0,renderPixelBudget:{maxPixels:2073600,reference:"square"}}}}}]);
 
 
services/explorer/dist/static/js/718.3b4487f9.chunk.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkdeepsearch_ui=self.webpackChunkdeepsearch_ui||[]).push([[718],{4718(e,t,s){s.r(t),s.d(t,{GLTFLoader:()=>a});var n=s(9379),r=s(9435);function o(e,t){if(t===r.RJ4)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),e;if(t===r.rYR||t===r.O49){let s=e.getIndex();if(null===s){const t=[],n=e.getAttribute("position");if(void 0===n)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),e;for(let e=0;e<n.count;e++)t.push(e);e.setIndex(t),s=e.getIndex()}const n=s.count-2,o=[];if(t===r.rYR)for(let e=1;e<=n;e++)o.push(s.getX(0)),o.push(s.getX(e)),o.push(s.getX(e+1));else for(let e=0;e<n;e++)e%2===0?(o.push(s.getX(e)),o.push(s.getX(e+1)),o.push(s.getX(e+2))):(o.push(s.getX(e+2)),o.push(s.getX(e+1)),o.push(s.getX(e)));o.length/3!==n&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const i=e.clone();return i.setIndex(o),i.clearGroups(),i}return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",t),e}var i=s(9812);class a extends r.aHM{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new m(e)}),this.register(function(e){return new f(e)}),this.register(function(e){return new w(e)}),this.register(function(e){return new S(e)}),this.register(function(e){return new y(e)}),this.register(function(e){return new T(e)}),this.register(function(e){return new R(e)}),this.register(function(e){return new x(e)}),this.register(function(e){return new _(e)}),this.register(function(e){return new p(e)}),this.register(function(e){return new E(e)}),this.register(function(e){return new g(e)}),this.register(function(e){return new A(e)}),this.register(function(e){return new v(e)}),this.register(function(e){return new h(e)}),this.register(function(e){return new M(e,u.EXT_MESHOPT_COMPRESSION)}),this.register(function(e){return new M(e,u.KHR_MESHOPT_COMPRESSION)}),this.register(function(e){return new L(e)})}load(e,t,s,n){const o=this;let i;if(""!==this.resourcePath)i=this.resourcePath;else if(""!==this.path){const t=r.r6x.extractUrlBase(e);i=r.r6x.resolveURL(t,this.path)}else i=r.r6x.extractUrlBase(e);this.manager.itemStart(e);const a=function(t){n?n(t):console.error(t),o.manager.itemError(e),o.manager.itemEnd(e)},c=new r.Y9S(this.manager);c.setPath(this.path),c.setResponseType("arraybuffer"),c.setRequestHeader(this.requestHeader),c.setWithCredentials(this.withCredentials),c.load(e,function(s){try{o.parse(s,i,function(s){t(s),o.manager.itemEnd(e)},a)}catch(n){a(n)}},s,a)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return-1===this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.push(e),this}unregister(e){return-1!==this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,s,n){let r;const o={},i={},a=new TextDecoder;if("string"===typeof e)r=JSON.parse(e);else if(e instanceof ArrayBuffer){if(a.decode(new Uint8Array(e,0,4))===I){try{o[u.KHR_BINARY_GLTF]=new O(e)}catch(l){return void(n&&n(l))}r=JSON.parse(o[u.KHR_BINARY_GLTF].content)}else r=JSON.parse(a.decode(e))}else r=e;if(void 0===r.asset||r.asset.version[0]<2)return void(n&&n(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.")));const c=new re(r,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});c.fileLoader.setRequestHeader(this.requestHeader);for(let u=0;u<this.pluginCallbacks.length;u++){const e=this.pluginCallbacks[u](c);e.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),i[e.name]=e,o[e.name]=!0}if(r.extensionsUsed)for(let h=0;h<r.extensionsUsed.length;++h){const e=r.extensionsUsed[h],t=r.extensionsRequired||[];switch(e){case u.KHR_MATERIALS_UNLIT:o[e]=new d;break;case u.KHR_DRACO_MESH_COMPRESSION:o[e]=new C(r,this.dracoLoader);break;case u.KHR_TEXTURE_TRANSFORM:o[e]=new P;break;case u.KHR_MESH_QUANTIZATION:o[e]=new H;break;default:t.indexOf(e)>=0&&void 0===i[e]&&console.warn('THREE.GLTFLoader: Unknown extension "'+e+'".')}}c.setExtensions(o),c.setPlugins(i),c.parse(s,n)}parseAsync(e,t){const s=this;return new Promise(function(n,r){s.parse(e,t,n,r)})}}function c(){let e={};return{get:function(t){return e[t]},add:function(t,s){e[t]=s},remove:function(t){delete e[t]},removeAll:function(){e={}}}}function l(e,t,s){const n=e.json.materials[t];return n.extensions&&n.extensions[s]?n.extensions[s]:null}const u={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",KHR_MESHOPT_COMPRESSION:"KHR_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class h{constructor(e){this.parser=e,this.name=u.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let s=0,n=t.length;s<n;s++){const n=t[s];n.extensions&&n.extensions[this.name]&&void 0!==n.extensions[this.name].light&&e._addNodeRef(this.cache,n.extensions[this.name].light)}}_loadLight(e){const t=this.parser,s="light:"+e;let n=t.cache.get(s);if(n)return n;const o=t.json,i=((o.extensions&&o.extensions[this.name]||{}).lights||[])[e];let a;const c=new r.Q1f(16777215);void 0!==i.color&&c.setRGB(i.color[0],i.color[1],i.color[2],r.Zr2);const l=void 0!==i.range?i.range:0;switch(i.type){case"directional":a=new r.ZyN(c),a.target.position.set(0,0,-1),a.add(a.target);break;case"point":a=new r.HiM(c),a.distance=l;break;case"spot":a=new r.nCl(c),a.distance=l,i.spot=i.spot||{},i.spot.innerConeAngle=void 0!==i.spot.innerConeAngle?i.spot.innerConeAngle:0,i.spot.outerConeAngle=void 0!==i.spot.outerConeAngle?i.spot.outerConeAngle:Math.PI/4,a.angle=i.spot.outerConeAngle,a.penumbra=1-i.spot.innerConeAngle/i.spot.outerConeAngle,a.target.position.set(0,0,-1),a.add(a.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+i.type)}return a.position.set(0,0,0),W(a,i),void 0!==i.intensity&&(a.intensity=i.intensity),a.name=t.createUniqueName(i.name||"light_"+e),n=Promise.resolve(a),t.cache.add(s,n),n}getDependency(e,t){if("light"===e)return this._loadLight(t)}createNodeAttachment(e){const t=this,s=this.parser,n=s.json.nodes[e],r=(n.extensions&&n.extensions[this.name]||{}).light;return void 0===r?null:this._loadLight(r).then(function(e){return s._getNodeRef(t.cache,r,e)})}}class d{constructor(){this.name=u.KHR_MATERIALS_UNLIT}getMaterialType(){return r.V9B}extendParams(e,t,s){const n=[];e.color=new r.Q1f(1,1,1),e.opacity=1;const o=t.pbrMetallicRoughness;if(o){if(Array.isArray(o.baseColorFactor)){const t=o.baseColorFactor;e.color.setRGB(t[0],t[1],t[2],r.Zr2),e.opacity=t[3]}void 0!==o.baseColorTexture&&n.push(s.assignTexture(e,"map",o.baseColorTexture,r.er$))}return Promise.all(n)}}class p{constructor(e){this.parser=e,this.name=u.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){const s=l(this.parser,e,this.name);return null===s||void 0!==s.emissiveStrength&&(t.emissiveIntensity=s.emissiveStrength),Promise.resolve()}}class m{constructor(e){this.parser=e,this.name=u.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){return null!==l(this.parser,e,this.name)?r.uSd:null}extendMaterialParams(e,t){const s=l(this.parser,e,this.name);if(null===s)return Promise.resolve();const n=[];if(void 0!==s.clearcoatFactor&&(t.clearcoat=s.clearcoatFactor),void 0!==s.clearcoatTexture&&n.push(this.parser.assignTexture(t,"clearcoatMap",s.clearcoatTexture)),void 0!==s.clearcoatRoughnessFactor&&(t.clearcoatRoughness=s.clearcoatRoughnessFactor),void 0!==s.clearcoatRoughnessTexture&&n.push(this.parser.assignTexture(t,"clearcoatRoughnessMap",s.clearcoatRoughnessTexture)),void 0!==s.clearcoatNormalTexture&&(n.push(this.parser.assignTexture(t,"clearcoatNormalMap",s.clearcoatNormalTexture)),void 0!==s.clearcoatNormalTexture.scale)){const e=s.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new r.I9Y(e,e)}return Promise.all(n)}}class f{constructor(e){this.parser=e,this.name=u.KHR_MATERIALS_DISPERSION}getMaterialType(e){return null!==l(this.parser,e,this.name)?r.uSd:null}extendMaterialParams(e,t){const s=l(this.parser,e,this.name);return null===s||(t.dispersion=void 0!==s.dispersion?s.dispersion:0),Promise.resolve()}}class g{constructor(e){this.parser=e,this.name=u.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){return null!==l(this.parser,e,this.name)?r.uSd:null}extendMaterialParams(e,t){const s=l(this.parser,e,this.name);if(null===s)return Promise.resolve();const n=[];return void 0!==s.iridescenceFactor&&(t.iridescence=s.iridescenceFactor),void 0!==s.iridescenceTexture&&n.push(this.parser.assignTexture(t,"iridescenceMap",s.iridescenceTexture)),void 0!==s.iridescenceIor&&(t.iridescenceIOR=s.iridescenceIor),void 0===t.iridescenceThicknessRange&&(t.iridescenceThicknessRange=[100,400]),void 0!==s.iridescenceThicknessMinimum&&(t.iridescenceThicknessRange[0]=s.iridescenceThicknessMinimum),void 0!==s.iridescenceThicknessMaximum&&(t.iridescenceThicknessRange[1]=s.iridescenceThicknessMaximum),void 0!==s.iridescenceThicknessTexture&&n.push(this.parser.assignTexture(t,"iridescenceThicknessMap",s.iridescenceThicknessTexture)),Promise.all(n)}}class T{constructor(e){this.parser=e,this.name=u.KHR_MATERIALS_SHEEN}getMaterialType(e){return null!==l(this.parser,e,this.name)?r.uSd:null}extendMaterialParams(e,t){const s=l(this.parser,e,this.name);if(null===s)return Promise.resolve();const n=[];if(t.sheenColor=new r.Q1f(0,0,0),t.sheenRoughness=0,t.sheen=1,void 0!==s.sheenColorFactor){const e=s.sheenColorFactor;t.sheenColor.setRGB(e[0],e[1],e[2],r.Zr2)}return void 0!==s.sheenRoughnessFactor&&(t.sheenRoughness=s.sheenRoughnessFactor),void 0!==s.sheenColorTexture&&n.push(this.parser.assignTexture(t,"sheenColorMap",s.sheenColorTexture,r.er$)),void 0!==s.sheenRoughnessTexture&&n.push(this.parser.assignTexture(t,"sheenRoughnessMap",s.sheenRoughnessTexture)),Promise.all(n)}}class R{constructor(e){this.parser=e,this.name=u.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){return null!==l(this.parser,e,this.name)?r.uSd:null}extendMaterialParams(e,t){const s=l(this.parser,e,this.name);if(null===s)return Promise.resolve();const n=[];return void 0!==s.transmissionFactor&&(t.transmission=s.transmissionFactor),void 0!==s.transmissionTexture&&n.push(this.parser.assignTexture(t,"transmissionMap",s.transmissionTexture)),Promise.all(n)}}class x{constructor(e){this.parser=e,this.name=u.KHR_MATERIALS_VOLUME}getMaterialType(e){return null!==l(this.parser,e,this.name)?r.uSd:null}extendMaterialParams(e,t){const s=l(this.parser,e,this.name);if(null===s)return Promise.resolve();const n=[];t.thickness=void 0!==s.thicknessFactor?s.thicknessFactor:0,void 0!==s.thicknessTexture&&n.push(this.parser.assignTexture(t,"thicknessMap",s.thicknessTexture)),t.attenuationDistance=s.attenuationDistance||1/0;const o=s.attenuationColor||[1,1,1];return t.attenuationColor=(new r.Q1f).setRGB(o[0],o[1],o[2],r.Zr2),Promise.all(n)}}class _{constructor(e){this.parser=e,this.name=u.KHR_MATERIALS_IOR}getMaterialType(e){return null!==l(this.parser,e,this.name)?r.uSd:null}extendMaterialParams(e,t){const s=l(this.parser,e,this.name);return null===s||(t.ior=void 0!==s.ior?s.ior:1.5),Promise.resolve()}}class E{constructor(e){this.parser=e,this.name=u.KHR_MATERIALS_SPECULAR}getMaterialType(e){return null!==l(this.parser,e,this.name)?r.uSd:null}extendMaterialParams(e,t){const s=l(this.parser,e,this.name);if(null===s)return Promise.resolve();const n=[];t.specularIntensity=void 0!==s.specularFactor?s.specularFactor:1,void 0!==s.specularTexture&&n.push(this.parser.assignTexture(t,"specularIntensityMap",s.specularTexture));const o=s.specularColorFactor||[1,1,1];return t.specularColor=(new r.Q1f).setRGB(o[0],o[1],o[2],r.Zr2),void 0!==s.specularColorTexture&&n.push(this.parser.assignTexture(t,"specularColorMap",s.specularColorTexture,r.er$)),Promise.all(n)}}class v{constructor(e){this.parser=e,this.name=u.EXT_MATERIALS_BUMP}getMaterialType(e){return null!==l(this.parser,e,this.name)?r.uSd:null}extendMaterialParams(e,t){const s=l(this.parser,e,this.name);if(null===s)return Promise.resolve();const n=[];return t.bumpScale=void 0!==s.bumpFactor?s.bumpFactor:1,void 0!==s.bumpTexture&&n.push(this.parser.assignTexture(t,"bumpMap",s.bumpTexture)),Promise.all(n)}}class A{constructor(e){this.parser=e,this.name=u.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){return null!==l(this.parser,e,this.name)?r.uSd:null}extendMaterialParams(e,t){const s=l(this.parser,e,this.name);if(null===s)return Promise.resolve();const n=[];return void 0!==s.anisotropyStrength&&(t.anisotropy=s.anisotropyStrength),void 0!==s.anisotropyRotation&&(t.anisotropyRotation=s.anisotropyRotation),void 0!==s.anisotropyTexture&&n.push(this.parser.assignTexture(t,"anisotropyMap",s.anisotropyTexture)),Promise.all(n)}}class w{constructor(e){this.parser=e,this.name=u.KHR_TEXTURE_BASISU}loadTexture(e){const t=this.parser,s=t.json,n=s.textures[e];if(!n.extensions||!n.extensions[this.name])return null;const r=n.extensions[this.name],o=t.options.ktx2Loader;if(!o){if(s.extensionsRequired&&s.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,r.source,o)}}class S{constructor(e){this.parser=e,this.name=u.EXT_TEXTURE_WEBP}loadTexture(e){const t=this.name,s=this.parser,n=s.json,r=n.textures[e];if(!r.extensions||!r.extensions[t])return null;const o=r.extensions[t],i=n.images[o.source];let a=s.textureLoader;if(i.uri){const e=s.options.manager.getHandler(i.uri);null!==e&&(a=e)}return s.loadTextureImage(e,o.source,a)}}class y{constructor(e){this.parser=e,this.name=u.EXT_TEXTURE_AVIF}loadTexture(e){const t=this.name,s=this.parser,n=s.json,r=n.textures[e];if(!r.extensions||!r.extensions[t])return null;const o=r.extensions[t],i=n.images[o.source];let a=s.textureLoader;if(i.uri){const e=s.options.manager.getHandler(i.uri);null!==e&&(a=e)}return s.loadTextureImage(e,o.source,a)}}class M{constructor(e,t){this.name=t,this.parser=e}loadBufferView(e){const t=this.parser.json,s=t.bufferViews[e];if(s.extensions&&s.extensions[this.name]){const e=s.extensions[this.name],n=this.parser.getDependency("buffer",e.buffer),r=this.parser.options.meshoptDecoder;if(!r||!r.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return n.then(function(t){const s=e.byteOffset||0,n=e.byteLength||0,o=e.count,i=e.byteStride,a=new Uint8Array(t,s,n);return r.decodeGltfBufferAsync?r.decodeGltfBufferAsync(o,i,a,e.mode,e.filter).then(function(e){return e.buffer}):r.ready.then(function(){const t=new ArrayBuffer(o*i);return r.decodeGltfBuffer(new Uint8Array(t),o,i,a,e.mode,e.filter),t})})}return null}}class L{constructor(e){this.name=u.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const t=this.parser.json,s=t.nodes[e];if(!s.extensions||!s.extensions[this.name]||void 0===s.mesh)return null;const n=t.meshes[s.mesh];for(const r of n.primitives)if(r.mode!==D.TRIANGLES&&r.mode!==D.TRIANGLE_STRIP&&r.mode!==D.TRIANGLE_FAN&&void 0!==r.mode)return null;const o=s.extensions[this.name].attributes,i=[],a={};for(const r in o)i.push(this.parser.getDependency("accessor",o[r]).then(e=>(a[r]=e,a[r])));return i.length<1?null:(i.push(this.parser.createNodeMesh(e)),Promise.all(i).then(e=>{const t=e.pop(),s=t.isGroup?t.children:[t],n=e[0].count,o=[];for(const i of s){const e=new r.kn4,t=new r.Pq0,s=new r.PTz,c=new r.Pq0(1,1,1),l=new r.ZLX(i.geometry,i.material,n);for(let r=0;r<n;r++)a.TRANSLATION&&t.fromBufferAttribute(a.TRANSLATION,r),a.ROTATION&&s.fromBufferAttribute(a.ROTATION,r),a.SCALE&&c.fromBufferAttribute(a.SCALE,r),l.setMatrixAt(r,e.compose(t,s,c));for(const n in a)if("_COLOR_0"===n){const e=a[n];l.instanceColor=new r.uWO(e.array,e.itemSize,e.normalized)}else"TRANSLATION"!==n&&"ROTATION"!==n&&"SCALE"!==n&&i.geometry.setAttribute(n,a[n]);r.B69.prototype.copy.call(l,i),this.parser.assignFinalMaterial(l),o.push(l)}return t.isGroup?(t.clear(),t.add(...o),t):o[0]}))}}const I="glTF",b=1313821514,N=5130562;class O{constructor(e){this.name=u.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,12),s=new TextDecoder;if(this.header={magic:s.decode(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==I)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const n=this.header.length-12,r=new DataView(e,12);let o=0;for(;o<n;){const t=r.getUint32(o,!0);o+=4;const n=r.getUint32(o,!0);if(o+=4,n===b){const n=new Uint8Array(e,12+o,t);this.content=s.decode(n)}else if(n===N){const s=12+o;this.body=e.slice(s,s+t)}o+=t}if(null===this.content)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class C{constructor(e,t){if(!t)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=u.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){const s=this.json,n=this.dracoLoader,o=e.extensions[this.name].bufferView,i=e.extensions[this.name].attributes,a={},c={},l={};for(const r in i){const e=V[r]||r.toLowerCase();a[e]=i[r]}for(const r in e.attributes){const t=V[r]||r.toLowerCase();if(void 0!==i[r]){const n=s.accessors[e.attributes[r]],o=G[n.componentType];l[t]=o.name,c[t]=!0===n.normalized}}return t.getDependency("bufferView",o).then(function(e){return new Promise(function(t,s){n.decodeDracoFile(e,function(e){for(const t in e.attributes){const s=e.attributes[t],n=c[t];void 0!==n&&(s.normalized=n)}t(e)},a,l,r.Zr2,s)})})}}class P{constructor(){this.name=u.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return void 0!==t.texCoord&&t.texCoord!==e.channel||void 0!==t.offset||void 0!==t.rotation||void 0!==t.scale?(e=e.clone(),void 0!==t.texCoord&&(e.channel=t.texCoord),void 0!==t.offset&&e.offset.fromArray(t.offset),void 0!==t.rotation&&(e.rotation=t.rotation),void 0!==t.scale&&e.repeat.fromArray(t.scale),e.needsUpdate=!0,e):e}}class H{constructor(){this.name=u.KHR_MESH_QUANTIZATION}}class k extends r.lGw{constructor(e,t,s,n){super(e,t,s,n)}copySampleValue_(e){const t=this.resultBuffer,s=this.sampleValues,n=this.valueSize,r=e*n*3+n;for(let o=0;o!==n;o++)t[o]=s[r+o];return t}interpolate_(e,t,s,n){const r=this.resultBuffer,o=this.sampleValues,i=this.valueSize,a=2*i,c=3*i,l=n-t,u=(s-t)/l,h=u*u,d=h*u,p=e*c,m=p-c,f=-2*d+3*h,g=d-h,T=1-f,R=g-h+u;for(let x=0;x!==i;x++){const e=o[m+x+i],t=o[m+x+a]*l,s=o[p+x+i],n=o[p+x]*l;r[x]=T*e+R*t+f*s+g*n}return r}}const F=new r.PTz;class U extends k{interpolate_(e,t,s,n){const r=super.interpolate_(e,t,s,n);return F.fromArray(r).normalize().toArray(r),r}}const D={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},G={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},K={9728:r.hxR,9729:r.k6q,9984:r.pHI,9985:r.kRr,9986:r.Cfg,9987:r.$_I},B={33071:r.ghU,33648:r.kTW,10497:r.GJx},j={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},V={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},X={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},q={CUBICSPLINE:void 0,LINEAR:r.PJ3,STEP:r.ljd},z="OPAQUE",Y="MASK",Z="BLEND";function J(e){return void 0===e.DefaultMaterial&&(e.DefaultMaterial=new r._4j({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:r.hB5})),e.DefaultMaterial}function $(e,t,s){for(const n in s.extensions)void 0===e[n]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[n]=s.extensions[n])}function W(e,t){void 0!==t.extras&&("object"===typeof t.extras?Object.assign(e.userData,t.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+t.extras))}function Q(e,t){if(e.updateMorphTargets(),void 0!==t.weights)for(let s=0,n=t.weights.length;s<n;s++)e.morphTargetInfluences[s]=t.weights[s];if(t.extras&&Array.isArray(t.extras.targetNames)){const s=t.extras.targetNames;if(e.morphTargetInfluences.length===s.length){e.morphTargetDictionary={};for(let t=0,n=s.length;t<n;t++)e.morphTargetDictionary[s[t]]=t}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function ee(e){let t;const s=e.extensions&&e.extensions[u.KHR_DRACO_MESH_COMPRESSION];if(t=s?"draco:"+s.bufferView+":"+s.indices+":"+te(s.attributes):e.indices+":"+te(e.attributes)+":"+e.mode,void 0!==e.targets)for(let n=0,r=e.targets.length;n<r;n++)t+=":"+te(e.targets[n]);return t}function te(e){let t="";const s=Object.keys(e).sort();for(let n=0,r=s.length;n<r;n++)t+=s[n]+":"+e[s[n]]+";";return t}function se(e){switch(e){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}const ne=new r.kn4;class re{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new c,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let s=!1,n=-1,o=!1,i=-1;if("undefined"!==typeof navigator&&"undefined"!==typeof navigator.userAgent){const e=navigator.userAgent;s=!0===/^((?!chrome|android).)*safari/i.test(e);const t=e.match(/Version\/(\d+)/);n=s&&t?parseInt(t[1],10):-1,o=e.indexOf("Firefox")>-1,i=o?e.match(/Firefox\/([0-9]+)\./)[1]:-1}"undefined"===typeof createImageBitmap||s&&n<17||o&&i<98?this.textureLoader=new r.Tap(this.options.manager):this.textureLoader=new r.Kzg(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new r.Y9S(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),"use-credentials"===this.options.crossOrigin&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const s=this,n=this.json,r=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(e){return e._markDefs&&e._markDefs()}),Promise.all(this._invokeAll(function(e){return e.beforeRoot&&e.beforeRoot()})).then(function(){return Promise.all([s.getDependencies("scene"),s.getDependencies("animation"),s.getDependencies("camera")])}).then(function(t){const o={scene:t[0][n.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:n.asset,parser:s,userData:{}};return $(r,o,n),W(o,n),Promise.all(s._invokeAll(function(e){return e.afterRoot&&e.afterRoot(o)})).then(function(){for(const e of o.scenes)e.updateMatrixWorld();e(o)})}).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],s=this.json.meshes||[];for(let n=0,r=t.length;n<r;n++){const s=t[n].joints;for(let t=0,n=s.length;t<n;t++)e[s[t]].isBone=!0}for(let n=0,r=e.length;n<r;n++){const t=e[n];void 0!==t.mesh&&(this._addNodeRef(this.meshCache,t.mesh),void 0!==t.skin&&(s[t.mesh].isSkinnedMesh=!0)),void 0!==t.camera&&this._addNodeRef(this.cameraCache,t.camera)}}_addNodeRef(e,t){void 0!==t&&(void 0===e.refs[t]&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,s){if(e.refs[t]<=1)return s;const n=s.clone(),r=(e,t)=>{const s=this.associations.get(e);null!=s&&this.associations.set(t,s);for(const[n,o]of e.children.entries())r(o,t.children[n])};return r(s,n),n.name+="_instance_"+e.uses[t]++,n}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let s=0;s<t.length;s++){const n=e(t[s]);if(n)return n}return null}_invokeAll(e){const t=Object.values(this.plugins);t.unshift(this);const s=[];for(let n=0;n<t.length;n++){const r=e(t[n]);r&&s.push(r)}return s}getDependency(e,t){const s=e+":"+t;let n=this.cache.get(s);if(!n){switch(e){case"scene":n=this.loadScene(t);break;case"node":n=this._invokeOne(function(e){return e.loadNode&&e.loadNode(t)});break;case"mesh":n=this._invokeOne(function(e){return e.loadMesh&&e.loadMesh(t)});break;case"accessor":n=this.loadAccessor(t);break;case"bufferView":n=this._invokeOne(function(e){return e.loadBufferView&&e.loadBufferView(t)});break;case"buffer":n=this.loadBuffer(t);break;case"material":n=this._invokeOne(function(e){return e.loadMaterial&&e.loadMaterial(t)});break;case"texture":n=this._invokeOne(function(e){return e.loadTexture&&e.loadTexture(t)});break;case"skin":n=this.loadSkin(t);break;case"animation":n=this._invokeOne(function(e){return e.loadAnimation&&e.loadAnimation(t)});break;case"camera":n=this.loadCamera(t);break;default:if(n=this._invokeOne(function(s){return s!=this&&s.getDependency&&s.getDependency(e,t)}),!n)throw new Error("Unknown type: "+e)}this.cache.add(s,n)}return n}getDependencies(e){let t=this.cache.get(e);if(!t){const s=this,n=this.json[e+("mesh"===e?"es":"s")]||[];t=Promise.all(n.map(function(t,n){return s.getDependency(e,n)})),this.cache.add(e,t)}return t}loadBuffer(e){const t=this.json.buffers[e],s=this.fileLoader;if(t.type&&"arraybuffer"!==t.type)throw new Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(void 0===t.uri&&0===e)return Promise.resolve(this.extensions[u.KHR_BINARY_GLTF].body);const n=this.options;return new Promise(function(e,o){s.load(r.r6x.resolveURL(t.uri,n.path),e,void 0,function(){o(new Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){const t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(e){const s=t.byteLength||0,n=t.byteOffset||0;return e.slice(n,n+s)})}loadAccessor(e){const t=this,s=this.json,n=this.json.accessors[e];if(void 0===n.bufferView&&void 0===n.sparse){const e=j[n.type],t=G[n.componentType],s=!0===n.normalized,o=new t(n.count*e);return Promise.resolve(new r.THS(o,e,s))}const o=[];return void 0!==n.bufferView?o.push(this.getDependency("bufferView",n.bufferView)):o.push(null),void 0!==n.sparse&&(o.push(this.getDependency("bufferView",n.sparse.indices.bufferView)),o.push(this.getDependency("bufferView",n.sparse.values.bufferView))),Promise.all(o).then(function(e){const o=e[0],i=j[n.type],a=G[n.componentType],c=a.BYTES_PER_ELEMENT,l=c*i,u=n.byteOffset||0,h=void 0!==n.bufferView?s.bufferViews[n.bufferView].byteStride:void 0,d=!0===n.normalized;let p,m;if(h&&h!==l){const e=Math.floor(u/h),s="InterleavedBuffer:"+n.bufferView+":"+n.componentType+":"+e+":"+n.count;let l=t.cache.get(s);l||(p=new a(o,e*h,n.count*h/c),l=new r.eB$(p,h/c),t.cache.add(s,l)),m=new r.eHs(l,i,u%h/c,d)}else p=null===o?new a(n.count*i):new a(o,u,n.count*i),m=new r.THS(p,i,d);if(void 0!==n.sparse){const t=j.SCALAR,s=G[n.sparse.indices.componentType],c=n.sparse.indices.byteOffset||0,l=n.sparse.values.byteOffset||0,u=new s(e[1],c,n.sparse.count*t),h=new a(e[2],l,n.sparse.count*i);null!==o&&(m=new r.THS(m.array.slice(),m.itemSize,m.normalized)),m.normalized=!1;for(let e=0,n=u.length;e<n;e++){const t=u[e];if(m.setX(t,h[e*i]),i>=2&&m.setY(t,h[e*i+1]),i>=3&&m.setZ(t,h[e*i+2]),i>=4&&m.setW(t,h[e*i+3]),i>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}m.normalized=d}return m})}loadTexture(e){const t=this.json,s=this.options,n=t.textures[e].source,r=t.images[n];let o=this.textureLoader;if(r.uri){const e=s.manager.getHandler(r.uri);null!==e&&(o=e)}return this.loadTextureImage(e,n,o)}loadTextureImage(e,t,s){const n=this,o=this.json,i=o.textures[e],a=o.images[t],c=(a.uri||a.bufferView)+":"+i.sampler;if(this.textureCache[c])return this.textureCache[c];const l=this.loadImageSource(t,s).then(function(t){t.flipY=!1,t.name=i.name||a.name||"",""===t.name&&"string"===typeof a.uri&&!1===a.uri.startsWith("data:image/")&&(t.name=a.uri);const s=(o.samplers||{})[i.sampler]||{};return t.magFilter=K[s.magFilter]||r.k6q,t.minFilter=K[s.minFilter]||r.$_I,t.wrapS=B[s.wrapS]||r.GJx,t.wrapT=B[s.wrapT]||r.GJx,t.generateMipmaps=!t.isCompressedTexture&&t.minFilter!==r.hxR&&t.minFilter!==r.k6q,n.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[c]=l,l}loadImageSource(e,t){const s=this,n=this.json,o=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then(e=>e.clone());const i=n.images[e],a=self.URL||self.webkitURL;let c=i.uri||"",l=!1;if(void 0!==i.bufferView)c=s.getDependency("bufferView",i.bufferView).then(function(e){l=!0;const t=new Blob([e],{type:i.mimeType});return c=a.createObjectURL(t),c});else if(void 0===i.uri)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const u=Promise.resolve(c).then(function(e){return new Promise(function(s,n){let i=s;!0===t.isImageBitmapLoader&&(i=function(e){const t=new r.gPd(e);t.needsUpdate=!0,s(t)}),t.load(r.r6x.resolveURL(e,o.path),i,void 0,n)})}).then(function(e){var t;return!0===l&&a.revokeObjectURL(c),W(e,i),e.userData.mimeType=i.mimeType||((t=i.uri).search(/\.jpe?g($|\?)/i)>0||0===t.search(/^data\:image\/jpeg/)?"image/jpeg":t.search(/\.webp($|\?)/i)>0||0===t.search(/^data\:image\/webp/)?"image/webp":t.search(/\.ktx2($|\?)/i)>0||0===t.search(/^data\:image\/ktx2/)?"image/ktx2":"image/png"),e}).catch(function(e){throw console.error("THREE.GLTFLoader: Couldn't load texture",c),e});return this.sourceCache[e]=u,u}assignTexture(e,t,s,n){const r=this;return this.getDependency("texture",s.index).then(function(o){if(!o)return null;if(void 0!==s.texCoord&&s.texCoord>0&&((o=o.clone()).channel=s.texCoord),r.extensions[u.KHR_TEXTURE_TRANSFORM]){const e=void 0!==s.extensions?s.extensions[u.KHR_TEXTURE_TRANSFORM]:void 0;if(e){const t=r.associations.get(o);o=r.extensions[u.KHR_TEXTURE_TRANSFORM].extendTexture(o,e),r.associations.set(o,t)}}return void 0!==n&&(o.colorSpace=n),e[t]=o,o})}assignFinalMaterial(e){const t=e.geometry;let s=e.material;const n=void 0===t.attributes.tangent,o=void 0!==t.attributes.color,i=void 0===t.attributes.normal;if(e.isPoints){const e="PointsMaterial:"+s.uuid;let t=this.cache.get(e);t||(t=new r.BH$,r.imn.prototype.copy.call(t,s),t.color.copy(s.color),t.map=s.map,t.sizeAttenuation=!1,this.cache.add(e,t)),s=t}else if(e.isLine){const e="LineBasicMaterial:"+s.uuid;let t=this.cache.get(e);t||(t=new r.mrM,r.imn.prototype.copy.call(t,s),t.color.copy(s.color),t.map=s.map,this.cache.add(e,t)),s=t}if(n||o||i){let e="ClonedMaterial:"+s.uuid+":";n&&(e+="derivative-tangents:"),o&&(e+="vertex-colors:"),i&&(e+="flat-shading:");let t=this.cache.get(e);t||(t=s.clone(),o&&(t.vertexColors=!0),i&&(t.flatShading=!0),n&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(s))),s=t}e.material=s}getMaterialType(){return r._4j}loadMaterial(e){const t=this,s=this.json,n=this.extensions,o=s.materials[e];let i;const a={},c=[];if((o.extensions||{})[u.KHR_MATERIALS_UNLIT]){const e=n[u.KHR_MATERIALS_UNLIT];i=e.getMaterialType(),c.push(e.extendParams(a,o,t))}else{const s=o.pbrMetallicRoughness||{};if(a.color=new r.Q1f(1,1,1),a.opacity=1,Array.isArray(s.baseColorFactor)){const e=s.baseColorFactor;a.color.setRGB(e[0],e[1],e[2],r.Zr2),a.opacity=e[3]}void 0!==s.baseColorTexture&&c.push(t.assignTexture(a,"map",s.baseColorTexture,r.er$)),a.metalness=void 0!==s.metallicFactor?s.metallicFactor:1,a.roughness=void 0!==s.roughnessFactor?s.roughnessFactor:1,void 0!==s.metallicRoughnessTexture&&(c.push(t.assignTexture(a,"metalnessMap",s.metallicRoughnessTexture)),c.push(t.assignTexture(a,"roughnessMap",s.metallicRoughnessTexture))),i=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),c.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,a)})))}!0===o.doubleSided&&(a.side=r.$EB);const l=o.alphaMode||z;if(l===Z?(a.transparent=!0,a.depthWrite=!1):(a.transparent=!1,l===Y&&(a.alphaTest=void 0!==o.alphaCutoff?o.alphaCutoff:.5)),void 0!==o.normalTexture&&i!==r.V9B&&(c.push(t.assignTexture(a,"normalMap",o.normalTexture)),a.normalScale=new r.I9Y(1,1),void 0!==o.normalTexture.scale)){const e=o.normalTexture.scale;a.normalScale.set(e,e)}if(void 0!==o.occlusionTexture&&i!==r.V9B&&(c.push(t.assignTexture(a,"aoMap",o.occlusionTexture)),void 0!==o.occlusionTexture.strength&&(a.aoMapIntensity=o.occlusionTexture.strength)),void 0!==o.emissiveFactor&&i!==r.V9B){const e=o.emissiveFactor;a.emissive=(new r.Q1f).setRGB(e[0],e[1],e[2],r.Zr2)}return void 0!==o.emissiveTexture&&i!==r.V9B&&c.push(t.assignTexture(a,"emissiveMap",o.emissiveTexture,r.er$)),Promise.all(c).then(function(){const s=new i(a);return o.name&&(s.name=o.name),W(s,o),t.associations.set(s,{materials:e}),o.extensions&&$(n,s,o),s})}createUniqueName(e){const t=r.Nwf.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){const t=this,s=this.extensions,n=this.primitiveCache;function o(e){return s[u.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then(function(s){return oe(s,e,t)})}const i=[];for(let a=0,c=e.length;a<c;a++){const s=e[a],c=ee(s),l=n[c];if(l)i.push(l.promise);else{let e;e=s.extensions&&s.extensions[u.KHR_DRACO_MESH_COMPRESSION]?o(s):oe(new r.LoY,s,t),n[c]={primitive:s,promise:e},i.push(e)}}return Promise.all(i)}loadMesh(e){const t=this,s=this.json,n=this.extensions,i=s.meshes[e],a=i.primitives,c=[];for(let r=0,o=a.length;r<o;r++){const e=void 0===a[r].material?J(this.cache):this.getDependency("material",a[r].material);c.push(e)}return c.push(t.loadGeometries(a)),Promise.all(c).then(function(s){const c=s.slice(0,s.length-1),l=s[s.length-1],u=[];for(let d=0,p=l.length;d<p;d++){const s=l[d],h=a[d];let p;const m=c[d];if(h.mode===D.TRIANGLES||h.mode===D.TRIANGLE_STRIP||h.mode===D.TRIANGLE_FAN||void 0===h.mode)p=!0===i.isSkinnedMesh?new r.I46(s,m):new r.eaF(s,m),!0===p.isSkinnedMesh&&p.normalizeSkinWeights(),h.mode===D.TRIANGLE_STRIP?p.geometry=o(p.geometry,r.O49):h.mode===D.TRIANGLE_FAN&&(p.geometry=o(p.geometry,r.rYR));else if(h.mode===D.LINES)p=new r.DXC(s,m);else if(h.mode===D.LINE_STRIP)p=new r.N1A(s,m);else if(h.mode===D.LINE_LOOP)p=new r.FCc(s,m);else{if(h.mode!==D.POINTS)throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+h.mode);p=new r.ONl(s,m)}Object.keys(p.geometry.morphAttributes).length>0&&Q(p,i),p.name=t.createUniqueName(i.name||"mesh_"+e),W(p,i),h.extensions&&$(n,p,h),t.assignFinalMaterial(p),u.push(p)}for(let n=0,r=u.length;n<r;n++)t.associations.set(u[n],{meshes:e,primitives:n});if(1===u.length)return i.extensions&&$(n,u[0],i),u[0];const h=new r.YJl;i.extensions&&$(n,h,i),t.associations.set(h,{meshes:e});for(let e=0,t=u.length;e<t;e++)h.add(u[e]);return h})}loadCamera(e){let t;const s=this.json.cameras[e],n=s[s.type];if(n)return"perspective"===s.type?t=new r.ubm(r.cj9.radToDeg(n.yfov),n.aspectRatio||1,n.znear||1,n.zfar||2e6):"orthographic"===s.type&&(t=new r.qUd(-n.xmag,n.xmag,n.ymag,-n.ymag,n.znear,n.zfar)),s.name&&(t.name=this.createUniqueName(s.name)),W(t,s),Promise.resolve(t);console.warn("THREE.GLTFLoader: Missing camera parameters.")}loadSkin(e){const t=this.json.skins[e],s=[];for(let n=0,r=t.joints.length;n<r;n++)s.push(this._loadNodeShallow(t.joints[n]));return void 0!==t.inverseBindMatrices?s.push(this.getDependency("accessor",t.inverseBindMatrices)):s.push(null),Promise.all(s).then(function(e){const s=e.pop(),n=e,o=[],i=[];for(let a=0,c=n.length;a<c;a++){const e=n[a];if(e){o.push(e);const t=new r.kn4;null!==s&&t.fromArray(s.array,16*a),i.push(t)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',t.joints[a])}return new r.EAD(o,i)})}loadAnimation(e){const t=this.json,s=this,n=t.animations[e],o=n.name?n.name:"animation_"+e,i=[],a=[],c=[],l=[],u=[];for(let r=0,h=n.channels.length;r<h;r++){const e=n.channels[r],t=n.samplers[e.sampler],s=e.target,o=s.node,h=void 0!==n.parameters?n.parameters[t.input]:t.input,d=void 0!==n.parameters?n.parameters[t.output]:t.output;void 0!==s.node&&(i.push(this.getDependency("node",o)),a.push(this.getDependency("accessor",h)),c.push(this.getDependency("accessor",d)),l.push(t),u.push(s))}return Promise.all([Promise.all(i),Promise.all(a),Promise.all(c),Promise.all(l),Promise.all(u)]).then(function(e){const t=e[0],i=e[1],a=e[2],c=e[3],l=e[4],u=[];for(let n=0,r=t.length;n<r;n++){const e=t[n],r=i[n],o=a[n],h=c[n],d=l[n];if(void 0===e)continue;e.updateMatrix&&e.updateMatrix();const p=s._createAnimationTracks(e,r,o,h,d);if(p)for(let t=0;t<p.length;t++)u.push(p[t])}const h=new r.tz3(o,void 0,u);return W(h,n),h})}createNodeMesh(e){const t=this.json,s=this,n=t.nodes[e];return void 0===n.mesh?null:s.getDependency("mesh",n.mesh).then(function(e){const t=s._getNodeRef(s.meshCache,n.mesh,e);return void 0!==n.weights&&t.traverse(function(e){if(e.isMesh)for(let t=0,s=n.weights.length;t<s;t++)e.morphTargetInfluences[t]=n.weights[t]}),t})}loadNode(e){const t=this,s=this.json.nodes[e],n=t._loadNodeShallow(e),o=[],i=s.children||[];for(let r=0,c=i.length;r<c;r++)o.push(t.getDependency("node",i[r]));const a=void 0===s.skin?Promise.resolve(null):t.getDependency("skin",s.skin);return Promise.all([n,Promise.all(o),a]).then(function(e){const t=e[0],s=e[1],n=e[2];null!==n&&t.traverse(function(e){e.isSkinnedMesh&&e.bind(n,ne)});for(let r=0,o=s.length;r<o;r++)t.add(s[r]);if(void 0!==t.userData.pivot&&s.length>0){const e=t.userData.pivot,n=s[0];t.pivot=(new r.Pq0).fromArray(e),t.position.x-=e[0],t.position.y-=e[1],t.position.z-=e[2],n.position.set(0,0,0),delete t.userData.pivot}return t})}_loadNodeShallow(e){const t=this.json,s=this.extensions,o=this;if(void 0!==this.nodeCache[e])return this.nodeCache[e];const i=t.nodes[e],a=i.name?o.createUniqueName(i.name):"",c=[],l=o._invokeOne(function(t){return t.createNodeMesh&&t.createNodeMesh(e)});return l&&c.push(l),void 0!==i.camera&&c.push(o.getDependency("camera",i.camera).then(function(e){return o._getNodeRef(o.cameraCache,i.camera,e)})),o._invokeAll(function(t){return t.createNodeAttachment&&t.createNodeAttachment(e)}).forEach(function(e){c.push(e)}),this.nodeCache[e]=Promise.all(c).then(function(t){let c;if(c=!0===i.isBone?new r.$Kf:t.length>1?new r.YJl:1===t.length?t[0]:new r.B69,c!==t[0])for(let e=0,s=t.length;e<s;e++)c.add(t[e]);if(i.name&&(c.userData.name=i.name,c.name=a),W(c,i),i.extensions&&$(s,c,i),void 0!==i.matrix){const e=new r.kn4;e.fromArray(i.matrix),c.applyMatrix4(e)}else void 0!==i.translation&&c.position.fromArray(i.translation),void 0!==i.rotation&&c.quaternion.fromArray(i.rotation),void 0!==i.scale&&c.scale.fromArray(i.scale);if(o.associations.has(c)){if(void 0!==i.mesh&&o.meshCache.refs[i.mesh]>1){const e=o.associations.get(c);o.associations.set(c,(0,n.A)({},e))}}else o.associations.set(c,{});return o.associations.get(c).nodes=e,c}),this.nodeCache[e]}loadScene(e){const t=this.extensions,s=this.json.scenes[e],n=this,o=new r.YJl;s.name&&(o.name=n.createUniqueName(s.name)),W(o,s),s.extensions&&$(t,o,s);const a=s.nodes||[],c=[];for(let r=0,i=a.length;r<i;r++)c.push(n.getDependency("node",a[r]));return Promise.all(c).then(function(e){for(let t=0,s=e.length;t<s;t++){const s=e[t];null!==s.parent?o.add((0,i.o8)(s)):o.add(s)}return n.associations=(e=>{const t=new Map;for(const[s,o]of n.associations)(s instanceof r.imn||s instanceof r.gPd)&&t.set(s,o);return e.traverse(e=>{const s=n.associations.get(e);null!=s&&t.set(e,s)}),t})(o),o})}_createAnimationTracks(e,t,s,n,o){const i=[],a=e.name?e.name:e.uuid,c=[];let l;switch(X[o.path]===X.weights?e.traverse(function(e){e.morphTargetInfluences&&c.push(e.name?e.name:e.uuid)}):c.push(a),X[o.path]){case X.weights:l=r.Hit;break;case X.rotation:l=r.MBL;break;case X.translation:case X.scale:l=r.RiT;break;default:if(1===s.itemSize)l=r.Hit;else l=r.RiT}const u=void 0!==n.interpolation?q[n.interpolation]:r.PJ3,h=this._getArrayFromAccessor(s);for(let r=0,d=c.length;r<d;r++){const e=new l(c[r]+"."+X[o.path],t.array,h,u);"CUBICSPLINE"===n.interpolation&&this._createCubicSplineTrackInterpolant(e),i.push(e)}return i}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){const e=se(t.constructor),s=new Float32Array(t.length);for(let n=0,r=t.length;n<r;n++)s[n]=t[n]*e;t=s}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(e){return new(this instanceof r.MBL?U:k)(this.times,this.values,this.getValueSize()/3,e)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function oe(e,t,s){const n=t.attributes,o=[];function i(t,n){return s.getDependency("accessor",t).then(function(t){e.setAttribute(n,t)})}for(const r in n){const t=V[r]||r.toLowerCase();t in e.attributes||o.push(i(n[r],t))}if(void 0!==t.indices&&!e.index){const n=s.getDependency("accessor",t.indices).then(function(t){e.setIndex(t)});o.push(n)}return r.ppV.workingColorSpace!==r.Zr2&&"COLOR_0"in n&&console.warn('THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "'.concat(r.ppV.workingColorSpace,'" not supported.')),W(e,t),function(e,t,s){const n=t.attributes,o=new r.NRn;if(void 0===n.POSITION)return;{const e=s.json.accessors[n.POSITION],t=e.min,i=e.max;if(void 0===t||void 0===i)return void console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");if(o.set(new r.Pq0(t[0],t[1],t[2]),new r.Pq0(i[0],i[1],i[2])),e.normalized){const t=se(G[e.componentType]);o.min.multiplyScalar(t),o.max.multiplyScalar(t)}}const i=t.targets;if(void 0!==i){const e=new r.Pq0,t=new r.Pq0;for(let n=0,r=i.length;n<r;n++){const r=i[n];if(void 0!==r.POSITION){const n=s.json.accessors[r.POSITION],o=n.min,i=n.max;if(void 0!==o&&void 0!==i){if(t.setX(Math.max(Math.abs(o[0]),Math.abs(i[0]))),t.setY(Math.max(Math.abs(o[1]),Math.abs(i[1]))),t.setZ(Math.max(Math.abs(o[2]),Math.abs(i[2]))),n.normalized){const e=se(G[n.componentType]);t.multiplyScalar(e)}e.max(t)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}o.expandByVector(e)}e.boundingBox=o;const a=new r.iyt;o.getCenter(a.center),a.radius=o.min.distanceTo(o.max)/2,e.boundingSphere=a}(e,t,s),Promise.all(o).then(function(){return void 0!==t.targets?function(e,t,s){let n=!1,r=!1,o=!1;for(let l=0,u=t.length;l<u;l++){const e=t[l];if(void 0!==e.POSITION&&(n=!0),void 0!==e.NORMAL&&(r=!0),void 0!==e.COLOR_0&&(o=!0),n&&r&&o)break}if(!n&&!r&&!o)return Promise.resolve(e);const i=[],a=[],c=[];for(let l=0,u=t.length;l<u;l++){const u=t[l];if(n){const t=void 0!==u.POSITION?s.getDependency("accessor",u.POSITION):e.attributes.position;i.push(t)}if(r){const t=void 0!==u.NORMAL?s.getDependency("accessor",u.NORMAL):e.attributes.normal;a.push(t)}if(o){const t=void 0!==u.COLOR_0?s.getDependency("accessor",u.COLOR_0):e.attributes.color;c.push(t)}}return Promise.all([Promise.all(i),Promise.all(a),Promise.all(c)]).then(function(t){const s=t[0],i=t[1],a=t[2];return n&&(e.morphAttributes.position=s),r&&(e.morphAttributes.normal=i),o&&(e.morphAttributes.color=a),e.morphTargetsRelative=!0,e})}(e,t.targets,s):e})}},9812(e,t,s){function n(e){const t=new Map,s=new Map,n=e.clone();return r(e,n,function(e,n){t.set(n,e),s.set(e,n)}),n.traverse(function(e){if(!e.isSkinnedMesh)return;const n=e,r=t.get(e),o=r.skeleton.bones;n.skeleton=r.skeleton.clone(),n.bindMatrix.copy(r.bindMatrix),n.skeleton.bones=o.map(function(e){return s.get(e)}),n.bind(n.skeleton,n.bindMatrix)}),n}function r(e,t,s){s(e,t);for(let n=0;n<e.children.length;n++)r(e.children[n],t.children[n],s)}s.d(t,{o8:()=>n})}}]);
 
 
services/explorer/dist/static/js/734.2eb423ea.chunk.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkdeepsearch_ui=self.webpackChunkdeepsearch_ui||[]).push([[734],{7734(e,i,t){t.r(i),t.d(i,{ComparisonPane:()=>U,default:()=>A});var r=t(9379),s=t(5043),a=t(3139),n=t(5597),l=t(3101),o=t(1137),d=t(3333),c=t(9885),u=t(9207),h=t(5260),p=t(9364);var m=t(824),v=t(579);const x={position:[3,-4,2],target:[0,0,0]},f=Object.freeze({maxPixels:2073600,reference:"square"}),w=e=>Number.isFinite(e)?"".concat((e/1024/1024).toFixed(2)," MiB"):"\u2014",g=e=>Number.isFinite(e)?e.toLocaleString():"\u2014",b=e=>Number.isFinite(e)?"".concat((e/1e3).toFixed(2)," s"):"\u2014",j=e=>{const i=new URL(e,window.location.href);if(!e||i.origin!==window.location.origin||!["http:","https:"].includes(i.protocol))throw new Error("Comparison files must be served by this preview.");return i.href};function y(e){if(1!==e.version||!Array.isArray(e.categories)||!Array.isArray(e.examples))throw new Error("Invalid comparison catalog.");const i=new Set(e.categories.map(e=>e.id)),t=new Set;if(9!==i.size||27!==e.examples.length)throw new Error("The comparison needs nine categories with three assets each.");const s=e.examples.map(e=>{if(!e.id||!e.label||t.has(e.id)||!i.has(e.category)||!e.glb||!e.usd)throw new Error("Invalid comparison asset.");t.add(e.id);const s=(0,r.A)((0,r.A)({},e.glb),{},{url:j(e.glb.url),articulationUrl:j(e.glb.articulationUrl)});if(!["ready","blocked","pending"].includes(e.usd.status))throw new Error("Every USD comparison needs a qualification result.");const a=(0,r.A)({},e.usd);if("blocked"===a.status&&"Source qualification pending"===a.reason&&(a.status="pending"),"ready"===a.status){if(a.url=j(a.url),!/\.(usd|usda|usdc)$/i.test(new URL(a.url).pathname))throw new Error("Native examples must be USD layers.");if(!1===a.motionQualified&&!a.motionReason)throw new Error("A visual inspection example needs its source motion limitation.")}else if(!a.reason)throw new Error("A blocked USD example needs an explanation.");if(a.auditUrl&&(a.auditUrl=j(a.auditUrl)),a.viewer){const e=(0,r.A)({},a.viewer);if("ready"!==e.status||"viewer-usd-v1"!==e.deliveryProfile||!/^[a-f0-9]{64}$/.test(e.sha256||"")||e.sourceSha256!==a.sha256||e.triangles!==a.triangles||!Number.isFinite(e.bytes)||e.bytes<=0||!Number.isFinite(e.textureBytes)||e.textureBytes<0)throw new Error("Viewer USD delivery requires a matching source and geometry audit.");if(e.url=j(e.url),!/\.(usd|usda|usdc)$/i.test(new URL(e.url).pathname))throw new Error("Viewer USD delivery must remain a USD layer.");e.auditUrl=j(e.auditUrl),a.viewer=(0,r.A)((0,r.A)((0,r.A)({},a),e),{},{viewer:void 0,motionQualified:a.motionQualified,motionReason:a.motionReason})}const n=function(e,i){if(null==e)return null;const t=(0,p.Z)(e.clipViewport),s=e.meta;if(!t||!s||"string"!==typeof s.renderer||!/^ovrtx(?:\s|$)/i.test(s.renderer)||"string"!==typeof s.render_script||!/^rtx-joints@[^\s]+$/.test(s.render_script)||s.width!==t.size[0]||s.height!==t.size[1]||!Number.isFinite(s.fps)||s.fps<=0||s.fps>240||!Number.isFinite(s.duration_s)||s.duration_s<=0||s.duration_s>3600||!Number.isInteger(s.frames)||s.frames<=0||Math.abs(s.frames/s.fps-s.duration_s)>1/s.fps+.001)throw new Error("RTX Motion requires matching published RTX clip metadata and viewport dimensions.");const a=new URL(i),n=(e,i)=>{if("string"!==typeof e||!e.trim())throw new Error("RTX Motion files must be served by this preview.");const t=new URL(e,a);if(t.origin!==a.origin||!["http:","https:"].includes(t.protocol)||t.username||t.password||t.hash||t.search||!i.test(t.pathname))throw new Error("RTX Motion files must be served by this preview.");return t.href};return(0,r.A)((0,r.A)({},e),{},{textured:n(e.textured,/\.mp4$/i),poster:n(e.poster,/\.(webp|png|jpe?g)$/i)})}(e.rtxMotion,window.location.href);return(0,r.A)((0,r.A)({},e),{},{glb:s,usd:a,rtxMotion:n})});for(const r of i)if(3!==s.filter(e=>e.category===r).length)throw new Error("Each category needs three assets.");return(0,r.A)((0,r.A)({},e),{},{examples:s})}function S(e){let{joint:i,store:t,format:r}=e;const a=(0,s.useRef)(null);(0,s.useEffect)(()=>{const e=e=>{var r;a.current&&(a.current.value=String(null!==(r=e[i.id])&&void 0!==r?r:t.homes[i.id]))};return e(t.live()),t.onFrame(e)},[i.id,t]);const n=i.label||i.name||i.id,l=i.continuous?" \xb7 Continuous rotation; preview one turn":"";return(0,v.jsxs)("label",{className:"vc-joint",children:[n,l,(0,v.jsx)("input",{ref:a,type:"range",min:"0",max:"1",step:"0.01","aria-label":"".concat(r.toUpperCase()," joint ").concat(n).concat(l),defaultValue:t.homes[i.id],onChange:e=>t.setTarget(i.id,Number(e.target.value),"instant")})]})}function U(e){var i;let{asset:t,format:o,onResult:p,onControl:m,viewport:b="square"}=e;const j=t[o],y=t.glb.view||(null===(i=t.glb.clipMeta)||void 0===i?void 0:i.camera)||x,U="usd"===o&&"pending"===j.status,[A,M]=(0,s.useState)(null),[C,N]=(0,s.useState)("blocked"===j.status?"Unsupported":U?"Preparing on cluster CPUs":"Loading"),[P,D]=(0,s.useState)("blocked"===j.status?j.reason:null),[k,R]=(0,s.useState)(0),L=(0,s.useRef)(0),E=(0,s.useRef)(!1),B=(0,s.useRef)(null),q=(0,l.B0)("".concat(t.id,":").concat(o)),T=(0,s.useCallback)(e=>{D((null===e||void 0===e?void 0:e.message)||"This viewer could not load the asset."),N("Failed"),M(null)},[]);(0,s.useEffect)(()=>{if("usd"===o&&"ready"!==j.status)return;const e=new AbortController;E.current=!1,B.current=null,L.current=performance.now(),M(null),D(null),N("Loading"),p(t.id,o,{status:"Loading"});return(async()=>{if("glb"===o){const i=await fetch(j.articulationUrl,{signal:e.signal});if(!i.ok)throw new Error("GLB joint data failed to load (".concat(i.status,")."));const s=await i.json();if(1!==s.version||"gltf"!==s.frame||!Array.isArray(s.bodies)||!Array.isArray(s.joints))throw new Error("Unsupported GLB joint export.");return(0,r.A)({glbUrl:j.url,articulation:s,store:(0,d.createJointStore)(s),view:y,clipMeta:j.clipMeta},t.experimentalManifest?{glbMaterialProfile:{profile:t.experimentalManifest.profile,manifest:t.experimentalManifest,sha256:j.sha256}}:{})}const i=await(0,c.Me)({url:j.url,signal:e.signal,onProgress:N,expectedSha256:t.experimentalManifest?j.sha256:void 0,snapshotCache:j.deliveryProfile||t.experimentalManifest?{context:t.experimentalManifest?"experimental-pbr-review":"prepared-review"}:void 0});if(e.signal.aborted)return null;const s=!1===j.motionQualified?(0,u.nativeUsdVisualMapping)(i):(0,u.nativeUsdArticulation)(i);return["robot","furniture"].includes(j.presentationKind)&&(s.articulation.kind=j.presentationKind),{usdModel:{loadScene:e=>(0,h.createUsdScene)(i,s,(0,r.A)((0,r.A)({},e),{},{baseUrl:j.url,renderBothSides:!0},t.experimentalManifest?{materialProfile:t.experimentalManifest.profile,experimentalManifest:t.experimentalManifest}:{})).then(e=>(j.previewMount&&(e.userData.previewMount=j.previewMount),e))},articulation:s.articulation,store:(0,d.createJointStore)(s.articulation),view:y,clipMeta:t.glb.clipMeta,metrics:i.metrics,diagnostics:s.diagnostics}})().then(i=>{!e.signal.aborted&&i&&(M(i),N("Preparing viewer"))}).catch(i=>{e.signal.aborted||T(i)}),()=>e.abort()},[t,j,o,k,T,y,p]);const F=t.rtxMotion,V=(0,s.useMemo)(()=>A?(0,r.A)((0,r.A)({},A),{},{presentation:"white-studio",renderPixelBudget:f,clipViewport:["square","rtx"].includes(b)?null===F||void 0===F?void 0:F.clipViewport:null}):A,[A,F,b]),G=(0,s.useMemo)(()=>F?{rtx:F}:null,[F]),Q=(0,a.A)({resetKey:"".concat(t.id,":").concat(k),modelKey:"".concat(t.id,":").concat(k),active:!0,imageTab:!1,model:V,clip:G,modelPending:!U&&"blocked"!==j.status&&!A&&!P,onModelUnavailable:T,workspace:(0,r.A)((0,r.A)({},q),{},{portal:!0,lazyShell:!0,onEscape:"self",labels:{back:"Comparison",dock:"Dock viewer"}})}),_=(0,r.A)((0,r.A)({},Q),{},{pickTab:e=>{"3d"!==e&&Q.showModel&&A&&A.store.setPose((0,r.A)({},A.store.live()),"instant"),Q.pickTab(e)}});return(0,s.useEffect)(()=>{var e,i,s;A&&Q.showModel&&Q.viewerApi&&B.current!==Q.viewerApi&&(B.current=Q.viewerApi,A.store.setPose(E.current?(0,r.A)({},A.store.live()):A.store.homes,"instant"),N("Ready"),E.current||(E.current=!0,p(t.id,o,{status:"Ready",readyMs:performance.now()-L.current,readerMs:null===(e=A.metrics)||void 0===e?void 0:e.loadMs,heapBytes:null===(i=A.metrics)||void 0===i?void 0:i.wasmHeapBytes,snapshotCacheHit:null===(s=A.metrics)||void 0===s?void 0:s.snapshotCacheHit,jointCount:A.store.ids.length})))},[t.id,o,A,Q.showModel,Q.viewerApi,p]),(0,s.useEffect)(()=>(m(t.id,o,A&&Q.showModel&&Q.viewerApi&&!P?(0,r.A)((0,r.A)({},A),{},{api:Q.viewerApi}):null),()=>m(t.id,o,null)),[t.id,o,A,Q.showModel,Q.viewerApi,P,m]),(0,s.useEffect)(()=>{P&&p(t.id,o,{status:C,error:P})},[t.id,o,P,C,p]),(0,v.jsxs)("section",{className:"vc-pane","aria-label":"".concat(o.toUpperCase()," viewer"),"data-format":o,"data-load-metrics":null!==A&&void 0!==A&&A.metrics?JSON.stringify(A.metrics):void 0,children:[(0,v.jsxs)("div",{className:"vc-pane-heading",children:[(0,v.jsx)("h3",{children:t.experimentalManifest?"Experimental ".concat(o.toUpperCase()):"glb"===o?"HD GLB":j.deliveryProfile?"Viewer USD":"Native USD"}),(0,v.jsx)("span",{role:"status","data-testid":"".concat(o,"-comparison-status"),children:Q.showClip?"RTX Motion":C})]}),F&&(0,v.jsx)("div",{className:"vc-media-tabs",children:(0,v.jsx)(n._f,{ctl:_})}),"usd"===o&&!1===j.motionQualified&&(0,v.jsxs)("p",{className:"vc-motion-note",role:"note",children:[(0,v.jsx)("strong",{children:"Motion disabled \xb7 native visual inspection."})," ",j.motionReason," Orbit, zoom and material inspection remain available."]}),U?(0,v.jsx)("div",{className:"vc-pending",children:(0,v.jsx)("p",{children:"The native source is being prepared and checked on the cluster CPUs. Refresh the catalog to load newly qualified examples."})}):P?(0,v.jsxs)("div",{className:"vc-failure",role:"alert",children:[(0,v.jsx)("p",{children:P}),"blocked"!==j.status&&(0,v.jsxs)("button",{onClick:()=>R(e=>e+1),children:["Retry ",o.toUpperCase()]})]}):(0,v.jsx)("div",{className:"vc-stage",ref:Q.regionRef,tabIndex:-1,children:(0,v.jsx)(n.z_,{ctl:Q,fileName:"".concat(t.label," \xb7 ").concat(o.toUpperCase()),renderPicture:()=>null})}),(0,v.jsxs)("div",{className:"vc-pane-facts",children:[(0,v.jsxs)("span",{children:[w(j.bytes+(j.textureBytes||0))," asset files"]}),(0,v.jsxs)("span",{children:[g(j.triangles)," triangles"]})]}),(0,v.jsx)("p",{className:"vc-muted",children:j.textureSummary||"Material audit unavailable."}),A&&Q.showModel&&"Ready"===C&&A.store.ids.length>0&&(0,v.jsxs)("details",{children:[(0,v.jsxs)("summary",{children:[A.store.ids.length," independent joint controls"]}),(0,v.jsx)("div",{className:"vc-joints",children:A.store.joints.map(e=>(0,v.jsx)(S,{joint:e,store:A.store,format:o},e.id))})]}),(0,v.jsxs)("p",{className:"vc-links",children:[j.url&&(0,v.jsxs)("a",{href:j.url,download:!0,children:["Download ",o.toUpperCase()]}),j.auditUrl&&(0,v.jsxs)(v.Fragment,{children:[" \xb7 ",(0,v.jsx)("a",{href:j.auditUrl,target:"_blank",rel:"noreferrer",children:"Source audit"})]})]}),(0,v.jsx)(n.Vo,{ctl:Q,fileName:"".concat(t.label," \xb7 ").concat(o.toUpperCase()),topOffset:0})]})}function A(){var e,i,t,a,n,d,c,u,h;const[x,f]=(0,s.useState)(null),[j,S]=(0,s.useState)(null),[A,M]=(0,s.useState)(null),[C,N]=(0,s.useState)({}),[P,D]=(0,s.useState)({}),[k,R]=(0,s.useState)(0),[L,E]=(0,s.useState)(()=>"experimental"===new URLSearchParams(window.location.search).get("materialProfile")?"experimental":"original"),[B,q]=(0,s.useState)(null),[T,F]=(0,s.useState)(()=>["wide","comparison"].includes(new URLSearchParams(window.location.search).get("viewport"))?"wide":"square"),[V,G]=(0,s.useState)(()=>{const e=new URLSearchParams(window.location.search).get("usdDelivery");return["viewer","source"].includes(e)?e:"auto"}),[Q,_]=(0,s.useState)(()=>{const e=new URLSearchParams(window.location.search).get("layout");return["glb","usd","both"].includes(e)?e:"usd"}),z=(0,s.useRef)({});(0,s.useEffect)(()=>{const e=new AbortController;return fetch("".concat("","/native-usd-comparison/manifest.json"),{signal:e.signal,cache:"no-store"}).then(async e=>{if(!e.ok)throw new Error("The comparison catalog is not installed in this preview.");return y(await e.json())}).then(i=>{if(e.signal.aborted)return;const t=new URLSearchParams(window.location.search),r=i.examples.find(e=>e.id===t.get("example")),s=i.categories.find(e=>e.id===t.get("category"))||i.categories[0];f(i),M(null),S(r||i.examples.find(e=>e.category===s.id))}).catch(i=>{e.signal.aborted||M(i.message)}),()=>e.abort()},[k]),(0,s.useEffect)(()=>{if("experimental"!==L||null===j||void 0===j||!j.experimentalPbr)return void q(null);const e=new AbortController;return q({id:j.id,pending:!0}),(0,m.gZ)(j.experimentalPbr,j,{signal:e.signal}).then(i=>{e.signal.aborted||q({id:j.id,manifest:i})}).catch(i=>{e.signal.aborted||q({id:j.id,error:i.message})}),()=>e.abort()},[j,L]);const H=(0,s.useCallback)((e,i,t)=>N(s=>(0,r.A)((0,r.A)({},s),{},{[e]:(0,r.A)((0,r.A)({},s[e]),{},{[i]:t})})),[]),I=(0,s.useCallback)((e,i,t)=>{z.current[i]={id:e,model:t},D(s=>(0,r.A)((0,r.A)({},s),{},{[i]:t?e:null}))},[]),O=e=>{if(!e||e.id===(null===j||void 0===j?void 0:j.id))return;S(e);const i=new URL(window.location.href);i.searchParams.set("example",e.id),i.searchParams.set("category",e.category),window.history.replaceState(null,"",i)},X="both"===Q?["glb","usd"]:[Q],$=(0,s.useMemo)(()=>{if(!j)return j;if("experimental"===L&&(null===B||void 0===B?void 0:B.id)===j.id&&B.manifest){const e=j.experimentalPbr,i=B.manifest,t=(0,m.L$)(i);return(0,r.A)((0,r.A)({},j),{},{experimentalManifest:i,glb:(0,r.A)((0,r.A)((0,r.A)((0,r.A)({},j.glb),e.glb),i.artifacts.glb),{},{textureBytes:t,articulationUrl:j.glb.articulationUrl,view:j.glb.view,clipMeta:j.glb.clipMeta}),usd:(0,r.A)((0,r.A)((0,r.A)((0,r.A)({},j.usd),e.usd),i.artifacts.usd),{},{viewer:void 0,textureBytes:t,motionQualified:j.usd.motionQualified,motionReason:j.usd.motionReason,previewMount:j.usd.previewMount,presentationKind:j.usd.presentationKind})})}const e=function(e){var i;let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"auto";return null===e||void 0===e||!e.viewer||"source"===t||"viewer"!==t&&"passed"!==(null===(i=e.viewer.browserQualification)||void 0===i?void 0:i.status)?e:e.viewer}(j.usd,V);return e===j.usd?j:(0,r.A)((0,r.A)({},j),{},{usd:e})},[j,V,L,B]),K=null===$||void 0===$?void 0:$.usd,J=!!j&&X.every(e=>P[e]===j.id),Z=J&&X.every(e=>{var i,t;return null===(i=z.current[e])||void 0===i||null===(t=i.model)||void 0===t?void 0:t.store.ids.length}),W="both"===Q?"both":"view",Y=e=>{for(const i of X){const t=z.current[i];(null===t||void 0===t?void 0:t.id)===j.id&&t.model&&e(t.model)}},ee=C[null===j||void 0===j?void 0:j.id]||{};return(0,v.jsxs)("main",{className:"vc-page",children:[(0,v.jsxs)("header",{children:[(0,v.jsx)("p",{className:"vc-eyebrow",children:"SimReady Central \xb7 viewer evaluation"}),(0,v.jsx)("h1",{children:"HD GLB versus native USD"}),(0,v.jsx)("p",{children:"Three matched assets in each of nine categories. Orbit, zoom, inspect materials and try the moving joints."})]}),A&&(0,v.jsx)("p",{role:"alert",children:A}),x&&j&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)("nav",{className:"vc-categories","aria-label":"Asset categories",children:x.categories.map(e=>(0,v.jsx)("button",{"aria-pressed":j.category===e.id,onClick:()=>O(x.examples.find(i=>i.category===e.id)),children:e.label},e.id))}),(0,v.jsx)("nav",{className:"vc-assets","aria-label":"Category assets",children:x.examples.filter(e=>e.category===j.category).map(e=>(0,v.jsxs)("button",{"aria-pressed":j.id===e.id,onClick:()=>O(e),children:[(0,v.jsx)("strong",{children:e.label}),(0,v.jsx)("span",{children:"ready"===e.usd.status?!1===e.usd.motionQualified?"GLB + USD \xb7 static USD":"GLB + USD":"pending"===e.usd.status?"USD preparing":"USD limitation"})]},e.id))}),(0,v.jsxs)("nav",{className:"vc-layout","aria-label":"Viewer layout",children:[[["both","Side by side"],["glb","HD GLB only"],["usd","Native USD only"]].map(e=>{let[i,t]=e;return(0,v.jsx)("button",{"aria-pressed":Q===i,onClick:()=>{_(i);const e=new URL(window.location.href);e.searchParams.set("layout",i),window.history.replaceState(null,"",e)},children:t},i)}),(0,v.jsx)("button",{onClick:()=>R(e=>e+1),children:"Refresh catalog"})]}),j.usd.viewer&&(0,v.jsx)("nav",{className:"vc-layout","aria-label":"USD delivery",children:[["auto","Qualified USD"],["viewer","passed"===(null===(e=j.usd.viewer.browserQualification)||void 0===e?void 0:e.status)?"Prepared viewer USD":"Experimental viewer USD"],["source","Original preview USD"]].map(e=>{let[i,t]=e;return(0,v.jsx)("button",{"aria-pressed":V===i,onClick:()=>{G(i);const e=new URL(window.location.href);"auto"===i?e.searchParams.delete("usdDelivery"):e.searchParams.set("usdDelivery",i),window.history.replaceState(null,"",e)},children:t},i)})}),j.experimentalPbr&&(0,v.jsx)("nav",{className:"vc-layout","aria-label":"Material profile",children:[["original","Original materials"],["experimental","Experimental baked materials"]].map(e=>{let[i,t]=e;return(0,v.jsx)("button",{"aria-pressed":L===i,onClick:()=>{E(i);const e=new URL(window.location.href);"original"===i?e.searchParams.delete("materialProfile"):e.searchParams.set("materialProfile","experimental"),window.history.replaceState(null,"",e)},children:t},i)})}),"experimental"===L&&(0,v.jsx)("p",{className:"vc-viewport-note",role:null!==B&&void 0!==B&&B.error?"alert":"note",children:j.experimentalPbr?null!==B&&void 0!==B&&B.error?"Experimental material audit failed: ".concat(B.error,". Original materials remain selected."):null!==B&&void 0!==B&&B.pending||(null===B||void 0===B?void 0:B.id)!==j.id?"Checking the shared experimental material audit.":(0,v.jsxs)(v.Fragment,{children:["Experimental material profile for both USD and GLB. Each retains its own geometry; cross-format triangulation differs. Full-resolution shared maps add ",w((0,m.L$)(B.manifest))," per delivery and substantially increase texture memory. Quality and speed remain under qualification. ",(0,v.jsx)("a",{href:j.experimentalPbr.manifest,target:"_blank",rel:"noreferrer",children:"Shared material audit"}),". Published RTX Motion remains the original reference."]}):"This asset has no shared experimental bake. Original materials remain selected."}),(0,v.jsx)("nav",{className:"vc-layout","aria-label":"Viewport framing",children:[["square","Square view"],["wide","Wide view"]].map(e=>{let[i,t]=e;return(0,v.jsx)("button",{"aria-pressed":T===i,onClick:()=>{F(i);const e=new URL(window.location.href);e.searchParams.set("viewport",i),window.history.replaceState(null,"",e)},children:t},i)})}),j.rtxMotion&&(0,v.jsx)("p",{className:"vc-viewport-note",role:"note",children:"square"===T?(0,v.jsxs)(v.Fragment,{children:[(0,v.jsxs)("strong",{children:[j.rtxMotion.clipViewport.size.join(" \xd7 ")," clip frame."]})," ",(0,p.Z)(j.rtxMotion.clipViewport).camera?"Interactive 3D opens at the qualified recorded camera.":"Interactive 3D fits the same clip aspect. Published RTX metadata has no absolute camera or world placement, so exact recorded framing is unavailable."," Browser lighting remains Central\u2019s; the Motion tab plays the published RTX render. Interactive rendering uses a 1080p pixel budget; asset geometry and HD textures stay intact."]}):(0,v.jsxs)(v.Fragment,{children:["Interactive 3D and RTX Motion share this wide panel. The ",j.rtxMotion.clipViewport.size.join(" \xd7 ")," HD video keeps its original aspect within the panel. Interactive pixels cannot exceed the equivalent Square view or the 1080p budget. If that would require upsampling, 3D stays square. Asset geometry and HD textures stay intact."]})}),(0,v.jsxs)("div",{className:"vc-selection",children:[(0,v.jsxs)("div",{children:[(0,v.jsx)("h2",{children:j.label}),(0,v.jsx)("p",{className:"vc-muted",children:j.description||"The two views use the same published asset and its canonical source USD."})]}),(0,v.jsxs)("div",{className:"vc-actions",children:[(0,v.jsxs)("button",{disabled:!J,onClick:()=>Y(e=>e.api.resetView()),children:["Reset ",W," cameras"]}),(0,v.jsxs)("button",{disabled:!Z||(0,o.VN)(),onClick:()=>Y(e=>"robot"===e.articulation.kind?e.store.playSequence():e.store.setAll(!0)),children:["Move ",W]}),(0,v.jsxs)("button",{disabled:!Z,onClick:()=>Y(e=>e.store.setPose((0,r.A)({},e.store.live()),"instant")),children:["Pause ",W]}),(0,v.jsxs)("button",{disabled:!J,onClick:()=>Y(e=>e.store.setPose(e.store.homes,"instant")),children:["Home ",W]})]})]}),(0,v.jsx)(l.Ay,{dockSignal:"".concat(j.id,":").concat(Q,":").concat(V,":").concat(T,":").concat(L),children:(0,v.jsx)("div",{className:"vc-pair ".concat("both"===Q?"":"vc-single"),"data-viewport":T,"data-usd-delivery":K.deliveryProfile?"viewer":"source","data-material-profile":$.experimentalManifest?"experimental":"original",children:X.map(e=>(0,v.jsx)(U,{asset:$,format:e,viewport:T,onResult:H,onControl:I},"".concat(j.id,":").concat(e,":").concat($[e].url)))})}),K.deliveryProfile&&(0,v.jsxs)("p",{className:"vc-muted",children:["passed"===(null===(i=K.browserQualification)||void 0===i?void 0:i.status)?"Prepared USD passed browser qualification.":"Experimental prepared USD; browser fidelity qualification is incomplete."," ",K.encodingSummary||"Texture dimensions preserved."," ",(0,v.jsx)("a",{href:K.auditUrl,target:"_blank",rel:"noreferrer",children:"Preparation audit"})]}),(0,v.jsx)("p",{className:"vc-muted vc-method",children:"Interactive GLB and USD use Central\u2019s browser lighting and renderer, with the same initial camera direction, and show both sides of surfaces. Camera orbit is independent. Native USD reads geometry and materials from a prepared USD layer. Moving examples also validate its source physics. Visual inspection examples preserve source joint data and disable motion. Materials use PreviewSurface; original MDL optical equivalence is still under evaluation."}),(0,v.jsxs)("table",{className:"vc-table","aria-label":"Selected asset comparison",children:[(0,v.jsx)("thead",{children:(0,v.jsxs)("tr",{children:[(0,v.jsx)("th",{children:"Comparison"}),(0,v.jsx)("th",{children:"HD GLB"}),(0,v.jsx)("th",{children:"Native USD"})]})}),(0,v.jsxs)("tbody",{children:[(0,v.jsxs)("tr",{children:[(0,v.jsx)("th",{children:"Ready this visit"}),(0,v.jsx)("td",{children:b(null===(t=ee.glb)||void 0===t?void 0:t.readyMs)}),(0,v.jsx)("td",{children:b(null===(a=ee.usd)||void 0===a?void 0:a.readyMs)})]}),(0,v.jsxs)("tr",{children:[(0,v.jsx)("th",{children:"Asset file size"}),(0,v.jsx)("td",{children:w($.glb.bytes+($.glb.textureBytes||0))}),(0,v.jsx)("td",{children:w(K.bytes+(K.textureBytes||0))})]}),$.experimentalManifest&&(0,v.jsxs)("tr",{children:[(0,v.jsx)("th",{children:"Shared external maps per format"}),(0,v.jsx)("td",{children:w($.glb.textureBytes)}),(0,v.jsx)("td",{children:w(K.textureBytes)})]}),j.usd.viewer&&(0,v.jsxs)("tr",{children:[(0,v.jsx)("th",{children:"USD before preparation"}),(0,v.jsx)("td",{children:"\u2014"}),(0,v.jsx)("td",{children:w(j.usd.bytes+(j.usd.textureBytes||0))})]}),(0,v.jsxs)("tr",{children:[(0,v.jsx)("th",{children:"Geometry"}),(0,v.jsxs)("td",{children:[g(j.glb.triangles)," triangles"]}),(0,v.jsxs)("td",{children:[g(K.triangles)," triangles"]})]}),(0,v.jsxs)("tr",{children:[(0,v.jsx)("th",{children:"Joint controls"}),(0,v.jsx)("td",{children:g(null===(n=ee.glb)||void 0===n?void 0:n.jointCount)}),(0,v.jsx)("td",{children:g(null===(d=ee.usd)||void 0===d?void 0:d.jointCount)})]}),(0,v.jsxs)("tr",{children:[(0,v.jsx)("th",{children:"USD reader / heap"}),(0,v.jsx)("td",{children:"\u2014"}),(0,v.jsxs)("td",{children:[b(null===(c=ee.usd)||void 0===c?void 0:c.readerMs)," / ",w(null===(u=ee.usd)||void 0===u?void 0:u.heapBytes),null!==(h=ee.usd)&&void 0!==h&&h.snapshotCacheHit?" \xb7 parsed snapshot reused":""]})]})]})]}),(0,v.jsx)("p",{className:"vc-muted vc-method",children:"Visit times may use cached files; side-by-side mode loads both views concurrently. They are for inspection, not a production speed benchmark. File sizes exclude the common page, reader runtime and GLB joint sidecar."}),j.findings&&(0,v.jsx)("div",{className:"vc-findings",children:["geometry","materials","motion"].map(e=>j.findings[e]&&(0,v.jsxs)("p",{children:[(0,v.jsxs)("strong",{children:[e[0].toUpperCase()+e.slice(1),":"]})," ",j.findings[e]]},e))}),(0,v.jsxs)("details",{className:"vc-overview",children:[(0,v.jsx)("summary",{children:"All 27 comparisons"}),(0,v.jsx)("div",{className:"vc-table-scroll",children:(0,v.jsxs)("table",{className:"vc-table",children:[(0,v.jsx)("thead",{children:(0,v.jsxs)("tr",{children:[(0,v.jsx)("th",{children:"Category / asset"}),(0,v.jsx)("th",{children:"USD qualification"}),(0,v.jsx)("th",{children:"GLB files"}),(0,v.jsx)("th",{children:"USD files"}),(0,v.jsx)("th",{children:"GLB / USD ready this visit"})]})}),(0,v.jsx)("tbody",{children:x.examples.map(e=>{var i,t,r,s,a,n,l;return(0,v.jsxs)("tr",{children:[(0,v.jsx)("th",{children:(0,v.jsxs)("button",{onClick:()=>O(e),children:[null===(i=x.categories.find(i=>i.id===e.category))||void 0===i?void 0:i.label," \xb7 ",e.label]})}),(0,v.jsx)("td",{children:(null===(t=C[e.id])||void 0===t||null===(r=t.usd)||void 0===r?void 0:r.error)||("ready"===e.usd.status?!1===e.usd.motionQualified?"Geometry and materials qualified; motion disabled":"Source qualified":"pending"===e.usd.status?"Preparing on cluster CPUs":e.usd.reason)}),(0,v.jsx)("td",{children:w(e.glb.bytes)}),(0,v.jsx)("td",{children:w(e.usd.bytes+(e.usd.textureBytes||0))}),(0,v.jsxs)("td",{children:[b(null===(s=C[e.id])||void 0===s||null===(a=s.glb)||void 0===a?void 0:a.readyMs)," / ",b(null===(n=C[e.id])||void 0===n||null===(l=n.usd)||void 0===l?void 0:l.readyMs)]})]},e.id)})})]})})]})]})]})}}}]);
 
 
services/explorer/dist/static/js/816.6d66a696.chunk.js DELETED
The diff for this file is too large to render. See raw diff
 
services/explorer/dist/static/js/816.6d66a696.chunk.js.LICENSE.txt DELETED
@@ -1,5 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2010-2026 Three.js Authors
4
- * SPDX-License-Identifier: MIT
5
- */
 
 
 
 
 
 
services/explorer/dist/static/js/857.e9f384a0.chunk.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkdeepsearch_ui=self.webpackChunkdeepsearch_ui||[]).push([[857],{6857(e,r,o){o.r(r),o.d(r,{readLightUsdSnapshotRound2:()=>d});var i=o(9379),t=o(9885),n=o(7863);const s=()=>new DOMException("USD load cancelled","AbortError");let a;function l(e){const r=new URL(e,window.location.href);if(r.origin!==window.location.origin)throw new Error("USD review resources must use this origin");return r.href}async function d(){let{file:e,url:r,filename:o,getHeaders:d,signal:c,onProgress:u,expectedSha256:h,snapshotCache:w}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(null!==c&&void 0!==c&&c.aborted)throw s();const m=performance.now(),f=(0,t.mx)(o||(null===e||void 0===e?void 0:e.name)||r);if((null===e||void 0===e?void 0:e.size)>t.Z6)throw new Error("USD layer exceeds the 64 MiB qualification limit");const v="",p="public-central-robot-demo-v1"===(null===w||void 0===w?void 0:w.context)&&!e&&!d&&/^[a-f0-9]{64}$/.test(h||""),g=await function(e,r,o){const i=()=>fetch("".concat(e,"/usd-round2/lightusd/snapshot-v2/runtime.json"),{signal:o?void 0:r,credentials:"same-origin",cache:o?"default":"no-store"}).then(e=>{if(!e.ok)throw new Error("The isolated LightUSD experiment runtime is not installed");return e.json()});return o?(a||(a=i().catch(e=>{throw a=null,e})),a):i()}(v,c,p);if(1!==g.version||"lightusd-next-loaded-layer"!==g.reader||"1.0.0-rc4"!==g.readerVersion||1!==g.loadedLayerApi||1!==g.viewerSnapshotApi||"simready-viewer-snapshot-v2"!==g.variant||"string"!==typeof g.revision||!g.revision)throw new Error("The isolated LightUSD runtime manifest is unsupported");const y=new URL("".concat(v.replace(/\/$/,""),"/"),window.location.origin),M=l(new URL(g.worker,y).href),S=p?JSON.stringify([w.context,l(r),h,g.revision,M]):null,b=(0,t.yM)(S);if(null!==c&&void 0!==c&&c.aborted)throw s();var U;if(b)return b.metrics=(0,i.A)((0,i.A)({},b.metrics),{},{snapshotCacheSourceWorkerMs:null===(U=b.metrics)||void 0===U?void 0:U.workerMs,runtimeMs:0,physicsMs:0,opinionMs:0,geometryMs:0,workerMs:0,wasmHeapBytes:0,downloadMs:0,verificationMs:0,snapshotCacheHit:!0,loadMs:performance.now()-m}),b;null===u||void 0===u||u("download");const E=performance.now(),L=e?await e.arrayBuffer():await(0,t.HX)(await fetch(l(r),{signal:c,credentials:"same-origin",headers:(null===d||void 0===d?void 0:d())||{}}),c);if(L.byteLength>t.Z6)throw new Error("USD layer exceeds the 64 MiB qualification limit");if(null!==c&&void 0!==c&&c.aborted)throw s();const k=performance.now()-E,D=performance.now(),x=void 0===h?null:await(0,n.n)(L,h,"USD layer"),A=void 0===h?0:performance.now()-D;if(null!==c&&void 0!==c&&c.aborted)throw s();return new Promise((e,r)=>{let o,n,a=!1;const l=(i,t)=>{var s;a||(a=!0,clearTimeout(n),null===c||void 0===c||c.removeEventListener("abort",d),null===(s=o)||void 0===s||s.terminate(),i?r(i):e(t))},d=()=>l(s());try{if(o=new Worker(M,{type:"module",name:"simready-lightusd-snapshot-round2"}),null===c||void 0===c||c.addEventListener("abort",d,{once:!0}),null!==c&&void 0!==c&&c.aborted)return void d();o.onerror=e=>l(new Error(e.message||"LightUSD worker failed")),o.onmessageerror=()=>l(new Error("LightUSD result could not be transferred")),o.onmessage=e=>{let{data:r}=e;if("progress"===r.type)null===u||void 0===u||u(r.stage);else if("error"===r.type)l(new Error(r.message));else if("result"===r.type){if(r.result.metrics=(0,i.A)((0,i.A)({},r.result.metrics),{},{downloadMs:k,verificationMs:A,loadMs:performance.now()-m,runtimeWasmBytes:g.wasmBytes,runtimeRevision:g.revision,snapshotCacheHit:!1}),x&&(r.result.metrics.sourceSha256=x),S)try{(0,t.eH)(S,r.result)}catch(o){}l(null,r.result)}},n=setTimeout(()=>l(new Error("LightUSD exceeded the 60 second parse limit")),6e4),o.postMessage({bytes:L,filename:f},[L])}catch(h){l(h)}})}}}]);
 
 
services/explorer/dist/static/js/892.bbb0991c.chunk.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkdeepsearch_ui=self.webpackChunkdeepsearch_ui||[]).push([[892],{1471(e,t,s){s.d(t,{Z:()=>i});const i={name:"CopyShader",uniforms:{tDiffuse:{value:null},opacity:{value:1}},vertexShader:"\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}",fragmentShader:"\n\n\t\tuniform float opacity;\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 texel = texture2D( tDiffuse, vUv );\n\t\t\tgl_FragColor = opacity * texel;\n\n\n\t\t}"}},3521(e,t,s){s.d(t,{F:()=>o,o:()=>r});var i=s(9435);class r{constructor(){this.isPass=!0,this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!1}setSize(){}render(){console.error("THREE.Pass: .render() must be implemented in derived pass.")}dispose(){}}const n=new i.qUd(-1,1,1,-1,0,1);class h extends i.LoY{constructor(){super(),this.setAttribute("position",new i.qtW([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new i.qtW([0,2,0,0,2,0],2))}}const a=new h;class o{constructor(e){this._mesh=new i.eaF(a,e)}dispose(){this._mesh.geometry.dispose()}render(e){e.render(this._mesh,n)}get material(){return this._mesh.material}set material(e){this._mesh.material=e}}},8892(e,t,s){s.r(t),s.d(t,{EffectComposer:()=>d});var i=s(9435),r=s(1471),n=s(3521);class h extends n.o{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"tDiffuse";super(),this.textureID=t,this.uniforms=null,this.material=null,e instanceof i.BKk?(this.uniforms=e.uniforms,this.material=e):e&&(this.uniforms=i.LlO.clone(e.uniforms),this.material=new i.BKk({name:void 0!==e.name?e.name:"unspecified",defines:Object.assign({},e.defines),uniforms:this.uniforms,vertexShader:e.vertexShader,fragmentShader:e.fragmentShader})),this._fsQuad=new n.F(this.material)}render(e,t,s){this.uniforms[this.textureID]&&(this.uniforms[this.textureID].value=s.texture),this._fsQuad.material=this.material,this.renderToScreen?(e.setRenderTarget(null),this._fsQuad.render(e)):(e.setRenderTarget(t),this.clear&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),this._fsQuad.render(e))}dispose(){this.material.dispose(),this._fsQuad.dispose()}}class a extends n.o{constructor(e,t){super(),this.scene=e,this.camera=t,this.clear=!0,this.needsSwap=!1,this.inverse=!1}render(e,t,s){const i=e.getContext(),r=e.state;let n,h;r.buffers.color.setMask(!1),r.buffers.depth.setMask(!1),r.buffers.color.setLocked(!0),r.buffers.depth.setLocked(!0),this.inverse?(n=0,h=1):(n=1,h=0),r.buffers.stencil.setTest(!0),r.buffers.stencil.setOp(i.REPLACE,i.REPLACE,i.REPLACE),r.buffers.stencil.setFunc(i.ALWAYS,n,4294967295),r.buffers.stencil.setClear(h),r.buffers.stencil.setLocked(!0),e.setRenderTarget(s),this.clear&&e.clear(),e.render(this.scene,this.camera),e.setRenderTarget(t),this.clear&&e.clear(),e.render(this.scene,this.camera),r.buffers.color.setLocked(!1),r.buffers.depth.setLocked(!1),r.buffers.color.setMask(!0),r.buffers.depth.setMask(!0),r.buffers.stencil.setLocked(!1),r.buffers.stencil.setFunc(i.EQUAL,1,4294967295),r.buffers.stencil.setOp(i.KEEP,i.KEEP,i.KEEP),r.buffers.stencil.setLocked(!0)}}class o extends n.o{constructor(){super(),this.needsSwap=!1}render(e){e.state.buffers.stencil.setLocked(!1),e.state.buffers.stencil.setTest(!1)}}class d{constructor(e,t){if(this.renderer=e,this._pixelRatio=e.getPixelRatio(),void 0===t){const s=e.getSize(new i.I9Y);this._width=s.width,this._height=s.height,(t=new i.nWS(this._width*this._pixelRatio,this._height*this._pixelRatio,{type:i.ix0})).texture.name="EffectComposer.rt1"}else this._width=t.width,this._height=t.height;this.renderTarget1=t,this.renderTarget2=t.clone(),this.renderTarget2.texture.name="EffectComposer.rt2",this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2,this.renderToScreen=!0,this.passes=[],this.copyPass=new h(r.Z),this.copyPass.material.blending=i.XIg,this.timer=new i.M4G}swapBuffers(){const e=this.readBuffer;this.readBuffer=this.writeBuffer,this.writeBuffer=e}addPass(e){this.passes.push(e),e.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}insertPass(e,t){this.passes.splice(t,0,e),e.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}removePass(e){const t=this.passes.indexOf(e);-1!==t&&this.passes.splice(t,1)}isLastEnabledPass(e){for(let t=e+1;t<this.passes.length;t++)if(this.passes[t].enabled)return!1;return!0}render(e){this.timer.update(),void 0===e&&(e=this.timer.getDelta());const t=this.renderer.getRenderTarget();let s=!1;for(let i=0,r=this.passes.length;i<r;i++){const t=this.passes[i];if(!1!==t.enabled){if(t.renderToScreen=this.renderToScreen&&this.isLastEnabledPass(i),t.render(this.renderer,this.writeBuffer,this.readBuffer,e,s),t.needsSwap){if(s){const t=this.renderer.getContext(),s=this.renderer.state.buffers.stencil;s.setFunc(t.NOTEQUAL,1,4294967295),this.copyPass.render(this.renderer,this.writeBuffer,this.readBuffer,e),s.setFunc(t.EQUAL,1,4294967295)}this.swapBuffers()}void 0!==a&&(t instanceof a?s=!0:t instanceof o&&(s=!1))}}this.renderer.setRenderTarget(t)}reset(e){if(void 0===e){const t=this.renderer.getSize(new i.I9Y);this._pixelRatio=this.renderer.getPixelRatio(),this._width=t.width,this._height=t.height,(e=this.renderTarget1.clone()).setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}this.renderTarget1.dispose(),this.renderTarget2.dispose(),this.renderTarget1=e,this.renderTarget2=e.clone(),this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2}setSize(e,t){this._width=e,this._height=t;const s=this._width*this._pixelRatio,i=this._height*this._pixelRatio;this.renderTarget1.setSize(s,i),this.renderTarget2.setSize(s,i);for(let r=0;r<this.passes.length;r++)this.passes[r].setSize(s,i)}setPixelRatio(e){this._pixelRatio=e,this.setSize(this._width,this._height)}dispose(){this.renderTarget1.dispose(),this.renderTarget2.dispose(),this.copyPass.dispose()}}}}]);
 
 
services/explorer/dist/static/js/899.9ddb24b2.chunk.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunkdeepsearch_ui=self.webpackChunkdeepsearch_ui||[]).push([[899],{1471(t,e,i){i.d(e,{Z:()=>n});const n={name:"CopyShader",uniforms:{tDiffuse:{value:null},opacity:{value:1}},vertexShader:"\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}",fragmentShader:"\n\n\t\tuniform float opacity;\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 texel = texture2D( tDiffuse, vUv );\n\t\t\tgl_FragColor = opacity * texel;\n\n\n\t\t}"}},3521(t,e,i){i.d(e,{F:()=>l,o:()=>a});var n=i(9435);class a{constructor(){this.isPass=!0,this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!1}setSize(){}render(){console.error("THREE.Pass: .render() must be implemented in derived pass.")}dispose(){}}const r=new n.qUd(-1,1,1,-1,0,1);class o extends n.LoY{constructor(){super(),this.setAttribute("position",new n.qtW([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new n.qtW([0,2,0,0,2,0],2))}}const s=new o;class l{constructor(t){this._mesh=new n.eaF(s,t)}dispose(){this._mesh.geometry.dispose()}render(t){t.render(this._mesh,r)}get material(){return this._mesh.material}set material(t){this._mesh.material=t}}},8899(t,e,i){i.r(e),i.d(e,{GTAOPass:()=>x});var n=i(9435),a=i(3521);const r={name:"GTAOShader",defines:{PERSPECTIVE_CAMERA:1,SAMPLES:16,NORMAL_VECTOR_TYPE:1,DEPTH_SWIZZLING:"x",SCREEN_SPACE_RADIUS:0,SCREEN_SPACE_RADIUS_SCALE:100,SCENE_CLIP_BOX:0},uniforms:{tNormal:{value:null},tDepth:{value:null},tNoise:{value:null},resolution:{value:new n.I9Y},cameraNear:{value:null},cameraFar:{value:null},cameraProjectionMatrix:{value:new n.kn4},cameraProjectionMatrixInverse:{value:new n.kn4},cameraWorldMatrix:{value:new n.kn4},radius:{value:.25},distanceExponent:{value:1},thickness:{value:1},distanceFallOff:{value:1},scale:{value:1},sceneBoxMin:{value:new n.Pq0(-1,-1,-1)},sceneBoxMax:{value:new n.Pq0(1,1,1)}},vertexShader:"\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t}",fragmentShader:"\n\t\tvarying vec2 vUv;\n\t\tuniform highp sampler2D tNormal;\n\t\tuniform highp sampler2D tDepth;\n\t\tuniform sampler2D tNoise;\n\t\tuniform vec2 resolution;\n\t\tuniform float cameraNear;\n\t\tuniform float cameraFar;\n\t\tuniform mat4 cameraProjectionMatrix;\n\t\tuniform mat4 cameraProjectionMatrixInverse;\n\t\tuniform mat4 cameraWorldMatrix;\n\t\tuniform float radius;\n\t\tuniform float distanceExponent;\n\t\tuniform float thickness;\n\t\tuniform float distanceFallOff;\n\t\tuniform float scale;\n\t\t#if SCENE_CLIP_BOX == 1\n\t\t\tuniform vec3 sceneBoxMin;\n\t\t\tuniform vec3 sceneBoxMax;\n\t\t#endif\n\n\t\t#include <common>\n\t\t#include <packing>\n\n\t\t#ifndef FRAGMENT_OUTPUT\n\t\t#define FRAGMENT_OUTPUT vec4(vec3(ao), 1.)\n\t\t#endif\n\n\t\tvec3 getViewPosition( const in vec2 screenPosition, const in float depth ) {\n\t\t\t#ifdef USE_REVERSED_DEPTH_BUFFER\n\t\t\t\tvec4 clipSpacePosition = vec4( vec2( screenPosition ) * 2.0 - 1.0, depth, 1.0 );\n\t\t\t#else\n\t\t\t\tvec4 clipSpacePosition = vec4( vec3( screenPosition, depth ) * 2.0 - 1.0, 1.0 );\n\t\t\t#endif\n\t\t\tvec4 viewSpacePosition = cameraProjectionMatrixInverse * clipSpacePosition;\n\t\t\treturn viewSpacePosition.xyz / viewSpacePosition.w;\n\t\t}\n\n\t\tfloat getDepth(const vec2 uv) {\n\t\t\treturn textureLod(tDepth, uv.xy, 0.0).DEPTH_SWIZZLING;\n\t\t}\n\n\t\tfloat fetchDepth(const ivec2 uv) {\n\t\t\treturn texelFetch(tDepth, uv.xy, 0).DEPTH_SWIZZLING;\n\t\t}\n\n\t\tfloat getViewZ(const in float depth) {\n\t\t\t#if PERSPECTIVE_CAMERA == 1\n\t\t\t\treturn perspectiveDepthToViewZ(depth, cameraNear, cameraFar);\n\t\t\t#else\n\t\t\t\treturn orthographicDepthToViewZ(depth, cameraNear, cameraFar);\n\t\t\t#endif\n\t\t}\n\n\t\tvec3 computeNormalFromDepth(const vec2 uv) {\n\t\t\tvec2 size = vec2(textureSize(tDepth, 0));\n\t\t\tivec2 p = ivec2(uv * size);\n\t\t\tfloat c0 = fetchDepth(p);\n\t\t\tfloat l2 = fetchDepth(p - ivec2(2, 0));\n\t\t\tfloat l1 = fetchDepth(p - ivec2(1, 0));\n\t\t\tfloat r1 = fetchDepth(p + ivec2(1, 0));\n\t\t\tfloat r2 = fetchDepth(p + ivec2(2, 0));\n\t\t\tfloat b2 = fetchDepth(p - ivec2(0, 2));\n\t\t\tfloat b1 = fetchDepth(p - ivec2(0, 1));\n\t\t\tfloat t1 = fetchDepth(p + ivec2(0, 1));\n\t\t\tfloat t2 = fetchDepth(p + ivec2(0, 2));\n\t\t\tfloat dl = abs((2.0 * l1 - l2) - c0);\n\t\t\tfloat dr = abs((2.0 * r1 - r2) - c0);\n\t\t\tfloat db = abs((2.0 * b1 - b2) - c0);\n\t\t\tfloat dt = abs((2.0 * t1 - t2) - c0);\n\t\t\tvec3 ce = getViewPosition(uv, c0).xyz;\n\t\t\tvec3 dpdx = (dl < dr) ? ce - getViewPosition((uv - vec2(1.0 / size.x, 0.0)), l1).xyz : -ce + getViewPosition((uv + vec2(1.0 / size.x, 0.0)), r1).xyz;\n\t\t\tvec3 dpdy = (db < dt) ? ce - getViewPosition((uv - vec2(0.0, 1.0 / size.y)), b1).xyz : -ce + getViewPosition((uv + vec2(0.0, 1.0 / size.y)), t1).xyz;\n\t\t\treturn normalize(cross(dpdx, dpdy));\n\t\t}\n\n\t\tvec3 getViewNormal(const vec2 uv) {\n\t\t\t#if NORMAL_VECTOR_TYPE == 2\n\t\t\t\treturn normalize(textureLod(tNormal, uv, 0.).rgb);\n\t\t\t#elif NORMAL_VECTOR_TYPE == 1\n\t\t\t\treturn unpackRGBToNormal(textureLod(tNormal, uv, 0.).rgb);\n\t\t\t#else\n\t\t\t\treturn computeNormalFromDepth(uv);\n\t\t\t#endif\n\t\t}\n\n\t\tvec3 getSceneUvAndDepth(vec3 sampleViewPos) {\n\t\t\tvec4 sampleClipPos = cameraProjectionMatrix * vec4(sampleViewPos, 1.);\n\t\t\tvec2 sampleUv = sampleClipPos.xy / sampleClipPos.w * 0.5 + 0.5;\n\t\t\tfloat sampleSceneDepth = getDepth(sampleUv);\n\t\t\treturn vec3(sampleUv, sampleSceneDepth);\n\t\t}\n\n\t\tvoid main() {\n\t\t\tfloat depth = getDepth(vUv.xy);\n\n\t\t\t#ifdef USE_REVERSED_DEPTH_BUFFER\n\t\t\t\tif (depth <= 0.0) {\n\t\t\t\t\tdiscard;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t#else\n\t\t\t\tif (depth >= 1.0) {\n\t\t\t\t\tdiscard;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t#endif\n\t\t\t\n\t\t\tvec3 viewPos = getViewPosition(vUv, depth);\n\t\t\tvec3 viewNormal = getViewNormal(vUv);\n\n\t\t\tfloat radiusToUse = radius;\n\t\t\tfloat distanceFalloffToUse = thickness;\n\t\t\t#if SCREEN_SPACE_RADIUS == 1\n\t\t\t\tfloat radiusScale = getViewPosition(vec2(0.5 + float(SCREEN_SPACE_RADIUS_SCALE) / resolution.x, 0.0), depth).x;\n\t\t\t\tradiusToUse *= radiusScale;\n\t\t\t\tdistanceFalloffToUse *= radiusScale;\n\t\t\t#endif\n\n\t\t\t#if SCENE_CLIP_BOX == 1\n\t\t\t\tvec3 worldPos = (cameraWorldMatrix * vec4(viewPos, 1.0)).xyz;\n\t\t\t\tfloat boxDistance = length(max(vec3(0.0), max(sceneBoxMin - worldPos, worldPos - sceneBoxMax)));\n\t\t\t\tif (boxDistance > radiusToUse) {\n\t\t\t\t\tdiscard;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t#endif\n\n\t\t\tvec2 noiseResolution = vec2(textureSize(tNoise, 0));\n\t\t\tvec2 noiseUv = vUv * resolution / noiseResolution;\n\t\t\tvec4 noiseTexel = textureLod(tNoise, noiseUv, 0.0);\n\t\t\tvec3 randomVec = noiseTexel.xyz * 2.0 - 1.0;\n\t\t\tvec3 tangent = normalize(vec3(randomVec.xy, 0.));\n\t\t\tvec3 bitangent = vec3(-tangent.y, tangent.x, 0.);\n\t\t\tmat3 kernelMatrix = mat3(tangent, bitangent, vec3(0., 0., 1.));\n\n\t\t\tconst int DIRECTIONS = SAMPLES < 30 ? 3 : 5;\n\t\t\tconst int STEPS = (SAMPLES + DIRECTIONS - 1) / DIRECTIONS;\n\t\t\tfloat ao = 0.0;\n\t\t\tfor (int i = 0; i < DIRECTIONS; ++i) {\n\n\t\t\t\tfloat angle = float(i) / float(DIRECTIONS) * PI;\n\t\t\t\tvec4 sampleDir = vec4(cos(angle), sin(angle), 0., 0.5 + 0.5 * noiseTexel.w);\n\t\t\t\tsampleDir.xyz = normalize(kernelMatrix * sampleDir.xyz);\n\n\t\t\t\tvec3 viewDir = normalize(-viewPos.xyz);\n\t\t\t\tvec3 sliceBitangent = normalize(cross(sampleDir.xyz, viewDir));\n\t\t\t\tvec3 sliceTangent = cross(sliceBitangent, viewDir);\n\t\t\t\tvec3 normalInSlice = normalize(viewNormal - sliceBitangent * dot(viewNormal, sliceBitangent));\n\n\t\t\t\tvec3 tangentToNormalInSlice = cross(normalInSlice, sliceBitangent);\n\t\t\t\tvec2 cosHorizons = vec2(dot(viewDir, tangentToNormalInSlice), dot(viewDir, -tangentToNormalInSlice));\n\n\t\t\t\tfor (int j = 0; j < STEPS; ++j) {\n\t\t\t\t\tvec3 sampleViewOffset = sampleDir.xyz * radiusToUse * sampleDir.w * pow(float(j + 1) / float(STEPS), distanceExponent);\n\n\t\t\t\t\tvec3 sampleSceneUvDepth = getSceneUvAndDepth(viewPos + sampleViewOffset);\n\t\t\t\t\tvec3 sampleSceneViewPos = getViewPosition(sampleSceneUvDepth.xy, sampleSceneUvDepth.z);\n\t\t\t\t\tvec3 viewDelta = sampleSceneViewPos - viewPos;\n\t\t\t\t\tif (abs(viewDelta.z) < thickness) {\n\t\t\t\t\t\tfloat sampleCosHorizon = dot(viewDir, normalize(viewDelta));\n\t\t\t\t\t\tcosHorizons.x += max(0., (sampleCosHorizon - cosHorizons.x) * mix(1., 2. / float(j + 2), distanceFallOff));\n\t\t\t\t\t}\n\n\t\t\t\t\tsampleSceneUvDepth = getSceneUvAndDepth(viewPos - sampleViewOffset);\n\t\t\t\t\tsampleSceneViewPos = getViewPosition(sampleSceneUvDepth.xy, sampleSceneUvDepth.z);\n\t\t\t\t\tviewDelta = sampleSceneViewPos - viewPos;\n\t\t\t\t\tif (abs(viewDelta.z) < thickness) {\n\t\t\t\t\t\tfloat sampleCosHorizon = dot(viewDir, normalize(viewDelta));\n\t\t\t\t\t\tcosHorizons.y += max(0., (sampleCosHorizon - cosHorizons.y) * mix(1., 2. / float(j + 2), distanceFallOff));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvec2 sinHorizons = sqrt(1. - cosHorizons * cosHorizons);\n\t\t\t\tfloat nx = dot(normalInSlice, sliceTangent);\n\t\t\t\tfloat ny = dot(normalInSlice, viewDir);\n\t\t\t\tfloat nxb = 1. / 2. * (acos(cosHorizons.y) - acos(cosHorizons.x) + sinHorizons.x * cosHorizons.x - sinHorizons.y * cosHorizons.y);\n\t\t\t\tfloat nyb = 1. / 2. * (2. - cosHorizons.x * cosHorizons.x - cosHorizons.y * cosHorizons.y);\n\t\t\t\tfloat occlusion = nx * nxb + ny * nyb;\n\t\t\t\tao += occlusion;\n\t\t\t}\n\n\t\t\tao = clamp(ao / float(DIRECTIONS), 0., 1.);\n\t\t#if SCENE_CLIP_BOX == 1\n\t\t\tao = mix(ao, 1., smoothstep(0., radiusToUse, boxDistance));\n\t\t#endif\n\t\t\tao = pow(ao, scale);\n\n\t\t\tgl_FragColor = FRAGMENT_OUTPUT;\n\t\t}"},o={PERSPECTIVE_CAMERA:1},s={tDepth:{value:null},cameraNear:{value:null},cameraFar:{value:null}},l="\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t}",c="\n\t\tuniform sampler2D tDepth;\n\t\tuniform float cameraNear;\n\t\tuniform float cameraFar;\n\t\tvarying vec2 vUv;\n\n\t\t#include <packing>\n\n\t\tfloat getLinearDepth( const in vec2 screenPosition ) {\n\t\t\t#if PERSPECTIVE_CAMERA == 1\n\t\t\t\tfloat fragCoordZ = texture2D( tDepth, screenPosition ).x;\n\t\t\t\tfloat viewZ = perspectiveDepthToViewZ( fragCoordZ, cameraNear, cameraFar );\n\t\t\t\treturn viewZToOrthographicDepth( viewZ, cameraNear, cameraFar );\n\t\t\t#else\n\t\t\t\treturn texture2D( tDepth, screenPosition ).x;\n\t\t\t#endif\n\t\t}\n\n\t\tvoid main() {\n\t\t\tfloat depth = getLinearDepth( vUv );\n\t\t\tgl_FragColor = vec4( vec3( 1.0 - depth ), 1.0 );\n\n\t\t}",h={tDiffuse:{value:null},intensity:{value:1}},d="\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t}",v="\n\t\tuniform float intensity;\n\t\tuniform sampler2D tDiffuse;\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\t\t\tvec4 texel = texture2D( tDiffuse, vUv );\n\t\t\tgl_FragColor = vec4(mix(vec3(1.), texel.rgb, intensity), texel.a);\n\t\t}";function u(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:5;const e=Math.floor(t)%2===0?Math.floor(t)+1:Math.floor(t),i=function(t){const e=Math.floor(t)%2===0?Math.floor(t)+1:Math.floor(t),i=e*e,n=Array(i).fill(0);let a=Math.floor(e/2),r=e-1;for(let o=1;o<=i;)-1===a&&r===e?(r=e-2,a=0):(r===e&&(r=0),a<0&&(a=e-1)),0===n[a*e+r]?(n[a*e+r]=o++,r++,a--):(r-=2,a++);return n}(e),a=i.length,r=new Uint8Array(4*a);for(let s=0;s<a;++s){const t=i[s],e=2*Math.PI*t/a,o=new n.Pq0(Math.cos(e),Math.sin(e),0).normalize();r[4*s]=255*(.5*o.x+.5),r[4*s+1]=255*(.5*o.y+.5),r[4*s+2]=127,r[4*s+3]=255}const o=new n.GYF(r,e,e);return o.wrapS=n.GJx,o.wrapT=n.GJx,o.needsUpdate=!0,o}const p={name:"PoissonDenoiseShader",defines:{SAMPLES:16,SAMPLE_VECTORS:m(16,2,1),NORMAL_VECTOR_TYPE:1,DEPTH_VALUE_SOURCE:0},uniforms:{tDiffuse:{value:null},tNormal:{value:null},tDepth:{value:null},tNoise:{value:null},resolution:{value:new n.I9Y},cameraProjectionMatrixInverse:{value:new n.kn4},lumaPhi:{value:5},depthPhi:{value:5},normalPhi:{value:5},radius:{value:4},index:{value:0}},vertexShader:"\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t}",fragmentShader:"\n\n\t\tvarying vec2 vUv;\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform sampler2D tNormal;\n\t\tuniform sampler2D tDepth;\n\t\tuniform sampler2D tNoise;\n\t\tuniform vec2 resolution;\n\t\tuniform mat4 cameraProjectionMatrixInverse;\n\t\tuniform float lumaPhi;\n\t\tuniform float depthPhi;\n\t\tuniform float normalPhi;\n\t\tuniform float radius;\n\t\tuniform int index;\n\n\t\t#include <common>\n\t\t#include <packing>\n\n\t\t#ifndef SAMPLE_LUMINANCE\n\t\t#define SAMPLE_LUMINANCE dot(vec3(0.2125, 0.7154, 0.0721), a)\n\t\t#endif\n\n\t\t#ifndef FRAGMENT_OUTPUT\n\t\t#define FRAGMENT_OUTPUT vec4(denoised, 1.)\n\t\t#endif\n\n\t\tfloat getLuminance(const in vec3 a) {\n\t\t\treturn SAMPLE_LUMINANCE;\n\t\t}\n\n\t\tconst vec3 poissonDisk[SAMPLES] = SAMPLE_VECTORS;\n\n\t\tvec3 getViewPosition( const in vec2 screenPosition, const in float depth ) {\n\t\t\t#ifdef USE_REVERSED_DEPTH_BUFFER\n\t\t\t\tvec4 clipSpacePosition = vec4( vec2( screenPosition ) * 2.0 - 1.0, depth, 1.0 );\n\t\t\t#else\n\t\t\t\tvec4 clipSpacePosition = vec4( vec3( screenPosition, depth ) * 2.0 - 1.0, 1.0 );\n\t\t\t#endif\n\t\t\tvec4 viewSpacePosition = cameraProjectionMatrixInverse * clipSpacePosition;\n\t\t\treturn viewSpacePosition.xyz / viewSpacePosition.w;\n\t\t}\n\n\t\tfloat getDepth(const vec2 uv) {\n\t\t#if DEPTH_VALUE_SOURCE == 1\n\t\t\treturn textureLod(tDepth, uv.xy, 0.0).a;\n\t\t#else\n\t\t\treturn textureLod(tDepth, uv.xy, 0.0).r;\n\t\t#endif\n\t\t}\n\n\t\tfloat fetchDepth(const ivec2 uv) {\n\t\t\t#if DEPTH_VALUE_SOURCE == 1\n\t\t\t\treturn texelFetch(tDepth, uv.xy, 0).a;\n\t\t\t#else\n\t\t\t\treturn texelFetch(tDepth, uv.xy, 0).r;\n\t\t\t#endif\n\t\t}\n\n\t\tvec3 computeNormalFromDepth(const vec2 uv) {\n\t\t\tvec2 size = vec2(textureSize(tDepth, 0));\n\t\t\tivec2 p = ivec2(uv * size);\n\t\t\tfloat c0 = fetchDepth(p);\n\t\t\tfloat l2 = fetchDepth(p - ivec2(2, 0));\n\t\t\tfloat l1 = fetchDepth(p - ivec2(1, 0));\n\t\t\tfloat r1 = fetchDepth(p + ivec2(1, 0));\n\t\t\tfloat r2 = fetchDepth(p + ivec2(2, 0));\n\t\t\tfloat b2 = fetchDepth(p - ivec2(0, 2));\n\t\t\tfloat b1 = fetchDepth(p - ivec2(0, 1));\n\t\t\tfloat t1 = fetchDepth(p + ivec2(0, 1));\n\t\t\tfloat t2 = fetchDepth(p + ivec2(0, 2));\n\t\t\tfloat dl = abs((2.0 * l1 - l2) - c0);\n\t\t\tfloat dr = abs((2.0 * r1 - r2) - c0);\n\t\t\tfloat db = abs((2.0 * b1 - b2) - c0);\n\t\t\tfloat dt = abs((2.0 * t1 - t2) - c0);\n\t\t\tvec3 ce = getViewPosition(uv, c0).xyz;\n\t\t\tvec3 dpdx = (dl < dr) ? ce - getViewPosition((uv - vec2(1.0 / size.x, 0.0)), l1).xyz\n\t\t\t\t\t\t\t\t\t: -ce + getViewPosition((uv + vec2(1.0 / size.x, 0.0)), r1).xyz;\n\t\t\tvec3 dpdy = (db < dt) ? ce - getViewPosition((uv - vec2(0.0, 1.0 / size.y)), b1).xyz\n\t\t\t\t\t\t\t\t\t: -ce + getViewPosition((uv + vec2(0.0, 1.0 / size.y)), t1).xyz;\n\t\t\treturn normalize(cross(dpdx, dpdy));\n\t\t}\n\n\t\tvec3 getViewNormal(const vec2 uv) {\n\t\t#if NORMAL_VECTOR_TYPE == 2\n\t\t\treturn normalize(textureLod(tNormal, uv, 0.).rgb);\n\t\t#elif NORMAL_VECTOR_TYPE == 1\n\t\t\treturn unpackRGBToNormal(textureLod(tNormal, uv, 0.).rgb);\n\t\t#else\n\t\t\treturn computeNormalFromDepth(uv);\n\t\t#endif\n\t\t}\n\n\t\tvoid denoiseSample(in vec3 center, in vec3 viewNormal, in vec3 viewPos, in vec2 sampleUv, inout vec3 denoised, inout float totalWeight) {\n\t\t\tvec4 sampleTexel = textureLod(tDiffuse, sampleUv, 0.0);\n\t\t\tfloat sampleDepth = getDepth(sampleUv);\n\t\t\tvec3 sampleNormal = getViewNormal(sampleUv);\n\t\t\tvec3 neighborColor = sampleTexel.rgb;\n\t\t\tvec3 viewPosSample = getViewPosition(sampleUv, sampleDepth);\n\n\t\t\tfloat normalDiff = dot(viewNormal, sampleNormal);\n\t\t\tfloat normalSimilarity = pow(max(normalDiff, 0.), normalPhi);\n\t\t\tfloat lumaDiff = abs(getLuminance(neighborColor) - getLuminance(center));\n\t\t\tfloat lumaSimilarity = max(1.0 - lumaDiff / lumaPhi, 0.0);\n\t\t\tfloat depthDiff = abs(dot(viewPos - viewPosSample, viewNormal));\n\t\t\tfloat depthSimilarity = max(1. - depthDiff / depthPhi, 0.);\n\t\t\tfloat w = lumaSimilarity * depthSimilarity * normalSimilarity;\n\n\t\t\tdenoised += w * neighborColor;\n\t\t\ttotalWeight += w;\n\t\t}\n\n\t\tvoid main() {\n\t\t\tfloat depth = getDepth(vUv.xy);\n\t\t\tvec3 viewNormal = getViewNormal(vUv);\n\t\t\tif (depth == 1. || dot(viewNormal, viewNormal) == 0.) {\n\t\t\t\tdiscard;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvec4 texel = textureLod(tDiffuse, vUv, 0.0);\n\t\t\tvec3 center = texel.rgb;\n\t\t\tvec3 viewPos = getViewPosition(vUv, depth);\n\n\t\t\tvec2 noiseResolution = vec2(textureSize(tNoise, 0));\n\t\t\tvec2 noiseUv = vUv * resolution / noiseResolution;\n\t\t\tvec4 noiseTexel = textureLod(tNoise, noiseUv, 0.0);\n \t\tvec2 noiseVec = vec2(sin(noiseTexel[index % 4] * 2. * PI), cos(noiseTexel[index % 4] * 2. * PI));\n \t\tmat2 rotationMatrix = mat2(noiseVec.x, -noiseVec.y, noiseVec.x, noiseVec.y);\n\n\t\t\tfloat totalWeight = 1.0;\n\t\t\tvec3 denoised = texel.rgb;\n\t\t\tfor (int i = 0; i < SAMPLES; i++) {\n\t\t\t\tvec3 sampleDir = poissonDisk[i];\n\t\t\t\tvec2 offset = rotationMatrix * (sampleDir.xy * (1. + sampleDir.z * (radius - 1.)) / resolution);\n\t\t\t\tvec2 sampleUv = vUv + offset;\n\t\t\t\tdenoiseSample(center, viewNormal, viewPos, sampleUv, denoised, totalWeight);\n\t\t\t}\n\n\t\t\tif (totalWeight > 0.) {\n\t\t\t\tdenoised /= totalWeight;\n\t\t\t}\n\t\t\tgl_FragColor = FRAGMENT_OUTPUT;\n\t\t}"};function m(t,e,i){const a=function(t,e,i){const a=[];for(let r=0;r<t;r++){const o=2*Math.PI*e*r/t,s=Math.pow(r/(t-1),i);a.push(new n.Pq0(Math.cos(o),Math.sin(o),s))}return a}(t,e,i);let r="vec3[SAMPLES](";for(let n=0;n<t;n++){const e=a[n];r+="vec3(".concat(e.x,", ").concat(e.y,", ").concat(e.z,")").concat(n<t-1?",":")")}return r}var f=i(1471);class g{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Math;this.grad3=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],this.grad4=[[0,1,1,1],[0,1,1,-1],[0,1,-1,1],[0,1,-1,-1],[0,-1,1,1],[0,-1,1,-1],[0,-1,-1,1],[0,-1,-1,-1],[1,0,1,1],[1,0,1,-1],[1,0,-1,1],[1,0,-1,-1],[-1,0,1,1],[-1,0,1,-1],[-1,0,-1,1],[-1,0,-1,-1],[1,1,0,1],[1,1,0,-1],[1,-1,0,1],[1,-1,0,-1],[-1,1,0,1],[-1,1,0,-1],[-1,-1,0,1],[-1,-1,0,-1],[1,1,1,0],[1,1,-1,0],[1,-1,1,0],[1,-1,-1,0],[-1,1,1,0],[-1,1,-1,0],[-1,-1,1,0],[-1,-1,-1,0]],this.p=[];for(let e=0;e<256;e++)this.p[e]=Math.floor(256*t.random());this.perm=[];for(let e=0;e<512;e++)this.perm[e]=this.p[255&e];this.simplex=[[0,1,2,3],[0,1,3,2],[0,0,0,0],[0,2,3,1],[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,2,3,0],[0,2,1,3],[0,0,0,0],[0,3,1,2],[0,3,2,1],[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,3,2,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,2,0,3],[0,0,0,0],[1,3,0,2],[0,0,0,0],[0,0,0,0],[0,0,0,0],[2,3,0,1],[2,3,1,0],[1,0,2,3],[1,0,3,2],[0,0,0,0],[0,0,0,0],[0,0,0,0],[2,0,3,1],[0,0,0,0],[2,1,3,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[2,0,1,3],[0,0,0,0],[0,0,0,0],[0,0,0,0],[3,0,1,2],[3,0,2,1],[0,0,0,0],[3,1,2,0],[2,1,0,3],[0,0,0,0],[0,0,0,0],[0,0,0,0],[3,1,0,2],[0,0,0,0],[3,2,0,1],[3,2,1,0]]}noise(t,e){let i,n,a;const r=(t+e)*(.5*(Math.sqrt(3)-1)),o=Math.floor(t+r),s=Math.floor(e+r),l=(3-Math.sqrt(3))/6,c=(o+s)*l,h=t-(o-c),d=e-(s-c);let v,u;h>d?(v=1,u=0):(v=0,u=1);const p=h-v+l,m=d-u+l,f=h-1+2*l,g=d-1+2*l,x=255&o,M=255&s,P=this.perm[x+this.perm[M]]%12,S=this.perm[x+v+this.perm[M+u]]%12,D=this.perm[x+1+this.perm[M+1]]%12;let T=.5-h*h-d*d;T<0?i=0:(T*=T,i=T*T*this._dot(this.grad3[P],h,d));let E=.5-p*p-m*m;E<0?n=0:(E*=E,n=E*E*this._dot(this.grad3[S],p,m));let w=.5-f*f-g*g;return w<0?a=0:(w*=w,a=w*w*this._dot(this.grad3[D],f,g)),70*(i+n+a)}noise3d(t,e,i){let n,a,r,o;const s=(t+e+i)*(1/3),l=Math.floor(t+s),c=Math.floor(e+s),h=Math.floor(i+s),d=1/6,v=(l+c+h)*d,u=t-(l-v),p=e-(c-v),m=i-(h-v);let f,g,x,M,P,S;u>=p?p>=m?(f=1,g=0,x=0,M=1,P=1,S=0):u>=m?(f=1,g=0,x=0,M=1,P=0,S=1):(f=0,g=0,x=1,M=1,P=0,S=1):p<m?(f=0,g=0,x=1,M=0,P=1,S=1):u<m?(f=0,g=1,x=0,M=0,P=1,S=1):(f=0,g=1,x=0,M=1,P=1,S=0);const D=u-f+d,T=p-g+d,E=m-x+d,w=u-M+2*d,_=p-P+2*d,C=m-S+2*d,y=u-1+.5,U=p-1+.5,R=m-1+.5,N=255&l,b=255&c,A=255&h,O=this.perm[N+this.perm[b+this.perm[A]]]%12,I=this.perm[N+f+this.perm[b+g+this.perm[A+x]]]%12,z=this.perm[N+M+this.perm[b+P+this.perm[A+S]]]%12,V=this.perm[N+1+this.perm[b+1+this.perm[A+1]]]%12;let L=.6-u*u-p*p-m*m;L<0?n=0:(L*=L,n=L*L*this._dot3(this.grad3[O],u,p,m));let F=.6-D*D-T*T-E*E;F<0?a=0:(F*=F,a=F*F*this._dot3(this.grad3[I],D,T,E));let j=.6-w*w-_*_-C*C;j<0?r=0:(j*=j,r=j*j*this._dot3(this.grad3[z],w,_,C));let B=.6-y*y-U*U-R*R;return B<0?o=0:(B*=B,o=B*B*this._dot3(this.grad3[V],y,U,R)),32*(n+a+r+o)}noise4d(t,e,i,n){const a=this.grad4,r=this.simplex,o=this.perm,s=(Math.sqrt(5)-1)/4,l=(5-Math.sqrt(5))/20;let c,h,d,v,u;const p=(t+e+i+n)*s,m=Math.floor(t+p),f=Math.floor(e+p),g=Math.floor(i+p),x=Math.floor(n+p),M=(m+f+g+x)*l,P=t-(m-M),S=e-(f-M),D=i-(g-M),T=n-(x-M),E=(P>S?32:0)+(P>D?16:0)+(S>D?8:0)+(P>T?4:0)+(S>T?2:0)+(D>T?1:0),w=r[E][0]>=3?1:0,_=r[E][1]>=3?1:0,C=r[E][2]>=3?1:0,y=r[E][3]>=3?1:0,U=r[E][0]>=2?1:0,R=r[E][1]>=2?1:0,N=r[E][2]>=2?1:0,b=r[E][3]>=2?1:0,A=r[E][0]>=1?1:0,O=r[E][1]>=1?1:0,I=r[E][2]>=1?1:0,z=r[E][3]>=1?1:0,V=P-w+l,L=S-_+l,F=D-C+l,j=T-y+l,B=P-U+2*l,k=S-R+2*l,H=D-N+2*l,G=T-b+2*l,W=P-A+3*l,Z=S-O+3*l,q=D-I+3*l,X=T-z+3*l,Y=P-1+4*l,K=S-1+4*l,Q=D-1+4*l,J=T-1+4*l,$=255&m,tt=255&f,et=255&g,it=255&x,nt=o[$+o[tt+o[et+o[it]]]]%32,at=o[$+w+o[tt+_+o[et+C+o[it+y]]]]%32,rt=o[$+U+o[tt+R+o[et+N+o[it+b]]]]%32,ot=o[$+A+o[tt+O+o[et+I+o[it+z]]]]%32,st=o[$+1+o[tt+1+o[et+1+o[it+1]]]]%32;let lt=.6-P*P-S*S-D*D-T*T;lt<0?c=0:(lt*=lt,c=lt*lt*this._dot4(a[nt],P,S,D,T));let ct=.6-V*V-L*L-F*F-j*j;ct<0?h=0:(ct*=ct,h=ct*ct*this._dot4(a[at],V,L,F,j));let ht=.6-B*B-k*k-H*H-G*G;ht<0?d=0:(ht*=ht,d=ht*ht*this._dot4(a[rt],B,k,H,G));let dt=.6-W*W-Z*Z-q*q-X*X;dt<0?v=0:(dt*=dt,v=dt*dt*this._dot4(a[ot],W,Z,q,X));let vt=.6-Y*Y-K*K-Q*Q-J*J;return vt<0?u=0:(vt*=vt,u=vt*vt*this._dot4(a[st],Y,K,Q,J)),27*(c+h+d+v+u)}_dot(t,e,i){return t[0]*e+t[1]*i}_dot3(t,e,i,n){return t[0]*e+t[1]*i+t[2]*n}_dot4(t,e,i,n,a){return t[0]*e+t[1]*i+t[2]*n+t[3]*a}}class x extends a.o{constructor(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:512,m=arguments.length>3&&void 0!==arguments[3]?arguments[3]:512,g=arguments.length>4?arguments[4]:void 0,x=arguments.length>5?arguments[5]:void 0,M=arguments.length>6?arguments[6]:void 0;super(),this.width=i,this.height=m,this.clear=!0,this.camera=e,this.scene=t,this.output=0,this._renderGBuffer=!0,this._visibilityCache=[],this.blendIntensity=1,this.pdRings=2,this.pdRadiusExponent=2,this.pdSamples=16,this.gtaoNoiseTexture=u(),this.pdNoiseTexture=this._generateNoise(),this.gtaoRenderTarget=new n.nWS(this.width,this.height,{type:n.ix0}),this.pdRenderTarget=this.gtaoRenderTarget.clone(),this.gtaoMaterial=new n.BKk({defines:Object.assign({},r.defines),uniforms:n.LlO.clone(r.uniforms),vertexShader:r.vertexShader,fragmentShader:r.fragmentShader,blending:n.XIg,depthTest:!1,depthWrite:!1}),this.gtaoMaterial.defines.PERSPECTIVE_CAMERA=this.camera.isPerspectiveCamera?1:0,this.gtaoMaterial.uniforms.tNoise.value=this.gtaoNoiseTexture,this.gtaoMaterial.uniforms.resolution.value.set(this.width,this.height),this.gtaoMaterial.uniforms.cameraNear.value=this.camera.near,this.gtaoMaterial.uniforms.cameraFar.value=this.camera.far,this.normalMaterial=new n.qBx,this.normalMaterial.blending=n.XIg,this.pdMaterial=new n.BKk({defines:Object.assign({},p.defines),uniforms:n.LlO.clone(p.uniforms),vertexShader:p.vertexShader,fragmentShader:p.fragmentShader,depthTest:!1,depthWrite:!1}),this.pdMaterial.uniforms.tDiffuse.value=this.gtaoRenderTarget.texture,this.pdMaterial.uniforms.tNoise.value=this.pdNoiseTexture,this.pdMaterial.uniforms.resolution.value.set(this.width,this.height),this.pdMaterial.uniforms.lumaPhi.value=10,this.pdMaterial.uniforms.depthPhi.value=2,this.pdMaterial.uniforms.normalPhi.value=3,this.pdMaterial.uniforms.radius.value=8,this.depthRenderMaterial=new n.BKk({defines:Object.assign({},o),uniforms:n.LlO.clone(s),vertexShader:l,fragmentShader:c,blending:n.XIg}),this.depthRenderMaterial.uniforms.cameraNear.value=this.camera.near,this.depthRenderMaterial.uniforms.cameraFar.value=this.camera.far,this.copyMaterial=new n.BKk({uniforms:n.LlO.clone(f.Z.uniforms),vertexShader:f.Z.vertexShader,fragmentShader:f.Z.fragmentShader,transparent:!0,depthTest:!1,depthWrite:!1,blendSrc:n.wn6,blendDst:n.ojh,blendEquation:n.gO9,blendSrcAlpha:n.hdd,blendDstAlpha:n.ojh,blendEquationAlpha:n.gO9}),this.blendMaterial=new n.BKk({uniforms:n.LlO.clone(h),vertexShader:d,fragmentShader:v,transparent:!0,depthTest:!1,depthWrite:!1,blending:n.bCz,blendSrc:n.wn6,blendDst:n.ojh,blendEquation:n.gO9,blendSrcAlpha:n.hdd,blendDstAlpha:n.ojh,blendEquationAlpha:n.gO9}),this._fsQuad=new a.F(null),this._originalClearColor=new n.Q1f,this.setGBuffer(g?g.depthTexture:void 0,g?g.normalTexture:void 0),void 0!==x&&this.updateGtaoMaterial(x),void 0!==M&&this.updatePdMaterial(M)}setSize(t,e){this.width=t,this.height=e,this.gtaoRenderTarget.setSize(t,e),this.normalRenderTarget.setSize(t,e),this.pdRenderTarget.setSize(t,e),this.gtaoMaterial.uniforms.resolution.value.set(t,e),this.gtaoMaterial.uniforms.cameraProjectionMatrix.value.copy(this.camera.projectionMatrix),this.gtaoMaterial.uniforms.cameraProjectionMatrixInverse.value.copy(this.camera.projectionMatrixInverse),this.pdMaterial.uniforms.resolution.value.set(t,e),this.pdMaterial.uniforms.cameraProjectionMatrixInverse.value.copy(this.camera.projectionMatrixInverse)}dispose(){this.gtaoNoiseTexture.dispose(),this.pdNoiseTexture.dispose(),this.normalRenderTarget.dispose(),this.gtaoRenderTarget.dispose(),this.pdRenderTarget.dispose(),this.normalMaterial.dispose(),this.pdMaterial.dispose(),this.copyMaterial.dispose(),this.depthRenderMaterial.dispose(),this._fsQuad.dispose()}get gtaoMap(){return this.pdRenderTarget.texture}setGBuffer(t,e){void 0!==t?(this.depthTexture=t,this.normalTexture=e,this._renderGBuffer=!1):(this.depthTexture=new n.VCu,this.depthTexture.format=n.dcC,this.depthTexture.type=n.V3x,this.normalRenderTarget=new n.nWS(this.width,this.height,{minFilter:n.hxR,magFilter:n.hxR,type:n.ix0,depthTexture:this.depthTexture}),this.normalTexture=this.normalRenderTarget.texture,this._renderGBuffer=!0);const i=this.normalTexture?1:0,a=this.depthTexture===this.normalTexture?"w":"x";this.gtaoMaterial.defines.NORMAL_VECTOR_TYPE=i,this.gtaoMaterial.defines.DEPTH_SWIZZLING=a,this.gtaoMaterial.uniforms.tNormal.value=this.normalTexture,this.gtaoMaterial.uniforms.tDepth.value=this.depthTexture,this.pdMaterial.defines.NORMAL_VECTOR_TYPE=i,this.pdMaterial.defines.DEPTH_SWIZZLING=a,this.pdMaterial.uniforms.tNormal.value=this.normalTexture,this.pdMaterial.uniforms.tDepth.value=this.depthTexture,this.depthRenderMaterial.uniforms.tDepth.value=this.normalRenderTarget.depthTexture}setSceneClipBox(t){t?(this.gtaoMaterial.needsUpdate=1!==this.gtaoMaterial.defines.SCENE_CLIP_BOX,this.gtaoMaterial.defines.SCENE_CLIP_BOX=1,this.gtaoMaterial.uniforms.sceneBoxMin.value.copy(t.min),this.gtaoMaterial.uniforms.sceneBoxMax.value.copy(t.max)):(this.gtaoMaterial.needsUpdate=0===this.gtaoMaterial.defines.SCENE_CLIP_BOX,this.gtaoMaterial.defines.SCENE_CLIP_BOX=0)}updateGtaoMaterial(t){void 0!==t.radius&&(this.gtaoMaterial.uniforms.radius.value=t.radius),void 0!==t.distanceExponent&&(this.gtaoMaterial.uniforms.distanceExponent.value=t.distanceExponent),void 0!==t.thickness&&(this.gtaoMaterial.uniforms.thickness.value=t.thickness),void 0!==t.distanceFallOff&&(this.gtaoMaterial.uniforms.distanceFallOff.value=t.distanceFallOff,this.gtaoMaterial.needsUpdate=!0),void 0!==t.scale&&(this.gtaoMaterial.uniforms.scale.value=t.scale),void 0!==t.samples&&t.samples!==this.gtaoMaterial.defines.SAMPLES&&(this.gtaoMaterial.defines.SAMPLES=t.samples,this.gtaoMaterial.needsUpdate=!0),void 0!==t.screenSpaceRadius&&(t.screenSpaceRadius?1:0)!==this.gtaoMaterial.defines.SCREEN_SPACE_RADIUS&&(this.gtaoMaterial.defines.SCREEN_SPACE_RADIUS=t.screenSpaceRadius?1:0,this.gtaoMaterial.needsUpdate=!0)}updatePdMaterial(t){let e=!1;void 0!==t.lumaPhi&&(this.pdMaterial.uniforms.lumaPhi.value=t.lumaPhi),void 0!==t.depthPhi&&(this.pdMaterial.uniforms.depthPhi.value=t.depthPhi),void 0!==t.normalPhi&&(this.pdMaterial.uniforms.normalPhi.value=t.normalPhi),void 0!==t.radius&&t.radius!==this.radius&&(this.pdMaterial.uniforms.radius.value=t.radius),void 0!==t.radiusExponent&&t.radiusExponent!==this.pdRadiusExponent&&(this.pdRadiusExponent=t.radiusExponent,e=!0),void 0!==t.rings&&t.rings!==this.pdRings&&(this.pdRings=t.rings,e=!0),void 0!==t.samples&&t.samples!==this.pdSamples&&(this.pdSamples=t.samples,e=!0),e&&(this.pdMaterial.defines.SAMPLES=this.pdSamples,this.pdMaterial.defines.SAMPLE_VECTORS=m(this.pdSamples,this.pdRings,this.pdRadiusExponent),this.pdMaterial.needsUpdate=!0)}render(t,e,i){switch(this._renderGBuffer&&(this._overrideVisibility(),this._renderOverride(t,this.normalMaterial,this.normalRenderTarget,7829503,1),this._restoreVisibility()),this.gtaoMaterial.uniforms.cameraNear.value=this.camera.near,this.gtaoMaterial.uniforms.cameraFar.value=this.camera.far,this.gtaoMaterial.uniforms.cameraProjectionMatrix.value.copy(this.camera.projectionMatrix),this.gtaoMaterial.uniforms.cameraProjectionMatrixInverse.value.copy(this.camera.projectionMatrixInverse),this.gtaoMaterial.uniforms.cameraWorldMatrix.value.copy(this.camera.matrixWorld),this._renderPass(t,this.gtaoMaterial,this.gtaoRenderTarget,16777215,1),this.pdMaterial.uniforms.cameraProjectionMatrixInverse.value.copy(this.camera.projectionMatrixInverse),this._renderPass(t,this.pdMaterial,this.pdRenderTarget,16777215,1),this.output){case x.OUTPUT.Off:break;case x.OUTPUT.Diffuse:this.copyMaterial.uniforms.tDiffuse.value=i.texture,this.copyMaterial.blending=n.XIg,this._renderPass(t,this.copyMaterial,this.renderToScreen?null:e);break;case x.OUTPUT.AO:this.copyMaterial.uniforms.tDiffuse.value=this.gtaoRenderTarget.texture,this.copyMaterial.blending=n.XIg,this._renderPass(t,this.copyMaterial,this.renderToScreen?null:e);break;case x.OUTPUT.Denoise:this.copyMaterial.uniforms.tDiffuse.value=this.pdRenderTarget.texture,this.copyMaterial.blending=n.XIg,this._renderPass(t,this.copyMaterial,this.renderToScreen?null:e);break;case x.OUTPUT.Depth:this.depthRenderMaterial.uniforms.cameraNear.value=this.camera.near,this.depthRenderMaterial.uniforms.cameraFar.value=this.camera.far,this._renderPass(t,this.depthRenderMaterial,this.renderToScreen?null:e);break;case x.OUTPUT.Normal:this.copyMaterial.uniforms.tDiffuse.value=this.normalRenderTarget.texture,this.copyMaterial.blending=n.XIg,this._renderPass(t,this.copyMaterial,this.renderToScreen?null:e);break;case x.OUTPUT.Default:this.copyMaterial.uniforms.tDiffuse.value=i.texture,this.copyMaterial.blending=n.XIg,this._renderPass(t,this.copyMaterial,this.renderToScreen?null:e),this.blendMaterial.uniforms.intensity.value=this.blendIntensity,this.blendMaterial.uniforms.tDiffuse.value=this.pdRenderTarget.texture,this._renderPass(t,this.blendMaterial,this.renderToScreen?null:e);break;default:console.warn("THREE.GTAOPass: Unknown output type.")}}_renderPass(t,e,i,n,a){t.getClearColor(this._originalClearColor);const r=t.getClearAlpha(),o=t.autoClear;t.setRenderTarget(i),t.autoClear=!1,void 0!==n&&null!==n&&(t.setClearColor(n),t.setClearAlpha(a||0),t.clear()),this._fsQuad.material=e,this._fsQuad.render(t),t.autoClear=o,t.setClearColor(this._originalClearColor),t.setClearAlpha(r)}_renderOverride(t,e,i,n,a){t.getClearColor(this._originalClearColor);const r=t.getClearAlpha(),o=t.autoClear;t.setRenderTarget(i),t.autoClear=!1,n=e.clearColor||n,a=e.clearAlpha||a,void 0!==n&&null!==n&&(t.setClearColor(n),t.setClearAlpha(a||0),t.clear()),this.scene.overrideMaterial=e,t.render(this.scene,this.camera),this.scene.overrideMaterial=null,t.autoClear=o,t.setClearColor(this._originalClearColor),t.setClearAlpha(r)}_overrideVisibility(){const t=this.scene,e=this._visibilityCache;t.traverse(function(t){(t.isPoints||t.isLine||t.isLine2)&&t.visible&&(t.visible=!1,e.push(t))})}_restoreVisibility(){const t=this._visibilityCache;for(let e=0;e<t.length;e++)t[e].visible=!0;t.length=0}_generateNoise(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:64;const e=new g,i=new Uint8Array(t*t*4);for(let n=0;n<t;n++)for(let a=0;a<t;a++){const r=n,o=a;i[4*(n*t+a)]=255*(.5*e.noise(r,o)+.5),i[4*(n*t+a)+1]=255*(.5*e.noise(r+t,o)+.5),i[4*(n*t+a)+2]=255*(.5*e.noise(r,o+t)+.5),i[4*(n*t+a)+3]=255*(.5*e.noise(r+t,o+t)+.5)}const a=new n.GYF(i,t,t,n.GWd,n.OUM);return a.wrapS=n.GJx,a.wrapT=n.GJx,a.needsUpdate=!0,a}}x.OUTPUT={Off:-1,Default:0,Diffuse:1,Depth:2,Normal:3,AO:4,Denoise:5}}}]);
 
 
services/explorer/dist/static/js/main.738ee38a.js DELETED
The diff for this file is too large to render. See raw diff
 
services/explorer/dist/static/js/main.738ee38a.js.LICENSE.txt DELETED
@@ -1,39 +0,0 @@
1
- /**
2
- * @license React
3
- * react-dom.production.min.js
4
- *
5
- * Copyright (c) Facebook, Inc. and its affiliates.
6
- *
7
- * This source code is licensed under the MIT license found in the
8
- * LICENSE file in the root directory of this source tree.
9
- */
10
-
11
- /**
12
- * @license React
13
- * react-jsx-runtime.production.min.js
14
- *
15
- * Copyright (c) Facebook, Inc. and its affiliates.
16
- *
17
- * This source code is licensed under the MIT license found in the
18
- * LICENSE file in the root directory of this source tree.
19
- */
20
-
21
- /**
22
- * @license React
23
- * react.production.min.js
24
- *
25
- * Copyright (c) Facebook, Inc. and its affiliates.
26
- *
27
- * This source code is licensed under the MIT license found in the
28
- * LICENSE file in the root directory of this source tree.
29
- */
30
-
31
- /**
32
- * @license React
33
- * scheduler.production.min.js
34
- *
35
- * Copyright (c) Facebook, Inc. and its affiliates.
36
- *
37
- * This source code is licensed under the MIT license found in the
38
- * LICENSE file in the root directory of this source tree.
39
- */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
services/explorer/dist/static/js/main.9eeeca83.js DELETED
The diff for this file is too large to render. See raw diff
 
services/explorer/dist/static/js/main.9eeeca83.js.LICENSE.txt DELETED
@@ -1,39 +0,0 @@
1
- /**
2
- * @license React
3
- * react-dom.production.min.js
4
- *
5
- * Copyright (c) Facebook, Inc. and its affiliates.
6
- *
7
- * This source code is licensed under the MIT license found in the
8
- * LICENSE file in the root directory of this source tree.
9
- */
10
-
11
- /**
12
- * @license React
13
- * react-jsx-runtime.production.min.js
14
- *
15
- * Copyright (c) Facebook, Inc. and its affiliates.
16
- *
17
- * This source code is licensed under the MIT license found in the
18
- * LICENSE file in the root directory of this source tree.
19
- */
20
-
21
- /**
22
- * @license React
23
- * react.production.min.js
24
- *
25
- * Copyright (c) Facebook, Inc. and its affiliates.
26
- *
27
- * This source code is licensed under the MIT license found in the
28
- * LICENSE file in the root directory of this source tree.
29
- */
30
-
31
- /**
32
- * @license React
33
- * scheduler.production.min.js
34
- *
35
- * Copyright (c) Facebook, Inc. and its affiliates.
36
- *
37
- * This source code is licensed under the MIT license found in the
38
- * LICENSE file in the root directory of this source tree.
39
- */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
services/explorer/dist/static/js/main.f2f625ec.js DELETED
The diff for this file is too large to render. See raw diff