code: def test_cbsc014_multiple_properties_update_at_same_time_on_same_component(
      dash_duo,
  ):
      call_count = Value("i", 0)
      timestamp_1 = Value("d", -5)
      timestamp_2 = Value("d", -5)
  
      app = Dash(__name__)
      app.layout = html.Div(
          [
              html.Div(id="container"),
              html.Button(
                  "Click 1",
                  id="button-1",
                  n_clicks=0,
                  n_clicks_timestamp=-1,
              ),
              html.Button(
                  "Click 2",
                  id="button-2",
                  n_clicks=0,
                  n_clicks_timestamp=-1,
              ),
          ]
      )
  
      @app.callback(
          Output("container", "children"),
          Input("button-1", "n_clicks"),
          Input("button-1", "n_clicks_timestamp"),
          Input("button-2", "n_clicks"),
          Input("button-2", "n_clicks_timestamp"),
      )
      def update_output(n1, t1, n2, t2):
          call_count.value += 1
          timestamp_1.value = t1
          timestamp_2.value = t2
          return "{}, {}".format(n1, n2)
  
      dash_duo.start_server(app)
  
      dash_duo.wait_for_text_to_equal("#container", "0, 0")
      assert timestamp_1.value == -1
      assert timestamp_2.value == -1
      assert call_count.value == 1
  
      dash_duo.find_element("#button-1").click()
      dash_duo.wait_for_text_to_equal("#container", "1, 0")
      assert timestamp_1.value > ((time.time() - (24 * 60 * 60)) * 1000)
      assert timestamp_2.value == -1
      assert call_count.value == 2
      prev_timestamp_1 = timestamp_1.value
  
      dash_duo.find_element("#button-2").click()
      dash_duo.wait_for_text_to_equal("#container", "1, 1")
      assert timestamp_1.value == prev_timestamp_1
      assert timestamp_2.value > ((time.time() - 24 * 60 * 60) * 1000)
      assert call_count.value == 3
      prev_timestamp_2 = timestamp_2.value
  
      dash_duo.find_element("#button-2").click()
      dash_duo.wait_for_text_to_equal("#container", "1, 2")
      assert timestamp_1.value == prev_timestamp_1
      assert timestamp_2.value > prev_timestamp_2
      assert timestamp_2.value > timestamp_1.value
      assert call_count.value == 4
  
imports: import json
  import os
  from multiprocessing import Lock, Value
  import pytest
  import time
  import numpy
  import werkzeug
  from dash_test_components import AsyncComponent, CollapseComponent, DelayedEventComponent, FragmentComponent
  from dash import Dash, Input, Output, State, html, dcc, dash_table, no_update, callback_context
  from dash.exceptions import PreventUpdate
  from tests.integration.utils import json_engine
label_desc: Use image node_id 14 for calling a global function with example usage: test_cbsc014_multiple_properties_update_at_same_time_on_same_component(dash_duo) and returns: str