jhaa/oss-cleanup-changes-2023-11-29

#1
by jhaa - opened
Dockerfile CHANGED
@@ -45,21 +45,10 @@ RUN apt-get update && \
45
  # gradio dependencies \
46
  ffmpeg \
47
  # fairseq2 dependencies \
48
- libjpeg8-dev \
49
- libpng-dev \
50
  libsndfile-dev && \
51
  apt-get clean && \
52
  rm -rf /var/lib/apt/lists/*
53
 
54
- USER root
55
- RUN ln -s /usr/lib/x86_64-linux-gnu/libsox.so.3 /usr/lib/x86_64-linux-gnu/libsox.so
56
- # install older versions libjpeg62-turbo and libpng15
57
- RUN wget http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_2.1.5-2_amd64.deb && \
58
- dpkg -i libjpeg62-turbo_2.1.5-2_amd64.deb && \
59
- rm libjpeg62-turbo_2.1.5-2_amd64.deb
60
- RUN wget https://master.dl.sourceforge.net/project/libpng/libpng15/1.5.30/libpng-1.5.30.tar.gz && \
61
- tar -xvf libpng-1.5.30.tar.gz && cd libpng-1.5.30 && ./configure && make && make install && cd .. && rm -rf libpng-1.5.30.tar.gz libpng-1.5.30
62
-
63
  RUN useradd -m -u 1000 user
64
  USER user
65
  ENV HOME=/home/user \
@@ -76,18 +65,28 @@ RUN pyenv install $PYTHON_VERSION && \
76
 
77
  COPY --chown=user:user ./seamless_server ./seamless_server
78
  # change dir since pip needs to seed whl folder
79
- RUN cd seamless_server && \
80
- pip install fairseq2 --pre --extra-index-url https://fair.pkg.atmeta.com/fairseq2/whl/nightly/pt2.1.1/cu118 && \
81
- pip install --no-cache-dir --upgrade -r requirements.txt
82
  COPY --from=frontend /app/dist ./streaming-react-app/dist
83
 
84
  WORKDIR $HOME/app/seamless_server
85
- RUN --mount=type=secret,id=HF_TOKEN,mode=0444,required=false \
86
- huggingface-cli login --token $(cat /run/secrets/HF_TOKEN) || echo "HF_TOKEN error" && \
87
- huggingface-cli download meta-private/SeamlessExpressive pretssel_melhifigan_wm-final.pt --local-dir ./models/Seamless/ || echo "HF_TOKEN error" && \
88
- ln -s $(readlink -f models/Seamless/pretssel_melhifigan_wm-final.pt) models/Seamless/pretssel_melhifigan_wm.pt || true;
 
 
 
 
 
 
 
 
 
 
 
89
 
 
90
  USER user
91
- RUN ["chmod", "+x", "./run_docker.sh"]
92
- CMD ./run_docker.sh
93
 
 
45
  # gradio dependencies \
46
  ffmpeg \
47
  # fairseq2 dependencies \
 
 
48
  libsndfile-dev && \
49
  apt-get clean && \
50
  rm -rf /var/lib/apt/lists/*
51
 
 
 
 
 
 
 
 
 
 
52
  RUN useradd -m -u 1000 user
53
  USER user
54
  ENV HOME=/home/user \
 
65
 
66
  COPY --chown=user:user ./seamless_server ./seamless_server
67
  # change dir since pip needs to seed whl folder
68
+ RUN cd seamless_server && pip install --no-cache-dir --upgrade -r requirements.txt
 
 
69
  COPY --from=frontend /app/dist ./streaming-react-app/dist
70
 
71
  WORKDIR $HOME/app/seamless_server
72
+ # temporary hack to link SeamlessStreaming models
73
+ RUN --mount=type=secret,id=HF_TOKEN,mode=0444,required=true \
74
+ huggingface-cli login --token $(cat /run/secrets/HF_TOKEN) && \
75
+ huggingface-cli download meta-private/SeamlessStreaming seamless_streaming_unity.pt spm_char_lang38_tc.model seamless_streaming_monotonic_decoder.pt --local-dir ./models/ && \
76
+ huggingface-cli download meta-private/SeamlessStreaming vocoder_v2.pt --local-dir ./models/
77
+ USER root
78
+ RUN mkdir -p /large_experiments/seamless/ust/krs/fairseq2_checkpoints/ && \
79
+ mkdir -p /large_experiments/seamless/workstream/expressivity/oss/checkpoints/ && \
80
+ mkdir -p /checkpoint/krs/unity2/ && \
81
+ chown -R user:user /large_experiments/ && \
82
+ chown -R user:user /checkpoint/ && \
83
+ ln -s $(readlink -f models/seamless_streaming_unity.pt) /large_experiments/seamless/ust/krs/fairseq2_checkpoints/seamless_streaming_unity.pt && \
84
+ ln -s $(readlink -f models/seamless_streaming_monotonic_decoder.pt) /large_experiments/seamless/ust/krs/fairseq2_checkpoints/seamless_streaming_monotonic_decoder.pt && \
85
+ ln -s $(readlink -f models/vocoder_v2.pt) /large_experiments/seamless/ust/krs/fairseq2_checkpoints/vocoder_v2.pt && \
86
+ ln -s $(readlink -f models/spm_char_lang38_tc.model) /checkpoint/krs/unity2/
87
 
88
+ RUN ln -s /usr/lib/x86_64-linux-gnu/libsox.so.3 /usr/lib/x86_64-linux-gnu/libsox.so
89
  USER user
90
+ CMD [ "uvicorn", "app_pubsub:app", "--host", "0.0.0.0", "--port", "7860" ]
91
+
92
 
README.md CHANGED
@@ -1,13 +1,11 @@
1
  ---
2
- title: Seamless Streaming
3
  emoji: 📞
4
  colorFrom: blue
5
  colorTo: yellow
6
  sdk: docker
7
  pinned: false
8
- suggested_hardware: t4-small
9
- models:
10
- - facebook/seamless-streaming
11
  ---
12
 
13
  # Seamless Streaming demo
@@ -17,21 +15,12 @@ You can simply duplicate the space to run it.
17
  ## Running locally
18
  ### Install backend seamless_server dependencies
19
 
20
- > [!NOTE]
21
- > Please note: we *do not* recommend running the model on CPU. CPU inference will be slow and introduce noticable delays in the simultaneous translation.
22
 
23
- > [!NOTE]
24
- > The example below is for PyTorch stable (2.1.1) and variant cu118.
25
- > Check [here](https://pytorch.org/get-started/locally/) to find the torch/torchaudio command for your variant.
26
- > Check [here](https://github.com/facebookresearch/fairseq2#variants) to find the fairseq2 command for your variant.
27
-
28
- If running for the first time, create conda environment and install the desired torch version. Then install the rest of the requirements:
29
  ```
30
- cd seamless_server
31
- conda create --yes --name smlss_server python=3.8 libsndfile==1.0.31
32
  conda activate smlss_server
33
- conda install --yes pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
34
- pip install fairseq2 --pre --extra-index-url https://fair.pkg.atmeta.com/fairseq2/whl/nightly/pt2.1.1/cu118
35
  pip install -r requirements.txt
36
  ```
37
 
@@ -39,9 +28,8 @@ pip install -r requirements.txt
39
  ```
40
  conda install -c conda-forge nodejs
41
  cd streaming-react-app
42
- npm install --global yarn
43
- yarn
44
- yarn build # this will create the dist/ folder
45
  ```
46
 
47
 
@@ -51,14 +39,12 @@ The server can be run locally with uvicorn below.
51
  Run the server in dev mode:
52
 
53
  ```
54
- cd seamless_server
55
  uvicorn app_pubsub:app --reload --host localhost
56
  ```
57
 
58
  Run the server in prod mode:
59
 
60
  ```
61
- cd seamless_server
62
  uvicorn app_pubsub:app --host 0.0.0.0
63
  ```
64
 
 
1
  ---
2
+ title: Seamless Streaming Backend/Frontend
3
  emoji: 📞
4
  colorFrom: blue
5
  colorTo: yellow
6
  sdk: docker
7
  pinned: false
8
+ suggested_hardware: t4-medium
 
 
9
  ---
10
 
11
  # Seamless Streaming demo
 
15
  ## Running locally
16
  ### Install backend seamless_server dependencies
17
 
18
+ `cd seamless-experiences/seamless_vc/seamless_server`
 
19
 
20
+ If running for the first time, create conda environment:
 
 
 
 
 
21
  ```
22
+ conda create --name smlss_server python=3.8
 
23
  conda activate smlss_server
 
 
24
  pip install -r requirements.txt
25
  ```
26
 
 
28
  ```
29
  conda install -c conda-forge nodejs
30
  cd streaming-react-app
31
+ npm install
32
+ npm run build # this will create the dist/ folder
 
33
  ```
34
 
35
 
 
39
  Run the server in dev mode:
40
 
41
  ```
 
42
  uvicorn app_pubsub:app --reload --host localhost
43
  ```
44
 
45
  Run the server in prod mode:
46
 
47
  ```
 
48
  uvicorn app_pubsub:app --host 0.0.0.0
49
  ```
50
 
seamless_server/app_pubsub.py CHANGED
@@ -123,26 +123,8 @@ class ServerLock(TypedDict):
123
  client_id: str
124
  member_object: Member
125
 
126
- MAX_SPEAKERS = os.environ.get("MAX_SPEAKERS")
127
-
128
- if os.environ.get("LOCK_SERVER_COMPLETELY", "0") == "1":
129
- logger.info("LOCK_SERVER_COMPLETELY is set. Server will be locked on startup.")
130
- if MAX_SPEAKERS is not None and int(MAX_SPEAKERS):
131
- logger.info(f"MAX_SPEAKERS is set to: {MAX_SPEAKERS}")
132
- dummy_server_lock_member_object = Member(
133
- client_id="seamless_user", session_id="dummy", name="Seamless User"
134
- )
135
- # Normally this would be an actual transcoder, but it's fine putting True here since currently we only check for the presence of the transcoder
136
- dummy_server_lock_member_object.transcoder = True
137
- server_lock: Optional[ServerLock] = (
138
- {
139
- "name": "Seamless User",
140
- "client_id": "seamless_user",
141
- "member_object": dummy_server_lock_member_object,
142
- }
143
- if os.environ.get("LOCK_SERVER_COMPLETELY", "0") == "1"
144
- else None
145
- )
146
 
147
  server_id = str(uuid4())
148
 
@@ -519,8 +501,6 @@ async def join_room(sid, client_id, room_id_from_client, config_dict):
519
  server_lock is not None
520
  and config_dict.get("lockServerName")
521
  == ESCAPE_HATCH_SERVER_LOCK_RELEASE_NAME
522
- # If we are locking the server completely we don't want someone to be able to unlock it
523
- and not os.environ.get("LOCK_SERVER_COMPLETELY", "0") == "1"
524
  ):
525
  server_lock = None
526
  logger.info(
@@ -528,7 +508,7 @@ async def join_room(sid, client_id, room_id_from_client, config_dict):
528
  )
529
 
530
  # If the server is not locked, set a lock. If it's already locked to this client, update the lock object
531
- if server_lock is None or server_lock.get("client_id") == client_id:
532
  # TODO: Add some sort of timeout as a backstop in case someone leaves the browser tab open after locking the server
533
  server_lock = {
534
  "name": config_dict.get("lockServerName"),
@@ -559,12 +539,6 @@ async def join_room(sid, client_id, room_id_from_client, config_dict):
559
 
560
  return {"roomsJoined": sio.rooms(sid), "roomID": room_id}
561
 
562
- def allow_speaker(room, client_id):
563
- if MAX_SPEAKERS is not None and client_id in room.speakers:
564
- room_statuses = {room_id: room.get_room_status_dict() for room_id, room in rooms.items()}
565
- speakers = sum(room_status["activeTranscoders"] for room_status in room_statuses.values())
566
- return speakers < int(MAX_SPEAKERS)
567
- return True
568
 
569
  # TODO: Add code to prevent more than one speaker from connecting/streaming at a time
570
  @sio.event
@@ -585,12 +559,6 @@ async def configure_stream(sid, config):
585
  )
586
  return {"status": "error", "message": "member_or_room_is_none"}
587
 
588
- if not allow_speaker(room, client_id):
589
- logger.error(
590
- f"In MAX_SPEAKERS mode we only allow one speaker at a time. Ignoring request to configure stream from client {client_id}."
591
- )
592
- return {"status": "error", "message": "max_speakers"}
593
-
594
  # If there is a server lock WITH an active transcoder session, prevent other users from configuring and starting a stream
595
  # If the server lock client does NOT have an active transcoder session allow this to proceed, knowing that
596
  # this stream will be interrupted if the server lock client starts streaming
 
123
  client_id: str
124
  member_object: Member
125
 
126
+
127
+ server_lock: Optional[ServerLock] = None
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
 
129
  server_id = str(uuid4())
130
 
 
501
  server_lock is not None
502
  and config_dict.get("lockServerName")
503
  == ESCAPE_HATCH_SERVER_LOCK_RELEASE_NAME
 
 
504
  ):
505
  server_lock = None
506
  logger.info(
 
508
  )
509
 
510
  # If the server is not locked, set a lock. If it's already locked to this client, update the lock object
511
+ elif server_lock is None or server_lock.get("client_id") == client_id:
512
  # TODO: Add some sort of timeout as a backstop in case someone leaves the browser tab open after locking the server
513
  server_lock = {
514
  "name": config_dict.get("lockServerName"),
 
539
 
540
  return {"roomsJoined": sio.rooms(sid), "roomID": room_id}
541
 
 
 
 
 
 
 
542
 
543
  # TODO: Add code to prevent more than one speaker from connecting/streaming at a time
544
  @sio.event
 
559
  )
560
  return {"status": "error", "message": "member_or_room_is_none"}
561
 
 
 
 
 
 
 
562
  # If there is a server lock WITH an active transcoder session, prevent other users from configuring and starting a stream
563
  # If the server lock client does NOT have an active transcoder session allow this to proceed, knowing that
564
  # this stream will be interrupted if the server lock client starts streaming
seamless_server/models/Seamless/vad_s2st_sc_24khz_main.yaml DELETED
@@ -1,25 +0,0 @@
1
- agent_class: seamless_communication.streaming.agents.seamless_s2st.SeamlessS2STDualVocoderVADAgent
2
- monotonic_decoder_model_name: seamless_streaming_monotonic_decoder
3
- unity_model_name: seamless_streaming_unity
4
- sentencepiece_model: spm_256k_nllb100.model
5
-
6
- task: s2st
7
- tgt_lang: "eng"
8
- min_unit_chunk_size: 50
9
- decision_threshold: 0.7
10
- no_early_stop: True
11
- block_ngrams: True
12
- vocoder_name: vocoder_v2
13
- expr_vocoder_name: vocoder_pretssel
14
- gated_model_dir: .
15
- expr_vocoder_gain: 3.0
16
- upstream_idx: 1
17
- wav2vec_yaml: wav2vec.yaml
18
- min_starting_wait_w2vbert: 192
19
-
20
- config_yaml: cfg_fbank_u2t.yaml
21
- upstream_idx: 1
22
- detokenize_only: True
23
- device: cuda:0
24
- max_len_a: 0
25
- max_len_b: 1000
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
seamless_server/models/SeamlessStreaming/{vad_s2st_sc_main.yaml → vad_s2st_sc_24khz_main.yaml} RENAMED
File without changes
seamless_server/package.json ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "seamless_server",
3
+ "version": "1.0.0",
4
+ "scripts": {
5
+ "dev": "npm run start:debug -- --reload",
6
+ "start": "uvicorn app_pubsub:app --host 0.0.0.0",
7
+ "start:debug": "npm run start -- --log-level debug",
8
+ "start:trace": "npm run start -- --log-level trace",
9
+ "start:prod": "npm run build:client && npm run start",
10
+ "build:client": "cd ../streaming-react-app/ && npm run build"
11
+ },
12
+ "author": ""
13
+ }
seamless_server/requirements.txt CHANGED
@@ -1,6 +1,7 @@
 
 
1
  # seamless_communication
2
- git+https://github.com/facebookresearch/seamless_communication.git
3
- # ./whl/seamless_communication-1.0.0-py3-none-any.whl
4
  Flask==2.1.3
5
  Flask_Sockets==0.2.1
6
  g2p_en==2.1.0
@@ -13,10 +14,10 @@ protobuf==4.24.2
13
  psola==0.0.1
14
  pydub==0.25.1
15
  silero==0.4.1
 
16
  soundfile==0.11.0
17
  stable_ts==1.4.0
18
- # torch # to be installed by user for desired PyTorch version
19
- # simuleval # to be installed by seamless_communication
20
  Werkzeug==2.0.3
21
  whisper==1.1.10
22
  colorlog==6.7.0
 
1
+ --pre --extra-index-url https://fair.pkg.atmeta.com/fairseq2/whl/nightly/pt2.1.1/cu118
2
+ git+https://github.com/facebookresearch/SimulEval.git
3
  # seamless_communication
4
+ ./whl/seamless_communication-1.0.0-py3-none-any.whl
 
5
  Flask==2.1.3
6
  Flask_Sockets==0.2.1
7
  g2p_en==2.1.0
 
14
  psola==0.0.1
15
  pydub==0.25.1
16
  silero==0.4.1
17
+ # simuleval==1.1.1
18
  soundfile==0.11.0
19
  stable_ts==1.4.0
20
+ torch # specific torch version depends on fairseq2 installation
 
21
  Werkzeug==2.0.3
22
  whisper==1.1.10
23
  colorlog==6.7.0
seamless_server/run_docker.sh DELETED
@@ -1,5 +0,0 @@
1
- # !/bin/bash
2
- if [ -f models/Seamless/pretssel_melhifigan_wm.pt ] ; then
3
- export USE_EXPRESSIVE_MODEL=1;
4
- fi
5
- uvicorn app_pubsub:app --host 0.0.0.0 --port 7860
 
 
 
 
 
 
seamless_server/src/simuleval_agent_directory.py CHANGED
@@ -1,7 +1,6 @@
1
  # Creates a directory in which to look up available agents
2
 
3
- import os
4
- from typing import List, Optional
5
  from src.simuleval_transcoder import SimulevalTranscoder
6
  import json
7
  import logging
@@ -34,10 +33,8 @@ class AgentWithInfo:
34
  # Supported dynamic params are defined in StreamingTypes.ts
35
  dynamic_params: List[str] = [],
36
  description="",
37
- has_expressive: Optional[bool] = None,
38
  ):
39
  self.agent = agent
40
- self.has_expressive = has_expressive
41
  self.name = name
42
  self.description = description
43
  self.modalities = modalities
@@ -78,7 +75,6 @@ class AgentWithInfo:
78
  class SimulevalAgentDirectory:
79
  # Available models. These are the directories where the models can be found, and also serve as an ID for the model.
80
  seamless_streaming_agent = "SeamlessStreaming"
81
- seamless_agent = "Seamless"
82
 
83
  def __init__(self):
84
  self.agents = []
@@ -100,12 +96,7 @@ class SimulevalAgentDirectory:
100
  model_id,
101
  )
102
  except Exception as e:
103
- from fairseq2.assets.error import AssetError
104
  logger.warning("Failed to build agent %s: %s" % (model_id, e))
105
- if isinstance(e, AssetError):
106
- logger.warning(
107
- "Please download gated assets and set `gated_model_dir` in the config"
108
- )
109
  raise e
110
 
111
  return agent
@@ -119,32 +110,20 @@ class SimulevalAgentDirectory:
119
  for agent_info in agent_infos:
120
  self.add_agent(agent_info)
121
  else:
122
- s2s_agent = None
123
- if os.environ.get("USE_EXPRESSIVE_MODEL", "0") == "1":
124
- logger.info("Building expressive model...")
125
- s2s_agent = self.build_agent_if_available(
126
- SimulevalAgentDirectory.seamless_agent,
127
- config_name="vad_s2st_sc_24khz_main.yaml",
128
- )
129
- has_expressive = True
130
- else:
131
- logger.info("Building non-expressive model...")
132
- s2s_agent = self.build_agent_if_available(
133
- SimulevalAgentDirectory.seamless_streaming_agent,
134
- config_name="vad_s2st_sc_main.yaml",
135
- )
136
- has_expressive = False
137
 
138
- if s2s_agent:
139
  self.add_agent(
140
  AgentWithInfo(
141
- agent=s2s_agent,
142
  name=SimulevalAgentDirectory.seamless_streaming_agent,
143
  modalities=["s2t", "s2s"],
144
- target_langs=M4T_P0_LANGS,
145
  dynamic_params=["expressive"],
146
  description="multilingual expressive model that supports S2S and S2T",
147
- has_expressive=has_expressive,
148
  )
149
  )
150
 
@@ -158,7 +137,7 @@ class SimulevalAgentDirectory:
158
  def get_agent(self, name):
159
  for agent in self.agents:
160
  if agent.name == name:
161
- return agent
162
  return None
163
 
164
  def get_agent_or_throw(self, name):
 
1
  # Creates a directory in which to look up available agents
2
 
3
+ from typing import List
 
4
  from src.simuleval_transcoder import SimulevalTranscoder
5
  import json
6
  import logging
 
33
  # Supported dynamic params are defined in StreamingTypes.ts
34
  dynamic_params: List[str] = [],
35
  description="",
 
36
  ):
37
  self.agent = agent
 
38
  self.name = name
39
  self.description = description
40
  self.modalities = modalities
 
75
  class SimulevalAgentDirectory:
76
  # Available models. These are the directories where the models can be found, and also serve as an ID for the model.
77
  seamless_streaming_agent = "SeamlessStreaming"
 
78
 
79
  def __init__(self):
80
  self.agents = []
 
96
  model_id,
97
  )
98
  except Exception as e:
 
99
  logger.warning("Failed to build agent %s: %s" % (model_id, e))
 
 
 
 
100
  raise e
101
 
102
  return agent
 
110
  for agent_info in agent_infos:
111
  self.add_agent(agent_info)
112
  else:
113
+ s2s_m4t_expr_agent = self.build_agent_if_available(
114
+ SimulevalAgentDirectory.seamless_streaming_agent,
115
+ config_name="vad_s2st_sc_24khz_main.yaml",
116
+ )
 
 
 
 
 
 
 
 
 
 
 
117
 
118
+ if s2s_m4t_expr_agent:
119
  self.add_agent(
120
  AgentWithInfo(
121
+ agent=s2s_m4t_expr_agent,
122
  name=SimulevalAgentDirectory.seamless_streaming_agent,
123
  modalities=["s2t", "s2s"],
124
+ target_langs=["eng", "arb", "ben", "cat", "ces", "cmn", "cym", "dan", "deu", "est", "fin", "fra", "hin", "ind", "ita", "jpn", "kor", "mlt", "nld", "pes", "pol", "por", "ron", "rus", "slk", "spa", "swe", "swh", "tel", "tgl", "tha", "tur", "ukr", "urd", "uzn", "vie"],
125
  dynamic_params=["expressive"],
126
  description="multilingual expressive model that supports S2S and S2T",
 
127
  )
128
  )
129
 
 
137
  def get_agent(self, name):
138
  for agent in self.agents:
139
  if agent.name == name:
140
+ return agent.agent
141
  return None
142
 
143
  def get_agent_or_throw(self, name):
seamless_server/src/simuleval_transcoder.py CHANGED
@@ -119,8 +119,7 @@ class OutputSegments:
119
 
120
  class SimulevalTranscoder:
121
  def __init__(self, agent, sample_rate, debug, buffer_limit):
122
- self.agent = agent.agent
123
- self.has_expressive = agent.has_expressive
124
  self.input_queue = asyncio.Queue()
125
  self.output_queue = asyncio.Queue()
126
  self.states = self.agent.build_states()
@@ -186,7 +185,7 @@ class SimulevalTranscoder:
186
  logger.info(*args)
187
 
188
  @classmethod
189
- def build_agent(cls, model_path, config_name):
190
  logger.info(f"Building simuleval agent: {model_path}, {config_name}")
191
  agent = build_system_from_dir(
192
  Path(__file__).resolve().parent.parent / f"models/{model_path}",
@@ -209,10 +208,6 @@ class SimulevalTranscoder:
209
  tgt_lang=dynamic_config.get("targetLanguage"),
210
  config=dynamic_config,
211
  )
212
- if dynamic_config.get("expressive") is True and self.has_expressive is False:
213
- logger.warning(
214
- "Passing 'expressive' but the agent does not support expressive output!"
215
- )
216
  # # segment is array([0, 0, 0, ..., 0, 0, 0], dtype=int16)
217
  self.input_queue.put_nowait(segment)
218
 
 
119
 
120
  class SimulevalTranscoder:
121
  def __init__(self, agent, sample_rate, debug, buffer_limit):
122
+ self.agent = agent
 
123
  self.input_queue = asyncio.Queue()
124
  self.output_queue = asyncio.Queue()
125
  self.states = self.agent.build_states()
 
185
  logger.info(*args)
186
 
187
  @classmethod
188
+ def build_agent(cls, model_path, config_name="vad_s2st_main.yaml"):
189
  logger.info(f"Building simuleval agent: {model_path}, {config_name}")
190
  agent = build_system_from_dir(
191
  Path(__file__).resolve().parent.parent / f"models/{model_path}",
 
208
  tgt_lang=dynamic_config.get("targetLanguage"),
209
  config=dynamic_config,
210
  )
 
 
 
 
211
  # # segment is array([0, 0, 0, ..., 0, 0, 0], dtype=int16)
212
  self.input_queue.put_nowait(segment)
213
 
seamless_server/src/timing.ipynb ADDED
@@ -0,0 +1,169 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 10,
6
+ "metadata": {},
7
+ "outputs": [
8
+ {
9
+ "data": {
10
+ "text/plain": [
11
+ "[Text(1, 0, 'nonincremental'), Text(2, 0, 'incremental')]"
12
+ ]
13
+ },
14
+ "execution_count": 10,
15
+ "metadata": {},
16
+ "output_type": "execute_result"
17
+ },
18
+ {
19
+ "data": {
20
+ "image/png": "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rw0AELzmzZunbt26afbs2Xr66ac1e/ZsdevWTfPmzTNdGgKAT2Hkyy+/lNPp/FHPRmxsrCorKxs855prrtHq1av1+uuva82aNXK5XMrIyNBnn33W6Pvk5eUpOjrasyUkJPhSJgAggMybN09PPfWUevTooeeee04VFRV67rnn1KNHDz311FMEEvj21N4TJ07oyiuv1I4dO5Senu7ZP2/ePG3dulU7d+5s9hrffvut+vfvr8mTJ+v//u//GmxTW1ur2tpaz+uamholJCTw1N4OoqSkREOHDmUNESAE1NXVqVu3burRo4c+++wzder0wyTO7777Tr1799ZXX32lM2fOqHPnzgYrhT+09Km9PvWMXHHFFbJaraqqqvLaX1VVpbi4uBZd45JLLtHgwYN16NChRtuEh4crKirKawMABJ/ly5fru+++0+OPP+4VRCSpU6dOeuyxx/Tdd99p+fLlhipEIPApjHTu3FlDhw7V5s2bPftcLpc2b97s1VPSFKfTqQ8//FDx8fG+VQoACDqHDx+WJN1www0NHq/fX98OHZPPs2nmzJmj5557Ti+88IL279+ve++9V2fOnNG0adMkSVOnTlVubq6n/WOPPaaNGzfqyJEjKikp0ZQpU3Ts2DFNnz69/X4KAEBAuvrqqyVJdru9wdk0drvdqx06Jp9XYJ00aZK++OILPfroo6qsrFRaWpreeustz6DW8vJyhYX9kHH++9//6q677lJlZaUuv/xyDR06VDt27NCAAQPa76cAAASkGTNm6KGHHtL999+ve+65R06n03PswQcfVHh4uDp16qQZM2YYrBKm+TSA1ZSWDoBBaGAAKxBarrvuOr3//vuyWCy67bbbNHfuXOXn5+ull16S2+3W8OHDm1zJG8GrpZ/fPJsGAOA3dXV12rt3ryIiInT+/HmtWbNGa9askSRZrVaFh4dr7969qqurYzZNB9aqZ9MAANAS9bNpli5dqnPnzmnx4sWaNWuWFi9erLNnz2rx4sXMpgE9IwAA/7lwNk3nzp31wAMPeB1nNg0kekYAAH504WyahjCbBhIDWBGAGMAKhA5WYO3Y/LICKwAAvujcubNmz56tqqoq9e7dWytXrtSJEye0cuVK9e7dW1VVVZo9ezZBpINjzAgAwK+efPJJSdLixYt19913e/Z36tRJDz30kOc4Oi7CCADA75588kk9/vjj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Ojpat9xyi+fhhPXvcWG3b2JiohYuXKjf/va3ioyMVJ8+fbRy5Uqvuj777DNNnjxZ3bt3V7du3TRs2DDt3LnT6z1XrVqlpKQkdenSRZL0zTffaPr06erZs6eioqL085//XB988MGPal29erX69OmjSy+9VDNmzJDT6dSTTz6puLg4xcTE6C9/+YtXLS29bmN/BnfccYe2bt2qpUuXymKxyGKxqKysTE6nU3feeaeSkpLUtWtXXXPNNVq6dGkr/0sC7ePC+5V7lXs1WBBGQsALL7ygbt26aefOnXryySf12GOPadOmTXK5XJowYYK+/vprbd26VZs2bdKRI0c0adIkr/MPHz6soqIi2e122e12bd26VU888UST75mfn69hw4Zp7969mjFjhu6991598sknkqTTp09r9OjR+vzzz/XPf/5TH3zwgebNmyeXy+U5/9ChQ9qwYYMKCwu1b98+SdLNN9+skydP6s0339SePXs0ZMgQ/eIXv9DXX3/tVeubb76pt956Sy+//LL+/ve/a/z48frss8+0detW/fWvf9Ujjzzi+WXqy3Ub+zNYunSp0tPTddddd6miokIVFRVKSEiQy+VS79699eqrr+rjjz/Wo48+qvnz5+uVV15p3X9IwA+4V7lXg4IbQW306NHun/3sZ177hg8f7v7DH/7g3rhxo9tqtbrLy8s9xz766CO3JPeuXbvcbrfbvWDBAndERIS7pqbG0+ahhx5yjxgxwus97r//fs/rq666yj1lyhTPa5fL5Y6JiXE/88wzbrfb7X722WfdkZGR7q+++qrBmhcsWOC+5JJL3CdPnvTsKy4udkdFRbnPnz/v1fbqq692P/vss43WOnbsWHdiYqLb6XR69l1zzTXuvLy8Nl23uT+DxsycOdN90003eV7ffvvt7gkTJjR7HtBeLvx/lXu1cdyrgYUxIyHg2muv9XodHx+vkydPav/+/UpISFBCQoLn2IABA3TZZZdp//79Gj58uKTvu3IjIyN/dH5L39NisSguLs5zzr59+zR48OAmv7u+6qqr1LNnT8/rDz74QKdPn1aPHj282p07d06HDx/2vP7fWmNjY2W1Wr0eTR0bG+uppbXXbcmfgSQtW7ZMq1evVnl5uc6dO6e6ujqlpaU1ex5wsXCvfo97NbARRkLA/46ct1gsXt2s/ji/qXO6du3a7Ht269bN6/Xp06cVHx+vLVu2/KjtZZdd1uT7NlVLW67b3J/BunXr9OCDDyo/P1/p6emKjIzUU0895dXtDJjGvcq9GgwIIyGsf//+On78uI4fP+7pHfn444/1zTffaMCAAX5732uvvVarVq3S119/3eKR/UOGDFFlZaU6deqkxMTEdqulva7buXNnOZ1Or33bt29XRkaGZsyY4dl34d/ggEDHvYpAwQDWEDZmzBilpqbqtttuU0lJiXbt2qWpU6dq9OjRGjZsmN/ed/LkyYqLi5PNZtP27dt15MgRbdiwQQ6Ho8la09PTZbPZtHHjRpWVlWnHjh16+OGHtXv37lbX0l7XTUxM1M6dO1VWVqYvv/xSLpdLffv21e7du/X222/r008/1Z/+9Ce9//77ra4VuNi4VxEoCCMhzGKx6PXXX9fll1+u66+/XmPGjNFPfvITrV+/3q/v27lzZ23cuFExMTH69a9/rdTUVD3xxBOyWq1N1vrGG2/o+uuv17Rp09SvXz/dcsstOnbsmGJjY1tdS3td98EHH5TVatWAAQPUs2dPlZeX6+6771ZOTo4mTZqkESNG6KuvvvL6mxcQ6LhXESgsbrfbbboIAADQcdEzAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMOr/ASXbw3ES3Qk1AAAAAElFTkSuQmCC",
21
+ "text/plain": [
22
+ "<Figure size 640x480 with 1 Axes>"
23
+ ]
24
+ },
25
+ "metadata": {},
26
+ "output_type": "display_data"
27
+ }
28
+ ],
29
+ "source": [
30
+ "import matplotlib.pyplot as plt\n",
31
+ "import numpy as np\n",
32
+ "\n",
33
+ "nonincremental = [0.144, 0.268, 0.175, 0.292, 0.161, 0.147, 0.238, 0.159, 0.26, 0.161, 0.511, 0.263, 0.149, 0.141, 0.427, 0.06, 0.055, 0.056, 0.145, 0.142, 0.137, 0.302, 0.146, 0.35, 0.256, 0.162, 0.161, 0.33, 0.176, 0.4, 0.294, 0.176, 0.308, 0.206, 0.349, 0.3, 0.326, 0.216, 0.236, 0.852, 0.057, 0.145, 0.386, 0.157, 0.154, 0.351, 0.321, 0.161, 0.158, 0.271, 0.163, 0.619, 0.052, 0.055, 0.164, 0.147, 0.145, 0.214, 0.179, 0.147, 0.398, 0.351, 0.162, 0.158, 0.293, 0.292, 0.169, 0.202, 0.427, 0.205, 0.335, 0.197, 0.211, 0.217, 0.23, 0.225, 0.495, 0.26, 0.346, 0.243, 0.271, 0.259, 0.266, 0.256, 0.288, 0.492, 0.303, 0.294, 0.322, 0.317, 0.299, 1.524, 0.059, 0.056, 0.147, 0.219, 0.161, 0.334, 0.159, 0.175, 0.375, 0.16, 0.177, 0.337, 0.273, 0.184, 0.183, 0.778, 0.228, 0.305, 0.36, 0.159, 0.157, 0.469, 0.057, 0.055, 0.059, 0.059, 0.056, 0.059, 0.063, 0.056, 0.059, 0.056, 0.154, 0.145, 0.208, 0.15, 0.428, 0.281, 0.146, 0.151, 0.324, 0.154, 0.208, 0.141, 0.163, 0.359, 0.282, 0.271, 0.142, 0.529, 0.164, 0.224, 0.139, 0.139, 0.159, 0.344, 0.242, 0.26, 0.155, 0.498, 0.053, 0.152, 0.214, 0.15, 0.148, 0.147, 0.356, 0.252, 0.149, 0.43, 0.057, 0.059, 0.154, 0.212, 0.17, 0.14, 0.144, 0.362, 0.164, 0.216, 0.21, 0.166, 0.155, 0.281, 0.155, 0.314, 0.157, 0.544, 0.253, 0.343, 0.272, 0.186, 0.19, 0.327, 0.212, 0.216, 0.374, 0.241, 0.328, 0.463, 0.424, 0.318, 0.244, 0.245, 0.251, 0.256, 0.546, 0.287, 0.269, 0.316, 0.416, 0.303, 0.407, 0.305, 0.31, 0.311, 0.319, 0.326, 0.343, 0.344, 0.447, 0.685, 0.385, 0.359, 0.369, 0.654, 0.404, 2.228, 0.115, 0.166, 0.216, 0.141, 0.138, 0.268, 0.156, 0.345, 0.314, 0.183, 0.185, 0.193, 0.297, 0.396, 0.203, 0.179, 0.289, 0.187, 0.322, 0.203, 0.204, 0.46, 0.256, 0.244, 0.759]\n",
34
+ "# incremental = [0.139, 0.262, 0.16, 0.347, 0.177, 0.155, 0.16, 0.24, 0.201, 0.165, 0.489, 0.198, 0.227, 0.153, 0.156, 0.407, 0.056, 0.058, 0.143, 0.143, 0.219, 0.155, 0.328, 0.224, 0.335, 0.163, 0.247, 0.277, 0.197, 0.348, 0.337, 0.193, 0.195, 0.209, 0.293, 0.336, 0.226, 0.224, 0.206, 0.841, 0.066, 0.165, 0.261, 0.213, 0.141, 0.33, 0.186, 0.152, 0.159, 0.334, 0.175, 0.16, 0.583, 0.055, 0.155, 0.206, 0.141, 0.34, 0.152, 0.144, 0.214, 0.274, 0.307, 0.162, 0.235, 0.277, 0.172, 0.206, 0.189, 0.337, 0.46, 0.223, 0.209, 0.209, 0.214, 0.216, 0.371, 0.224, 0.375, 0.338, 0.266, 0.244, 0.269, 0.274, 0.273, 0.271, 0.283, 0.283, 0.305, 0.434, 0.33, 1.08, 0.065, 0.059, 0.134, 0.15, 0.145, 0.206, 0.354, 0.165, 0.255, 0.159, 0.286, 0.275, 0.16, 0.175, 0.181, 0.533, 0.201, 0.18, 0.185, 0.373, 0.16, 0.162, 0.455, 0.06, 0.057, 0.053, 0.057, 0.061, 0.063, 0.047, 0.059, 0.056, 0.057, 0.158, 0.154, 0.141, 0.383, 0.151, 0.142, 0.141, 0.359, 0.143, 0.225, 0.155, 0.151, 0.268, 0.334, 0.152, 0.206, 0.161, 0.401, 0.235, 0.275, 0.187, 0.151, 0.152, 0.287, 0.244, 0.272, 0.159, 0.559, 0.185, 0.156, 0.152, 0.146, 0.143, 0.263, 0.161, 0.316, 0.163, 0.438, 0.058, 0.167, 0.241, 0.161, 0.162, 0.151, 0.371, 0.062, 0.156, 0.215, 0.149, 0.145, 0.293, 0.165, 0.328, 0.36, 0.238, 0.387, 0.189, 0.437, 0.207, 0.228, 0.233, 0.365, 0.358, 0.381, 0.226, 0.225, 0.219, 0.448, 0.402, 0.246, 0.322, 0.289, 0.272, 0.394, 0.291, 0.365, 0.298, 0.409, 0.319, 0.323, 0.431, 0.339, 0.326, 0.311, 0.319, 0.325, 0.333, 0.367, 0.364, 0.594, 0.382, 0.595, 0.411, 0.414, 0.419, 1.668, 0.153, 0.23, 0.263, 0.147, 0.281, 0.156, 0.172, 0.354, 0.166, 0.199, 0.244, 0.174, 0.182, 0.294, 0.25, 0.184, 0.182, 0.357, 0.329, 0.226, 0.417, 0.239, 0.214, 0.579]\n",
35
+ "# incremental = [0.27, 0.147, 0.285, 0.146, 0.232, 0.168, 0.226, 0.267, 0.183, 0.151, 0.481, 0.174, 0.218, 0.142, 0.385, 0.061, 0.056, 0.155, 0.162, 0.219, 0.152, 0.279, 0.217, 0.425, 0.235, 0.162, 0.161, 0.3, 0.176, 0.174, 0.349, 0.305, 0.212, 0.221, 0.364, 0.223, 0.408, 0.467, 0.243, 0.707, 0.18, 0.143, 0.212, 0.181, 0.322, 0.265, 0.151, 0.157, 0.22, 0.291, 0.166, 0.55, 0.052, 0.154, 0.208, 0.147, 0.369, 0.163, 0.238, 0.151, 0.325, 0.289, 0.17, 0.234, 0.178, 0.269, 0.196, 0.216, 0.392, 0.358, 0.21, 0.22, 0.216, 0.302, 0.223, 0.256, 0.533, 0.273, 0.322, 0.25, 0.248, 0.314, 0.3, 0.284, 0.439, 0.288, 0.299, 0.298, 0.299, 0.304, 1.138, 0.18, 0.056, 0.054, 0.151, 0.135, 0.219, 0.281, 0.254, 0.168, 0.155, 0.301, 0.301, 0.276, 0.173, 0.161, 0.523, 0.242, 0.217, 0.142, 0.261, 0.147, 0.155, 0.47, 0.067, 0.063, 0.059, 0.223, 0.06, 0.057, 0.058, 0.062, 0.06, 0.058, 0.157, 0.148, 0.147, 0.484, 0.188, 0.145, 0.147, 0.344, 0.054, 0.14, 0.217, 0.143, 0.298, 0.151, 0.226, 0.155, 0.157, 0.43, 0.217, 0.214, 0.152, 0.153, 0.233, 0.285, 0.224, 0.329, 0.187, 0.436, 0.287, 0.143, 0.263, 0.171, 0.172, 0.36, 0.269, 0.676, 0.22, 0.411, 0.056, 0.161, 0.136, 0.255, 0.152, 0.156, 0.147, 0.402, 0.181, 0.208, 0.156, 0.149, 0.3, 0.158, 0.263, 0.366, 0.161, 0.41, 0.42, 0.459, 0.18, 0.177, 0.188, 0.305, 0.228, 0.354, 0.234, 0.248, 0.222, 0.437, 0.399, 0.294, 0.375, 0.266, 0.257, 0.478, 0.315, 0.388, 0.301, 0.362, 0.315, 0.315, 0.439, 0.311, 0.325, 0.344, 0.375, 0.367, 0.349, 0.333, 0.366, 0.556, 0.393, 0.599, 0.393, 0.766, 0.403, 1.396, 0.423, 0.232, 0.258, 0.145, 0.283, 0.156, 0.155, 0.27, 0.278, 0.172, 0.16, 0.167, 0.238, 0.322, 0.188, 0.181, 0.198, 0.275, 0.31, 0.208, 0.468, 0.223, 0.261, 0.62, ]\n",
36
+ "\n",
37
+ "# incremental orig [vad_update + states]\n",
38
+ "# incremental = [0.123, 0.194, 0.206, 0.163, 0.145, 0.15, 0.142, 0.226, 0.136, 0.139, 0.131, 0.274, 0.139, 0.172, 0.125, 0.325, 0.053, 0.056, 0.054, 0.123, 0.124, 0.126, 0.255, 0.129, 0.258, 0.19, 0.139, 0.141, 0.138, 0.155, 0.263, 0.159, 0.166, 0.163, 0.174, 0.196, 0.198, 0.193, 0.208, 0.192, 0.56, 0.068, 0.33, 0.163, 0.124, 0.195, 0.136, 0.125, 0.124, 0.13, 0.146, 0.143, 0.423, 0.063, 0.125, 0.139, 0.12, 0.157, 0.127, 0.2, 0.138, 0.316, 0.132, 0.202, 0.203, 0.218, 0.142, 0.153, 0.149, 0.137, 0.147, 0.159, 0.152, 0.201, 0.168, 0.209, 0.171, 0.201, 0.223, 0.248, 0.131, 0.199, 0.137, 0.135, 0.176, 0.201, 0.135, 0.193, 0.131, 0.177, 0.145, 0.145, 0.3, 0.056, 0.058, 0.176, 0.162, 0.121, 0.245, 0.144, 0.125, 0.203, 0.143, 0.144, 0.153, 0.195, 0.146, 0.35, 0.124, 0.154, 0.124, 0.265, 0.131, 0.284, 0.236, 0.068, 0.061, 0.054, 0.056, 0.067, 0.056, 0.05, 0.049, 0.061, 0.054, 0.136, 0.172, 0.119, 0.312, 0.123, 0.122, 0.123, 0.26, 0.059, 0.123, 0.149, 0.118, 0.119, 0.184, 0.192, 0.133, 0.133, 0.207, 0.118, 0.165, 0.12, 0.113, 0.12, 0.226, 0.136, 0.17, 0.131, 0.282, 0.054, 0.128, 0.174, 0.133, 0.156, 0.229, 0.218, 0.15, 0.128, 0.226, 0.054, 0.117, 0.126, 0.182, 0.128, 0.127, 0.146, 0.209, 0.138, 0.16, 0.129, 0.123, 0.21, 0.132, 0.144, 0.128, 0.15, 0.377, 0.114, 0.123, 0.205, 0.123, 0.125, 0.266, 0.175, 0.298, 0.131, 0.183, 0.143, 0.157, 0.168, 0.174, 0.17, 0.168, 0.187, 0.186, 0.182, 0.186, 0.211, 0.205, 0.218, 0.226, 0.223, 0.211, 0.235, 0.227, 0.23, 0.255, 0.265, 0.274, 0.271, 0.298, 0.265, 0.614, 0.297, 0.32, 0.302, 1.153, 0.09, 0.16, 0.123, 0.17, 0.242, 0.13, 0.135, 0.21, 0.125, 0.172, 0.179, 0.139, 0.15, 0.153, 0.157, 0.145, 0.15, 0.166, 0.17, 0.167, 0.365, 0.181, 0.185, 0.217, 0.442]\n",
39
+ "\n",
40
+ "# incremental 1\n",
41
+ "# incremental = [0.166, 0.141, 0.319, 0.247, 0.272, 0.15, 0.149, 0.188, 0.143, 0.146, 0.283, 0.141, 0.166, 0.122, 0.246, 0.054, 0.055, 0.13, 0.122, 0.172, 0.131, 0.224, 0.173, 0.19, 0.143, 0.217, 0.15, 0.155, 0.152, 0.169, 0.161, 0.176, 0.175, 0.305, 0.253, 0.131, 0.18, 0.136, 0.137, 0.318, 0.064, 0.123, 0.165, 0.124, 0.19, 0.199, 0.132, 0.141, 0.133, 0.2, 0.14, 0.327, 0.054, 0.136, 0.17, 0.125, 0.228, 0.146, 0.13, 0.135, 0.178, 0.21, 0.227, 0.128, 0.125, 0.167, 0.136, 0.177, 0.265, 0.196, 0.158, 0.144, 0.149, 0.144, 0.207, 0.162, 0.17, 0.167, 0.237, 0.196, 0.18, 0.185, 0.192, 0.198, 0.187, 0.205, 0.205, 0.226, 0.226, 0.213, 0.609, 0.062, 0.06, 0.053, 0.126, 0.122, 0.176, 0.191, 0.13, 0.147, 0.178, 0.136, 0.206, 0.144, 0.143, 0.142, 0.386, 0.128, 0.166, 0.136, 0.228, 0.131, 0.132, 0.22, 0.056, 0.063, 0.07, 0.07, 0.064, 0.079, 0.065, 0.059, 0.053, 0.062, 0.128, 0.129, 0.125, 0.241, 0.153, 0.135, 0.124, 0.227, 0.055, 0.132, 0.173, 0.126, 0.191, 0.13, 0.175, 0.162, 0.135, 0.185, 0.175, 0.169, 0.132, 0.128, 0.134, 0.214, 0.14, 0.179, 0.134, 0.277, 0.049, 0.137, 0.164, 0.124, 0.128, 0.229, 0.137, 0.189, 0.124, 0.223, 0.052, 0.123, 0.168, 0.163, 0.127, 0.126, 0.129, 0.217, 0.123, 0.168, 0.123, 0.132, 0.216, 0.149, 0.193, 0.268, 0.139, 0.138, 0.146, 0.185, 0.169, 0.155, 0.171, 0.186, 0.277, 0.199, 0.184, 0.204, 0.241, 0.348, 0.244, 0.226, 0.223, 0.219, 0.24, 0.253, 0.312, 0.248, 0.29, 0.285, 0.273, 0.27, 0.271, 0.273, 0.282, 0.306, 0.315, 0.321, 0.302, 0.327, 0.296, 0.311, 0.324, 0.333, 0.354, 0.564, 0.346, 0.798, 0.281, 0.431, 0.424, 0.3, 0.359, 0.393, 0.415, 0.203, 0.137, 0.138, 0.137, 0.146, 0.139, 0.21, 0.165, 0.165, 0.164, 0.183, 0.215, 0.191, 0.185, 0.268, 0.183, 0.281]\n",
42
+ "# incremental = [0.14, 0.133, 0.207, 0.146, 0.179, 0.137, 0.132, 0.139, 0.203, 0.194, 0.156, 0.282, 0.172, 0.118, 0.13, 0.386, 0.06, 0.062, 0.062, 0.121, 0.119, 0.125, 0.238, 0.128, 0.166, 0.225, 0.165, 0.166, 0.15, 0.166, 0.149, 0.223, 0.158, 0.179, 0.186, 0.182, 0.187, 0.186, 0.198, 0.197, 0.399, 0.066, 0.132, 0.196, 0.175, 0.123, 0.12, 0.167, 0.127, 0.174, 0.191, 0.127, 0.127, 0.301, 0.056, 0.128, 0.18, 0.179, 0.177, 0.135, 0.157, 0.228, 0.215, 0.215, 0.132, 0.128, 0.173, 0.172, 0.129, 0.137, 0.236, 0.178, 0.144, 0.152, 0.147, 0.158, 0.179, 0.284, 0.177, 0.181, 0.192, 0.181, 0.241, 0.233, 0.231, 0.218, 0.223, 0.221, 0.213, 0.244, 0.244, 0.232, 0.772, 0.058, 0.065, 0.134, 0.175, 0.125, 0.205, 0.132, 0.132, 0.199, 0.197, 0.12, 0.128, 0.168, 0.132, 0.131, 0.288, 0.174, 0.124, 0.195, 0.134, 0.134, 0.265, 0.048, 0.059, 0.073, 0.056, 0.061, 0.059, 0.057, 0.055, 0.057, 0.061, 0.132, 0.138, 0.135, 0.249, 0.132, 0.162, 0.128, 0.121, 0.282, 0.135, 0.161, 0.131, 0.131, 0.189, 0.175, 0.132, 0.135, 0.138, 0.24, 0.169, 0.131, 0.132, 0.143, 0.228, 0.136, 0.141, 0.141, 0.296, 0.052, 0.124, 0.164, 0.128, 0.123, 0.214, 0.199, 0.143, 0.139, 0.265, 0.058, 0.056, 0.131, 0.161, 0.13, 0.127, 0.123, 0.228, 0.135, 0.236, 0.407, 0.25, 0.409, 0.504, 0.336, 0.596, 0.134, 0.143, 0.147, 0.275, 0.315, 0.159, 0.172, 0.182, 0.182, 0.187, 0.191, 0.187, 0.2, 0.242, 0.276, 0.142, 0.123, 0.127, 0.166, 0.175, 0.176, 0.188, 0.211, 0.285, 0.236, 0.297, 0.147, 0.159, 0.154, 0.171, 0.164, 0.228, 0.183, 0.299, 0.395, 0.126, 0.122, 0.171, 0.17, 0.133, 0.152, 0.386, 0.053, 0.134, 0.17, 0.136, 0.131, 0.213, 0.126, 0.195, 0.133, 0.128, 0.13, 0.177, 0.136, 0.14, 0.19, 0.194, 0.162, 0.166, 0.169, 0.227, 0.185, 0.28, 0.188, 0.188, 0.259]\n",
43
+ "# incremental = [1.174, 0.16, 0.2, 0.223, 0.19, 0.147, 0.153, 0.193, 0.137, 0.177, 0.145, 0.258, 0.178, 0.124, 0.124, 0.241, 0.057, 0.056, 0.058, 0.153, 0.147, 0.122, 0.226, 0.126, 0.219, 0.131, 0.139, 0.179, 0.137, 0.142, 0.148, 0.222, 0.151, 0.158, 0.173, 0.186, 0.187, 0.218, 0.176, 0.201, 0.35, 0.051, 0.247, 0.205, 0.134, 0.155, 0.192, 0.132, 0.132, 0.184, 0.14, 0.188, 0.339, 0.049, 0.216, 0.133, 0.118, 0.145, 0.165, 0.126, 0.137, 0.296, 0.205, 0.13, 0.128, 0.236, 0.219, 0.162, 0.135, 0.139, 0.244, 0.191, 0.162, 0.153, 0.156, 0.162, 0.168, 0.212, 0.189, 0.208, 0.177, 0.192, 0.188, 0.199, 0.204, 0.195, 0.224, 0.25, 0.226, 0.256, 0.294, 0.34, 0.207, 0.064, 0.063, 0.125, 0.176, 0.13, 0.208, 0.142, 0.131, 0.189, 0.186, 0.124, 0.122, 0.182, 0.122, 0.29, 0.135, 0.171, 0.13, 0.205, 0.121, 0.132, 0.278, 0.06, 0.056, 0.06, 0.056, 0.053, 0.052, 0.053, 0.055, 0.053, 0.062, 0.13, 0.128, 0.126, 0.239, 0.126, 0.129, 0.136, 0.126, 0.238, 0.133, 0.166, 0.127, 0.144, 0.199, 0.183, 0.14, 0.137, 0.28, 0.132, 0.174, 0.138, 0.123, 0.132, 0.217, 0.172, 0.137, 0.138, 0.295, 0.064, 0.118, 0.166, 0.127, 0.127, 0.175, 0.228, 0.138, 0.125, 0.244, 0.054, 0.059, 0.137, 0.163, 0.121, 0.127, 0.122, 0.234, 0.124, 0.155, 0.183, 0.124, 0.188, 0.166, 0.137, 0.19, 0.306, 0.145, 0.157, 0.301, 0.162, 0.157, 0.163, 0.176, 0.175, 0.177, 0.19, 0.193, 0.203, 0.201, 0.206, 0.214, 0.216, 0.217, 0.237, 0.228, 0.24, 0.234, 0.248, 0.258, 0.268, 0.264, 0.402, 0.29, 0.262, 0.278, 0.282, 0.291, 0.289, 0.316, 0.303, 0.31, 0.306, 0.3, 0.325, 0.327, 0.329, 0.649, 0.06, 0.143, 0.171, 0.127, 0.125, 0.184, 0.125, 0.283, 0.133, 0.131, 0.204, 0.135, 0.142, 0.201, 0.143, 0.16, 0.152, 0.167, 0.219, 0.169, 0.18, 0.287, 0.2, 0.189, 0.277]\n",
44
+ "# synthesize speech\n",
45
+ "# incremental = [0.177, 0.133, 0.192, 0.133, 0.201, 0.133, 0.141, 0.137, 0.175, 0.22, 0.153, 0.331, 0.184, 0.18, 0.147, 0.138, 0.393, 0.067, 0.156, 0.16, 0.136, 0.122, 0.224, 0.205, 0.182, 0.135, 0.271, 0.147, 0.146, 0.178, 0.158, 0.151, 0.164, 0.173, 0.162, 0.186, 0.346, 0.199, 0.12, 0.131, 0.32, 0.064, 0.063, 0.142, 0.165, 0.129, 0.213, 0.124, 0.133, 0.138, 0.284, 0.14, 0.145, 0.374, 0.054, 0.137, 0.164, 0.118, 0.199, 0.133, 0.131, 0.28, 0.163, 0.254, 0.19, 0.119, 0.162, 0.128, 0.132, 0.269, 0.158, 0.235, 0.141, 0.141, 0.242, 0.178, 0.178, 0.151, 0.19, 0.178, 0.236, 0.176, 0.24, 0.206, 0.201, 0.207, 0.213, 0.218, 0.22, 0.257, 0.308, 0.304, 0.076, 0.056, 0.063, 0.069, 0.165, 0.198, 0.151, 0.278, 0.135, 0.21, 0.147, 0.14, 0.229, 0.151, 0.159, 0.151, 0.417, 0.167, 0.124, 0.172, 0.307, 0.144, 0.244, 0.062, 0.054, 0.063, 0.053, 0.06, 0.049, 0.053, 0.075, 0.061, 0.061, 0.054, 0.131, 0.124, 0.124, 0.284, 0.175, 0.138, 0.128, 0.253, 0.13, 0.161, 0.119, 0.151, 0.271, 0.145, 0.217, 0.14, 0.139, 0.269, 0.199, 0.176, 0.135, 0.13, 0.14, 0.257, 0.163, 0.224, 0.144, 0.327, 0.143, 0.183, 0.151, 0.127, 0.136, 0.287, 0.143, 0.13, 0.131, 0.296, 0.052, 0.134, 0.121, 0.169, 0.125, 0.125, 0.272, 0.157, 0.206, 0.199, 0.131, 0.128, 0.176, 0.241, 0.14, 0.244, 0.145, 0.147, 0.352, 0.268, 0.16, 0.163, 0.171, 0.187, 0.202, 0.193, 0.191, 0.23, 0.227, 0.212, 0.285, 0.236, 0.234, 0.217, 0.213, 0.236, 0.238, 0.33, 0.28, 0.268, 0.286, 0.283, 0.286, 0.364, 0.315, 0.29, 0.297, 0.297, 0.297, 0.322, 0.378, 0.311, 0.341, 0.344, 0.334, 0.34, 0.698, 0.069, 0.132, 0.167, 0.186, 0.13, 0.222, 0.136, 0.204, 0.208, 0.131, 0.134, 0.152, 0.145, 0.15, 0.144, 0.26, 0.166, 0.156, 0.162, 0.18, 0.297, 0.185, 0.185, 0.201, 0.328]\n",
46
+ "# incremental = [0.146, 0.133, 0.186, 0.137, 0.199, 0.145, 0.128, 0.163, 0.218, 0.217, 0.159, 0.315, 0.175, 0.176, 0.125, 0.141, 0.277, 0.064, 0.061, 0.123, 0.116, 0.166, 0.217, 0.199, 0.171, 0.211, 0.134, 0.142, 0.148, 0.276, 0.157, 0.156, 0.157, 0.542, 0.19, 0.186, 0.186, 0.187, 0.186, 0.174, 0.432, 0.051, 0.052, 0.127, 0.162, 0.132, 0.125, 0.238, 0.14, 0.134, 0.172, 0.132, 0.135, 0.368, 0.054, 0.246, 0.163, 0.115, 0.166, 0.131, 0.13, 0.28, 0.217, 0.122, 0.126, 0.18, 0.125, 0.134, 0.131, 0.221, 0.134, 0.226, 0.151, 0.144, 0.163, 0.16, 0.169, 0.27, 0.174, 0.184, 0.19, 0.178, 0.187, 0.206, 0.203, 0.202, 0.206, 0.217, 0.224, 0.241, 0.251, 0.233, 0.665, 0.054, 0.052, 0.061, 0.165, 0.173, 0.124, 0.224, 0.135, 0.207, 0.143, 0.197, 0.146, 0.153, 0.147, 0.137, 0.419, 0.166, 0.128, 0.167, 0.237, 0.141, 0.237, 0.056, 0.054, 0.051, 0.054, 0.063, 0.059, 0.059, 0.049, 0.062, 0.056, 0.057, 0.126, 0.116, 0.432, 0.268, 0.121, 0.119, 0.174, 0.266, 0.131, 0.17, 0.127, 0.141, 0.274, 0.161, 0.213, 0.143, 0.158, 0.273, 0.171, 0.176, 0.144, 0.138, 0.217, 0.182, 0.143, 0.203, 0.141, 0.298, 0.129, 0.174, 0.125, 0.124, 0.125, 0.28, 0.135, 0.143, 0.143, 0.3, 0.055, 0.166, 0.165, 0.161, 0.124, 0.129, 0.255, 0.133, 0.178, 0.255, 0.157, 0.421, 0.132, 0.221, 0.245, 0.148, 0.138, 0.231, 0.263, 0.256, 0.449, 0.174, 0.19, 0.189, 0.188, 0.19, 0.194, 0.207, 0.206, 0.206, 0.278, 0.229, 0.221, 0.207, 0.211, 0.238, 0.24, 0.302, 0.264, 0.297, 0.272, 0.264, 0.264, 0.267, 0.269, 0.277, 0.297, 0.299, 0.303, 0.304, 0.301, 0.311, 0.297, 0.342, 0.322, 0.332, 1.311, 0.091, 0.13, 0.15, 0.197, 0.128, 0.217, 0.127, 0.205, 0.207, 0.125, 0.132, 0.139, 0.141, 0.188, 0.184, 0.222, 0.155, 0.154, 0.167, 0.176, 0.298, 0.179, 0.196, 0.185, 0.306]\n",
47
+ "\n",
48
+ "\n",
49
+ "# incremental 2 [_train]\n",
50
+ "# incremental = [0.144, 0.217, 0.149, 0.264, 0.15, 0.241, 0.157, 0.152, 0.25, 0.158, 0.454, 0.233, 0.231, 0.152, 0.148, 0.357, 0.064, 0.06, 0.143, 0.142, 0.17, 0.26, 0.225, 0.237, 0.306, 0.157, 0.164, 0.25, 0.179, 0.294, 0.179, 0.178, 0.192, 0.186, 0.206, 0.198, 0.238, 0.216, 0.217, 0.342, 0.054, 0.056, 0.144, 0.215, 0.146, 0.181, 0.143, 0.15, 0.266, 0.149, 0.143, 0.144, 0.514, 0.049, 0.215, 0.142, 0.222, 0.223, 0.154, 0.164, 0.34, 0.154, 0.241, 0.201, 0.173, 0.297, 0.138, 0.225, 0.27, 0.266, 0.155, 0.154, 0.148, 0.233, 0.166, 0.166, 0.283, 0.178, 0.188, 0.193, 0.193, 0.205, 0.214, 0.203, 0.215, 0.293, 0.242, 0.245, 0.256, 0.259, 0.59, 0.06, 0.058, 0.06, 0.06, 0.151, 0.151, 0.227, 0.261, 0.161, 0.239, 0.164, 0.264, 0.257, 0.156, 0.233, 0.161, 0.506, 0.245, 0.151, 0.225, 0.327, 0.16, 0.337, 0.059, 0.056, 0.056, 0.057, 0.067, 0.058, 0.067, 0.053, 0.052, 0.06, 0.065, 0.148, 0.145, 0.139, 0.38, 0.16, 0.148, 0.149, 0.332, 0.148, 0.232, 0.164, 0.149, 0.301, 0.149, 0.156, 0.159, 0.161, 0.329, 0.225, 0.229, 0.155, 0.16, 0.159, 0.308, 0.151, 0.281, 0.165, 0.43, 0.189, 0.348, 0.138, 0.152, 0.147, 0.267, 0.203, 0.27, 0.228, 0.53, 0.052, 0.147, 0.226, 0.147, 0.15, 0.147, 0.338, 0.145, 0.235, 0.279, 0.154, 0.155, 0.154, 0.351, 0.165, 0.155, 0.162, 0.177, 0.173, 0.248, 0.21, 0.191, 0.206, 0.198, 0.206, 0.211, 0.22, 0.291, 0.312, 0.221, 0.684, 0.236, 0.24, 0.258, 0.256, 0.263, 0.27, 0.277, 0.295, 0.301, 0.345, 0.295, 0.3, 0.309, 0.31, 0.317, 0.319, 0.334, 0.341, 0.372, 0.344, 0.364, 0.369, 0.38, 0.376, 0.398, 0.617, 0.064, 0.141, 0.212, 0.147, 0.153, 0.354, 0.16, 0.221, 0.156, 0.153, 0.163, 0.265, 0.144, 0.236, 0.145, 0.146, 0.175, 0.153, 0.221, 0.325, 0.305, 0.159, 0.179, 0.173, 0.375]\n",
51
+ "\n",
52
+ "# nonincremental infer\n",
53
+ "# incremental = [0.122, 0.196, 0.123, 0.314, 0.136, 0.127, 0.133, 0.204, 0.193, 0.135, 0.306, 0.137, 0.126, 0.174, 0.121, 0.303, 0.066, 0.055, 0.131, 0.135, 0.166, 0.13, 0.245, 0.237, 0.191, 0.135, 0.206, 0.211, 0.149, 0.311, 0.257, 0.233, 0.168, 0.171, 0.178, 0.256, 0.186, 0.196, 0.181, 0.585, 0.06, 0.059, 0.139, 0.169, 0.123, 0.241, 0.202, 0.128, 0.141, 0.226, 0.152, 0.128, 0.392, 0.054, 0.246, 0.166, 0.115, 0.248, 0.139, 0.137, 0.185, 0.243, 0.224, 0.142, 0.185, 0.239, 0.156, 0.17, 0.255, 0.192, 0.243, 0.181, 0.19, 0.223, 0.186, 0.195, 0.304, 0.197, 0.23, 0.316, 0.214, 0.248, 0.236, 0.239, 0.236, 0.328, 0.286, 0.281, 0.262, 0.342, 0.289, 0.796, 0.287, 0.062, 0.052, 0.13, 0.119, 0.165, 0.227, 0.134, 0.24, 0.224, 0.133, 0.15, 0.28, 0.139, 0.143, 0.36, 0.121, 0.462, 0.125, 0.309, 0.145, 0.251, 0.256, 0.06, 0.058, 0.058, 0.056, 0.055, 0.048, 0.047, 0.066, 0.064, 0.069, 0.138, 0.127, 0.134, 0.282, 0.119, 0.123, 0.116, 0.268, 0.128, 0.165, 0.173, 0.141, 0.198, 0.209, 0.129, 0.13, 0.133, 0.328, 0.174, 0.173, 0.13, 0.132, 0.142, 0.252, 0.201, 0.137, 0.136, 0.318, 0.054, 0.123, 0.128, 0.123, 0.118, 0.24, 0.128, 0.202, 0.121, 0.278, 0.058, 0.13, 0.18, 0.124, 0.138, 0.126, 0.271, 0.059, 0.139, 0.164, 0.125, 0.187, 0.261, 0.132, 0.307, 0.132, 0.224, 0.398, 0.303, 0.307, 0.154, 0.153, 0.161, 0.204, 0.196, 0.285, 0.19, 0.203, 0.189, 0.196, 0.366, 0.22, 0.31, 0.258, 0.287, 0.322, 0.236, 0.241, 0.537, 0.311, 0.261, 0.261, 0.402, 0.281, 0.277, 0.28, 0.303, 0.345, 0.307, 0.297, 0.319, 0.487, 0.319, 0.339, 0.33, 0.339, 0.341, 1.037, 0.126, 0.237, 0.21, 0.124, 0.269, 0.161, 0.132, 0.223, 0.143, 0.137, 0.181, 0.143, 0.221, 0.179, 0.263, 0.162, 0.169, 0.254, 0.187, 0.184, 0.321, 0.203, 0.203, 0.444]\n",
54
+ "# incremental = [0.126, 0.202, 0.239, 0.218, 0.152, 0.153, 0.228, 0.137, 0.139, 0.145, 0.349, 0.201, 0.138, 0.165, 0.326, 0.057, 0.056, 0.059, 0.143, 0.131, 0.134, 0.291, 0.15, 0.277, 0.15, 0.197, 0.249, 0.167, 0.26, 0.243, 0.246, 0.156, 0.242, 0.188, 0.26, 0.241, 0.376, 0.209, 0.204, 0.437, 0.054, 0.241, 0.238, 0.139, 0.223, 0.212, 0.193, 0.145, 0.234, 0.212, 0.141, 0.408, 0.045, 0.149, 0.149, 0.134, 0.131, 0.183, 0.145, 0.137, 0.382, 0.305, 0.139, 0.142, 0.249, 0.157, 0.147, 0.265, 0.173, 0.243, 0.192, 0.182, 0.184, 0.189, 0.19, 0.221, 0.303, 0.208, 0.329, 0.226, 0.234, 0.239, 0.247, 0.246, 0.354, 0.39, 0.282, 0.274, 0.274, 0.278, 0.275, 0.823, 0.05, 0.067, 0.141, 0.174, 0.127, 0.274, 0.139, 0.221, 0.143, 0.145, 0.154, 0.298, 0.155, 0.15, 0.407, 0.155, 0.18, 0.132, 0.233, 0.212, 0.143, 0.296, 0.064, 0.089, 0.057, 0.06, 0.054, 0.05, 0.055, 0.056, 0.065, 0.064, 0.169, 0.129, 0.127, 0.311, 0.133, 0.131, 0.134, 0.142, 0.267, 0.132, 0.169, 0.133, 0.13, 0.29, 0.216, 0.147, 0.137, 0.299, 0.14, 0.207, 0.138, 0.141, 0.13, 0.266, 0.286, 0.136, 0.144, 0.339, 0.061, 0.405, 0.182, 0.145, 0.145, 0.182, 0.297, 0.221, 0.148, 0.298, 0.084, 0.07, 0.144, 0.182, 0.14, 0.134, 0.135, 0.288, 0.144, 0.194, 0.216, 0.143, 0.133, 0.135, 0.257, 0.246, 0.25, 0.361, 0.149, 0.422, 0.265, 0.167, 0.171, 0.19, 0.194, 0.182, 0.299, 0.196, 0.342, 0.21, 0.32, 0.222, 0.319, 0.232, 0.235, 0.252, 0.364, 0.249, 0.274, 0.294, 0.315, 0.295, 0.312, 0.285, 0.288, 0.303, 0.285, 0.353, 0.36, 0.314, 0.3, 0.351, 0.317, 0.312, 0.337, 0.561, 0.38, 1.073, 0.057, 0.145, 0.253, 0.136, 0.14, 0.205, 0.156, 0.29, 0.194, 0.136, 0.139, 0.143, 0.22, 0.266, 0.164, 0.159, 0.165, 0.187, 0.26, 0.184, 0.311, 0.236, 0.193, 0.186, 0.464]\n",
55
+ "\n",
56
+ "# incremental infer\n",
57
+ "# incremental = [0.117, 0.179, 0.229, 0.222, 0.143, 0.13, 0.137, 0.192, 0.215, 0.15, 0.257, 0.137, 0.176, 0.139, 0.199, 0.295, 0.066, 0.057, 0.162, 0.129, 0.176, 0.135, 0.266, 0.145, 0.265, 0.184, 0.211, 0.151, 0.221, 0.269, 0.244, 0.237, 0.176, 0.177, 0.181, 0.234, 0.193, 0.185, 0.203, 0.512, 0.057, 0.102, 0.127, 0.19, 0.126, 0.256, 0.227, 0.131, 0.134, 0.134, 0.204, 0.144, 0.35, 0.051, 0.275, 0.166, 0.2, 0.169, 0.131, 0.139, 0.263, 0.228, 0.225, 0.151, 0.178, 0.219, 0.14, 0.176, 0.291, 0.25, 0.213, 0.19, 0.192, 0.199, 0.206, 0.196, 0.28, 0.21, 0.317, 0.265, 0.236, 0.222, 0.272, 0.251, 0.262, 0.361, 0.273, 0.265, 0.272, 0.277, 0.279, 0.732, 0.064, 0.059, 0.066, 0.14, 0.135, 0.248, 0.14, 0.137, 0.198, 0.149, 0.232, 0.145, 0.268, 0.151, 0.151, 0.373, 0.179, 0.176, 0.181, 0.25, 0.131, 0.235, 0.058, 0.058, 0.055, 0.054, 0.059, 0.064, 0.058, 0.061, 0.055, 0.066, 0.057, 0.125, 0.127, 0.134, 0.275, 0.128, 0.126, 0.146, 0.306, 0.129, 0.164, 0.131, 0.128, 0.228, 0.213, 0.133, 0.137, 0.142, 0.319, 0.169, 0.174, 0.134, 0.129, 0.131, 0.302, 0.245, 0.14, 0.144, 0.323, 0.128, 0.164, 0.125, 0.135, 0.132, 0.266, 0.139, 0.191, 0.14, 0.259, 0.053, 0.13, 0.161, 0.122, 0.138, 0.122, 0.263, 0.057, 0.127, 0.158, 0.125, 0.126, 0.191, 0.205, 0.138, 0.129, 0.253, 0.143, 0.151, 0.148, 0.167, 0.165, 0.16, 0.383, 0.174, 0.296, 0.187, 0.334, 0.218, 0.207, 0.364, 0.206, 0.204, 0.226, 0.218, 0.237, 0.235, 0.279, 0.357, 0.273, 0.269, 0.265, 0.274, 0.271, 0.285, 0.293, 0.292, 0.301, 0.308, 0.308, 0.305, 0.302, 0.305, 0.305, 0.336, 0.339, 0.347, 1.08, 0.134, 0.169, 0.19, 0.124, 0.212, 0.178, 0.186, 0.209, 0.134, 0.128, 0.178, 0.137, 0.209, 0.187, 0.225, 0.163, 0.15, 0.161, 0.248, 0.281, 0.221, 0.183, 0.193, 0.429]\n",
58
+ "# incremental = [0.126, 0.189, 0.13, 0.293, 0.133, 0.149, 0.137, 0.235, 0.154, 0.141, 0.326, 0.132, 0.121, 0.17, 0.132, 0.291, 0.058, 0.061, 0.132, 0.132, 0.168, 0.134, 0.249, 0.235, 0.201, 0.144, 0.21, 0.214, 0.145, 0.258, 0.222, 0.223, 0.176, 0.208, 0.227, 0.259, 0.231, 0.32, 0.215, 0.569, 0.057, 0.057, 0.133, 0.129, 0.16, 0.289, 0.203, 0.134, 0.143, 0.23, 0.185, 0.142, 0.364, 0.054, 0.271, 0.165, 0.128, 0.29, 0.196, 0.138, 0.145, 0.198, 0.213, 0.149, 0.189, 0.213, 0.153, 0.159, 0.251, 0.171, 0.281, 0.184, 0.184, 0.189, 0.203, 0.203, 0.285, 0.194, 0.219, 0.347, 0.227, 0.229, 0.246, 0.232, 0.241, 0.365, 0.291, 0.284, 0.275, 0.274, 0.272, 0.779, 0.073, 0.058, 0.055, 0.143, 0.133, 0.159, 0.24, 0.133, 0.133, 0.238, 0.14, 0.144, 0.281, 0.142, 0.145, 0.368, 0.131, 0.165, 0.124, 0.26, 0.128, 0.128, 0.258, 0.061, 0.06, 0.051, 0.063, 0.069, 0.06, 0.055, 0.055, 0.052, 0.065, 0.13, 0.124, 0.124, 0.283, 0.129, 0.127, 0.131, 0.26, 0.056, 0.126, 0.178, 0.142, 0.234, 0.215, 0.13, 0.127, 0.132, 0.31, 0.183, 0.176, 0.133, 0.158, 0.143, 0.251, 0.205, 0.139, 0.144, 0.318, 0.054, 0.128, 0.17, 0.127, 0.129, 0.254, 0.214, 0.198, 0.156, 0.323, 0.057, 0.128, 0.167, 0.168, 0.136, 0.129, 0.25, 0.068, 0.189, 0.177, 0.128, 0.137, 0.283, 0.141, 0.305, 0.14, 0.226, 0.378, 0.263, 0.449, 0.172, 0.158, 0.168, 0.178, 0.221, 0.326, 0.189, 0.188, 0.193, 0.205, 0.371, 0.227, 0.327, 0.216, 0.231, 0.341, 0.251, 0.252, 0.298, 0.261, 0.281, 0.295, 0.359, 0.283, 0.285, 0.294, 0.305, 0.317, 0.322, 0.322, 0.317, 0.471, 0.315, 0.327, 0.328, 0.343, 0.347, 0.962, 0.136, 0.276, 0.237, 0.134, 0.227, 0.137, 0.134, 0.225, 0.151, 0.144, 0.182, 0.165, 0.215, 0.163, 0.243, 0.161, 0.171, 0.177, 0.251, 0.187, 0.315, 0.224, 0.207, 0.426]\n",
59
+ "# incremental = [0.157, 0.136, 0.199, 0.132, 0.266, 0.164, 0.14, 0.148, 0.223, 0.24, 0.148, 0.299, 0.195, 0.184, 0.151, 0.14, 0.284, 0.068, 0.069, 0.181, 0.136, 0.129, 0.226, 0.248, 0.164, 0.358, 0.174, 0.196, 0.154, 0.244, 0.244, 0.224, 0.172, 0.256, 0.187, 0.22, 0.186, 0.219, 0.216, 0.2, 0.528, 0.063, 0.058, 0.139, 0.169, 0.128, 0.136, 0.278, 0.148, 0.132, 0.139, 0.155, 0.149, 0.382, 0.063, 0.144, 0.128, 0.177, 0.181, 0.132, 0.145, 0.317, 0.154, 0.234, 0.148, 0.281, 0.152, 0.164, 0.254, 0.178, 0.252, 0.187, 0.193, 0.184, 0.2, 0.199, 0.207, 0.304, 0.227, 0.313, 0.291, 0.24, 0.249, 0.245, 0.264, 0.333, 0.371, 0.272, 0.278, 0.28, 0.302, 0.756, 0.061, 0.068, 0.056, 0.059, 0.135, 0.163, 0.136, 0.215, 0.256, 0.135, 0.151, 0.227, 0.147, 0.281, 0.17, 0.159, 0.358, 0.166, 0.134, 0.197, 0.311, 0.167, 0.259, 0.061, 0.053, 0.072, 0.07, 0.078, 0.073, 0.078, 0.08, 0.076, 0.074, 0.071, 0.192, 0.126, 0.125, 0.281, 0.134, 0.126, 0.136, 0.25, 0.133, 0.174, 0.139, 0.129, 0.222, 0.216, 0.192, 0.144, 0.135, 0.248, 0.183, 0.176, 0.189, 0.144, 0.22, 0.184, 0.2, 0.135, 0.133, 0.315, 0.128, 0.298, 0.126, 0.126, 0.121, 0.34, 0.143, 0.208, 0.146, 0.276, 0.058, 0.132, 0.135, 0.176, 0.125, 0.127, 0.28, 0.131, 0.165, 0.191, 0.136, 0.128, 0.173, 0.234, 0.289, 0.168, 0.281, 0.415, 0.331, 0.362, 0.161, 0.162, 0.189, 0.194, 0.2, 0.292, 0.2, 0.199, 0.328, 0.363, 0.237, 0.352, 0.218, 0.227, 0.235, 0.291, 0.26, 0.321, 0.273, 0.306, 0.273, 0.274, 0.271, 0.369, 0.293, 0.286, 0.304, 0.308, 0.322, 0.299, 0.313, 0.444, 0.329, 0.35, 0.521, 0.365, 0.908, 0.054, 0.183, 0.167, 0.185, 0.129, 0.222, 0.132, 0.238, 0.139, 0.131, 0.135, 0.185, 0.138, 0.221, 0.187, 0.218, 0.153, 0.158, 0.176, 0.246, 0.297, 0.222, 0.202, 0.191, 0.463]\n",
60
+ "# incremental = [0.329, 0.188, 0.206, 0.228, 0.138, 0.133, 0.138, 0.205, 0.178, 0.143, 0.368, 0.167, 0.167, 0.128, 0.132, 0.283, 0.069, 0.064, 0.13, 0.121, 0.165, 0.174, 0.245, 0.177, 0.253, 0.171, 0.142, 0.208, 0.185, 0.268, 0.23, 0.238, 0.169, 0.167, 0.22, 0.179, 0.19, 0.186, 0.194, 0.512, 0.059, 0.083, 0.123, 0.166, 0.13, 0.247, 0.205, 0.135, 0.144, 0.229, 0.148, 0.139, 0.372, 0.057, 0.127, 0.122, 0.165, 0.208, 0.29, 0.133, 0.215, 0.235, 0.22, 0.146, 0.186, 0.215, 0.161, 0.176, 0.254, 0.168, 0.24, 0.174, 0.181, 0.216, 0.202, 0.201, 0.289, 0.202, 0.294, 0.207, 0.208, 0.214, 0.215, 0.234, 0.245, 0.346, 0.27, 0.271, 0.276, 0.334, 0.272, 0.704, 0.141, 0.052, 0.07, 0.157, 0.13, 0.161, 0.222, 0.137, 0.199, 0.15, 0.217, 0.14, 0.263, 0.149, 0.147, 0.379, 0.162, 0.185, 0.129, 0.237, 0.135, 0.127, 0.228, 0.06, 0.06, 0.064, 0.056, 0.06, 0.057, 0.054, 0.054, 0.061, 0.054, 0.122, 0.144, 0.15, 0.279, 0.13, 0.119, 0.124, 0.254, 0.138, 0.204, 0.181, 0.128, 0.204, 0.183, 0.185, 0.149, 0.148, 0.305, 0.213, 0.174, 0.14, 0.135, 0.143, 0.244, 0.204, 0.134, 0.134, 0.317, 0.06, 0.131, 0.123, 0.128, 0.161, 0.323, 0.128, 0.197, 0.146, 0.268, 0.057, 0.129, 0.169, 0.132, 0.126, 0.165, 0.258, 0.059, 0.174, 0.17, 0.127, 0.128, 0.202, 0.239, 0.243, 0.134, 0.138, 0.136, 0.295, 0.274, 0.155, 0.157, 0.204, 0.304, 0.313, 0.178, 0.205, 0.29, 0.193, 0.198, 0.393, 0.206, 0.307, 0.205, 0.213, 0.309, 0.217, 0.225, 0.266, 0.237, 0.285, 0.32, 0.267, 0.361, 0.28, 0.274, 0.272, 0.286, 0.287, 0.32, 0.308, 0.409, 0.442, 0.561, 0.325, 0.307, 0.315, 0.852, 0.412, 0.161, 0.181, 0.125, 0.216, 0.138, 0.197, 0.191, 0.131, 0.316, 0.173, 0.139, 0.202, 0.151, 0.229, 0.156, 0.157, 0.164, 0.284, 0.282, 0.214, 0.179, 0.185, 0.467]\n",
61
+ "# incremental = [0.189, 0.126, 0.17, 0.23, 0.136, 0.135, 0.164, 0.234, 0.152, 0.141, 0.145, 0.329, 0.138, 0.206, 0.138, 0.325, 0.06, 0.056, 0.061, 0.136, 0.128, 0.13, 0.257, 0.138, 0.245, 0.148, 0.214, 0.214, 0.144, 0.197, 0.278, 0.178, 0.173, 0.257, 0.18, 0.18, 0.225, 0.338, 0.21, 0.2, 0.39, 0.057, 0.143, 0.17, 0.139, 0.242, 0.204, 0.184, 0.136, 0.209, 0.14, 0.148, 0.404, 0.055, 0.162, 0.144, 0.129, 0.172, 0.152, 0.128, 0.133, 0.33, 0.233, 0.139, 0.138, 0.239, 0.149, 0.158, 0.245, 0.172, 0.175, 0.25, 0.177, 0.191, 0.188, 0.195, 0.188, 0.287, 0.202, 0.301, 0.22, 0.222, 0.229, 0.229, 0.24, 0.275, 0.34, 0.279, 0.267, 0.27, 0.276, 0.291, 0.748, 0.058, 0.059, 0.142, 0.172, 0.152, 0.25, 0.136, 0.214, 0.142, 0.157, 0.138, 0.266, 0.152, 0.148, 0.146, 0.368, 0.172, 0.13, 0.233, 0.14, 0.135, 0.28, 0.058, 0.059, 0.06, 0.097, 0.064, 0.058, 0.058, 0.057, 0.055, 0.059, 0.16, 0.126, 0.128, 0.282, 0.138, 0.125, 0.122, 0.132, 0.322, 0.128, 0.199, 0.431, 0.121, 0.204, 0.189, 0.13, 0.124, 0.264, 0.135, 0.173, 0.147, 0.125, 0.127, 0.244, 0.193, 0.126, 0.132, 0.294, 0.051, 0.133, 0.159, 0.127, 0.124, 0.207, 0.221, 0.195, 0.138, 0.258, 0.048, 0.058, 0.128, 0.164, 0.126, 0.122, 0.135, 0.272, 0.13, 0.166, 0.186, 0.124, 0.173, 0.133, 0.239, 0.269, 0.135, 0.284, 0.293, 0.244, 0.227, 0.162, 0.157, 0.194, 0.185, 0.203, 0.284, 0.202, 0.33, 0.212, 0.314, 0.216, 0.395, 0.242, 0.235, 0.235, 0.339, 0.253, 0.331, 0.287, 0.284, 0.277, 0.313, 0.281, 0.318, 0.3, 0.358, 0.317, 0.31, 0.309, 0.306, 0.462, 0.338, 0.334, 0.354, 0.479, 0.373, 0.911, 0.055, 0.185, 0.161, 0.127, 0.24, 0.125, 0.129, 0.215, 0.179, 0.127, 0.143, 0.135, 0.208, 0.223, 0.162, 0.15, 0.161, 0.18, 0.238, 0.185, 0.309, 0.217, 0.207, 0.19, 0.425]\n",
62
+ "# incremental = [0.133, 0.192, 0.198, 0.229, 0.133, 0.135, 0.239, 0.146, 0.143, 0.141, 0.325, 0.186, 0.164, 0.146, 0.304, 0.059, 0.058, 0.052, 0.13, 0.14, 0.139, 0.272, 0.167, 0.308, 0.152, 0.144, 0.243, 0.149, 0.211, 0.223, 0.227, 0.163, 0.28, 0.184, 0.178, 0.243, 0.338, 0.199, 0.226, 0.391, 0.06, 0.19, 0.207, 0.129, 0.21, 0.197, 0.169, 0.133, 0.132, 0.231, 0.145, 0.361, 0.055, 0.189, 0.135, 0.125, 0.123, 0.166, 0.133, 0.129, 0.319, 0.225, 0.139, 0.151, 0.19, 0.243, 0.152, 0.256, 0.165, 0.25, 0.191, 0.173, 0.204, 0.21, 0.212, 0.198, 0.296, 0.197, 0.312, 0.234, 0.225, 0.217, 0.259, 0.249, 0.336, 0.348, 0.289, 0.274, 0.308, 0.273, 0.29, 0.742, 0.066, 0.055, 0.128, 0.16, 0.132, 0.238, 0.134, 0.221, 0.142, 0.135, 0.149, 0.268, 0.151, 0.147, 0.152, 0.361, 0.162, 0.124, 0.177, 0.126, 0.127, 0.303, 0.061, 0.061, 0.053, 0.053, 0.057, 0.059, 0.056, 0.063, 0.059, 0.079, 0.187, 0.126, 0.132, 0.279, 0.131, 0.175, 0.123, 0.135, 0.304, 0.127, 0.155, 0.143, 0.126, 0.215, 0.197, 0.177, 0.133, 0.245, 0.125, 0.168, 0.168, 0.122, 0.122, 0.257, 0.223, 0.142, 0.129, 0.311, 0.073, 0.136, 0.203, 0.135, 0.125, 0.752, 0.382, 0.217, 0.13, 0.262, 0.056, 0.057, 0.135, 0.181, 0.128, 0.132, 0.126, 0.249, 0.126, 0.161, 0.204, 0.132, 0.133, 0.133, 0.243, 0.247, 0.213, 0.359, 0.148, 0.433, 0.243, 0.152, 0.176, 0.186, 0.187, 0.178, 0.286, 0.199, 0.201, 0.198, 0.367, 0.32, 0.198, 0.224, 0.218, 0.216, 0.341, 0.233, 0.241, 0.291, 0.311, 0.286, 0.31, 0.28, 0.277, 0.274, 0.288, 0.361, 0.31, 0.303, 0.291, 0.363, 0.425, 0.318, 0.362, 0.463, 0.365, 0.918, 0.062, 0.194, 0.164, 0.129, 0.126, 0.19, 0.134, 0.279, 0.186, 0.139, 0.137, 0.144, 0.228, 0.233, 0.15, 0.155, 0.162, 0.166, 0.272, 0.187, 0.323, 0.183, 0.188, 0.198, 0.423]\n",
63
+ "# incremental = [0.187, 0.13, 0.26, 0.14, 0.134, 0.251, 0.132, 0.212, 0.15, 0.143, 0.363, 0.141, 0.167, 0.128, 0.285, 0.055, 0.052, 0.136, 0.13, 0.168, 0.129, 0.247, 0.241, 0.194, 0.152, 0.218, 0.209, 0.151, 0.267, 0.175, 0.224, 0.165, 0.174, 0.269, 0.201, 0.243, 0.322, 0.219, 0.199, 0.558, 0.058, 0.139, 0.171, 0.14, 0.336, 0.141, 0.137, 0.148, 0.24, 0.319, 0.149, 0.56, 0.055, 0.137, 0.172, 0.134, 0.269, 0.129, 0.138, 0.131, 0.245, 0.22, 0.137, 0.183, 0.232, 0.16, 0.151, 0.247, 0.171, 0.253, 0.19, 0.182, 0.189, 0.204, 0.186, 0.199, 0.328, 0.232, 0.372, 0.229, 0.214, 0.228, 0.242, 0.234, 0.653, 0.289, 0.324, 0.344, 0.293, 0.279, 0.749, 0.063, 0.056, 0.057, 0.136, 0.124, 0.167, 0.251, 0.139, 0.134, 0.236, 0.134, 0.147, 0.322, 0.162, 0.142, 0.376, 0.14, 0.173, 0.138, 0.266, 0.142, 0.136, 0.278, 0.065, 0.059, 0.059, 0.062, 0.057, 0.055, 0.063, 0.064, 0.072, 0.065, 0.136, 0.124, 0.12, 0.276, 0.132, 0.164, 0.138, 0.256, 0.05, 0.134, 0.167, 0.124, 0.234, 0.152, 0.201, 0.154, 0.137, 0.334, 0.174, 0.183, 0.132, 0.134, 0.167, 0.308, 0.209, 0.143, 0.141, 0.313, 0.056, 0.13, 0.176, 0.131, 0.133, 0.245, 0.214, 0.206, 0.148, 0.25, 0.053, 0.122, 0.118, 0.189, 0.13, 0.128, 0.136, 0.24, 0.135, 0.171, 0.126, 0.146, 0.216, 0.208, 0.29, 0.133, 0.132, 0.286, 0.336, 0.263, 0.157, 0.166, 0.173, 0.184, 0.185, 0.284, 0.185, 0.203, 0.203, 0.198, 0.359, 0.312, 0.339, 0.256, 0.253, 0.284, 0.335, 0.259, 0.334, 0.307, 0.304, 0.281, 0.373, 0.3, 0.289, 0.29, 0.286, 0.327, 0.3, 0.299, 0.32, 0.435, 0.32, 0.464, 0.339, 0.334, 0.348, 1.288, 0.058, 0.201, 0.126, 0.527, 0.284, 0.148, 0.13, 0.21, 0.175, 0.138, 0.135, 0.141, 0.215, 0.238, 0.16, 0.164, 0.161, 0.186, 0.247, 0.192, 0.375, 0.191, 0.2, 0.431]\n",
64
+ "incremental = [0.153, 0.171, 0.197, 0.138, 0.23, 0.137, 0.141, 0.145, 0.225, 0.146, 0.148, 0.336, 0.138, 0.163, 0.181, 0.133, 0.354, 0.064, 0.053, 0.133, 0.132, 0.166, 0.135, 0.232, 0.234, 0.231, 0.204, 0.214, 0.157, 0.189, 0.236, 0.221, 0.245, 0.229, 0.205, 0.203, 0.248, 0.194, 0.201, 0.197, 0.483, 0.057, 0.052, 0.132, 0.158, 0.13, 0.251, 0.197, 0.135, 0.143, 0.262, 0.144, 0.135, 0.38, 0.054, 0.226, 0.128, 0.166, 0.261, 0.139, 0.132, 0.284, 0.23, 0.234, 0.142, 0.211, 0.217, 0.155, 0.163, 0.285, 0.169, 0.242, 0.201, 0.188, 0.189, 0.186, 0.187, 0.311, 0.214, 0.213, 0.304, 0.23, 0.265, 0.219, 0.234, 0.252, 0.239, 0.339, 0.278, 0.365, 0.271, 0.277, 0.729, 0.051, 0.055, 0.059, 0.132, 0.121, 0.162, 0.239, 0.133, 0.135, 0.214, 0.142, 0.132, 0.258, 0.144, 0.135, 0.386, 0.13, 0.135, 0.133, 0.273, 0.136, 0.133, 0.254, 0.05, 0.049, 0.05, 0.053, 0.093, 0.064, 0.055, 0.053, 0.049, 0.056, 0.142, 0.125, 0.131, 0.273, 0.131, 0.124, 0.121, 0.264, 0.135, 0.172, 0.159, 0.136, 0.205, 0.21, 0.159, 0.159, 0.14, 0.324, 0.161, 0.171, 0.127, 0.139, 0.154, 0.293, 0.22, 0.149, 0.188, 0.331, 0.051, 0.133, 0.132, 0.122, 0.152, 0.25, 0.191, 0.277, 0.134, 0.259, 0.051, 0.129, 0.168, 0.169, 0.134, 0.121, 0.253, 0.051, 0.147, 0.163, 0.137, 0.13, 0.264, 0.286, 0.179, 0.142, 0.224, 0.367, 0.156, 0.444, 0.173, 0.178, 0.187, 0.186, 0.189, 0.277, 0.184, 0.189, 0.189, 0.198, 0.366, 0.214, 0.306, 0.221, 0.221, 0.335, 0.269, 0.253, 0.299, 0.285, 0.28, 0.271, 0.353, 0.285, 0.291, 0.28, 0.307, 0.297, 0.31, 0.297, 0.305, 0.48, 0.323, 0.33, 0.329, 0.33, 0.333, 0.922, 0.131, 0.168, 0.188, 0.135, 0.21, 0.143, 0.13, 0.224, 0.138, 0.147, 0.198, 0.14, 0.223, 0.156, 0.239, 0.164, 0.163, 0.295, 0.184, 0.186, 0.333, 0.204, 0.197, 0.439]\n",
65
+ "# self_attn_state\n",
66
+ "# incremental = [0.122, 0.2, 0.133, 0.321, 0.136, 0.154, 0.141, 0.181, 0.212, 0.143, 0.313, 0.172, 0.134, 0.136, 0.356, 0.057, 0.078, 0.056, 0.139, 0.121, 0.158, 0.218, 0.203, 0.171, 0.208, 0.142, 0.24, 0.14, 0.141, 0.142, 0.158, 0.155, 0.184, 0.181, 0.221, 0.459, 0.198, 0.123, 0.126, 0.27, 0.067, 0.125, 0.163, 0.188, 0.129, 0.125, 0.239, 0.138, 0.136, 0.138, 0.133, 0.137, 0.381, 0.055, 0.129, 0.118, 0.166, 0.171, 0.131, 0.134, 0.278, 0.187, 0.229, 0.182, 0.129, 0.172, 0.128, 0.126, 0.248, 0.144, 0.217, 0.148, 0.14, 0.151, 0.266, 0.502, 0.155, 0.161, 0.211, 0.178, 0.176, 0.186, 0.187, 0.183, 0.211, 0.204, 0.22, 0.214, 0.206, 0.296, 0.252, 0.192, 0.063, 0.054, 0.056, 0.128, 0.124, 0.171, 0.263, 0.134, 0.198, 0.145, 0.26, 0.155, 0.123, 0.197, 0.127, 0.413, 0.209, 0.123, 0.194, 0.131, 0.128, 0.297, 0.053, 0.05, 0.057, 0.055, 0.046, 0.063, 0.06, 0.057, 0.057, 0.059, 0.135, 0.164, 0.121, 0.116, 0.258, 0.124, 0.118, 0.127, 0.285, 0.131, 0.164, 0.128, 0.134, 0.223, 0.208, 0.148, 0.124, 0.127, 0.263, 0.166, 0.128, 0.139, 0.162, 0.296, 0.189, 0.13, 0.135, 0.318, 0.049, 0.123, 0.17, 0.128, 0.125, 0.21, 0.214, 0.139, 0.14, 0.274, 0.051, 0.062, 0.131, 0.145, 0.162, 0.136, 0.125, 0.282, 0.13, 0.164, 0.205, 0.129, 0.156, 0.156, 0.251, 0.357, 0.139, 0.138, 0.149, 0.353, 0.19, 0.304, 0.165, 0.186, 0.194, 0.196, 0.183, 0.187, 0.194, 0.199, 0.206, 0.267, 0.212, 0.257, 0.228, 0.226, 0.225, 0.239, 0.3, 0.268, 0.272, 0.278, 0.303, 0.283, 0.274, 0.279, 0.274, 0.289, 0.303, 0.3, 0.303, 0.313, 0.305, 0.332, 0.344, 0.343, 0.342, 1.678, 0.062, 0.164, 0.13, 0.204, 0.171, 0.217, 0.171, 0.247, 0.207, 0.134, 0.13, 0.138, 0.138, 0.147, 0.187, 0.142, 0.242, 0.158, 0.16, 0.168, 0.214, 0.284, 0.185, 0.179, 0.365]\n",
67
+ "# incremental = [0.231, 0.134, 0.238, 0.195, 0.206, 0.147, 0.136, 0.149, 0.187, 0.214, 0.148, 0.354, 0.19, 0.213, 0.139, 0.138, 0.281, 0.061, 0.069, 0.178, 0.145, 0.133, 0.21, 0.208, 0.14, 0.287, 0.178, 0.173, 0.149, 0.27, 0.398, 0.376, 0.496, 0.164, 0.162, 0.178, 0.375, 0.273, 0.123, 0.126, 0.327, 0.058, 0.063, 0.134, 0.167, 0.127, 0.19, 0.167, 0.128, 0.132, 0.269, 0.14, 0.136, 0.388, 0.052, 0.245, 0.169, 0.126, 0.163, 0.126, 0.133, 0.264, 0.133, 0.246, 0.153, 0.164, 0.158, 0.119, 0.129, 0.254, 0.157, 0.268, 0.14, 0.135, 0.241, 0.143, 0.151, 0.155, 0.161, 0.188, 0.233, 0.191, 0.184, 0.179, 0.224, 0.213, 0.218, 0.226, 0.21, 0.211, 0.297, 0.253, 0.048, 0.056, 0.06, 0.059, 0.12, 0.169, 0.13, 0.233, 0.136, 0.21, 0.173, 0.162, 0.263, 0.146, 0.153, 0.139, 0.406, 0.191, 0.144, 0.163, 0.267, 0.139, 0.298, 0.055, 0.061, 0.049, 0.052, 0.055, 0.053, 0.051, 0.06, 0.053, 0.048, 0.052, 0.166, 0.123, 0.123, 0.26, 0.131, 0.161, 0.124, 0.277, 0.124, 0.159, 0.131, 0.131, 0.211, 0.135, 0.2, 0.135, 0.174, 0.285, 0.186, 0.179, 0.139, 0.133, 0.231, 0.181, 0.137, 0.199, 0.135, 0.306, 0.128, 0.173, 0.119, 0.116, 0.126, 0.285, 0.151, 0.136, 0.151, 0.363, 0.063, 0.173, 0.129, 0.169, 0.121, 0.129, 0.326, 0.13, 0.168, 0.212, 0.125, 0.136, 0.132, 0.247, 0.313, 0.144, 0.142, 0.149, 0.293, 0.178, 0.363, 0.176, 0.188, 0.185, 0.192, 0.178, 0.192, 0.213, 0.199, 0.204, 0.256, 0.21, 0.22, 0.208, 0.226, 0.242, 0.241, 0.556, 0.257, 0.262, 0.259, 0.26, 0.271, 0.379, 0.318, 0.282, 0.304, 0.331, 0.322, 0.295, 0.328, 0.328, 0.301, 0.345, 0.331, 0.333, 0.69, 0.056, 0.123, 0.167, 0.196, 0.127, 0.21, 0.129, 0.208, 0.234, 0.134, 0.141, 0.144, 0.137, 0.142, 0.139, 0.242, 0.152, 0.146, 0.16, 0.18, 0.287, 0.184, 0.18, 0.177, 0.321]\n",
68
+ "fig, ax = plt.subplots()\n",
69
+ "ax.boxplot([nonincremental, incremental])\n",
70
+ "ax.set_xticklabels([\"nonincremental\", \"incremental\"])"
71
+ ]
72
+ },
73
+ {
74
+ "cell_type": "code",
75
+ "execution_count": 12,
76
+ "metadata": {},
77
+ "outputs": [
78
+ {
79
+ "name": "stdout",
80
+ "output_type": "stream",
81
+ "text": [
82
+ "0.262 0.20222357723577236\n",
83
+ "0.2530612244897959 0.0975609756097561\n"
84
+ ]
85
+ }
86
+ ],
87
+ "source": [
88
+ "print(np.mean(nonincremental), np.mean(incremental))\n",
89
+ "print(sum([1 for x in nonincremental if x > 0.32])/len(nonincremental), sum([1 for x in incremental if x > 0.32])/len(incremental))"
90
+ ]
91
+ },
92
+ {
93
+ "cell_type": "code",
94
+ "execution_count": null,
95
+ "metadata": {},
96
+ "outputs": [],
97
+ "source": []
98
+ },
99
+ {
100
+ "cell_type": "code",
101
+ "execution_count": 75,
102
+ "metadata": {},
103
+ "outputs": [
104
+ {
105
+ "data": {
106
+ "text/plain": [
107
+ "0.41239999999999993"
108
+ ]
109
+ },
110
+ "execution_count": 75,
111
+ "metadata": {},
112
+ "output_type": "execute_result"
113
+ }
114
+ ],
115
+ "source": [
116
+ "np.percentile(nonincremental, 90)"
117
+ ]
118
+ },
119
+ {
120
+ "cell_type": "code",
121
+ "execution_count": 23,
122
+ "metadata": {},
123
+ "outputs": [
124
+ {
125
+ "data": {
126
+ "text/plain": [
127
+ "0.3105"
128
+ ]
129
+ },
130
+ "execution_count": 23,
131
+ "metadata": {},
132
+ "output_type": "execute_result"
133
+ }
134
+ ],
135
+ "source": [
136
+ "np.percentile(incremental, 90)"
137
+ ]
138
+ },
139
+ {
140
+ "cell_type": "code",
141
+ "execution_count": null,
142
+ "metadata": {},
143
+ "outputs": [],
144
+ "source": []
145
+ }
146
+ ],
147
+ "metadata": {
148
+ "kernelspec": {
149
+ "display_name": "fairseq-20230220-seamless",
150
+ "language": "python",
151
+ "name": "python3"
152
+ },
153
+ "language_info": {
154
+ "codemirror_mode": {
155
+ "name": "ipython",
156
+ "version": 3
157
+ },
158
+ "file_extension": ".py",
159
+ "mimetype": "text/x-python",
160
+ "name": "python",
161
+ "nbconvert_exporter": "python",
162
+ "pygments_lexer": "ipython3",
163
+ "version": "3.9.16"
164
+ },
165
+ "orig_nbformat": 4
166
+ },
167
+ "nbformat": 4,
168
+ "nbformat_minor": 2
169
+ }
seamless_server/whl/seamless_communication-1.0.0-py3-none-any.whl CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:d5b81add4d9917ac562c2e8a10bd5b3c88804b8bd94c56cef4e9a01ecde4a839
3
- size 204321
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9063a33bd6da9f068a85f9e2dfbde322eaa805e8ee6e7a2e041ed95030b75ad9
3
+ size 240828
streaming-react-app/.gitignore CHANGED
@@ -10,6 +10,7 @@ lerna-debug.log*
10
  node_modules
11
  dist
12
  dist-ssr
 
13
  *.local
14
 
15
  # Editor directories and files
 
10
  node_modules
11
  dist
12
  dist-ssr
13
+ build
14
  *.local
15
 
16
  # Editor directories and files
streaming-react-app/package-lock.json CHANGED
The diff for this file is too large to render. See raw diff
 
streaming-react-app/package.json CHANGED
@@ -1,11 +1,11 @@
1
  {
2
  "name": "streaming-react-app",
3
  "private": true,
4
- "version": "0.0.14",
5
  "type": "module",
6
  "scripts": {
7
  "dev": "vite --host --strictPort",
8
- "build": "vite build",
9
  "preview": "vite preview",
10
  "clean:node-modules": "rm -rf node_modules/",
11
  "ts-check": "tsc --noEmit",
@@ -24,6 +24,7 @@
24
  "amazon-cognito-identity-js": "^6.3.6",
25
  "audiobuffer-to-wav": "^1.0.0",
26
  "aws-sdk": "^2.1472.0",
 
27
  "js-cookie": "^3.0.5",
28
  "lodash": "4.17.21",
29
  "react": "^18.2.0",
 
1
  {
2
  "name": "streaming-react-app",
3
  "private": true,
4
+ "version": "0.0.13",
5
  "type": "module",
6
  "scripts": {
7
  "dev": "vite --host --strictPort",
8
+ "build": "tsc && vite build",
9
  "preview": "vite preview",
10
  "clean:node-modules": "rm -rf node_modules/",
11
  "ts-check": "tsc --noEmit",
 
24
  "amazon-cognito-identity-js": "^6.3.6",
25
  "audiobuffer-to-wav": "^1.0.0",
26
  "aws-sdk": "^2.1472.0",
27
+ "iso-639-1": "^3.1.0",
28
  "js-cookie": "^3.0.5",
29
  "lodash": "4.17.21",
30
  "react": "^18.2.0",
streaming-react-app/src/SocketWrapper.tsx CHANGED
@@ -11,9 +11,8 @@ import {getURLParams} from './URLParams';
11
 
12
  // The time to wait before showing a "disconnected" screen upon initial app load
13
  const INITIAL_DISCONNECT_SCREEN_DELAY = 2000;
14
- const SERVER_URL_DEFAULT = `${window.location.protocol === "https:" ? "wss" : "ws"
15
- }://${window.location.host}`;
16
-
17
  export default function SocketWrapper({children}) {
18
  const [socket, setSocket] = useState<Socket | null>(null);
19
  const [connected, setConnected] = useState<boolean | null>(null);
@@ -63,7 +62,6 @@ export default function SocketWrapper({children}) {
63
  // want that because that'd mean awful performance. It'd be better for the app
64
  // to simply break in that case and not connect.
65
  transports: ['websocket'],
66
- path: '/ws/socket.io'
67
  });
68
 
69
  const onServerID = (serverID: string) => {
 
11
 
12
  // The time to wait before showing a "disconnected" screen upon initial app load
13
  const INITIAL_DISCONNECT_SCREEN_DELAY = 2000;
14
+ const SERVER_URL_DEFAULT = 'localhost:8000';
15
+
 
16
  export default function SocketWrapper({children}) {
17
  const [socket, setSocket] = useState<Socket | null>(null);
18
  const [connected, setConnected] = useState<boolean | null>(null);
 
62
  // want that because that'd mean awful performance. It'd be better for the app
63
  // to simply break in that case and not connect.
64
  transports: ['websocket'],
 
65
  });
66
 
67
  const onServerID = (serverID: string) => {
streaming-react-app/src/StreamingInterface.tsx CHANGED
@@ -39,6 +39,7 @@ import float32To16BitPCM from './float32To16BitPCM';
39
  import createBufferedSpeechPlayer from './createBufferedSpeechPlayer';
40
  import Checkbox from '@mui/material/Checkbox';
41
  import Alert from '@mui/material/Alert';
 
42
  import isScrolledToDocumentBottom from './isScrolledToDocumentBottom';
43
  import Box from '@mui/material/Box';
44
  import Slider from '@mui/material/Slider';
@@ -58,11 +59,11 @@ import {getURLParams} from './URLParams';
58
  import debug from './debug';
59
  import DebugSection from './DebugSection';
60
  import Switch from '@mui/material/Switch';
61
- import Grid from '@mui/material/Grid';
62
- import {getLanguageFromThreeLetterCode} from './languageLookup';
63
- import HeadphonesIcon from '@mui/icons-material/Headphones';
64
 
65
- const AUDIO_STREAM_DEFAULTS = {
 
 
66
  userMedia: {
67
  echoCancellation: false,
68
  noiseSuppression: true,
@@ -71,10 +72,13 @@ const AUDIO_STREAM_DEFAULTS = {
71
  echoCancellation: false,
72
  noiseSuppression: false,
73
  },
74
- } as const;
75
 
76
  async function requestUserMediaAudioStream(
77
- config: BrowserAudioStreamConfig = AUDIO_STREAM_DEFAULTS['userMedia'],
 
 
 
78
  ) {
79
  const stream = await navigator.mediaDevices.getUserMedia({
80
  audio: {...config, channelCount: 1},
@@ -87,7 +91,10 @@ async function requestUserMediaAudioStream(
87
  }
88
 
89
  async function requestDisplayMediaAudioStream(
90
- config: BrowserAudioStreamConfig = AUDIO_STREAM_DEFAULTS['displayMedia'],
 
 
 
91
  ) {
92
  const stream = await navigator.mediaDevices.getDisplayMedia({
93
  audio: {...config, channelCount: 1},
@@ -152,7 +159,6 @@ export default function StreamingInterface() {
152
  useState<StreamingStatus>('stopped');
153
 
154
  const isStreamConfiguredRef = useRef<boolean>(false);
155
- const [hasMaxSpeakers, setHasMaxSpeakers] = useState<boolean>(false);
156
 
157
  const [outputMode, setOutputMode] = useState<SupportedOutputMode>('s2s&t');
158
  const [inputSource, setInputSource] =
@@ -309,7 +315,6 @@ export default function StreamingInterface() {
309
  console.log('[configureStreamAsync] sending config', config);
310
 
311
  socket.emit('configure_stream', config, (statusObject) => {
312
- setHasMaxSpeakers(statusObject.message === 'max_speakers')
313
  if (statusObject.status === 'ok') {
314
  isStreamConfiguredRef.current = true;
315
  console.debug(
@@ -754,29 +759,7 @@ export default function StreamingInterface() {
754
  </Typography>
755
  </div>
756
  </div>
757
- <div className="header-container-sra">
758
- <div>
759
- <Typography variant="body2" sx={{color: '#65676B'}}>
760
- Welcome! This space is limited to one speaker at a time.
761
- If using the live HF space, sharing room code to listeners on another
762
- IP address may not work because it's running on different replicas.
763
- Use headphones if you are both speaker and listener to prevent feedback.
764
- <br/>
765
- If max speakers reached, please duplicate the space <a target="_blank" rel="noopener noreferrer" href="https://huggingface.co/spaces/facebook/seamless-streaming?duplicate=true">here</a>.
766
- In your duplicated space, join a room as speaker or listener (or both),
767
- and share the room code to invite listeners.
768
- <br/>
769
- Check out the seamless_communication <a target="_blank" rel="noopener noreferrer" href="https://github.com/facebookresearch/seamless_communication/tree/main">README</a> for more information.
770
- <br/>
771
- SeamlessStreaming model is a research model and is not released
772
- for production deployment. It is important to use a microphone with
773
- noise cancellation (for e.g. a smartphone), otherwise you may see model hallucination on noises.
774
- It works best if you pause every couple of sentences, or you may wish adjust the VAD threshold
775
- in the model config. The real-time performance will degrade
776
- if you try streaming multiple speakers at the same time.
777
- </Typography>
778
- </div>
779
- </div>
780
  <Stack spacing="22px" direction="column">
781
  <Box>
782
  <RoomConfig
@@ -848,6 +831,11 @@ export default function StreamingInterface() {
848
  </Select>
849
  </FormControl>
850
 
 
 
 
 
 
851
  </Stack>
852
 
853
  <Stack spacing={0.5}>
@@ -872,11 +860,7 @@ export default function StreamingInterface() {
872
  value={targetLang ?? ''}>
873
  {currentAgent?.targetLangs.map((langCode) => (
874
  <MenuItem value={langCode} key={langCode}>
875
- {getLanguageFromThreeLetterCode(langCode) != null
876
- ? `${getLanguageFromThreeLetterCode(
877
- langCode,
878
- )} (${langCode})`
879
- : langCode}
880
  </MenuItem>
881
  ))}
882
  </Select>
@@ -984,9 +968,8 @@ export default function StreamingInterface() {
984
  </RadioGroup>
985
  </FormControl>
986
  </Box>
987
-
988
- <Box sx={{flex: 1, flexGrow: 2}}>
989
- <FormControl disabled={streamFixedConfigOptionsDisabled}>
990
  <FormLabel>Options</FormLabel>
991
  <FormControlLabel
992
  control={
@@ -1003,7 +986,7 @@ export default function StreamingInterface() {
1003
  }
1004
  />
1005
  }
1006
- label="Noise Suppression"
1007
  />
1008
  <FormControlLabel
1009
  control={
@@ -1020,7 +1003,7 @@ export default function StreamingInterface() {
1020
  }
1021
  />
1022
  }
1023
- label="Echo Cancellation (not recommended)"
1024
  />
1025
  <FormControlLabel
1026
  control={
@@ -1031,34 +1014,12 @@ export default function StreamingInterface() {
1031
  ) => setServerDebugFlag(event.target.checked)}
1032
  />
1033
  }
1034
- label="Enable Server Debugging"
1035
  />
1036
  </FormControl>
1037
  </Box>
1038
  </Stack>
1039
 
1040
- {isSpeaker &&
1041
- isListener &&
1042
- inputSource === 'userMedia' &&
1043
- !enableEchoCancellation &&
1044
- gain !== 0 && (
1045
- <div>
1046
- <Alert severity="warning" icon={<HeadphonesIcon />}>
1047
- Headphones required to prevent feedback.
1048
- </Alert>
1049
- </div>
1050
- )}
1051
-
1052
- {isSpeaker && enableEchoCancellation && (
1053
- <div>
1054
- <Alert severity="warning">
1055
- We don't recommend using echo cancellation as it may
1056
- distort the input audio. If possible, use headphones and
1057
- disable echo cancellation instead.
1058
- </Alert>
1059
- </div>
1060
- )}
1061
-
1062
  <Stack direction="row" spacing={2}>
1063
  {streamingStatus === 'stopped' ? (
1064
  <Button
@@ -1120,13 +1081,7 @@ export default function StreamingInterface() {
1120
  </Alert>
1121
  </div>
1122
  )}
1123
- {serverState != null && hasMaxSpeakers && (
1124
- <div>
1125
- <Alert severity="error">
1126
- {`Maximum number of speakers reached. Please try again at a later time.`}
1127
- </Alert>
1128
- </div>
1129
- )}
1130
  {serverState != null &&
1131
  serverState.totalActiveTranscoders >=
1132
  TOTAL_ACTIVE_TRANSCODER_WARNING_THRESHOLD && (
@@ -1141,7 +1096,7 @@ export default function StreamingInterface() {
1141
  serverState.serverLock.clientID !== clientID && (
1142
  <div>
1143
  <Alert severity="warning">
1144
- {`The server is currently locked. Priority will be given to that client when they are streaming, and your streaming session may be halted abruptly.`}
1145
  </Alert>
1146
  </div>
1147
  )}
 
39
  import createBufferedSpeechPlayer from './createBufferedSpeechPlayer';
40
  import Checkbox from '@mui/material/Checkbox';
41
  import Alert from '@mui/material/Alert';
42
+ import ISO6391 from 'iso-639-1';
43
  import isScrolledToDocumentBottom from './isScrolledToDocumentBottom';
44
  import Box from '@mui/material/Box';
45
  import Slider from '@mui/material/Slider';
 
59
  import debug from './debug';
60
  import DebugSection from './DebugSection';
61
  import Switch from '@mui/material/Switch';
62
+ import {Grid} from '@mui/material';
 
 
63
 
64
+ const AUDIO_STREAM_DEFAULTS: {
65
+ [key in SupportedInputSource]: BrowserAudioStreamConfig;
66
+ } = {
67
  userMedia: {
68
  echoCancellation: false,
69
  noiseSuppression: true,
 
72
  echoCancellation: false,
73
  noiseSuppression: false,
74
  },
75
+ };
76
 
77
  async function requestUserMediaAudioStream(
78
+ config: BrowserAudioStreamConfig = {
79
+ echoCancellation: false,
80
+ noiseSuppression: true,
81
+ },
82
  ) {
83
  const stream = await navigator.mediaDevices.getUserMedia({
84
  audio: {...config, channelCount: 1},
 
91
  }
92
 
93
  async function requestDisplayMediaAudioStream(
94
+ config: BrowserAudioStreamConfig = {
95
+ echoCancellation: false,
96
+ noiseSuppression: false,
97
+ },
98
  ) {
99
  const stream = await navigator.mediaDevices.getDisplayMedia({
100
  audio: {...config, channelCount: 1},
 
159
  useState<StreamingStatus>('stopped');
160
 
161
  const isStreamConfiguredRef = useRef<boolean>(false);
 
162
 
163
  const [outputMode, setOutputMode] = useState<SupportedOutputMode>('s2s&t');
164
  const [inputSource, setInputSource] =
 
315
  console.log('[configureStreamAsync] sending config', config);
316
 
317
  socket.emit('configure_stream', config, (statusObject) => {
 
318
  if (statusObject.status === 'ok') {
319
  isStreamConfiguredRef.current = true;
320
  console.debug(
 
759
  </Typography>
760
  </div>
761
  </div>
762
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
763
  <Stack spacing="22px" direction="column">
764
  <Box>
765
  <RoomConfig
 
831
  </Select>
832
  </FormControl>
833
 
834
+ <Typography variant="body2">
835
+ {`Supported Source Languages: ${
836
+ currentAgent?.sourceLangs.join(', ') ?? 'None'
837
+ }`}
838
+ </Typography>
839
  </Stack>
840
 
841
  <Stack spacing={0.5}>
 
860
  value={targetLang ?? ''}>
861
  {currentAgent?.targetLangs.map((langCode) => (
862
  <MenuItem value={langCode} key={langCode}>
863
+ {`${ISO6391.getName(langCode)} (${langCode})`}
 
 
 
 
864
  </MenuItem>
865
  ))}
866
  </Select>
 
968
  </RadioGroup>
969
  </FormControl>
970
  </Box>
971
+ <Box sx={{flex: 1}}>
972
+ <FormControl disabled={streamFixedConfigOptionsDisabled}>
 
973
  <FormLabel>Options</FormLabel>
974
  <FormControlLabel
975
  control={
 
986
  }
987
  />
988
  }
989
+ label="Noise Suppression (Browser)"
990
  />
991
  <FormControlLabel
992
  control={
 
1003
  }
1004
  />
1005
  }
1006
+ label="Echo Cancellation (Browser)"
1007
  />
1008
  <FormControlLabel
1009
  control={
 
1014
  ) => setServerDebugFlag(event.target.checked)}
1015
  />
1016
  }
1017
+ label="Server Debug Flag"
1018
  />
1019
  </FormControl>
1020
  </Box>
1021
  </Stack>
1022
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1023
  <Stack direction="row" spacing={2}>
1024
  {streamingStatus === 'stopped' ? (
1025
  <Button
 
1081
  </Alert>
1082
  </div>
1083
  )}
1084
+
 
 
 
 
 
 
1085
  {serverState != null &&
1086
  serverState.totalActiveTranscoders >=
1087
  TOTAL_ACTIVE_TRANSCODER_WARNING_THRESHOLD && (
 
1096
  serverState.serverLock.clientID !== clientID && (
1097
  <div>
1098
  <Alert severity="warning">
1099
+ {`The server is currently locked by "${serverState.serverLock.name}". Priority will be given to that client when they are streaming, and your streaming session may be halted abruptly.`}
1100
  </Alert>
1101
  </div>
1102
  )}
streaming-react-app/src/URLParams.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { getBooleanParamFlag, getStringParamFlag } from './getParamFlag';
2
- import { URLParamsObject } from './types/URLParamsTypes';
3
 
4
  /**
5
  * These are the URL parameters you can provide to the app to change its behavior.
 
1
+ import {getBooleanParamFlag, getStringParamFlag} from './getParamFlag';
2
+ import {URLParamsObject} from './types/URLParamsTypes';
3
 
4
  /**
5
  * These are the URL parameters you can provide to the app to change its behavior.
streaming-react-app/src/languageLookup.ts DELETED
@@ -1,119 +0,0 @@
1
- const LANG3_TO_NAME = {
2
- afr: 'afrikaans',
3
- amh: 'amharic',
4
- arb: 'arabic',
5
- asm: 'assamese',
6
- azj: 'azerbaijani',
7
- bak: 'bashkir',
8
- bel: 'belarusian',
9
- ben: 'bengali',
10
- bod: 'tibetan',
11
- bos: 'bosnian',
12
- bre: 'breton',
13
- bul: 'bulgarian',
14
- cat: 'catalan',
15
- ces: 'czech',
16
- cmn: 'chinese',
17
- cym: 'welsh',
18
- dan: 'danish',
19
- deu: 'german',
20
- ell: 'greek',
21
- eng: 'english',
22
- est: 'estonian',
23
- eus: 'basque',
24
- fao: 'faroese',
25
- fin: 'finnish',
26
- fra: 'french',
27
- glg: 'galician',
28
- guj: 'gujarati',
29
- hat: 'haitian creole',
30
- hau: 'hausa',
31
- haw: 'hawaiian',
32
- heb: 'hebrew',
33
- hin: 'hindi',
34
- hrv: 'croatian',
35
- hun: 'hungarian',
36
- hye: 'armenian',
37
- ind: 'indonesian',
38
- isl: 'icelandic',
39
- ita: 'italian',
40
- jav: 'javanese',
41
- jpn: 'japanese',
42
- kan: 'kannada',
43
- kat: 'georgian',
44
- kaz: 'kazakh',
45
- khk: 'mongolian',
46
- khm: 'khmer',
47
- kor: 'korean',
48
- lao: 'lao',
49
- lat: 'latin',
50
- lin: 'lingala',
51
- lit: 'lithuanian',
52
- ltz: 'luxembourgish',
53
- lvs: 'latvian',
54
- mal: 'malayalam',
55
- mar: 'marathi',
56
- mkd: 'macedonian',
57
- mlg: 'malagasy',
58
- mlt: 'maltese',
59
- mri: 'maori',
60
- mya: 'myanmar',
61
- nld: 'dutch',
62
- nno: 'nynorsk',
63
- nob: 'norwegian',
64
- npi: 'nepali',
65
- oci: 'occitan',
66
- pan: 'punjabi',
67
- pbt: 'pashto',
68
- pes: 'persian',
69
- pol: 'polish',
70
- por: 'portuguese',
71
- ron: 'romanian',
72
- rus: 'russian',
73
- san: 'sanskrit',
74
- sin: 'sinhala',
75
- slk: 'slovak',
76
- slv: 'slovenian',
77
- sna: 'shona',
78
- snd: 'sindhi',
79
- som: 'somali',
80
- spa: 'spanish',
81
- sqi: 'albanian',
82
- srp: 'serbian',
83
- sun: 'sundanese',
84
- swe: 'swedish',
85
- swh: 'swahili',
86
- tam: 'tamil',
87
- tat: 'tatar',
88
- tel: 'telugu',
89
- tgk: 'tajik',
90
- tgl: 'tagalog',
91
- tha: 'thai',
92
- tuk: 'turkmen',
93
- tur: 'turkish',
94
- ukr: 'ukrainian',
95
- urd: 'urdu',
96
- uzn: 'uzbek',
97
- vie: 'vietnamese',
98
- yid: 'yiddish',
99
- yor: 'yoruba',
100
- zlm: 'malay',
101
- };
102
-
103
- export function getLanguageFromThreeLetterCode(
104
- lang3Code: string,
105
- ): string | null {
106
- try {
107
- const name = LANG3_TO_NAME[lang3Code] ?? null;
108
- if (name == null) {
109
- return null;
110
- }
111
- const capitalizedWords = name
112
- .split(' ')
113
- .map((word: string) => word[0].toUpperCase() + word.slice(1));
114
- return capitalizedWords.join(' ');
115
- } catch (e) {
116
- console.warn(`Unable to get language name for code ${lang3Code}: ${e}`);
117
- }
118
- return null;
119
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
streaming-react-app/src/types/StreamingTypes.ts CHANGED
@@ -1,3 +1,13 @@
 
 
 
 
 
 
 
 
 
 
1
  interface ServerTranslationDataBase {
2
  eos: boolean;
3
  event: string;
@@ -26,6 +36,7 @@ export type AgentCapabilities = {
26
  name: string;
27
  description: string;
28
  modalities: Array<OutputModalitiesBase>;
 
29
  targetLangs: Array<string>;
30
  dynamicParams: Array<DynamicParams>;
31
  };
@@ -38,10 +49,10 @@ export const SUPPORTED_OUTPUT_MODES: Array<{
38
  value: (typeof SUPPORTED_OUTPUT_MODE_VALUES)[number];
39
  label: string;
40
  }> = [
41
- { value: 's2s&t', label: 'Text & Speech' },
42
- { value: 's2t', label: 'Text' },
43
- { value: 's2s', label: 'Speech' },
44
- ];
45
 
46
  export const SUPPORTED_INPUT_SOURCE_VALUES = [
47
  'userMedia',
@@ -56,13 +67,14 @@ export const SUPPORTED_INPUT_SOURCES: Array<{
56
  label: string;
57
  }> = [
58
  {value: 'userMedia', label: 'Microphone'},
59
- {value: 'displayMedia', label: 'Browser Tab (Chrome only)'},
60
  ];
61
 
62
  export type StartStreamEventConfig = {
63
  event: 'config';
64
  rate: number;
65
  model_name: string;
 
66
  debug: boolean;
67
  async_processing: boolean;
68
  model_type: SupportedOutputMode;
@@ -72,7 +84,6 @@ export type StartStreamEventConfig = {
72
  export interface BrowserAudioStreamConfig {
73
  echoCancellation: boolean;
74
  noiseSuppression: boolean;
75
- echoCancellation: boolean;
76
  }
77
 
78
  export interface ServerStateItem {
@@ -89,7 +100,7 @@ export type ServerLockObject = {
89
  export type ServerState = ServerStateItem & {
90
  agentsCapabilities: Array<AgentCapabilities>;
91
  statusByRoom: {
92
- [key: string]: { activeConnections: number; activeTranscoders: number };
93
  };
94
  totalActiveConnections: number;
95
  totalActiveTranscoders: number;
@@ -112,7 +123,9 @@ export type TranslationSentences = Array<string>;
112
 
113
  export type DynamicConfig = {
114
  // targetLanguage: a 3-letter string representing the desired output language.
 
115
  targetLanguage: string;
 
116
  expressive: boolean | null;
117
  };
118
 
 
1
+ export const SUPPORTED_LANGUAGE_CODES = ['en-US', 'es-ES'] as const;
2
+
3
+ export type SupportedLanguageCode = (typeof SUPPORTED_LANGUAGE_CODES)[number];
4
+
5
+ export type StartStreamingData = {
6
+ inputLang: SupportedLanguageCode;
7
+ outputLang: SupportedLanguageCode;
8
+ outputMode: SupportedOutputMode;
9
+ };
10
+
11
  interface ServerTranslationDataBase {
12
  eos: boolean;
13
  event: string;
 
36
  name: string;
37
  description: string;
38
  modalities: Array<OutputModalitiesBase>;
39
+ sourceLangs: Array<string>;
40
  targetLangs: Array<string>;
41
  dynamicParams: Array<DynamicParams>;
42
  };
 
49
  value: (typeof SUPPORTED_OUTPUT_MODE_VALUES)[number];
50
  label: string;
51
  }> = [
52
+ {value: 's2s&t', label: 'Text & Speech'},
53
+ {value: 's2t', label: 'Text'},
54
+ {value: 's2s', label: 'Speech'},
55
+ ];
56
 
57
  export const SUPPORTED_INPUT_SOURCE_VALUES = [
58
  'userMedia',
 
67
  label: string;
68
  }> = [
69
  {value: 'userMedia', label: 'Microphone'},
70
+ {value: 'displayMedia', label: 'Browser Tab'},
71
  ];
72
 
73
  export type StartStreamEventConfig = {
74
  event: 'config';
75
  rate: number;
76
  model_name: string;
77
+ // source_language: SupportedLanguageCode;
78
  debug: boolean;
79
  async_processing: boolean;
80
  model_type: SupportedOutputMode;
 
84
  export interface BrowserAudioStreamConfig {
85
  echoCancellation: boolean;
86
  noiseSuppression: boolean;
 
87
  }
88
 
89
  export interface ServerStateItem {
 
100
  export type ServerState = ServerStateItem & {
101
  agentsCapabilities: Array<AgentCapabilities>;
102
  statusByRoom: {
103
+ [key: string]: {activeConnections: number; activeTranscoders: number};
104
  };
105
  totalActiveConnections: number;
106
  totalActiveTranscoders: number;
 
123
 
124
  export type DynamicConfig = {
125
  // targetLanguage: a 3-letter string representing the desired output language.
126
+ // Supported languages are provided by the agent capabilities config
127
  targetLanguage: string;
128
+
129
  expressive: boolean | null;
130
  };
131
 
streaming-react-app/src/types/URLParamsTypes.ts CHANGED
@@ -7,10 +7,10 @@ export type URLParamsObject = {
7
  serverURL: string | null;
8
  skipARIntro: boolean;
9
  ARTranscriptionType:
10
- | 'single_block'
11
- | 'lines'
12
- | 'lines_with_background'
13
- | string;
14
  };
15
 
16
  export type URLParamNames = keyof URLParamsObject;
 
7
  serverURL: string | null;
8
  skipARIntro: boolean;
9
  ARTranscriptionType:
10
+ | 'single_block'
11
+ | 'lines'
12
+ | 'lines_with_background'
13
+ | string;
14
  };
15
 
16
  export type URLParamNames = keyof URLParamsObject;
streaming-react-app/vite.config.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { defineConfig } from 'vite';
2
  import react from '@vitejs/plugin-react';
3
 
4
  // https://vitejs.dev/config/
5
- export default defineConfig(({ command }) => {
6
  let define = {};
7
  if (command === 'serve') {
8
  define = {
@@ -12,13 +12,5 @@ export default defineConfig(({ command }) => {
12
  return {
13
  plugins: [react()],
14
  define: define,
15
- server: {
16
- proxy: {
17
- '/ws': {
18
- target: 'ws://localhost:7860',
19
- ws: true
20
- }
21
- },
22
- },
23
- }
24
  });
 
1
+ import {defineConfig} from 'vite';
2
  import react from '@vitejs/plugin-react';
3
 
4
  // https://vitejs.dev/config/
5
+ export default defineConfig(({command}) => {
6
  let define = {};
7
  if (command === 'serve') {
8
  define = {
 
12
  return {
13
  plugins: [react()],
14
  define: define,
15
+ };
 
 
 
 
 
 
 
 
16
  });
streaming-react-app/yarn.lock CHANGED
@@ -61,7 +61,7 @@
61
  resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz"
62
  integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==
63
 
64
- "@babel/core@^7.22.9":
65
  version "7.22.10"
66
  resolved "https://registry.npmjs.org/@babel/core/-/core-7.22.10.tgz"
67
  integrity sha512-fTmqbbUBAwCcre6zPzNngvsI0aNrPZe77AeqvDxWM9Nm+04RrJ3CAmGHA9f7lJQY6ZMhRztNemy4uslDxTX4Qw==
@@ -298,7 +298,7 @@
298
  resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz"
299
  integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==
300
 
301
- "@emotion/react@11.11.1":
302
  version "11.11.1"
303
  resolved "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz"
304
  integrity sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==
@@ -328,7 +328,7 @@
328
  resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz"
329
  integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==
330
 
331
- "@emotion/styled@11.11.0":
332
  version "11.11.0"
333
  resolved "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz"
334
  integrity sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==
@@ -360,116 +360,11 @@
360
  resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz"
361
  integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==
362
 
363
- "@esbuild/android-arm64@0.18.20":
364
- version "0.18.20"
365
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622"
366
- integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==
367
-
368
- "@esbuild/android-arm@0.18.20":
369
- version "0.18.20"
370
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682"
371
- integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==
372
-
373
- "@esbuild/android-x64@0.18.20":
374
- version "0.18.20"
375
- resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2"
376
- integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==
377
-
378
- "@esbuild/darwin-arm64@0.18.20":
379
- version "0.18.20"
380
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1"
381
- integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==
382
-
383
- "@esbuild/darwin-x64@0.18.20":
384
- version "0.18.20"
385
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d"
386
- integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==
387
-
388
- "@esbuild/freebsd-arm64@0.18.20":
389
- version "0.18.20"
390
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54"
391
- integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==
392
-
393
- "@esbuild/freebsd-x64@0.18.20":
394
- version "0.18.20"
395
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e"
396
- integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==
397
-
398
- "@esbuild/linux-arm64@0.18.20":
399
- version "0.18.20"
400
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0"
401
- integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==
402
-
403
- "@esbuild/linux-arm@0.18.20":
404
- version "0.18.20"
405
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0"
406
- integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==
407
-
408
- "@esbuild/linux-ia32@0.18.20":
409
- version "0.18.20"
410
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7"
411
- integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==
412
-
413
- "@esbuild/linux-loong64@0.18.20":
414
- version "0.18.20"
415
- resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d"
416
- integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==
417
-
418
- "@esbuild/linux-mips64el@0.18.20":
419
- version "0.18.20"
420
- resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231"
421
- integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==
422
-
423
- "@esbuild/linux-ppc64@0.18.20":
424
- version "0.18.20"
425
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb"
426
- integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==
427
-
428
- "@esbuild/linux-riscv64@0.18.20":
429
- version "0.18.20"
430
- resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6"
431
- integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==
432
-
433
- "@esbuild/linux-s390x@0.18.20":
434
- version "0.18.20"
435
- resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071"
436
- integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==
437
-
438
  "@esbuild/linux-x64@0.18.20":
439
  version "0.18.20"
440
  resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz"
441
  integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==
442
 
443
- "@esbuild/netbsd-x64@0.18.20":
444
- version "0.18.20"
445
- resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1"
446
- integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==
447
-
448
- "@esbuild/openbsd-x64@0.18.20":
449
- version "0.18.20"
450
- resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae"
451
- integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==
452
-
453
- "@esbuild/sunos-x64@0.18.20":
454
- version "0.18.20"
455
- resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d"
456
- integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==
457
-
458
- "@esbuild/win32-arm64@0.18.20":
459
- version "0.18.20"
460
- resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9"
461
- integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==
462
-
463
- "@esbuild/win32-ia32@0.18.20":
464
- version "0.18.20"
465
- resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102"
466
- integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==
467
-
468
- "@esbuild/win32-x64@0.18.20":
469
- version "0.18.20"
470
- resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d"
471
- integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==
472
-
473
  "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
474
  version "4.4.0"
475
  resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz"
@@ -584,7 +479,7 @@
584
  dependencies:
585
  "@babel/runtime" "^7.22.6"
586
 
587
- "@mui/material@5.14.5":
588
  version "5.14.5"
589
  resolved "https://registry.npmjs.org/@mui/material/-/material-5.14.5.tgz"
590
  integrity sha512-4qa4GMfuZH0Ai3mttk5ccXP8a3sf7aPlAJwyMrUSz6h9hPri6BPou94zeu3rENhhmKLby9S/W1y+pmficy8JKA==
@@ -659,7 +554,7 @@
659
  "@nodelib/fs.stat" "2.0.5"
660
  run-parallel "^1.1.9"
661
 
662
- "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
663
  version "2.0.5"
664
  resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
665
  integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
@@ -752,7 +647,7 @@
752
  utility-types "^3.10.0"
753
  zustand "^3.5.13"
754
 
755
- "@react-three/fiber@^8.14.1":
756
  version "8.14.1"
757
  resolved "https://registry.npmjs.org/@react-three/fiber/-/fiber-8.14.1.tgz"
758
  integrity sha512-Ky/FiCyJiyaI8bd+vckzgkHgKDSQDOcSSUVFOHCuCO9XOLb7Ebs6lof2hPpFa1HkaeE5ZIbTWIprvN0QqdPF0w==
@@ -798,7 +693,7 @@
798
  resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz"
799
  integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==
800
 
801
- "@types/node@^20.5.3":
802
  version "20.5.3"
803
  resolved "https://registry.npmjs.org/@types/node/-/node-20.5.3.tgz"
804
  integrity sha512-ITI7rbWczR8a/S6qjAW7DMqxqFMjjTo61qZVWJ1ubPvbIQsL5D/TvwjYEalM8Kthpe3hTzOGrF2TGbAu2uyqeA==
@@ -853,7 +748,7 @@
853
  dependencies:
854
  "@types/react" "*"
855
 
856
- "@types/react@*", "@types/react@^18.2.15":
857
  version "18.2.20"
858
  resolved "https://registry.npmjs.org/@types/react/-/react-18.2.20.tgz"
859
  integrity sha512-WKNtmsLWJM/3D5mG4U84cysVY31ivmyw85dE84fOCk5Hx78wezB/XEjVPWl2JTZ5FkEeaTJf+VgUAUn3PE7Isw==
@@ -872,6 +767,21 @@
872
  resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz"
873
  integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==
874
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
875
  "@types/uuid@^9.0.2":
876
  version "9.0.2"
877
  resolved "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.2.tgz"
@@ -899,7 +809,7 @@
899
  semver "^7.5.4"
900
  ts-api-utils "^1.0.1"
901
 
902
- "@typescript-eslint/parser@^6.0.0":
903
  version "6.4.0"
904
  resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.4.0.tgz"
905
  integrity sha512-I1Ah1irl033uxjxO9Xql7+biL3YD7w9IU8zF+xlzD/YxY6a4b7DYA08PXUUCbm2sEljwJF6ERFy2kTGAGcNilg==
@@ -994,7 +904,7 @@ acorn-jsx@^5.3.2:
994
  resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
995
  integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
996
 
997
- acorn@^8.9.0:
998
  version "8.10.0"
999
  resolved "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz"
1000
  integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==
@@ -1032,7 +942,14 @@ ansi-styles@^3.2.1:
1032
  dependencies:
1033
  color-convert "^1.9.0"
1034
 
1035
- ansi-styles@^4.0.0, ansi-styles@^4.1.0:
 
 
 
 
 
 
 
1036
  version "4.3.0"
1037
  resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
1038
  integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
@@ -1116,7 +1033,7 @@ braces@^3.0.2:
1116
  dependencies:
1117
  fill-range "^7.0.1"
1118
 
1119
- browserslist@^4.21.9:
1120
  version "4.21.10"
1121
  resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz"
1122
  integrity sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==
@@ -1167,7 +1084,15 @@ chalk@^2.4.2:
1167
  escape-string-regexp "^1.0.5"
1168
  supports-color "^5.3.0"
1169
 
1170
- chalk@^4.0.0, chalk@^4.1.2:
 
 
 
 
 
 
 
 
1171
  version "4.1.2"
1172
  resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
1173
  integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
@@ -1203,16 +1128,16 @@ color-convert@^2.0.1:
1203
  dependencies:
1204
  color-name "~1.1.4"
1205
 
1206
- color-name@1.1.3:
1207
- version "1.1.3"
1208
- resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
1209
- integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
1210
-
1211
  color-name@~1.1.4:
1212
  version "1.1.4"
1213
  resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
1214
  integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
1215
 
 
 
 
 
 
1216
  concat-map@0.0.1:
1217
  version "0.0.1"
1218
  resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
@@ -1427,7 +1352,7 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4
1427
  resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
1428
  integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
1429
 
1430
- eslint@^8.45.0:
1431
  version "8.47.0"
1432
  resolved "https://registry.npmjs.org/eslint/-/eslint-8.47.0.tgz"
1433
  integrity sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q==
@@ -1546,7 +1471,7 @@ fastq@^1.6.0:
1546
  dependencies:
1547
  reusify "^1.0.4"
1548
 
1549
- fflate@^0.6.9:
1550
  version "0.6.10"
1551
  resolved "https://registry.npmjs.org/fflate/-/fflate-0.6.10.tgz"
1552
  integrity sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==
@@ -1603,11 +1528,6 @@ fs.realpath@^1.0.0:
1603
  resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
1604
  integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
1605
 
1606
- fsevents@~2.3.2:
1607
- version "2.3.3"
1608
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
1609
- integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
1610
-
1611
  function-bind@^1.1.1:
1612
  version "1.1.1"
1613
  resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
@@ -1741,7 +1661,7 @@ hoist-non-react-statics@^3.3.1:
1741
  dependencies:
1742
  react-is "^16.7.0"
1743
 
1744
- ieee754@1.1.13, ieee754@^1.1.4:
1745
  version "1.1.13"
1746
  resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz"
1747
  integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
@@ -1772,7 +1692,7 @@ inflight@^1.0.4:
1772
  once "^1.3.0"
1773
  wrappy "1"
1774
 
1775
- inherits@2, inherits@^2.0.3:
1776
  version "2.0.4"
1777
  resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
1778
  integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -1853,6 +1773,11 @@ isexe@^2.0.0:
1853
  resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
1854
  integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
1855
 
 
 
 
 
 
1856
  isomorphic-unfetch@^3.0.0:
1857
  version "3.1.0"
1858
  resolved "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz"
@@ -1965,7 +1890,7 @@ lodash.pick@^4.4.0:
1965
  resolved "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz"
1966
  integrity sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==
1967
 
1968
- lodash@4.17.21, lodash@^4.17.21:
1969
  version "4.17.21"
1970
  resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
1971
  integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -2006,6 +1931,11 @@ meshline@^3.1.6:
2006
  resolved "https://registry.npmjs.org/meshline/-/meshline-3.1.6.tgz"
2007
  integrity sha512-8JZJOdaL5oz3PI/upG8JvP/5FfzYUOhrkJ8np/WKvXzl0/PZ2V9pqTvCIjSKv+w9ccg2xb+yyBhXAwt6ier3ug==
2008
 
 
 
 
 
 
2009
  micromatch@^4.0.4:
2010
  version "4.0.5"
2011
  resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz"
@@ -2179,16 +2109,16 @@ prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.8.1:
2179
  object-assign "^4.1.1"
2180
  react-is "^16.13.1"
2181
 
2182
- punycode@1.3.2:
2183
- version "1.3.2"
2184
- resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz"
2185
- integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==
2186
-
2187
  punycode@^2.1.0:
2188
  version "2.3.0"
2189
  resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz"
2190
  integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==
2191
 
 
 
 
 
 
2192
  querystring@0.2.0:
2193
  version "0.2.0"
2194
  resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz"
@@ -2206,7 +2136,7 @@ react-composer@^5.0.3:
2206
  dependencies:
2207
  prop-types "^15.6.0"
2208
 
2209
- react-dom@^18.2.0:
2210
  version "18.2.0"
2211
  resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz"
2212
  integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
@@ -2219,7 +2149,12 @@ react-google-charts@^4.0.1:
2219
  resolved "https://registry.npmjs.org/react-google-charts/-/react-google-charts-4.0.1.tgz"
2220
  integrity sha512-V/hcMcNuBgD5w49BYTUDye+bUKaPmsU5vy/9W/Nj2xEeGn+6/AuH9IvBkbDcNBsY00cV9OeexdmgfI5RFHgsXQ==
2221
 
2222
- react-is@^16.13.1, react-is@^16.7.0:
 
 
 
 
 
2223
  version "16.13.1"
2224
  resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
2225
  integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
@@ -2264,7 +2199,7 @@ react-use-measure@^2.1.1:
2264
  dependencies:
2265
  debounce "^1.2.1"
2266
 
2267
- react@^18.2.0:
2268
  version "18.2.0"
2269
  resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz"
2270
  integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==
@@ -2333,7 +2268,7 @@ rxjs@^7.8.1:
2333
  dependencies:
2334
  tslib "^2.1.0"
2335
 
2336
- sax@1.2.1, sax@>=0.6.0:
2337
  version "1.2.1"
2338
  resolved "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz"
2339
  integrity sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==
@@ -2522,7 +2457,7 @@ three-stdlib@^2.21.1, three-stdlib@^2.25.1:
2522
  potpack "^1.0.1"
2523
  zstddec "^0.0.2"
2524
 
2525
- three@^0.156.1:
2526
  version "0.156.1"
2527
  resolved "https://registry.npmjs.org/three/-/three-0.156.1.tgz"
2528
  integrity sha512-kP7H0FK9d/k6t/XvQ9FO6i+QrePoDcNhwl0I02+wmUJRNSLCUIDMcfObnzQvxb37/0Uc9TDT0T1HgsRRrO6SYQ==
@@ -2584,7 +2519,17 @@ tslib@^1.11.1:
2584
  resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz"
2585
  integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
2586
 
2587
- tslib@^2.1.0, tslib@^2.3.1, tslib@^2.5.0:
 
 
 
 
 
 
 
 
 
 
2588
  version "2.6.2"
2589
  resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz"
2590
  integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
@@ -2601,7 +2546,7 @@ type-fest@^0.20.2:
2601
  resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz"
2602
  integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
2603
 
2604
- typescript@5.1.6:
2605
  version "5.1.6"
2606
  resolved "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz"
2607
  integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==
@@ -2655,17 +2600,17 @@ utility-types@^3.10.0:
2655
  resolved "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz"
2656
  integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==
2657
 
2658
- uuid@8.0.0:
2659
- version "8.0.0"
2660
- resolved "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz"
2661
- integrity sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==
2662
-
2663
  uuid@^9.0.0:
2664
  version "9.0.0"
2665
  resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz"
2666
  integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==
2667
 
2668
- vite@^4.4.5:
 
 
 
 
 
2669
  version "4.4.9"
2670
  resolved "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz"
2671
  integrity sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==
@@ -2802,7 +2747,12 @@ zstddec@^0.0.2:
2802
  resolved "https://registry.npmjs.org/zstddec/-/zstddec-0.0.2.tgz"
2803
  integrity sha512-DCo0oxvcvOTGP/f5FA6tz2Z6wF+FIcEApSTu0zV5sQgn9hoT5lZ9YRAKUraxt9oP7l4e8TnNdi8IZTCX6WCkwA==
2804
 
2805
- zustand@^3.5.13, zustand@^3.7.1:
 
 
 
 
 
2806
  version "3.7.2"
2807
  resolved "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz"
2808
  integrity sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==
 
61
  resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz"
62
  integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==
63
 
64
+ "@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.22.9":
65
  version "7.22.10"
66
  resolved "https://registry.npmjs.org/@babel/core/-/core-7.22.10.tgz"
67
  integrity sha512-fTmqbbUBAwCcre6zPzNngvsI0aNrPZe77AeqvDxWM9Nm+04RrJ3CAmGHA9f7lJQY6ZMhRztNemy4uslDxTX4Qw==
 
298
  resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz"
299
  integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==
300
 
301
+ "@emotion/react@^11.0.0-rc.0", "@emotion/react@^11.4.1", "@emotion/react@^11.5.0", "@emotion/react@11.11.1":
302
  version "11.11.1"
303
  resolved "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz"
304
  integrity sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==
 
328
  resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz"
329
  integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==
330
 
331
+ "@emotion/styled@^11.3.0", "@emotion/styled@11.11.0":
332
  version "11.11.0"
333
  resolved "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz"
334
  integrity sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==
 
360
  resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz"
361
  integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==
362
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
363
  "@esbuild/linux-x64@0.18.20":
364
  version "0.18.20"
365
  resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz"
366
  integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==
367
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
368
  "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
369
  version "4.4.0"
370
  resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz"
 
479
  dependencies:
480
  "@babel/runtime" "^7.22.6"
481
 
482
+ "@mui/material@^5.0.0", "@mui/material@5.14.5":
483
  version "5.14.5"
484
  resolved "https://registry.npmjs.org/@mui/material/-/material-5.14.5.tgz"
485
  integrity sha512-4qa4GMfuZH0Ai3mttk5ccXP8a3sf7aPlAJwyMrUSz6h9hPri6BPou94zeu3rENhhmKLby9S/W1y+pmficy8JKA==
 
554
  "@nodelib/fs.stat" "2.0.5"
555
  run-parallel "^1.1.9"
556
 
557
+ "@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5":
558
  version "2.0.5"
559
  resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
560
  integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
 
647
  utility-types "^3.10.0"
648
  zustand "^3.5.13"
649
 
650
+ "@react-three/fiber@^8.14.1", "@react-three/fiber@>=6.0", "@react-three/fiber@>=8.0", "@react-three/fiber@>=8.0.0":
651
  version "8.14.1"
652
  resolved "https://registry.npmjs.org/@react-three/fiber/-/fiber-8.14.1.tgz"
653
  integrity sha512-Ky/FiCyJiyaI8bd+vckzgkHgKDSQDOcSSUVFOHCuCO9XOLb7Ebs6lof2hPpFa1HkaeE5ZIbTWIprvN0QqdPF0w==
 
693
  resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz"
694
  integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==
695
 
696
+ "@types/node@^20.5.3", "@types/node@>= 14":
697
  version "20.5.3"
698
  resolved "https://registry.npmjs.org/@types/node/-/node-20.5.3.tgz"
699
  integrity sha512-ITI7rbWczR8a/S6qjAW7DMqxqFMjjTo61qZVWJ1ubPvbIQsL5D/TvwjYEalM8Kthpe3hTzOGrF2TGbAu2uyqeA==
 
748
  dependencies:
749
  "@types/react" "*"
750
 
751
+ "@types/react@*", "@types/react@^17.0.0 || ^18.0.0", "@types/react@^18.2.15", "@types/react@>=16.8":
752
  version "18.2.20"
753
  resolved "https://registry.npmjs.org/@types/react/-/react-18.2.20.tgz"
754
  integrity sha512-WKNtmsLWJM/3D5mG4U84cysVY31ivmyw85dE84fOCk5Hx78wezB/XEjVPWl2JTZ5FkEeaTJf+VgUAUn3PE7Isw==
 
767
  resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz"
768
  integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==
769
 
770
+ "@types/stats.js@*":
771
+ version "0.17.3"
772
+ resolved "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.3.tgz"
773
+ integrity sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==
774
+
775
+ "@types/three@>=0.144.0":
776
+ version "0.158.3"
777
+ resolved "https://registry.npmjs.org/@types/three/-/three-0.158.3.tgz"
778
+ integrity sha512-6Qs1rUvLSbkJ4hlIe6/rdwIf61j1x2UKvGJg7s8KjswYsz1C1qDTs6voVXXB8kYaI0hgklgZgbZUupfL1l9xdA==
779
+ dependencies:
780
+ "@types/stats.js" "*"
781
+ "@types/webxr" "*"
782
+ fflate "~0.6.10"
783
+ meshoptimizer "~0.18.1"
784
+
785
  "@types/uuid@^9.0.2":
786
  version "9.0.2"
787
  resolved "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.2.tgz"
 
809
  semver "^7.5.4"
810
  ts-api-utils "^1.0.1"
811
 
812
+ "@typescript-eslint/parser@^6.0.0", "@typescript-eslint/parser@^6.0.0 || ^6.0.0-alpha":
813
  version "6.4.0"
814
  resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.4.0.tgz"
815
  integrity sha512-I1Ah1irl033uxjxO9Xql7+biL3YD7w9IU8zF+xlzD/YxY6a4b7DYA08PXUUCbm2sEljwJF6ERFy2kTGAGcNilg==
 
904
  resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
905
  integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
906
 
907
+ "acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.9.0:
908
  version "8.10.0"
909
  resolved "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz"
910
  integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==
 
942
  dependencies:
943
  color-convert "^1.9.0"
944
 
945
+ ansi-styles@^4.0.0:
946
+ version "4.3.0"
947
+ resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
948
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
949
+ dependencies:
950
+ color-convert "^2.0.1"
951
+
952
+ ansi-styles@^4.1.0:
953
  version "4.3.0"
954
  resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
955
  integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
 
1033
  dependencies:
1034
  fill-range "^7.0.1"
1035
 
1036
+ browserslist@^4.21.9, "browserslist@>= 4.21.0":
1037
  version "4.21.10"
1038
  resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz"
1039
  integrity sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==
 
1084
  escape-string-regexp "^1.0.5"
1085
  supports-color "^5.3.0"
1086
 
1087
+ chalk@^4.0.0:
1088
+ version "4.1.2"
1089
+ resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
1090
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
1091
+ dependencies:
1092
+ ansi-styles "^4.1.0"
1093
+ supports-color "^7.1.0"
1094
+
1095
+ chalk@^4.1.2:
1096
  version "4.1.2"
1097
  resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
1098
  integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
 
1128
  dependencies:
1129
  color-name "~1.1.4"
1130
 
 
 
 
 
 
1131
  color-name@~1.1.4:
1132
  version "1.1.4"
1133
  resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
1134
  integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
1135
 
1136
+ color-name@1.1.3:
1137
+ version "1.1.3"
1138
+ resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
1139
+ integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
1140
+
1141
  concat-map@0.0.1:
1142
  version "0.0.1"
1143
  resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
 
1352
  resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
1353
  integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
1354
 
1355
+ "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", eslint@^8.45.0, eslint@>=7:
1356
  version "8.47.0"
1357
  resolved "https://registry.npmjs.org/eslint/-/eslint-8.47.0.tgz"
1358
  integrity sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q==
 
1471
  dependencies:
1472
  reusify "^1.0.4"
1473
 
1474
+ fflate@^0.6.9, fflate@~0.6.10:
1475
  version "0.6.10"
1476
  resolved "https://registry.npmjs.org/fflate/-/fflate-0.6.10.tgz"
1477
  integrity sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==
 
1528
  resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
1529
  integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
1530
 
 
 
 
 
 
1531
  function-bind@^1.1.1:
1532
  version "1.1.1"
1533
  resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
 
1661
  dependencies:
1662
  react-is "^16.7.0"
1663
 
1664
+ ieee754@^1.1.4, ieee754@1.1.13:
1665
  version "1.1.13"
1666
  resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz"
1667
  integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
 
1692
  once "^1.3.0"
1693
  wrappy "1"
1694
 
1695
+ inherits@^2.0.3, inherits@2:
1696
  version "2.0.4"
1697
  resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
1698
  integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
 
1773
  resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
1774
  integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
1775
 
1776
+ iso-639-1@^3.1.0:
1777
+ version "3.1.0"
1778
+ resolved "https://registry.npmjs.org/iso-639-1/-/iso-639-1-3.1.0.tgz"
1779
+ integrity sha512-rWcHp9dcNbxa5C8jA/cxFlWNFNwy5Vup0KcFvgA8sPQs9ZeJHj/Eq0Y8Yz2eL8XlWYpxw4iwh9FfTeVxyqdRMw==
1780
+
1781
  isomorphic-unfetch@^3.0.0:
1782
  version "3.1.0"
1783
  resolved "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz"
 
1890
  resolved "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz"
1891
  integrity sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==
1892
 
1893
+ lodash@^4.17.21, lodash@4.17.21:
1894
  version "4.17.21"
1895
  resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
1896
  integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
 
1931
  resolved "https://registry.npmjs.org/meshline/-/meshline-3.1.6.tgz"
1932
  integrity sha512-8JZJOdaL5oz3PI/upG8JvP/5FfzYUOhrkJ8np/WKvXzl0/PZ2V9pqTvCIjSKv+w9ccg2xb+yyBhXAwt6ier3ug==
1933
 
1934
+ meshoptimizer@~0.18.1:
1935
+ version "0.18.1"
1936
+ resolved "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-0.18.1.tgz"
1937
+ integrity sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==
1938
+
1939
  micromatch@^4.0.4:
1940
  version "4.0.5"
1941
  resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz"
 
2109
  object-assign "^4.1.1"
2110
  react-is "^16.13.1"
2111
 
 
 
 
 
 
2112
  punycode@^2.1.0:
2113
  version "2.3.0"
2114
  resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz"
2115
  integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==
2116
 
2117
+ punycode@1.3.2:
2118
+ version "1.3.2"
2119
+ resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz"
2120
+ integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==
2121
+
2122
  querystring@0.2.0:
2123
  version "0.2.0"
2124
  resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz"
 
2136
  dependencies:
2137
  prop-types "^15.6.0"
2138
 
2139
+ "react-dom@^17.0.0 || ^18.0.0", react-dom@^18.2.0, react-dom@>=16.13, react-dom@>=16.3.0, react-dom@>=16.6.0, react-dom@>=18.0:
2140
  version "18.2.0"
2141
  resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz"
2142
  integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
 
2149
  resolved "https://registry.npmjs.org/react-google-charts/-/react-google-charts-4.0.1.tgz"
2150
  integrity sha512-V/hcMcNuBgD5w49BYTUDye+bUKaPmsU5vy/9W/Nj2xEeGn+6/AuH9IvBkbDcNBsY00cV9OeexdmgfI5RFHgsXQ==
2151
 
2152
+ react-is@^16.13.1:
2153
+ version "16.13.1"
2154
+ resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
2155
+ integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
2156
+
2157
+ react-is@^16.7.0:
2158
  version "16.13.1"
2159
  resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
2160
  integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
 
2199
  dependencies:
2200
  debounce "^1.2.1"
2201
 
2202
+ "react@^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^17.0.0 || ^18.0.0", react@^18.0.0, react@^18.2.0, "react@>= 16.8.0", react@>=16.13, react@>=16.3.0, react@>=16.6.0, react@>=16.8, react@>=16.8.0, react@>=17.0, react@>=18.0:
2203
  version "18.2.0"
2204
  resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz"
2205
  integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==
 
2268
  dependencies:
2269
  tslib "^2.1.0"
2270
 
2271
+ sax@>=0.6.0, sax@1.2.1:
2272
  version "1.2.1"
2273
  resolved "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz"
2274
  integrity sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==
 
2457
  potpack "^1.0.1"
2458
  zstddec "^0.0.2"
2459
 
2460
+ three@^0.156.1, "three@>= 0.151.0", three@>=0.125.0, three@>=0.126, three@>=0.126.1, three@>=0.128.0, three@>=0.133, three@>=0.137, three@>=0.141, three@>=0.144.0:
2461
  version "0.156.1"
2462
  resolved "https://registry.npmjs.org/three/-/three-0.156.1.tgz"
2463
  integrity sha512-kP7H0FK9d/k6t/XvQ9FO6i+QrePoDcNhwl0I02+wmUJRNSLCUIDMcfObnzQvxb37/0Uc9TDT0T1HgsRRrO6SYQ==
 
2519
  resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz"
2520
  integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
2521
 
2522
+ tslib@^2.1.0:
2523
+ version "2.6.2"
2524
+ resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz"
2525
+ integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
2526
+
2527
+ tslib@^2.3.1:
2528
+ version "2.6.2"
2529
+ resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz"
2530
+ integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
2531
+
2532
+ tslib@^2.5.0:
2533
  version "2.6.2"
2534
  resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz"
2535
  integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
 
2546
  resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz"
2547
  integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
2548
 
2549
+ typescript@>=4.2.0, typescript@5.1.6:
2550
  version "5.1.6"
2551
  resolved "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz"
2552
  integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==
 
2600
  resolved "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz"
2601
  integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==
2602
 
 
 
 
 
 
2603
  uuid@^9.0.0:
2604
  version "9.0.0"
2605
  resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz"
2606
  integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==
2607
 
2608
+ uuid@8.0.0:
2609
+ version "8.0.0"
2610
+ resolved "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz"
2611
+ integrity sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==
2612
+
2613
+ vite@^4.2.0, vite@^4.4.5:
2614
  version "4.4.9"
2615
  resolved "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz"
2616
  integrity sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==
 
2747
  resolved "https://registry.npmjs.org/zstddec/-/zstddec-0.0.2.tgz"
2748
  integrity sha512-DCo0oxvcvOTGP/f5FA6tz2Z6wF+FIcEApSTu0zV5sQgn9hoT5lZ9YRAKUraxt9oP7l4e8TnNdi8IZTCX6WCkwA==
2749
 
2750
+ zustand@^3.5.13:
2751
+ version "3.7.2"
2752
+ resolved "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz"
2753
+ integrity sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==
2754
+
2755
+ zustand@^3.7.1:
2756
  version "3.7.2"
2757
  resolved "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz"
2758
  integrity sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==