Joint Task Offloading and Resource Allocation Strategy for DiffServ in Vehicular Cloud System

A vehicular cloud (VC) can reduce latency and improve resource utilization of the Internet of vehicles by effectively using the underutilized computing resources of nearby vehicles. Although the task offloading of the VC enhances road safety and traffic management on the Internet of vehicles and meets the low-latency requirements for driving safety services on the Internet of vehicles business, there are still some key challenges such as the resource allocation mechanism of differentiated services (DiffServ) and task offloading mechanism of improving user experience. To address these issues, we study the task offloading and resource allocation strategy of the VC system where tasks generated by vehicles can be offloaded and executed cooperatively by vehicles in VC. Specifically, the computing task is further divided into independent subtasks and executed in different vehicles in VC to maximize the offloading utility. Considering the mobility of vehicles, the deadline of tasks, and the limited computing resources, we propose the optimization problem of task offloading in the VC system in the cause of improved user experience. To characterize the difference in service requirements resulting from the diversity of tasks, a DiffServ model focusing on the pricing of a task is utilized. The initial pricing of a task is tailored by the characteristics of the task and the uniqueness of the network status. In this model, tasks are sorted and processed in order according to task pricing, so as to optimize resource allocation. Numerical results show that the proposed scheme can effectively increase the resource utilization and task completion ratio.


Introduction
In a vehicle network [1], the cloud composed of vehicles with strong computing power is called VC [2]. The task offloading of the VC [3] has a significant impact on the performance of the Internet of vehicles [4], which enhances vehicle road safety and traffic management by effectively utilizing the underutilized computation resources of nearby vehicles and reduces traffic congestion and accidents, thus improving the network performance of the Internet of vehicles. The processing of emerging message-type safety applications in the vehicle network requires a large amount of computing resources, such as 4 K/8 K ultrahigh real-time traffic video streaming, multiview video stitching processing of autonomous vehicles, and AR-assisted applications related to safety warnings. However, the collaborative scheduling of information and data by offloading computing tasks to the vehicular cloud can effectively enhance the utilization of computing resources due to the limited computing resources of vehicles. At the same time, due to its proximity to users and rich computing resources, the vehicular cloud can meet the low delay requirements for safe driving on the Internet of vehicles business, which is a key technology in the existing Internet of vehicles.
Owing to the fast-moving characteristics of vehicles, computing resources of vehicles are dynamic. For example, the connection of mobile vehicles can be connected or disconnected at any time, which will bring about unstable computing resource availability. Accordingly, in order to ensure the offloading of the task, the task should be offloaded within vehicle contact time [5]. In vehicular cloud computing, task offloading is inseparable from efficient resource allocation technology. Resources involved in the entire process of offloading the task of the vehicle to the vehicular cloud are mainly divided into the communication resources and the computing resources [6]. [7][8][9]. For the task offloading of VC, Wu et al. assume that each vehicle task can be divided into several independent subtasks, and then, the task allocation problem is solved [10]. Under the condition of ensuring user service experience, Liu et al. study how to allocate limited computing resources to maximize the economic benefits of MEC service providers when vehicles offload tasks to MEC servers [11]. In order to solve the users' selfishness, Liu et al. have established a kind of new type of computing sharing market in the vehicle network [12]. Several other works, such as [13,14], use the method of task replication to allow a task to be executed by multiple vehicles so as to maximize the possibility of completing the task before a given deadline and improve the reliability.
In recent years, game theory has become an incentive mechanism to analyze and allocate resources. A game model can effectively capture the interaction between users and servers [15], so game theory has become a way to analyze and allocate resources [16]. For the sake of creating greater social and economic benefits in the process of resource management, a pricing strategy as an effective way of network resource management on the basis of game theory is proposed, in [16]. The forementioned research believes that the pricing mechanism is an effective way to improve resource utilization. However, how to use the pricing mechanism to distinguish different services in the VC system in game theory has not been well explored. It also can be seen from the above literatures that most of the resource allocation process VC system does not DiffServ. That is to say, the relationship between default services is equal. Unlike the resource management [17] scheme that considers the priority of a task in the general VC computing scenario, we propose a game theory-based DiffServ resource allocation mechanism that DiffServ through a task's differentiated pricing. In other words, the higher the initial pricing of the task, the higher the service requirements of the business. The initial pricing of a task mainly involves two factors, namely, the urgency of the task vehicle and the network condition around the task. Finally, we maximize the offloading utility of tasks in the VC system and consider the mobility of vehicles and meet task delay constraints to maximize the completion of tasks. The main contributions of our paper are summarized as follows.
(i) To meet the requirements of the diversity of tasks while effectively using computing resources, we propose a resource allocation mechanism for differentiated services and offload each task according to the pricing order (ii) To improve the completion ratio of whole tasks in the vehicular cloud system, a task offloading mechanism that maximizes the offloading utility is proposed and considers the mobility of vehicles and the deadline of tasks (iii) To address the problem of task offloading and resource allocation, a distributed resource allocation algorithm and Lagrange dual method are used, respectively

System Model
We consider a dynamic traffic scenario in which the vehicle can be either a service requester or a service provider in a finite two-way straight road. Let i ∈ ð1, 2, ⋯, MÞ be the group of M TaVs (task vehicles). We use three parameters ðd i , c i , T deadline i Þ to indicate the generated task of TaV i, by which d i (in bits) specifies the data size of the task, where c i = κd i , c i (in CPU cycles per bit) is the computing resource required to processing the task, κ is the mapping between CPU cycles and task size, and T deadline i is the deadline for task execution. When the task processing delay exceeds the deadline, the task processing fails. f i0 indicates the local computing ability of TaV i. At the same time, j ∈ ði, 2, ⋯, NÞ is denoted as a group of vehicles with free resources, which is called SeVs (service vehicles), where the computing resource of SeV j is defined as F max j . Figure 1 depicts a simple example of a vehicular cloud system. Here, TaV 1, TaV 2, and TaV 3 form a vehicular cloud with SeVs within their covering radius, respectively. It is assumed that the communication radius of each vehicle is Z.
2.1. Task Offloading Model. Since the size of the output task is usually much smaller than the size of the input task, we can ignore the return time in offloading [18,19]. Each TaV first offloads the computing task to one or more surrounding  Wireless Communications and Mobile Computing SeVs for processing and then handles the size of the remaining task by itself to ensure that the task is completed within the deadline. The total offloading delay for SeV j to process the size of a task assigned by TaV i is given as where d ij is the task size of the TaV i offloading to SeV j, R ij is the transmission rate of TaV i to SeV j, c ij is the required computation resource to complete task d ij , and f ij is the computing resource provided by SeV j to TaV i.

Local Processing Model.
When the task is not completely offloaded, the size of the remaining task is processed locally, and the local processing delay is expressed as follows: 2.3. Mobility Model. Assuming that the initial position of TaV i and the initial position of SeV j is, respectively, ðx TaV i , y TaV i Þ and ðx SeV j , y SeV j Þ, the speed of each vehicle is defined as v TaV i , v SeV j ∈ ½v min , v max that the vehicle maintains a uniform linear motion during task processing, so the motion angle θ = f0, πg, after moving the time slot Δt, the position of the TaV i is changed to x Δt The position of SeV j is changed to x Δt SeV j = x SeV j + v SeV j Δt cos θ, y Δt SeV j = y SeV j + v SeV j Δt sin θ. According to Euclid's theorem, after TaV i and SeV j move through the time slot Δt, the distance between the two vehicles is Communication between each other can be achieved only when SeV j is within the communication radius Z of TaV i. The connection time between vehicles is predicted as follows: 2.4. Offloading Utility Function. Considering all the TaVs in the VC system, the total offloading utility obtained of offloading TaVs to SeVs can be defined as where u i is denoted as the offloading revenue of TaV i and C i is the offload cost of the TaV i.
The total offloading revenue obtained by TaV i for offloading tasks to the VC is expressed as follows [20]: where α i represents the task offloading revenue weight parameter of TaV j, and its value is greater than zero. The transmission cost required by TaV i to offload tasks to the VC is expressed as follows: where χ is the unit transmission cost required for transmiting 1 Mb data to any SeV. With the aim of maximizing the task offloading of TaVs in the VC system, the following optimization is formulated P1: C1 means that the processing delay of each subtask is limited by the deadline of the task. C2 and C3 ensure that the size of total tasks offloading is not greater than the generated task size and the size of offloading is positive. C4 indicates that TaV i and SeV j should not spend more time on task processing than the connection time between the two vehicles.

Computing Resource Allocation Based on Game Theory
For the sake of enabling SeVs to share their own resources to others, we propose an incentive method which is based on game theory as well as introduce a paid resource allocation strategy. The offloading delay for TaV i to offload the task to SeV j in the process of task offloading is as follows: With the purpose of simplifying the problem, we will consider R ij as a fixed value. According to (9), the delay for task offloading is affected by computing resources provided by SeV j to TaV i. It is impossible for SeV j to provide computing resources to TaV i for free because of the selfishness of vehicles. According to messages exchanged between vehicles, 3 Wireless Communications and Mobile Computing we design a distributed incentive mechanism for resource allocation. The specific details are shown as follows.

Utility and Cost Functions
(1) With the aim of maximizing utility of SeV j, the following optimization problem is formulated: where cc j represents the unit resource cost price of SeV j; δ j is the willingness of SeV j, with δ j ≥ 1; p i represents the bid for TaV i; C1 indicates that the resources provided by SeV j are larger than zero; and C2 indicates that the total resources provided by SeV j are not larger than the maximum resources provided by itself.
Theorem 1. For any price given by each TaV, there must be a unique Nash equilibrium solution in the noncooperative game between SeVs.
Proof. The first-order derivative of V j with respect to f ij is expressed as follows: The second-order derivative of V j with respect to f ij is expressed as follows: As the values of all parameters in (12) are positive, the second-order derivative of utility function is lower than zero, namely, ∂ 2 V j /∂f ij 2 < 0. Therefore, the utility function of SeV j is a concave function with maximum value. The corresponding optimal solution f ij = δ j /cc j − 1/p i can be obtained by ∂V j /∂f ij = 0, and there is a unique Nash equilibrium in the noncooperative game between SeVs given the price of the TaV.
(2) In order to maximize economic benefits, we should minimize offloading cost. With the aim of minimizing cost function of TaV i, the following optimization problem is formulated: where C2 means that the total computing resources provided by SeVs are larger than the minimum required resources f min i , but it is smaller than the maximum required resources f max i . C3 indicates that the bids of TaVs are larger than the lowest price P min , but it is smaller than the highest price P max .

TaV Pricing
Rules. This section defines the concept of "pricing" for tasks by their service requirements, for the purpose of solving the problem of resource allocation. The pricing function is used to classify tasks requested by TaVs and further distinguish the priority of tasks. The definition of the pricing function of the TaVs task mainly involves two factors, namely, the urgency of the task and the network conditions around the TaV. Accordingly, the pricing of the TaV is obtained by the urgency of the task and the network status around the TaV. Then, the urgency of the task is related to the size of the task generated by the TaV and the deadline of the task. The network condition around the TaV is related to the number of requests received and the number of answers received in the previous slot.

Distribution of the Number of Vehicles within the TaV
Coverage. Owing to the stability of the network, the network condition of the previous and the next moment is unchanged. Suppose that TaV i and SeV j are randomly distributed on the road. Then, it is known that the TaV kðk = iÞ receives R k requests and S k responses at the previous time. According to the conditional probability, the distribution function of the number of TaVs m k and the distribution function of the number of SeVs n k in the coverage area is obtained.
(a) Distribution function of the number of TaVs m k within the coverage of TaV k is expressed as follows: where (m k , R k ) indicates that there are totally m k TaVs within the coverage of TaV k, among which TaV k receives R k requests, and P 1 indicates the probability of any TaV sending out requests.

Wireless Communications and Mobile Computing
(b) Distribution function of the number of SeVs n k within the coverage of TaV k is expressed as follows: where (n k , S k ) means there are a total of n k SeVs within the coverage of TaV k, among which TaV k receives S k responses, and P 2 means the probability that any SeV will respond to a TaV after receiving it.

Average Number of Vehicles within the Coverage of TaV k
(a) The average number of TaVs within the coverage of TaV k is expressed as follows: (b) The average number of SeVs within the coverage of TaV k is expressed as follows:

Remaining Resources within the Coverage of TaV k.
Suppose that the resource requirements of each TaV obey the normal distribution of Q 1~ð μ 1 , δ 2 1 Þ and the resources provided by each SeV obey the normal distribution of Q 2ð μ 2 , δ 2 2 Þ, the remaining resources around TaV k obtained by (16) and (17) are expressed as follows: On account of the independence of Q 1 and Q 2 , we can obtain the mean and variance value of Q k : According to (19) and (20), we can get the distribution of the remaining resources Q k . In other words, a new normal distribution is expressed as follows: 3.2.4. Initial Pricing of TaV k. According to (21), the remaining resources covered by TaV k are expressed as follows: The initial pricing of TaV k [21] is where f min k means the minimum resources obtained by TaV k , f min From the pricing function, we can see that when the surrounding remaining resources are greater than zero, the price will be raised by the lowest price; otherwise, the price will be raised by the middle price.
After getting the best initial pricing, we develop a distributed resource allocation algorithm. The algorithm dynamically changes the price of the TaV to ensure the maximum utility of the SeV, and the TaV can obtain resources to meet its needs. The algorithm is introduced in detail in Algorithm 1. Firstly, the TaV sends the business request (including the price); meanwhile, all vehicles within the coverage of the TaV will receive the request message. Then, the SeV that received the request message maximizes its utility to obtain the size of computing resources that can be provided (Steps 4-14 of Algorithm 1). Next, the SeV sends a response (resources that the SeV can be provided) to the TaV; meanwhile, the TaV receives the response and adds up resources provided by SeVs. Finally, if the sum of the total resources provided is greater than the maximum resource demand of the TaV, the price will be reduced; otherwise, the price will be increased if the total resources provided are less than the minimum resource demand of the TaV. Otherwise, the price is the optimal price, and the optimal resource allocation result of the SeV is obtained (Steps 15-30 of Algorithm 1).

Task Allocation of Vehicular Cloud System
This section is aimed at solving the problem of task allocation of the VC system. Because the second-derivative of U for d ij in equation (5) can be obtained ∂ 2 U/∂d ij 2 < 0, the objective function of optimization problem P1 is the concave function of variable d ij . Since the constraints C1, C2, C3, and C4 in P1 are all convex sets, the optimization problem P1 is a convex optimization problem. In the end, the optimal d ij is obtained by Lagrange theory.

Wireless Communications and Mobile Computing
The Lagrangian function of optimization problem P1 is defined as follows (without considering d ij ≥ 0): where ϖ, σ, ψ are the Lagrangian multipliers. According to the original optimization problem P1, a Lagrangian dual problem can be obtained as follows: For the optimization problem P2, it can be decomposed into a maximum task assignment problem and a minimum Lagrangian factor update problem, which can then be solved through iteration. The maximized part of the optimization problem P2 is expressed as follows: Since the optimization problem P1 is a convex optimization problem, according to the KKT condition, the optimal solution of the optimization problem P21 is equal to the optimal solution of the optimization problem P1. By solving equation ∂Lðϖ, σ, ψÞ/∂d ij = 0 and considering constraint d ij ≥ 0, the optimal task assignment d ij is obtained as follows:  6 Wireless Communications and Mobile Computing The Lagrange multipliers updating problem of P2 is expressed as It can be seen from the above analysis that P22 is also a convex problem, so the gradient descent method is used to update the Lagrangian multipliers ϖ ij , σ i , ψ ij , and the Lagrangian multipliers ϖ ij , σ i , ψ ij are all nonnegative real numbers.
We denote ϖ where τ ðtÞ = τ ð0Þ / ffiffi t p is the tth update step length. In order to ensure the convergence of the algorithm, this update step length [22] is considered.
The task allocation algorithm can be divided into the following four steps: (1) Initialize the Lagrange multipliers. (2) According to the given Lagrange multipliers, solve the optimization problem P21 through KKT conditions to obtain the optimal task allocation result; update the Lagrange multipliers with the method in formula (30)-(32). (3) Get the task allocation result by the convergence condition of Lagrange function. (4) Judge whether the task has been completely allocated; if it has been completely allocated, return the allocation result; otherwise, judge whether the remaining unallocated task can be executed locally. If possible, the rest of the tasks are executed locally and the task assignment results are returned. Otherwise, the task cannot be completed on time, and the task assignment will fail. In Algorithm 2, the task allocation algorithm will be described in detail.

Numerical Results
The numerical results given in this section show that the proposed algorithm improves the resource utilization and total task completion ratio in the VC system. We evaluate and compare the effects of different vehicle speed, vehicle density, task size, and number of TaVs on the performance of the proposed scheme and other baseline schemes. We will compare the proposed resource allocation scheme in this paper (PRAS) with Require:α, d i , χ Ensure:d ij , ∀d 1: Define t for counting iteration, initialize t = 0, define ε as convergence threshold 2: Initialization ϖ ij , σ j , ψ ij 3: According to ϖ ij , σ j , ψ ij and (28) 7 Wireless Communications and Mobile Computing two benchmark schemes, including (i) LCS (Lowest Cost Scheme): the server bids by the network conditions, and the buyer always chooses the server with the lowest unit price, and (ii) HRS (Highest Revenue Scheme): the buyer bids by resource requirements, and the server always provides services to the buyer with the highest unit bid. In addition, the proposed offloading scheme in this paper (POS) is compared with the benchmark scheme by three different comparison methods: (i) LPS (Local Processing Scheme); (ii) AOS (Average Offloading Scheme): TaVs distribute tasks to the surrounding SeVs equally; and (iii) UOS (Unified Offloading Scheme): TaVs consider its own computing resources and assign the task equally to the surrounding SeVs and itself.
In this paper, the MATLAB simulation platform is used to verify the proposed algorithm. Vehicles are randomly distributed to a two-way lane with a length of 1000 m and a width of 50 m. Furthermore, the computation capacity and task size of the vehicle follow normal distribution. Relevant simulation parameters are given in Table 1. Figure 2(a) shows resource utilization for different algorithms when the number of TaVs varies from 10 to 20, where the resource utilization ratio is equal to the ratio of the resources used by TaVs to the total resources of SeVs in the system. It is observed from Figure 2(a) that the resource utilization monotonically increases with the number of TaVs, and the growth rate gradually decreases; in other words, increasing the number of TaVs from 10 to 14 makes more TaVs benefit from the resources of SeVs than that from 16 to 20. The reason is that the available resources are no longer enough to respond to the requests of new TaVs with limited computation resources. As a result, the resource utilization gradually increased slowly. Furthermore, it can also be observed that PRAS can obtain higher resource utilization than HRS and LCS. When the number of TaVs is more, it can better reflect the superiority of PRAS. This is because the number of TaVs increases, and the more TaVs compete for limited computing resources, the probability of successful acquisition of resources by TaVs is reduced. For the sake of obtaining better resource utilization, compared with HRS and LCS, PRAS further optimizes the network status and DiffServ of different tasks based on resource allocation. In other words, PRAS adopts a differentiated pricing strategy. Compared with HRS which only considers network condition and LCS which only considers its own condition, PRAS considers the condition of the TaV, including whether the TaV has urgent tasks and whether the network around the TaV is busy. Therefore, the total resource utilization rate of the network is improved. In addition, when the number of TaVs is less than 12, the HRS and PRAS have the same resource utilization as the computing resources are sufficient and both two algorithms can provide the resources required for TaVs. Figure 2(b) depicts the task completion ratio of different algorithms where the number of TaVs varies from 10 to 20, where the task completion ratio is equal to the number of tasks successfully completed within the deadline over the total number of tasks in the system. It can be seen from Figure 2(b) that POS can achieve a relatively higher task completion ratio compared with the three baseline schemes. This is because UOS and AOS do not consider mobility of vehicles and task deadline constraints. However, the proposed scheme jointly optimizes mobility of vehicles and the deadline of the task, which is conducive to making full use of resources. Hence, more tasks can be offloaded and task completion is significantly increased. In addition, since LPS does not consider the choice of SeVs, the increase in the number of TaVs does not affect the task completion ratio of LPS. Figure 3 shows the price for different task sizes of the TaV when the number of TaVs varies from 10 to 20. It is observed from Figure 3 that the price monotonically increases with the number of TaVs, and the price also monotonically increases with task size. The reason is that increasing the size of tasks and the number of TaVs will reduce the TaV surrounding idle resources. The price function of the TaV is a piecewise function of the surrounding remaining resources. When the remaining resources of the TaV are greater than zero, the price is increased based on the lowest price. When the remaining resources around the TaV are greater than zero, the price is increased based on the middle price. Figure 4 shows the resource utilization and task completion ratio of the VC system versus the vehicle density. Numerical results demonstrate that vehicle density is inversely related to resource utilization and positively related to the task completion ratio. This is because the number of SeVs increases with increasing vehicle density, and resource utilization decreases due to the constant number of TaVs. Moreover, with the increase in the number of SeVs, there will be more available resources around TaVs and more computation tasks can be offloaded to SeVs, which will lead to the improvement of the task completion ratio. On the contrary, when the vehicle density in the system is constant, the resource utilization increases and the task completion ratio decreases with the increase of the number of TaVs. As the number of TaVs increases, more TaVs compete for limited resources, which will lead to the increase in resource utilization. The reason is that when the number of TaVs increases to a certain extent, the resources of SeVs are fully utilized but still cannot meet resources required for the excessive growth of the number of TaVs. In the end, the size of total offloading is no longer changed and the task completion ratio is reduced.   Figure 5 shows offloading utility and task completion ratio for different algorithms when TaV speed varies from 80 km/h to 120 km/h. It can be concluded that the task completion ratio and offload utility of POS, UOS, AOS, and LPS all decrease with increasing speed from Figures 5(a) and 5(b). As the speed of TaVs increases, the contact time between TaVs and SeVs becomes shorter, and the size of offloading task data decreases. Therefore, the offloading utility and task completion ratio decrease. Then, by comparing POS with other schemes, it can be seen that the task completion ratio and offload utility of POS are optimal. This is because POS optimizes the mobility of vehicles, the deadlines of TaVs, local computing resources of TaVs, and the service differentiation of different types of tasks. The resource allocation is superior to other schemes, and task allocation is also more reasonable than other schemes. Hence, the task completion ratio and offloading utility of POS are superior to other solutions. In addition, with the decrease of the task size processed by SeVs, the task offloading time is shortened and the success rate of task offloading is increased accordingly. What is more, since the choice of SeVs is not considered, LPS is not sensitive to the increase of speed on the task completion ratio of LPS. Figure 6(a) shows offloading utility versus the task size of TaVs. Numerical results demonstrate that task size is positively related to offloading utility. The numerical results show that when the task size is less than 4 Mb, the offloading utility of AOS is optimal and the offloading utility of POS is close to UOS. Since POS and UOS process a part of tasks locally, the size of offloading tasks is reduced, resulting in lower offloading utility than AOS. Moreover, it can be seen from Figure 6(a) that when the sizes of tasks are greater than 4 Mb, the offloading utility of POS is the highest. It can also be obtained that with the increase of task size of TaVs, the offloading utility of POS, HRS, and LCS first increases rapidly and then slowly increases. This is because the number of SeVs remains unchanged. When the task size of TaVs begins to increase, the offloading utility increases rapidly. However, with the increase of the size of the task to a certain extent, the resources of SeVs are fully utilized, which still cannot meet the resource requirements of the excessive increase in TaVs' task size, so the growth trend of offloading utility gradually slows down.

Effect of Task Size.
We also compare the task completion ratio in terms of the task size in Figure 6(b). It is interesting to see that the task completion ratio decreases with the increase of the task size. The reason is that as the sizes of the tasks processed by each vehicle increases, the risk of task exceeding the deadline also increases due to the constant deadline. As a result, the task completion rate is reduced. In addition, it can be seen that the UOS and AOS methods do not take the task processing time beyond the deadline into account, which results in the  13 Wireless Communications and Mobile Computing task offloading success rate lower than the POS, and the task completion rate is lower than the POS. What is more, LPS is executed locally without computational offloading, so it takes more time than the offloading mode.

Conclusion
In this paper, we investigate the joint task offloading and resource allocation mechanism in the VC system and maximize the total offloading revenue of tasks under the constraints of task completion deadlines and rapid vehicle movement characteristics. Considering the different types of services required by tasks in VC, this paper proposes a resource allocation model based on differentiated services and designs the pricing function of a task. Its pricing relies on the size of the task, the deadline for the task, and the number of requests and responses received by the vehicle that generated the task in the previous time slot. Furthermore, considering the mobility of vehicles, the deadline of tasks, and the limited computing resources, the centralized Lagrange dual method is used to solve the task offloading problem of the VC system. The simulation results show that the optimization effect of DiffServ offloading strategy is significantly improved, and the resource utilization and task completion ratio are significantly increased.

Data Availability
The data used to support the findings of this study are available from the corresponding author upon reasonable request.

Conflicts of Interest
None of the authors have any conflicts of interest